在51Testing論壇的每周一問(wèn)活動(dòng)中看到這樣一道題目:測(cè)試用例應(yīng)該依照需求文檔來(lái)開(kāi)發(fā),但是我們的項(xiàng)目根本就沒(méi)有需求文檔?那測(cè)試用例該如何開(kāi)發(fā)呢?
我也常常碰到這樣的問(wèn)題,我的經(jīng)驗(yàn)是跟系統(tǒng)開(kāi)發(fā)人員多溝通以便了解到他們的開(kāi)發(fā)流程、思路、注意細(xì)節(jié)等等,用筆記下來(lái)(俗話說(shuō)“好記性不如爛筆頭”嘛),理順?biāo)悸?,然后再運(yùn)用設(shè)計(jì)測(cè)試用例的等價(jià)類劃分、邊界值分析等方法對(duì)照系統(tǒng)各模塊進(jìn)行設(shè)計(jì)!
沒(méi)有文檔對(duì)于單元測(cè)試來(lái)說(shuō)也是一個(gè)難題,弄不好會(huì)使測(cè)試毫無(wú)意義。前段時(shí)間,我收到用戶反饋說(shuō),單元測(cè)試的效果不好,經(jīng)了解,情形是這樣的:沒(méi)有詳細(xì)設(shè)計(jì)文檔,由測(cè)試部門(mén)做單元測(cè)試,由于沒(méi)有文檔,測(cè)試員只好讀代碼來(lái)判斷程序功能,預(yù)期輸出是讀代碼后自已算出來(lái)的,結(jié)果效果不好。
例如:
int func(int a, int b){return a-b;};
本來(lái)是計(jì)算兩個(gè)數(shù)的和的,結(jié)果程序員將加號(hào)寫(xiě)成了減號(hào)。
測(cè)試時(shí),如果有文檔,哪怕是很簡(jiǎn)單的寫(xiě)一句:返回兩個(gè)數(shù)的和,那么,測(cè)試員就可以這樣設(shè)計(jì)用例:輸入兩個(gè)1,判斷返回值是不是2,馬上就能發(fā)現(xiàn)錯(cuò)誤,但由于沒(méi)有文檔,測(cè)試員不知道代碼的設(shè)計(jì)功能,根據(jù)代碼,自己算出一個(gè)輸出:0,這種測(cè)試基本上就沒(méi)有意義了。
我們推薦的解決辦法有:
辦法一:由開(kāi)發(fā)部門(mén)補(bǔ)充文檔,可以不要求太正規(guī),只要讓測(cè)試員想得清楚:什么輸入應(yīng)該產(chǎn)生什么輸出就OK了。
辦法二:測(cè)試員只是設(shè)定用例的輸入,輸出全部設(shè)為FALSE,然后由開(kāi)發(fā)部門(mén)設(shè)定輸出。
辦法三:由開(kāi)發(fā)部門(mén)做基本功能測(cè)試,測(cè)試部門(mén)補(bǔ)充用例。由于已有基本用例,測(cè)試員根據(jù)現(xiàn)有用例就可以判斷程序功能。
辦法四:程序員編碼時(shí),邊開(kāi)發(fā)邊測(cè)試代碼的基本功能,測(cè)試部門(mén)只是補(bǔ)充用例。與辦法三的區(qū)別是:辦法三是事后測(cè)試,辦法四是測(cè)試驅(qū)動(dòng)開(kāi)發(fā)。
越是排在后面的辦法,推薦指數(shù)越高。如果這些全部做不到,那我的最后建議是:重新考慮測(cè)試是否值得。1、要求項(xiàng)目組提供測(cè)試特性;
2、如果項(xiàng)目組由于各種因素不能提供,則要測(cè)試人員自己寫(xiě)測(cè)試特性。
3、組織評(píng)審,要求對(duì)模塊熟悉的人員(項(xiàng)目經(jīng)理、需求、開(kāi)發(fā))參加。
4、根據(jù)測(cè)試特性,寫(xiě)測(cè)試點(diǎn),再組織評(píng)審。
……
總之,開(kāi)始一項(xiàng)工作之前,一定要問(wèn)清楚是什么,完成標(biāo)準(zhǔn)是什么。測(cè)試工作的血淚史告訴我們:如果這時(shí)講義氣,后面就要遭殃了。
這應(yīng)該是一個(gè)非常普遍的問(wèn)題,目前很多公司的現(xiàn)狀就是這樣!
沒(méi)有需求文檔,最頭疼的問(wèn)題就是不知道開(kāi)發(fā)的產(chǎn)品應(yīng)該是個(gè)什么樣,要完成哪些功能,達(dá)到什么指標(biāo)。
下面幾個(gè)步驟應(yīng)該可以幫助你明確目標(biāo):
1、首先可以查找其他相關(guān)文檔。比如產(chǎn)品策劃書(shū)、Feature List,不可能什么文檔都沒(méi)有吧。我們可以收集一切相關(guān)的文檔來(lái)幫助理解所要測(cè)試的產(chǎn)品需要完成的目標(biāo)。
2、盡量多參加該項(xiàng)目組內(nèi)的會(huì)議。比如需求討論、設(shè)計(jì)討論、計(jì)劃討論等會(huì)議,盡管沒(méi)有白紙黑字的文檔,但討論過(guò)程中也能讓你加深對(duì)產(chǎn)品的理解。
3、咨詢相關(guān)人員。經(jīng)過(guò)以上兩個(gè)過(guò)程,應(yīng)該對(duì)產(chǎn)品有了一個(gè)初步的理解,花點(diǎn)時(shí)間自己把大致的功能點(diǎn)整理一下,遇到不明確的、有疑問(wèn)的,可以咨詢項(xiàng)目負(fù)責(zé)人或者相關(guān)市場(chǎng)人員,他們應(yīng)該對(duì)整個(gè)產(chǎn)品心中有數(shù),否則這個(gè)產(chǎn)品真的就沒(méi)法做下去了。這里有一個(gè)前提是,在對(duì)產(chǎn)品有了初步了解后,才有針對(duì)性的去咨詢,否則在什么都不知道的情況下,第一,對(duì)方?jīng)]有耐心和時(shí)間向你介紹整個(gè)產(chǎn)品;第二,對(duì)于對(duì)方的講解,估計(jì)最多也只能了解個(gè)大概,不能很好理解。
4、使用舊版本。如果當(dāng)前開(kāi)發(fā)的產(chǎn)品是以前做
過(guò)產(chǎn)品的升級(jí)版,或者和以前某個(gè)項(xiàng)目類似,這樣就最好了,有個(gè)實(shí)實(shí)在在的“demo”給你用,當(dāng)然理解也更深入了。
5、召集相關(guān)人員,對(duì)你整理的結(jié)果進(jìn)行討論。整理以上幾步得出的結(jié)論,總結(jié)成文檔,發(fā)給相關(guān)人員,包括項(xiàng)目負(fù)責(zé)人、市場(chǎng)部代表、開(kāi)發(fā)人員等,讓他們幫助評(píng)審check,根據(jù)意見(jiàn)對(duì)文檔不斷進(jìn)行補(bǔ)充完善。當(dāng)最后通過(guò)評(píng)審后,這個(gè)文檔就可以當(dāng)作依據(jù)來(lái)設(shè)計(jì)你的測(cè)試用例了。