軟件測(cè)試是軟件工程的重要過程之一,是保證軟件質(zhì)量的重要手段。不同的軟件項(xiàng)目類型,軟件測(cè)試占整個(gè)項(xiàng)目開發(fā)工作量的15%到90%不等。例如普通數(shù)據(jù)分析軟件,測(cè)試投入的工作量比較小,但對(duì)于飛行控制、核電管理等軟件測(cè)試所投入的精力遠(yuǎn)大于開發(fā)投入。軟件測(cè)試的重要性可見一斑。
現(xiàn)在軟件測(cè)試的書籍非常多,有介紹測(cè)試?yán)碚摰摹⒂薪榻B測(cè)試過程的、有介紹自動(dòng)化測(cè)試的等等。軟件測(cè)試想入門可以先選擇2到3本好點(diǎn)的書,從閱讀開始。
這里我們先介紹一下軟件測(cè)試的基礎(chǔ)知識(shí)。
什么是軟件測(cè)試廣義的軟件測(cè)試說白了就是主動(dòng)地找軟件的問題,包括需求問題、功能問題、可用性問題、可靠性、邏輯問題、健壯性、性能等等。
為什么進(jìn)行軟件測(cè)試軟件行業(yè)發(fā)展初期,軟件測(cè)試的活基本是由開發(fā)工程師自己干的,測(cè)試方法及過程比較隨意。但是隨著軟件項(xiàng)目規(guī)模越來越大,越來越復(fù)雜,軟件故障越來越難以避免,給企業(yè)和個(gè)人帶來沉痛損失的案例也屢見不鮮,下面僅舉兩例:
1962年美國(guó)水手1號(hào)飛船發(fā)射后262秒就不得不摧毀掉,后來分析是因?yàn)榇a中漏敲了一個(gè)破折號(hào)。
2009年,豐田因雷克薩斯ES350突然剎車失靈,導(dǎo)致車上4名乘客全部罹難。事后豐田不得不在全球召回900萬輛汽車,本次召回給豐田帶來的經(jīng)濟(jì)損失達(dá)30億美元。后來據(jù)查是防抱死延時(shí)軟件故障所致。
因此,對(duì)軟件產(chǎn)品主動(dòng)進(jìn)行認(rèn)真測(cè)試,盡可能地查出可能的問題和漏洞,已經(jīng)是現(xiàn)代軟件開發(fā)必做的重要工作。通過軟件測(cè)試將軟件故障消滅在發(fā)布之前,這是所有軟件從業(yè)人員的共同心愿。
靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)軟件測(cè)試有動(dòng)態(tài)測(cè)試和靜態(tài)測(cè)試兩種方法。
靜態(tài)測(cè)試就是通過閱讀軟件的需求 、設(shè)計(jì)、編碼等靜態(tài)文檔,通過分析靜態(tài)文字或圖表來發(fā)現(xiàn)需求、設(shè)計(jì)、編碼存在的問題。
可見靜態(tài)測(cè)試的主要方式就是同級(jí)評(píng)審,其好處是可以在軟件需求階段、設(shè)計(jì)階段和編碼期間就可以提前進(jìn)行檢查分析,及早發(fā)現(xiàn)存在的問題。一般而言,問題發(fā)現(xiàn)越早,修復(fù)成本越低。從這個(gè)角度看,靜態(tài)測(cè)試比動(dòng)態(tài)測(cè)試具有更高的性價(jià)比。
動(dòng)態(tài)測(cè)試就是等軟件開發(fā)完畢,測(cè)試工程師安裝好軟件,在不同的環(huán)境、不同的輸入的情況下,運(yùn)行并測(cè)試軟件的功能、可用性、性能等。我們通常所說的軟件測(cè)試就是指動(dòng)態(tài)測(cè)試。
單元測(cè)試、集成測(cè)試、用戶測(cè)試、阿爾法測(cè)試軟件系統(tǒng)根據(jù)功能和系統(tǒng)內(nèi)部結(jié)構(gòu)可以劃分為一系列的軟件模塊(或子系統(tǒng)),具體開發(fā)是一個(gè)模塊一個(gè)模塊地實(shí)現(xiàn)的(當(dāng)然多個(gè)模塊可以并行開發(fā))。 每實(shí)現(xiàn)一個(gè)模塊,開發(fā)人員都要認(rèn)真地對(duì)所開發(fā)的模塊進(jìn)行測(cè)試,這種主要由開發(fā)工程師執(zhí)行的模塊測(cè)試,我們稱之為單元測(cè)試。
單元測(cè)試期間一般要開發(fā)專門的測(cè)試主程序(有時(shí)還要開發(fā)測(cè)試樁程序)。
整個(gè)系統(tǒng)開發(fā)完畢后,由測(cè)試團(tuán)隊(duì)對(duì)軟件進(jìn)行整體的測(cè)試,我們稱之為集成測(cè)試。
用戶拿到我們開發(fā)的軟件產(chǎn)品或系統(tǒng)后,他們一般也要進(jìn)行獨(dú)立的測(cè)試,這種類型的測(cè)試稱之為用戶測(cè)試。
如果認(rèn)為軟件基本合格了,企業(yè)可以將軟件進(jìn)行小范圍發(fā)布(如企業(yè)內(nèi)部、免費(fèi)用戶群等),讓大家測(cè)試用并反饋發(fā)現(xiàn)的問題,這個(gè)過程叫阿爾法測(cè)試。
單元測(cè)試、集成測(cè)試都需要事先進(jìn)行規(guī)劃,有明確的流程要求。
集成測(cè)試流程集成測(cè)試與軟件開發(fā)是軟件開發(fā)過程的兩條并行線程,其流程如下圖所示:
如上圖所示,集成測(cè)試可劃分為測(cè)試分析、測(cè)試設(shè)計(jì)(包括測(cè)試準(zhǔn)備)、測(cè)試執(zhí)行三大步驟。
測(cè)試分析階段對(duì)應(yīng)系統(tǒng)的需求分析,它將軟件系統(tǒng)進(jìn)行功能拆分,分成不同級(jí)別的多個(gè)功能點(diǎn),這些功能點(diǎn)是隨后測(cè)試設(shè)計(jì)的基礎(chǔ)。
測(cè)試設(shè)計(jì)在測(cè)試分析的基礎(chǔ)上為每個(gè)功能點(diǎn)設(shè)計(jì)多個(gè)測(cè)試用例。有些用例重點(diǎn)測(cè)試基本功能,有些用例重點(diǎn)測(cè)試錯(cuò)誤響應(yīng),有些用例測(cè)試邊界條件,有些用例測(cè)試性能等等。測(cè)試數(shù)據(jù)的收集準(zhǔn)備是測(cè)試設(shè)計(jì)的重要工作內(nèi)容,也往往是測(cè)試過程的難點(diǎn)所在。
集成測(cè)試執(zhí)行階段使用測(cè)試設(shè)計(jì)生成的測(cè)試用例和測(cè)試數(shù)據(jù),對(duì)軟件逐個(gè)測(cè)試用例進(jìn)行測(cè)試。發(fā)現(xiàn)軟件故障應(yīng)按公司模板或使用專門的故障跟蹤工具進(jìn)行規(guī)范化的故障跟蹤記錄。
一輪測(cè)試完畢后,開發(fā)工程師應(yīng)該根據(jù)故障記錄進(jìn)行問題重現(xiàn)、分析、修復(fù),并認(rèn)真記錄好修復(fù)信息。
通常軟件提交給用戶前需要進(jìn)行三輪以上的集成測(cè)試。
實(shí)際工作中我們常常發(fā)現(xiàn),按正規(guī)的集成測(cè)試流程走也有一定的問題,就是工作量大,投入時(shí)間長(zhǎng),測(cè)試效果往往不好。大道無形,我們不妨根據(jù)項(xiàng)目和企業(yè)自身人力資源特點(diǎn),將集成測(cè)試和流程測(cè)試、Bug Hunting測(cè)試等多種測(cè)試方式結(jié)合起來使用,效果會(huì)更好一些,
測(cè)試工程師的職業(yè)規(guī)劃大的軟件公司通常有專門的測(cè)試團(tuán)隊(duì),測(cè)試團(tuán)隊(duì)常年累月負(fù)責(zé)軟件的測(cè)試分析、測(cè)試設(shè)計(jì)、集成測(cè)試工作。
好的測(cè)試工程師需要熟悉目標(biāo)軟件所在行業(yè)的專業(yè)背景知識(shí),需要對(duì)項(xiàng)目需求細(xì)節(jié)有深入透徹的把握,需要有對(duì)軟件內(nèi)在邏輯的直覺領(lǐng)悟,也需要足夠的耐性、細(xì)心和認(rèn)真負(fù)責(zé)的工作態(tài)度。加班加點(diǎn)是軟件測(cè)試人員的家常便飯,團(tuán)隊(duì)沖突也是測(cè)試團(tuán)隊(duì)要面對(duì)的常客,當(dāng)一個(gè)好的測(cè)試工程師的確不容易。
小規(guī)模軟件公司,往往沒有專門的測(cè)試團(tuán)隊(duì),測(cè)試工作往往由開發(fā)工程師、現(xiàn)場(chǎng)工程師輪流擔(dān)當(dāng)。
測(cè)試工程師們?cè)跍y(cè)試工作得心應(yīng)手之后,結(jié)合自身特點(diǎn),學(xué)習(xí)掌握一些開發(fā)技能,對(duì)自己職業(yè)發(fā)展會(huì)有幫助。