《顛覆完美軟件-軟件測(cè)試必須知道的幾件事》這本書是“溫伯格技術(shù)思想三部曲”的第二本蝠嘉,同《程序開發(fā)心理學(xué)》一樣宙攻,溫伯格先生的切入點(diǎn)仍然是心理學(xué)沫浆,從心理學(xué)角度揭示軟件測(cè)試的必要性拼弃、本質(zhì)略号,以及軟件項(xiàng)目管理過程中出現(xiàn)的官觅、與測(cè)試相關(guān)的種種現(xiàn)象的深層原因纵菌。我認(rèn)為這本書更適合軟件開發(fā)項(xiàng)目的管理者、測(cè)試團(tuán)隊(duì)管理者和對(duì)管理感興趣的開發(fā)者閱讀休涤。
一咱圆、 測(cè)試的原因與目的
測(cè)試的根基在于心理學(xué),在于對(duì)人腦行為的研究功氨。如果人類是完美的思考者序苏,我們就不需要對(duì)工作進(jìn)行測(cè)試。如果我們是沒有感情的機(jī)器人捷凄,就可以通過合理的方式使用測(cè)試忱详,降低我們做出的決定中蘊(yùn)含的風(fēng)險(xiǎn)。如果我們是從一個(gè)模子里克隆出來的跺涤,那么我們就會(huì)用相同的方法評(píng)估風(fēng)險(xiǎn)匈睁。但是,我們是不完美的桶错、不理智的航唆、價(jià)值驅(qū)動(dòng)的、不同的人院刁,因此我們要進(jìn)行測(cè)試糯钙,并對(duì)測(cè)試進(jìn)行測(cè)試。
測(cè)試的作用在于提供信息,幫助管理者對(duì)軟件的狀態(tài)(實(shí)現(xiàn)了哪些功能任岸,存在哪些缺陷再榄,具有哪些特性等等)有更準(zhǔn)確的認(rèn)識(shí),幫助管理者作出決策享潜,降低項(xiàng)目風(fēng)險(xiǎn)困鸥。
測(cè)試并不會(huì)改進(jìn)產(chǎn)品,根據(jù)測(cè)試提供的信息米碰,對(duì)產(chǎn)品缺陷進(jìn)行的修復(fù)才是窝革。
不良的測(cè)試也許比不測(cè)試更糟购城。
考慮不周的測(cè)試或者執(zhí)行過程不佳的測(cè)試都?xì)w于“不良測(cè)試”或“惡劣測(cè)試”這一統(tǒng)稱吕座。這樣的測(cè)試可能會(huì)讓人以為產(chǎn)品的質(zhì)量高于實(shí)際質(zhì)量,導(dǎo)致產(chǎn)品在就緒之前就被交付瘪板。不良的測(cè)試也可以能會(huì)讓人以為產(chǎn)品質(zhì)量低于其實(shí)際質(zhì)量吴趴,導(dǎo)致推遲交付,結(jié)果損失潛在的效益侮攀。
測(cè)試可以揭示缺陷的存在锣枝,而不能表明它們不存在。
二兰英、關(guān)于信息免疫
測(cè)試的目的是提供信息撇叁,但是大家常常會(huì)將這些信息看成某種威脅。當(dāng)我們面對(duì)那些不想聽到的信息時(shí)畦贸,“免疫系統(tǒng)”會(huì)跳出來保護(hù)自己陨闹。信息免疫會(huì)破壞你為測(cè)試作出的最大努力,使有關(guān)缺陷的消息變成對(duì)牛彈琴薄坏。
在我們的自尊程度比較低趋厉,而某些交互觸發(fā)了生存規(guī)則的時(shí)候,我們就會(huì)采取防衛(wèi)措施胶坠。因?yàn)槿绻嬉?guī)則被打破君账,會(huì)導(dǎo)致我們對(duì)自身安全產(chǎn)生強(qiáng)烈的恐懼感。測(cè)試極容易觸及這樣的生存規(guī)則沈善。例如:
- 如果某人指出你程序中的一個(gè)缺陷乡数,你很可能會(huì)觸發(fā)自己的生存規(guī)則,說:‘我一定要保持完美闻牡【桓埃’
- 如果你正試圖使用一個(gè)程序而無法讓它正確工作,你可能會(huì)觸發(fā)自己的生存規(guī)則澈侠,說:‘我一點(diǎn)兒也不笨劫侧。’
- 如果測(cè)試發(fā)現(xiàn)了一堆缺陷,項(xiàng)目無法順利完成烧栋,你可能會(huì)觸發(fā)自己的生存規(guī)則写妥,說:‘我必須按進(jìn)度工作’或者‘我必須實(shí)現(xiàn)承諾’。
审姓。珍特。。魔吐。扎筒。。
心理學(xué)家將防衛(wèi)措施分成了六個(gè)類別:1酬姆、壓抑無法接受的事情(死不承認(rèn)存在缺陷)嗜桌;2、讓不可接受的事物合理化(將缺陷硬說成是特性)辞色;3骨宠、將自己的負(fù)面品質(zhì)投射給其他人(說用戶沒有足夠的耐心);4相满、轉(zhuǎn)移指責(zé)從而免除自己的責(zé)任(指責(zé)用戶太挑剔层亿、太笨);5立美、對(duì)自己的不足進(jìn)行過度補(bǔ)償(被指出缺少校驗(yàn)后為其添加過度校驗(yàn))匿又;6、在覺得失去控制時(shí)開始強(qiáng)迫自己(拒絕承認(rèn)事實(shí))建蹄。
如何應(yīng)對(duì)防衛(wèi)反應(yīng)碌更?
首先辨識(shí)對(duì)方是否處于防衛(wèi)狀態(tài),如果是躲撰,先耐心講道理针贬,實(shí)在講不通就算了,千萬別跟他生氣拢蛋。
更重要的一點(diǎn)桦他,是注意使自己保持警醒、深思熟慮和主動(dòng)谆棱,盡量避免自己陷入防衛(wèi)反應(yīng)之中快压。
三、有關(guān)測(cè)試的主要誤區(qū)
學(xué)會(huì)識(shí)別一些有關(guān)測(cè)試的主要誤區(qū)可以消除項(xiàng)目經(jīng)理大約一半的常犯錯(cuò)誤垃瞧。
常見錯(cuò)誤
1蔫劣、認(rèn)為指責(zé)可以起長期作用:我們也許可以看到指責(zé)帶來短期的結(jié)果,但是它帶來的后果可能不是有益的个从,而會(huì)像是拿棍子去捅一條狗一樣脉幢,反倒被咬一口歪沃。
2、認(rèn)為對(duì)問題的第一印象總是正確的:第一印象是重要的嫌松,但是測(cè)試問題通常要求進(jìn)行更多的分析沪曙,尤其是如果你發(fā)現(xiàn)自己正在指責(zé)別人時(shí)。
3萎羔、認(rèn)為可以對(duì)任何事物進(jìn)行“窮舉”測(cè)試:如果要求“窮舉測(cè)試”液走,通常得到的就是測(cè)試人員以不同的方式進(jìn)行欺騙,對(duì)他們的經(jīng)理進(jìn)行隱瞞贾陷,直至最終的反叛缘眶。
4、認(rèn)為可以采用“投機(jī)取巧”的方法開發(fā)軟件髓废,然后通過測(cè)試提高質(zhì)
量:投機(jī)取巧就是投機(jī)取巧巷懈,它是低質(zhì)的,而且會(huì)很難測(cè)試瓦哎。
5砸喻、以為系統(tǒng)測(cè)試可以捕獲所有缺陷而將單元測(cè)試當(dāng)作冗余加以忽略
6柔逼、期望測(cè)試可以產(chǎn)生質(zhì)量:質(zhì)量是整個(gè)開發(fā)過程的產(chǎn)物蒋譬。不良的測(cè)試會(huì)導(dǎo)致不良的質(zhì)量,但是良好的測(cè)試并不一定能導(dǎo)致良好的質(zhì)量愉适,除非整個(gè)開發(fā)過程的其他部分都是恰當(dāng)?shù)牟⑶业玫搅苏_的執(zhí)行犯助。
四、薩提亞交互模型
一個(gè)有助于測(cè)試人員改進(jìn)他們對(duì)軟件狀態(tài)進(jìn)行觀察和溝通的系統(tǒng)维咸。
(這個(gè)模型其實(shí)適用于各種溝通情況)
薩提亞交互模型將任何溝通過程都分解成四個(gè)主要階段:攝取-》確定含義-》確定重要性-》做出反應(yīng)
1剂买、攝取
攝取是一個(gè)主動(dòng)的過程。要盡可能地了解那些限制攝取的因素癌蓖,信息的來源瞬哼,以及數(shù)據(jù)如何獲得了帶有偏差的含義,被動(dòng)等待別人將數(shù)據(jù)給你或許不會(huì)讓你成為受害者租副,但至少會(huì)讓他們可以潛在地控制你將會(huì)得到哪些數(shù)據(jù)坐慰。
2、確定含義
數(shù)據(jù)本身并不會(huì)說話用僧,它們也不是沒有任何模糊含義结胀。不同的思維會(huì)確定不同的含義,不同的思維會(huì)確定不同的重要性责循,最好記住對(duì)同樣的數(shù)據(jù)可以有很多種可能的解釋糟港。
我們?cè)谡務(wù)撥浖收系臅r(shí)候,不是指責(zé)別人院仿。
我們希望他們做的是單純地找出改進(jìn)的可能性秸抚,所以一定要注意檢查速和,避免導(dǎo)致其他人進(jìn)入防衛(wèi)狀態(tài)。
3剥汤、確定重要性
我們的情緒承載了關(guān)于事情有多重要的信息健芭。如果我們多注意情緒,認(rèn)真聽取秀姐,先解決重要的事慈迈,再解決不重要的事,就可以對(duì)獲得的數(shù)據(jù)做出最好的處理省有。
4痒留、做出反應(yīng)
對(duì)缺陷的正確反應(yīng):發(fā)現(xiàn)(find)它們; 評(píng)估(figure)它們蠢沿;修復(fù)(fix)它們
接近項(xiàng)目結(jié)束時(shí)如何反應(yīng):
即使是獲得了最佳管理的項(xiàng)目伸头,也幾乎無法避免在接近交付期的時(shí)候仍然存在一些缺陷。因此舷蟀,即使是在管理良好的項(xiàng)目中恤磷,第一反應(yīng)都應(yīng)該是為最后階段安排好時(shí)間,在計(jì)劃中不能只是一個(gè)簡單的測(cè)試工作塊野宜,而應(yīng)該是類似于下面這樣的扫步。
1、停止所有測(cè)試匈子,開始為最后階段做計(jì)劃河胎。
2、根據(jù)重要性對(duì)剩余的已知故障排序虎敦。
3游岳、估算在剩余的時(shí)間內(nèi)能夠按照重要性從高到低的順序可靠地修復(fù)其中的多少故障。
4a其徙、從交付計(jì)劃中去掉無法修復(fù)的特性胚迫。
4b、如果步驟4a要求放棄某些特性會(huì)讓產(chǎn)品變得不可接受唾那,就取消交付并重新制定交付計(jì)劃访锻。
5、接下來按照步驟2中確定的重要性順序去除缺陷通贞。
結(jié)尾的話
這本書與《程序開發(fā)心理學(xué)》的共同點(diǎn)是都用了大量來自實(shí)踐中的具體事例來說明問題朗若,我在讀書的過程中每每會(huì)由于看到熟悉的情景描述而會(huì)心微笑。此外昌罩,每個(gè)章節(jié)結(jié)尾都一個(gè)小節(jié)列出與本章內(nèi)容相關(guān)的常見錯(cuò)誤哭懈,我只把其中極小一部分摘錄到了筆記中。常見問題是信息量較大且集中的部分茎用,值得反復(fù)讀遣总。
這本書比《程序開發(fā)心理學(xué)》薄得多睬罗,翻起來也更容易,感興趣不妨找來讀讀旭斥。
最后附上天津圖書館的索書號(hào):復(fù)康路中文圖書借閱 : TP311.55/61