作為企業(yè)IT部門某個開發(fā)團(tuán)隊(duì)負(fù)責(zé)人的你,從書上和大佬那里得知,軟件開發(fā)團(tuán)隊(duì)中的開發(fā)人員,如果在將所完成的功能提交給測試人員之前,加強(qiáng)自測,那么就能降低軟件開發(fā)過程中的返工。
于是你為每位開發(fā)人員,都準(zhǔn)備了自測環(huán)境。然后告訴開發(fā)人員,在完成功能的開發(fā),向測試人員提測前,需要在自測環(huán)境完成自測。
但很快你就發(fā)現(xiàn), 測試人員還是經(jīng)常抱怨,開發(fā)人員即使擁有自測環(huán)境,但所提測的代碼,經(jīng)常連基本的功能都沒有跑通,需要打回去修復(fù)。
這個問題該如何破?
你讀了塞勒和桑斯坦的《助推》,其中行為經(jīng)濟(jì)學(xué)的“錨定效應(yīng)”和“心理賬戶”給了你很大的啟發(fā)。即開發(fā)人員對于自測的態(tài)度,被其崗位名稱“開發(fā)”所錨定,即“開發(fā)”意味著設(shè)計(jì)和寫代碼,而“自測”屬于測試,應(yīng)該由測試人員負(fù)責(zé)。這種錨定效應(yīng)會帶來“心理賬戶”效應(yīng),即開發(fā)人員設(shè)計(jì)和寫代碼的時間,與修復(fù)包括自測在內(nèi)的測試所發(fā)現(xiàn)bug的時間,分屬兩個不同的心理賬戶。在開發(fā)階段,他們不會使用修bug階段的賬戶里的時間。
如果把“開發(fā)人員”和“測試人員”這兩個崗位名稱,更名為能反映整個軟件系統(tǒng)的質(zhì)量的名稱,是否能破解上述問題?
如果將開發(fā)人員的崗位改名為系統(tǒng)紅軍,即需要對所設(shè)計(jì)和編寫的軟件特性在整個系統(tǒng)中正常運(yùn)行負(fù)全責(zé),而測試人員的崗位改名為系統(tǒng)藍(lán)軍,即從整個系統(tǒng)的角度模擬現(xiàn)實(shí)生產(chǎn)環(huán)境各種刁鉆的場景來考驗(yàn)系統(tǒng)紅軍所設(shè)計(jì)和實(shí)現(xiàn)的軟件特性,能否正常運(yùn)行,那么這兩個崗位之間的關(guān)系,就轉(zhuǎn)變?yōu)榧t藍(lán)軍對抗。這樣是否能擺脫錨定和心理賬戶,從而助推開發(fā)人員進(jìn)行自測?

你覺得可以設(shè)計(jì)一個實(shí)驗(yàn),來找到引導(dǎo)開發(fā)人員做好功能自測的一種方法。
該如何設(shè)計(jì)這個實(shí)驗(yàn)?
我在下面幫你列出這個實(shí)驗(yàn)的6個步驟和具體實(shí)施方法。你可以根據(jù)團(tuán)隊(duì)具體情況,做適當(dāng)?shù)恼{(diào)整。
1 基于觀察
測試人員經(jīng)常抱怨,開發(fā)人員即使擁有自測環(huán)境,但所提測的代碼,經(jīng)常連基本的功能都沒有跑通,需要打回去修復(fù)。
2 問出問題
是什么阻礙了開發(fā)人員進(jìn)行自測?
3 形成可驗(yàn)證的解釋性假說
根據(jù)行為經(jīng)濟(jì)學(xué)的“錨定效應(yīng)”,開發(fā)人員對于自測的態(tài)度,被其崗位名稱“開發(fā)”所錨定,即“開發(fā)”意味著設(shè)計(jì)和寫代碼,而“自測”屬于測試,應(yīng)該由測試人員負(fù)責(zé)。這種錨定效應(yīng)會帶來行為經(jīng)濟(jì)學(xué)的“心理賬戶”效應(yīng),即開發(fā)人員設(shè)計(jì)和寫代碼的時間,與修復(fù)包括自測在內(nèi)的測試所發(fā)現(xiàn)bug的時間,分屬兩個不同的心理賬戶。在開發(fā)階段,他們不會使用修bug階段的賬戶里的時間。
4 基于假說做出預(yù)測
如果將開發(fā)人員的崗位改名為系統(tǒng)紅軍,即需要對所設(shè)計(jì)和編寫的軟件特性在整個系統(tǒng)中正常運(yùn)行負(fù)全責(zé),而測試人員的崗位改名為系統(tǒng)藍(lán)軍,即從整個系統(tǒng)的角度模擬現(xiàn)實(shí)生產(chǎn)環(huán)境各種刁鉆的場景來考驗(yàn)系統(tǒng)紅軍“所設(shè)計(jì)和實(shí)現(xiàn)的軟件特性,能否正常運(yùn)行,那么這兩個崗位之間的關(guān)系,就轉(zhuǎn)變?yōu)榧t藍(lán)軍對抗。這樣就能擺脫錨定和心理賬戶,從而助推開發(fā)人員進(jìn)行自測。
5 設(shè)計(jì)并執(zhí)行有對照組且只改變一個變量的實(shí)驗(yàn)檢驗(yàn)預(yù)測
你需要設(shè)法吸引IT部門負(fù)責(zé)人和測試團(tuán)隊(duì)負(fù)責(zé)人對這個實(shí)驗(yàn)感興趣,并獲得她/他的支持,比如幫助你找到另一個有同樣多開發(fā)和測試人員的開發(fā)團(tuán)隊(duì)作為對照組,并獲得那個開發(fā)團(tuán)隊(duì)負(fù)責(zé)人的支持。而你所在的團(tuán)隊(duì),可以作為實(shí)驗(yàn)組。
由IT部門負(fù)責(zé)人、測試團(tuán)隊(duì)負(fù)責(zé)人和實(shí)驗(yàn)組與對照組這兩個開發(fā)團(tuán)隊(duì)負(fù)責(zé)人,四人成立實(shí)驗(yàn)小組。
為了讓實(shí)驗(yàn)結(jié)果不會因?yàn)閷?shí)驗(yàn)組和對照組兩個開發(fā)團(tuán)隊(duì)的開發(fā)和測試人員,因相互攀比而有損數(shù)據(jù)的準(zhǔn)確性,該實(shí)驗(yàn)從始至終秘密進(jìn)行。即實(shí)驗(yàn)的事情,只有實(shí)驗(yàn)小組的那四人知道。若其他人問起實(shí)驗(yàn)過程中一些事情的緣由,可以編一個理由??傊灰嘎墩陂_展的實(shí)驗(yàn)和實(shí)驗(yàn)意圖。
在實(shí)驗(yàn)開始前,兩個開發(fā)團(tuán)隊(duì)的負(fù)責(zé)人,需要各自保證開發(fā)人員都擁有自測環(huán)境,并準(zhǔn)備好度量開發(fā)人員自測一次通過率的觀測工具。即能統(tǒng)計(jì)出開發(fā)人員開發(fā)完功能,首次給測試人員測試且一次通過的比例。
對照組對于開發(fā)和測試人員的崗位名稱保持不變。對照組團(tuán)隊(duì)負(fù)責(zé)人在實(shí)驗(yàn)開始前一天,召集所有開發(fā)和測試人員,告訴他們在完成功能的開發(fā),向測試人員提測前,需要在自測環(huán)境完成自測。
實(shí)驗(yàn)組團(tuán)隊(duì)負(fù)責(zé)人,就是你,在實(shí)驗(yàn)開始前一天,召集所有開發(fā)和測試人員,向他們宣布,在本開發(fā)組,開發(fā)和測試人員的崗位,在未來一段時間內(nèi),比如6周,分別改名為系統(tǒng)紅軍和系統(tǒng)藍(lán)軍。并告訴他們,系統(tǒng)紅軍需要對所設(shè)計(jì)和編寫的軟件特性在整個系統(tǒng)中正常運(yùn)行負(fù)全責(zé),而系統(tǒng)藍(lán)軍需要從整個系統(tǒng)的角度模擬現(xiàn)實(shí)生產(chǎn)環(huán)境各種刁鉆的場景來考驗(yàn)系統(tǒng)紅軍所設(shè)計(jì)和實(shí)現(xiàn)的軟件特性,能否正常運(yùn)行,
設(shè)置一個開展實(shí)驗(yàn)時間段,比如6周。兩個團(tuán)隊(duì)同時開展實(shí)驗(yàn),并同時采集數(shù)據(jù)。
每2周作為一個迭代。實(shí)驗(yàn)小組在迭代末就開一次碰頭會,分析和對比這2周采集的觀測數(shù)據(jù)。
6 根據(jù)實(shí)驗(yàn)結(jié)果可回到第3步不斷迭代優(yōu)化假說/預(yù)測/實(shí)驗(yàn)過程
到第6周結(jié)束,總結(jié)和對比這3個迭代實(shí)驗(yàn)組和對照組的數(shù)據(jù)。根據(jù)實(shí)驗(yàn)數(shù)據(jù),看看是否支持第4步的預(yù)測,并決定是否回到第3步,改進(jìn)假說、預(yù)測或?qū)嶒?yàn)過程。
如果遇到問題,歡迎在評論區(qū)留言,與我交流。非常歡迎你把實(shí)驗(yàn)的步驟、過程和結(jié)果分享給我,以便一起改進(jìn)這個實(shí)驗(yàn)。我會在這個實(shí)驗(yàn)的將來的版本的致謝段落,署上你的名字和你所做的改進(jìn)。
如果覺得本文對你有幫助,歡迎點(diǎn)贊,并轉(zhuǎn)發(fā)給其他志同道合的小伙伴。你覺得引導(dǎo)開發(fā)人員做好功能自測,還有什么其他好辦法?你還希望我聊有關(guān)做軟件的其他什么新話題?歡迎在評論區(qū)留言。我會仔細(xì)閱讀每一條留言。期待聽到你的聲音。
企業(yè)生意好,系統(tǒng)運(yùn)行穩(wěn)。你所閱讀的文章,來自“吾真本說混沌工程”知乎專欄。