我——作為一名測試人員——有一個(gè)與眾不同的習慣:每當要加入一個(gè)新項目的時(shí)候,我總會(huì )找到項目中的同伴,真誠而親切地說(shuō):“為了更好地合作,我有5個(gè)約定,希望大家能盡量遵守”。
我們的團隊需要讓客戶(hù)頻繁的得到可用的軟件,客戶(hù)的不斷反饋會(huì )給軟件的未來(lái)做出最正確的方向指引。
如果我們交付的軟件有很多質(zhì)量的問(wèn)題,存在大量的缺陷,客戶(hù)會(huì )被這些缺陷的奇怪行為干擾,沒(méi)有辦法把注意力放在軟件本身的價(jià)值是否符合他們的真正需求上, 不能給出最有價(jià)值的反饋。所以,我們只有頻繁的做測試,在每次交付之前都把質(zhì)量問(wèn)題找出來(lái)告訴我們的團隊,問(wèn)題才能及時(shí)的得到改正。
而我堅信“prevention is better than cure”(預防勝于治療),我會(huì )要把工作的重點(diǎn)放在預防缺陷上,這樣可以節省Dev們很多修復缺陷的時(shí)間與精力。
為了達到這個(gè)目的,我需要跟你一起參加客戶(hù)需求會(huì )議,盡早的了解客戶(hù)需求與使用軟件的慣常行為。那么在你完成需求的驗收條件的定義的時(shí)候,我也基本完成了測試用例的準備。
我們可以趕在開(kāi)發(fā)人員們寫(xiě)代碼之前就告訴他們我要測什么,讓他們減少因為過(guò)于樂(lè )觀(guān)而漏掉的一些重要的有破壞性的情況,減少缺陷的發(fā)生。這是我測試的一項重要任務(wù)。
如果你們在大部分需求都整理好了再交給我們,我會(huì )浪費掉等待的時(shí)間。更重要的是,開(kāi)發(fā)好的軟件里面已經(jīng)有很多本來(lái)可以不存在的缺陷在里面了,開(kāi)發(fā)人員們可能需要加班加點(diǎn)來(lái)保證在項目最終交付時(shí)間之前把它們改好。這樣很容易產(chǎn)生新的缺陷的。
所以,請讓我盡早了解需求,請不要讓我到項目后期才能開(kāi)始測試。
我知道,對于你們,自動(dòng)化測試不過(guò)是利用junit, rspec, selenium,watir,uiautomation等等寫(xiě)出的“另一段程序”而已。而對于80%的QA來(lái)說(shuō),編寫(xiě)自動(dòng)化測試并不是一件簡(jiǎn)單的事情。
不過(guò)我仍然相信,有測試人員介入的自動(dòng)化測試更有價(jià)值。
你們用單元測試,集成測試來(lái)保證代碼的質(zhì)量。然而你們的這些日常測試離代碼更近,離最終用戶(hù)還點(diǎn)遠。很多測試都不是在測軟件功能。
你們可以把功能測試寫(xiě)的又快又多,而我們可以指出什么功能測試最有必要加到自動(dòng)化測試中。
你們平時(shí)大部分精力都在編碼上,沒(méi)有太多時(shí)間去查都有什么缺陷。而我們可以指出什么地方缺陷可能會(huì )出現的比較頻繁,建議在這些脆弱的地方加自動(dòng)化測試。
所以請聽(tīng)聽(tīng)我們的意見(jiàn),我們可以給你們提供這些信息。
軟件測試是一個(gè)永無(wú)止盡的任務(wù)?;旧蠜](méi)有什么軟件簡(jiǎn)單到我們能夠嘗試完它的每一個(gè)可能的路徑的。就連一個(gè)看似簡(jiǎn)單的微軟計算器都有無(wú)窮盡的路徑,無(wú)止盡的輸入,更何況比這個(gè)更復雜的商用軟件。
如果你們擔心沒(méi)有嘗試過(guò)全部的路徑不可靠,疑惑我們怎么敢說(shuō)這個(gè)軟件質(zhì)量是好的還是壞,都有什么風(fēng)險。請你們先注意,我們是跟業(yè)務(wù)分析師一樣,都了解軟件的價(jià)值的。價(jià)值可以幫我們做出判斷,什么時(shí)候可以停止測試并對客戶(hù)說(shuō)我們的軟件已經(jīng)滿(mǎn)足您的要求了,請放心使用。
因為我們了解價(jià)值,我們可以肯定的說(shuō)哪些軟件的使用方式是至關(guān)重要的,哪些是不太可能出現的。我們會(huì )在全面測試了軟件以后,把主要精力放在價(jià)值高的功能點(diǎn)上。合理的利用項目有限的時(shí)間。
因為我們了解價(jià)值,我們可以正確的把發(fā)現的問(wèn)題分類(lèi)。我們可以幫助dev們把精力放在重要的缺陷上,避免把時(shí)間放在對于客戶(hù)微不足道卻不得不花費大量精力才能修正的問(wèn)題上。
所以,請不要要求我們無(wú)止盡的測試一個(gè)軟件。我們了解價(jià)值,請相信我們的判斷。
BA和Dev們都是關(guān)注一個(gè)軟件在什么情況是可以良好的工作。而我們除了驗證這些情況以外,大量的時(shí)候都用在尋找什么樣的情況軟件不能正常的運行。所以除 了針對定義好的軟件行為進(jìn)行測試,我們還會(huì )做很多探索性測試。我們通??梢酝ㄟ^(guò)這樣的測試發(fā)現一些沒(méi)有定義的、不曾預期的行為。這些行為往往將會(huì )構成軟件 交付的風(fēng)險。
我們會(huì )告訴你們現在都發(fā)生了什么問(wèn)題,分別分布在哪里。
我們會(huì )告訴你們,在什么情況下軟件可能會(huì )有異常行為,是不是會(huì )牽連到其他的部分,是否可以繞過(guò)去。
我們會(huì )告訴你們,哪些部分功能比較不穩定,需要更多的留意。
結對不是dev們的專(zhuān)利。我不希望總見(jiàn)到你們獨自坐在自己的位置上冥思苦想。走出去,跟其他隊友多多交流!
多跟測試隊友交流,pair看看設計的測試用例是不是夠全面,獨自一個(gè)人想到的未必足夠好。他們會(huì )給你誠懇的意見(jiàn)的。對他們,也請一樣認真對待。
如果你發(fā)現開(kāi)發(fā)人員們做出的架構決定使測試工作變得更困難。那么請大聲地告訴他們,design for testability(提高你們設計的可測性)。
如果你發(fā)現業(yè)務(wù)分析師寫(xiě)的需求無(wú)法驗證,定義的客戶(hù)行為不夠具體,一個(gè)用戶(hù)故事中包含太多了功能點(diǎn),等等,那么也請大聲地告訴他,INVEST(獨立,可協(xié)商,價(jià)值,可估算,短小,可測)。
也請你們多跟開(kāi)發(fā)人員結對寫(xiě)自動(dòng)化測試,既可以幫助你們學(xué)習怎樣更好的編寫(xiě)自動(dòng)化測試,也能幫助開(kāi)發(fā)人員們結對更多的了解用戶(hù)行為。
這就是我的五個(gè)約定,它們是我在團隊中順利展開(kāi)工作的基礎。
作者:覃其慧,ThoughtWorks敏捷咨詢(xún)師。她參與了大量的敏捷軟件開(kāi)發(fā)的實(shí)踐和敏捷咨詢(xún)。目前主要關(guān)注以?xún)r(jià)值為驅動(dòng)的敏捷測試。
本文原文發(fā)表于InfoQ:http://www.infoq.com/cn/articles/thoughtworks-practice-parti
聯(lián)系客服