3. 測(cè)試用例開(kāi)發(fā)
一個(gè)好的測(cè)試用例就是有一個(gè)合理的概率來(lái)找到Bug,不要冗余,要有針對(duì)性,一個(gè)測(cè)試只針對(duì)一件事情。特別是功能測(cè)試的時(shí)候,如果一個(gè)測(cè)試是測(cè)了兩項(xiàng)功能,那么如果測(cè)試結(jié)果失敗的話,就不知道到底是哪項(xiàng)功能出了問(wèn)題。
測(cè)試用例開(kāi)發(fā)中主要使用的技術(shù)有等價(jià)類劃分,邊界值的分析,Error Guessing Testing。
等價(jià)類劃分是根據(jù)輸入輸出條件,以及自身的一些特性分成兩個(gè)或更多個(gè)子集,來(lái)減少所需要測(cè)試的用例個(gè)數(shù),并且能用很少的測(cè)試用例來(lái)覆蓋很多的情況,減少測(cè)試用例的冗余度。在等價(jià)類劃分中,最基本的劃分是一個(gè)為合法的類,一個(gè)為不合法的類。
邊界值的分析是利用了一個(gè)規(guī)律,即程序最容易發(fā)生錯(cuò)誤的地方就是在邊界值的附近,它取決于變量的類型,以及變量的取值范圍。一般對(duì)于有n個(gè)變量時(shí),會(huì)有6n 1個(gè)測(cè)試用例,取值分別是min-1, min, min 1, normal, max-1, max,max 1的組合。邊界值的分析的缺點(diǎn),是對(duì)邏輯變量和布爾型變量不起作用,還有可能會(huì)忽略掉某些輸入的組合。
Error Guessing Testing完全靠的是經(jīng)驗(yàn),所設(shè)計(jì)的測(cè)試用例就是常說(shuō)的猜測(cè)。感覺(jué)到軟件在某個(gè)地方可能出錯(cuò),就去設(shè)計(jì)相應(yīng)的測(cè)試用例,這主要是靠實(shí)際工作中所積累的經(jīng)驗(yàn)和知識(shí)。其優(yōu)點(diǎn)是速度快,只要想得到,就能很快設(shè)計(jì)出測(cè)試用例。缺點(diǎn)就是沒(méi)有系統(tǒng)性,無(wú)法知道覆蓋率會(huì)有多少,很可能會(huì)遺漏一些測(cè)試領(lǐng)域。
實(shí)際上在微軟是采用一些專門的軟件或工具負(fù)責(zé)測(cè)試用例的管理,有一些測(cè)試信息可以被記錄下來(lái),比如測(cè)試用例的簡(jiǎn)單描述,在哪些平臺(tái)執(zhí)行,是手工測(cè)試還是自動(dòng)測(cè)試,運(yùn)行的頻率是每天運(yùn)行一次,還是每周運(yùn)行一次。此外還有清晰的測(cè)試通過(guò)或失敗的標(biāo)準(zhǔn),以及詳細(xì)記錄測(cè)試的每個(gè)步驟。
4. Bug跟蹤過(guò)程
在軟件開(kāi)發(fā)項(xiàng)目中,測(cè)試人員的一項(xiàng)最重要使命就是對(duì)所有已知Bug進(jìn)行有效的跟蹤和管理,保證產(chǎn)品中出現(xiàn)的所有問(wèn)題都可以得到有效的解決。一般地,項(xiàng)目組發(fā)現(xiàn)、定位、處理和最終解決一個(gè)Bug的過(guò)程包括Bug報(bào)告、Bug評(píng)估和分配、Bug處理、Bug關(guān)閉等四個(gè)階段:
1)測(cè)試工程師在測(cè)試過(guò)程中發(fā)現(xiàn)新的Bug后,應(yīng)向項(xiàng)目組報(bào)告該Bug的位置、表現(xiàn)、當(dāng)前狀態(tài)等信息。項(xiàng)目組在Bug數(shù)據(jù)庫(kù)中添加該Bug的記錄。
2)開(kāi)發(fā)經(jīng)理對(duì)已發(fā)現(xiàn)的Bug進(jìn)行集中討論,根據(jù)Bug對(duì)軟件產(chǎn)品的影響來(lái)評(píng)估Bug的優(yōu)先級(jí),制定Bug的修正策略。按照Bug的優(yōu)先級(jí)順序和開(kāi)發(fā)人員的工作安排,開(kāi)發(fā)經(jīng)理將所有需要立即處理的Bug分配給相應(yīng)的開(kāi)發(fā)工程師。
3)開(kāi)發(fā)工程師根據(jù)安排對(duì)特定的Bug進(jìn)行處理,找出代碼中的錯(cuò)誤原因,修改代碼,重新生成產(chǎn)品版本。
4)開(kāi)發(fā)工程師處理了Bug之后,測(cè)試人員需要對(duì)處理后的結(jié)果進(jìn)行驗(yàn)證,經(jīng)過(guò)驗(yàn)證確認(rèn)已正確處理的Bug被標(biāo)記為關(guān)閉(Close)狀態(tài)。測(cè)試工程師既需要驗(yàn)證Bug是否已經(jīng)被修正,也需要確定開(kāi)發(fā)人員有沒(méi)有在修改代碼的同時(shí)引入新的Bug。
5. Bug的不同處理方式
在某些情況下,Bug已處理并不意味著B(niǎo)ug已經(jīng)被修正。開(kāi)發(fā)工程師可以推遲Bug的修正時(shí)間,也可以在分析之后告知測(cè)試工程師這實(shí)際上不是一個(gè)真正的Bug。也就是說(shuō),某特定的Bug經(jīng)開(kāi)發(fā)工程師處理之后,該Bug可能包括以下幾種狀態(tài)。
已修正:開(kāi)發(fā)工程師已經(jīng)修正了相應(yīng)的程序代碼,該Bug不會(huì)出現(xiàn)了。
可推遲:該Bug的重要程度較低,不會(huì)影響當(dāng)前應(yīng)提交版本的主要功能,可安排在下一版本中再行處理。
設(shè)計(jì)問(wèn)題:該Bug與程序?qū)崿F(xiàn)無(wú)關(guān),其所表現(xiàn)出來(lái)的行為完全符合設(shè)計(jì)要求,對(duì)此應(yīng)提交給程序經(jīng)理處理。
無(wú)需修正:該Bug的重要程度非常低,根本不會(huì)影響程序的功能,項(xiàng)目組沒(méi)有必要在這些Bug上浪費(fèi)時(shí)間。
五、成為優(yōu)秀測(cè)試工程師的要求
要成為一名優(yōu)秀的測(cè)試工程師,首先對(duì)計(jì)算機(jī)的基本知識(shí)要有很好的了解,精通一門或多門的編程語(yǔ)言,具備一定的程序調(diào)試技能,掌握測(cè)試工具的開(kāi)發(fā)和使用技術(shù)。同時(shí)要比較細(xì)心,會(huì)按照任務(wù)的輕重緩急來(lái)安排自己的工作,要有很好的溝通能力。此外,還要善于用非常規(guī)的方式思考問(wèn)題,盡可能多的參加軟件測(cè)試項(xiàng)目,在實(shí)踐中學(xué)習(xí)技能,積累經(jīng)驗(yàn),不斷分析和總結(jié)軟件開(kāi)發(fā)過(guò)程中可能出錯(cuò)的環(huán)節(jié)。這樣,一名優(yōu)秀的測(cè)試工程師就從軟件測(cè)試的實(shí)踐中脫穎而出了。