搞個產品研發,還能搞出債務問題?

0 評論 133 瀏覽 1 收藏 6 分鐘

在產品研發過程中,我們常常只關注功能的實現,卻忽略了隱藏在背后的“債務”問題。測試不充分會積累測試債務,代碼結構不健壯會形成開發債務,這些問題隨著時間推移會越來越難以解決。本文將探討如何通過測試驅動研發(TDD)這種敏捷開發思想,從一開始就解決這些問題,避免債務的積累。

一、產品研發的隱形債務,看不見≠不存在

如果只是研發出了產品功能,但是對其測試不充分,這個功能就附著了測試債務,并且隨著時間推移,測試債務會越隱藏越深,償還成本會越來越高。

同理,如果只是研發出了產品,但是代碼結構不健壯(比如:代碼邏輯繁雜不精簡高效、跨模塊耦合過高),這個產品也就附著了開發債務,隨著產品架構的發展,開發債務越來越高,搖搖欲墜的代碼如屎山一般,每次產品的進一步發展你都會被惡心一次。這個問題曾經進行過思考,在《換個視角,再看互聯網產品研發效率!》中討論了技術架構和產品架構的雙螺旋發展關系。

二、打開新思路,TDD測試驅動研發

面對測試債務,測試驅動研發(Test-DrivenDevelopment,TDD)是一種新的思路以預防這種情況的發生。TDD是一種敏捷開發思想,既然所有的功能點都需要測試,而且是反復測試,為什么不把測試工作提到最前面并自動化呢?

TDD要求在寫任何功能代碼之前,先寫好它的測試代碼,以保證所有的功能點都被自動化測試所覆蓋。從而規避了【產品–>開發–>測試】這種低效的線性路徑以及大概率會出現的信息傳輸漏斗,導致功能到代碼到測試的不斷衰減,最終交付質量堪憂、未來again時的巨大難題。

TDD正是從一開始就解決測試債務的方法,當產品變得很龐大的時候,TDD依然可以快速有效地檢測各個功能點,這對于沒有運用TDD的產品來說是一項不可能完成的任務。從研發驅動測試到測試驅動研發,是一個巨大的轉變,其中涉及研發流程、測試人員的編程能力、研發平臺對自動化測試的支持程度等環節。

不過,在測試驅動研發出現之前,那么多研發驅動測試的產品也獲得了成功,所有這些因素都影響了TDD的普及。

三、TDD的根本是什么?

話說至此,TDD測試驅動研發中的“Driven”一詞值得思量,邏輯關系上測試始終是為研發服務,而非代碼為測試而生。與其說是測試“驅動”研發,不如說測試“可視化”研發、測試“螺旋化”研發,那么可視化/螺旋化在于什么呢?

研發服務于產品功能,產品功能服務于業務/用戶需求,測試服務于研發并有助于研發。測試為綱,更是一種思想,使得研發過程時刻考慮到代碼邏輯的可視化、可測試化、可自動化復測,從而促進提升代碼質量、可檢測性、可持續性。測試代碼的領先搭建,有一個現實的例子可以對比。

1??一棟大樓,是一個產品——滿足于市場(商業、住宅)需求

2??建筑設計圖紙(土建/結構/裝修)——可以算是產品設計方案

3??建筑主體、裝修裝飾——對應代碼主體的后端和前端

4??施工自檢/監理監察/三方質檢——算是測試

在建筑施工管理過程中,本位上來看監理是在施工工序之后進行的,但實際上監理的大綱方案、監理細則,其實在產品設計方案出來之后,就已經在展開了。同樣的,施工(研發)過程也會根據監理的監察原則,在指定的關鍵點做好檢驗預留。

由此也看出來二者并非嚴格的先后關系,更像是一種螺旋纏繞關系,監理/測試為綱、為鏡,對施工/研發進行約束和檢驗,這是一種典型的共建、共生。

如果你的產品總是出現無法定位的奇怪問題,那么應該要考慮一下轉用TDD了,當然,最終的決策權在測試經理或研發經理,更重要的是需要團隊成員接受這種思想并在項目中進行踐行。

作者:Kris_3zzz, 公眾號:iSpiik產品說

本文由 @Kris_3zzz 原創發布于人人都是產品經理。未經作者許可,禁止轉載

題圖來自 Unsplash,基于CC0協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!