搞個(gè)產(chǎn)品研發(fā),還能搞出債務(wù)問題?
在產(chǎn)品研發(fā)過程中,我們常常只關(guān)注功能的實(shí)現(xiàn),卻忽略了隱藏在背后的“債務(wù)”問題。測(cè)試不充分會(huì)積累測(cè)試債務(wù),代碼結(jié)構(gòu)不健壯會(huì)形成開發(fā)債務(wù),這些問題隨著時(shí)間推移會(huì)越來越難以解決。本文將探討如何通過測(cè)試驅(qū)動(dòng)研發(fā)(TDD)這種敏捷開發(fā)思想,從一開始就解決這些問題,避免債務(wù)的積累。
一、產(chǎn)品研發(fā)的隱形債務(wù),看不見≠不存在
如果只是研發(fā)出了產(chǎn)品功能,但是對(duì)其測(cè)試不充分,這個(gè)功能就附著了測(cè)試債務(wù),并且隨著時(shí)間推移,測(cè)試債務(wù)會(huì)越隱藏越深,償還成本會(huì)越來越高。
同理,如果只是研發(fā)出了產(chǎn)品,但是代碼結(jié)構(gòu)不健壯(比如:代碼邏輯繁雜不精簡(jiǎn)高效、跨模塊耦合過高),這個(gè)產(chǎn)品也就附著了開發(fā)債務(wù),隨著產(chǎn)品架構(gòu)的發(fā)展,開發(fā)債務(wù)越來越高,搖搖欲墜的代碼如屎山一般,每次產(chǎn)品的進(jìn)一步發(fā)展你都會(huì)被惡心一次。這個(gè)問題曾經(jīng)進(jìn)行過思考,在《換個(gè)視角,再看互聯(lián)網(wǎng)產(chǎn)品研發(fā)效率!》中討論了技術(shù)架構(gòu)和產(chǎn)品架構(gòu)的雙螺旋發(fā)展關(guān)系。
二、打開新思路,TDD測(cè)試驅(qū)動(dòng)研發(fā)
面對(duì)測(cè)試債務(wù),測(cè)試驅(qū)動(dòng)研發(fā)(Test-DrivenDevelopment,TDD)是一種新的思路以預(yù)防這種情況的發(fā)生。TDD是一種敏捷開發(fā)思想,既然所有的功能點(diǎn)都需要測(cè)試,而且是反復(fù)測(cè)試,為什么不把測(cè)試工作提到最前面并自動(dòng)化呢?
TDD要求在寫任何功能代碼之前,先寫好它的測(cè)試代碼,以保證所有的功能點(diǎn)都被自動(dòng)化測(cè)試所覆蓋。從而規(guī)避了【產(chǎn)品–>開發(fā)–>測(cè)試】這種低效的線性路徑以及大概率會(huì)出現(xiàn)的信息傳輸漏斗,導(dǎo)致功能到代碼到測(cè)試的不斷衰減,最終交付質(zhì)量堪憂、未來again時(shí)的巨大難題。
TDD正是從一開始就解決測(cè)試債務(wù)的方法,當(dāng)產(chǎn)品變得很龐大的時(shí)候,TDD依然可以快速有效地檢測(cè)各個(gè)功能點(diǎn),這對(duì)于沒有運(yùn)用TDD的產(chǎn)品來說是一項(xiàng)不可能完成的任務(wù)。從研發(fā)驅(qū)動(dòng)測(cè)試到測(cè)試驅(qū)動(dòng)研發(fā),是一個(gè)巨大的轉(zhuǎn)變,其中涉及研發(fā)流程、測(cè)試人員的編程能力、研發(fā)平臺(tái)對(duì)自動(dòng)化測(cè)試的支持程度等環(huán)節(jié)。
不過,在測(cè)試驅(qū)動(dòng)研發(fā)出現(xiàn)之前,那么多研發(fā)驅(qū)動(dòng)測(cè)試的產(chǎn)品也獲得了成功,所有這些因素都影響了TDD的普及。
三、TDD的根本是什么?
話說至此,TDD測(cè)試驅(qū)動(dòng)研發(fā)中的“Driven”一詞值得思量,邏輯關(guān)系上測(cè)試始終是為研發(fā)服務(wù),而非代碼為測(cè)試而生。與其說是測(cè)試“驅(qū)動(dòng)”研發(fā),不如說測(cè)試“可視化”研發(fā)、測(cè)試“螺旋化”研發(fā),那么可視化/螺旋化在于什么呢?
研發(fā)服務(wù)于產(chǎn)品功能,產(chǎn)品功能服務(wù)于業(yè)務(wù)/用戶需求,測(cè)試服務(wù)于研發(fā)并有助于研發(fā)。測(cè)試為綱,更是一種思想,使得研發(fā)過程時(shí)刻考慮到代碼邏輯的可視化、可測(cè)試化、可自動(dòng)化復(fù)測(cè),從而促進(jìn)提升代碼質(zhì)量、可檢測(cè)性、可持續(xù)性。測(cè)試代碼的領(lǐng)先搭建,有一個(gè)現(xiàn)實(shí)的例子可以對(duì)比。
1??一棟大樓,是一個(gè)產(chǎn)品——滿足于市場(chǎng)(商業(yè)、住宅)需求
2??建筑設(shè)計(jì)圖紙(土建/結(jié)構(gòu)/裝修)——可以算是產(chǎn)品設(shè)計(jì)方案
3??建筑主體、裝修裝飾——對(duì)應(yīng)代碼主體的后端和前端
4??施工自檢/監(jiān)理監(jiān)察/三方質(zhì)檢——算是測(cè)試
在建筑施工管理過程中,本位上來看監(jiān)理是在施工工序之后進(jìn)行的,但實(shí)際上監(jiān)理的大綱方案、監(jiān)理細(xì)則,其實(shí)在產(chǎn)品設(shè)計(jì)方案出來之后,就已經(jīng)在展開了。同樣的,施工(研發(fā))過程也會(huì)根據(jù)監(jiān)理的監(jiān)察原則,在指定的關(guān)鍵點(diǎn)做好檢驗(yàn)預(yù)留。
由此也看出來二者并非嚴(yán)格的先后關(guān)系,更像是一種螺旋纏繞關(guān)系,監(jiān)理/測(cè)試為綱、為鏡,對(duì)施工/研發(fā)進(jìn)行約束和檢驗(yàn),這是一種典型的共建、共生。
如果你的產(chǎn)品總是出現(xiàn)無法定位的奇怪問題,那么應(yīng)該要考慮一下轉(zhuǎn)用TDD了,當(dāng)然,最終的決策權(quán)在測(cè)試經(jīng)理或研發(fā)經(jīng)理,更重要的是需要團(tuán)隊(duì)成員接受這種思想并在項(xiàng)目中進(jìn)行踐行。
作者:Kris_3zzz, 公眾號(hào):iSpiik產(chǎn)品說
本文由 @Kris_3zzz 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)
- 目前還沒評(píng)論,等你發(fā)揮!