李長星 時 靜
(西安石油大學(xué)電子工程學(xué)院,陜西 西安 710065)
軟件測試作為保證軟件質(zhì)量的重要手段已經(jīng)引起國內(nèi)外越來越多的關(guān)注。軟件測試目的是為了找到軟件的錯誤和缺陷,在發(fā)現(xiàn)錯誤后,提供信息給軟件開發(fā)人員,幫助分析錯誤原因,從而改正錯誤,達(dá)到預(yù)防錯誤的發(fā)生,減少軟件開發(fā)費(fèi)用的目的。狹義上講,軟件測試是對軟件產(chǎn)品質(zhì)量的檢驗(yàn)和評價。它一方面檢查軟件產(chǎn)品質(zhì)量中存在的質(zhì)量問題,另一方面對產(chǎn)品質(zhì)量進(jìn)行客觀的評價。測試可以發(fā)現(xiàn)盡可能多的缺陷,從而期望消滅缺陷來提高軟件質(zhì)量。
軟件測試的目的決定了如何去組織測試。如果測試的目的是為了盡可能多地找出錯誤,那么測試就應(yīng)該直接針對軟件比較復(fù)雜的部分或是以前出錯比較多的位置。如果測試目的是為了給最終用戶提供具有一定可信度的質(zhì)量評價,那么測試就應(yīng)該直接針對在實(shí)際應(yīng)用中會經(jīng)常用到的商業(yè)假設(shè)。
測試只能證明缺陷存在,而不能證明缺陷不存在。測試的目標(biāo)是想以最少的時間和人力系統(tǒng)地找出軟件中潛在的各種錯誤和缺陷。測試的附帶收獲是,它能夠證明軟件的功能和性能與需求說明相符合。
需要指出:測試有助于提高軟件的質(zhì)量,但是提高軟件的質(zhì)量不能依賴于測試。如同考試時做完試卷后進(jìn)行的檢查有助于提高分?jǐn)?shù),但獲得高分?jǐn)?shù)不能依賴于答完試卷后的檢查。
雖然軟件的高質(zhì)量依賴于初始的設(shè)計(jì),對需求的把握,但是只有在測試過程中才能發(fā)現(xiàn)軟件中存在的錯誤和缺陷,所以測試對軟件的質(zhì)量起著至關(guān)重要的作用。對一個軟件而言,需求分析則是它的“先天期”,設(shè)計(jì)、編碼則是“后天成長期”,測試的任務(wù)就是根據(jù)先天的特征更有效更合理的檢驗(yàn)后天成長,并及時的指出錯誤和缺陷。所以,應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測試”作為軟件開發(fā)者的座右銘,在軟件開發(fā)中及早的引入軟件測試,這樣才能在開發(fā)過程中盡早發(fā)現(xiàn)和預(yù)防錯誤,提高軟件的質(zhì)量。
一個有效的測試流程可以找到更多的錯誤,節(jié)約更多的成本。在實(shí)踐過程中,逐漸總結(jié)出了軟件測試的生命周期:如圖1所示
圖1 軟件測試的生命周期
軟件測試貫穿于整個軟件開發(fā)過程,而對于不同主題的開發(fā)模式,軟件測試在其生命周期內(nèi)的表現(xiàn)形式也有所 度控制、測試管理等環(huán)節(jié)的基礎(chǔ)。用例分析主要包括下面幾部分,參與者、用例、操作流程。就像類對應(yīng)于對象一樣,一個用例的實(shí)例就是使用場景,用例就是對場景進(jìn)行抽象的總結(jié)。操作流是整個用例的核心,一般需要編寫前置條件、后置條件、基本流程、擴(kuò)展操作流。
一個系統(tǒng)的測試被劃分為五個部分:測試計(jì)劃、測試設(shè)計(jì)、測試開發(fā)、測試執(zhí)行和測試評估。TestDirector是業(yè)界第一個基于Web的測試管理系統(tǒng),它可以在公司組織內(nèi)進(jìn)行全球范圍的協(xié)調(diào)。通過一個整體的應(yīng)用系統(tǒng)中提供并集成了測試需求管理、測試計(jì)劃、測試日程控制以及測試執(zhí)行、缺陷跟蹤等功能,TestDirector極大的加速測試過程。項(xiàng)目經(jīng)理可以在TestDirector中查看存儲的所有信息,包括測試需求、測試用例、測試腳本、測試報告以及BUG報告等等。需求人員根據(jù)需求在Test Director中及時建立測試需求,來指導(dǎo)測試用例的開發(fā)。測試人員直接在Test Director中編寫測試用例,設(shè)計(jì)測試用例集,錄入測試過程中發(fā)現(xiàn)的BUG。開發(fā)人員每天定時從Test Director中下載“屬于”自己的BUG,并及時修改BUG的狀態(tài)。發(fā)布人員則根據(jù)BUG狀態(tài)來決定是否重新發(fā)布新版本并通知測試人員。
程序的需求驅(qū)動整個測試過程,Test Director的Web界面簡化了這些需求管理過程,測試人員可以根據(jù)需求自動生成測試用例。提供一個直觀機(jī)制將需求和測試用例、測試結(jié)果和報告的錯誤聯(lián)系起來,從而確保完全的測試覆蓋率。
測試計(jì)劃為整個測試提供一個結(jié)構(gòu)框架。Test Director的Test Plan Manager在測試計(jì)劃期間,為測試小組提供一個關(guān)鍵要點(diǎn)和Web界面來協(xié)調(diào)團(tuán)隊(duì)間的溝通。在Test Plan Manager中,可以把各種類型的測試匯總在一個可折疊式目錄樹內(nèi),可以在一個目錄下查詢到所有的測試用例。Test Director還可以為每一項(xiàng)測試連加附屬文件,如Word,Excel,HTML,用于更詳盡的紀(jì)錄每次測試用例。
一旦測試計(jì)劃建立后,Test Director的測試實(shí)驗(yàn)室管理為測試日程制訂提供一個基于Web的框架。在網(wǎng)絡(luò)中任何一臺主機(jī)空閑,測試可以徹夜執(zhí)行于其上。Test Director的Smart Scheduler自動分辨是系統(tǒng)還是應(yīng)用錯誤,然后將測試重新安排到網(wǎng)絡(luò)上的其它機(jī)器。用Winrunner,Quick Test,LoadTest或LoadRunner來運(yùn)行測試,無論成功與否,測試信息都會被自動匯集傳送到Test Director的數(shù)據(jù)存儲中心。同樣,人工測試也以此方式運(yùn)行。Test Director的BUG管理直接貫穿作用于測試的全過程,提供管理系統(tǒng)終端——終端的缺陷跟蹤——從最初的問題發(fā)現(xiàn)到修改錯誤再到檢驗(yàn)修改結(jié)果。Test Director基于瀏覽器的特征,使缺陷管理能讓多個用戶何時何地都可通過Web查詢出錯跟蹤情況。利用缺陷管理,測試人員只需一個URL,就可匯報和更新錯誤,過濾整理錯誤列表并作趨勢分析。
Winrunner是企業(yè)級自動化測試工具,能夠自動捕獲、檢測和重復(fù)用戶交互操作。它可以輕松創(chuàng)建測試、插入各種檢查點(diǎn)、檢驗(yàn)數(shù)據(jù)、運(yùn)行測試并與TestDirector集成來分析測試結(jié)果。Winrunner中GUI Map分為兩種模式,Global GUI Map File mode 和 GUI Map File per Test mode,區(qū)別在于前者可以為整個軟件創(chuàng)建一個GUI map文件,或者為每個窗體創(chuàng)建一個GUI map文件,而后者在每次創(chuàng)建新的測試時自動創(chuàng)建相關(guān)的GUI map文件。風(fēng)險系統(tǒng)中統(tǒng)一采用創(chuàng)建全局GUI map文件,優(yōu)點(diǎn)是占用空間小,且效率高,修改方便。
雖然軟件自動化測試在軟件質(zhì)量保證中正發(fā)揮著越來越重要的作用,但是目前國內(nèi)有些單位部門的軟件測試仍然沒有實(shí)現(xiàn)較高程度的自動化,有些只是大量的手工測試和利用單一功能的測試工具進(jìn)行少量自動化測試,也沒有將大量的測試信息進(jìn)行系統(tǒng)化的管理。登陸B(tài)ug依舊是用excel手動進(jìn)行。這樣既沒有充分利用自動化測試工具,也不能很好地保證軟件測試質(zhì)量。
本次設(shè)計(jì)借助自動化測試工具建立一套軟件自動化測試系統(tǒng),以TestDirector管理為主線,在計(jì)劃和執(zhí)行部分引入自動測試工具,實(shí)現(xiàn)測試過程的自動化。用WinRunner實(shí)現(xiàn)自動測試。用項(xiàng)目測試系統(tǒng)驗(yàn)證測試的可用性。
測試需求的來源全部來自于需求用例,在實(shí)際開發(fā)中,一旦需求用例評審?fù)ㄟ^后,對應(yīng)的測試需求會迅速被需求人員添加到TestDirector中,以保證隨后測試計(jì)劃、測試用例的順利進(jìn)行。
依賴于TestDirector的測試管理中,測試計(jì)劃主要體現(xiàn)在對測試用例的設(shè)計(jì)和處理。測試用例是測試計(jì)劃的重頭戲,在整個SQA測試過程中也處于核心地位。測試用例是軟件質(zhì)量保證中最有價值的資產(chǎn)之一。Dianne L.Runnels(CQA,CSTE)描述一個好的測試用例所具有的特性:
1.精確性(Accurate)—— 測試計(jì)劃內(nèi)的測試內(nèi)容
2.經(jīng)濟(jì)性(Economical)—— 不需要冗余的測試步驟
3.重用性(Reusable)—— 可以重復(fù)使用
4.追蹤性(Traceable)—— 追蹤需求
5.適當(dāng)性(Appropriate)—— 對現(xiàn)有測試環(huán)境、測試人員適用
6.獨(dú)立性(Self standing)—— 不依賴于其它測試用例和設(shè)計(jì)者
7.自清潔性(Self cleaning)—— 測例執(zhí)行完后的狀態(tài)與執(zhí)行前系統(tǒng)狀態(tài)保持一致(含數(shù)據(jù)庫)
測試用例完成之后,就能夠根據(jù)測例的步驟來開發(fā)測試腳本。由于TestDirector本身并不提供開發(fā)測試腳本的功能,但它可以與其它測試工具很好的集成,因此項(xiàng)目測試系統(tǒng)中采用自動化測試工具Winrunner來開發(fā)測試腳本。除了TestDirector提供的接口為項(xiàng)目系統(tǒng)的測試開發(fā)帶來很大便利之外,Winrunner本身的易用性和靈活性也使得項(xiàng)目系統(tǒng)測試腳本開發(fā)效率大大提高。實(shí)際開發(fā)中,我們利用Winrunner首先根據(jù)測試用例步驟來錄制腳本,然后回放,對不能運(yùn)行的地方編輯測試指令,一般只需少量修改便可以完成整個腳本。
在測試腳本開發(fā)完成后,就可以利用TestDirector來執(zhí)行測試??梢钥闯觯跍y試執(zhí)行完畢,會出現(xiàn)兩種可能情況:正常結(jié)束、異常結(jié)束。反映在TD中,則對應(yīng)執(zhí)行完畢的兩種狀態(tài):Passed、Failed。Passed說明和預(yù)期結(jié)果相吻合,F(xiàn)ailed則說明有相關(guān)檢查點(diǎn)出現(xiàn)錯誤或者測試腳本拋出異常而無法進(jìn)行下去。測試執(zhí)行安排好之后,在TestDirector的Test Lab面板中可以直接發(fā)送測試指令,既可以選中某一個測例來執(zhí)行,也可以執(zhí)行整個測例集。如圖2所示
項(xiàng)目測試系統(tǒng)中依賴TestDirector進(jìn)行測試管理,合理采用TestDirector的需求管理、測試計(jì)劃、測試執(zhí)行、缺陷管理功能,并結(jié)合自動化測試工具Winrunner,大大提高了測試工作效率,加速了測試過程。TestDirector的Web界面簡化了需求管理的流程,Test Plan Manager為測試小組提供了一個關(guān)鍵要點(diǎn)和Web界面來協(xié)調(diào)團(tuán)隊(duì)之間的溝通,Test Director的測試實(shí)驗(yàn)室管理為測試日程制訂提供一個基于Web的框架,并且可以監(jiān)控正在運(yùn)行的測試腳本。Test Director的缺陷管理貫穿于測試的全過程,測試人員可以方便的通過各種途徑添加BUG。在測試的任一環(huán)節(jié),Test Director都提供圖表來幫助分析數(shù)據(jù)信息。面對軟件開發(fā)規(guī)模的增大、復(fù)雜程度的增加,軟件測試工作的組織與管理將會越來越重要,而依賴于工具的測試管理也會發(fā)揮越來越大的作用。
[1] 《軟件測試》(第2版)Paul.C.Jorgensen 著,韓柯、杜旭濤 譯,機(jī)械工業(yè)出版社.
[2] 張海藩 軟件工程導(dǎo)論[M] 北京:清華大學(xué)出版社,2001.126-129.
[3] 《軟件工程:實(shí)踐者的研究方法》(第5版)Roger S.Pressman著,梅宏 譯,機(jī)械工業(yè)出版社.
[4] 《Web測試指南》Lydia Ash 著,李昂、王海峰、黃江海 譯,機(jī)械工業(yè)出版社.
[5] 《軟件工程思想》 林銳 著.
[6] 《軟件測試過程改進(jìn)》Edward Kit 著,李新華、陳麗容、馬立群 譯,機(jī)械工業(yè)出版社.
[7] 《Test Director Introduce》Mercury Interactive Corp.
[8] 《WinRunner User Guide 2nd》Mercury Interactive Corp.
[9] 《Web Test User Guide》 Mercury Interactive Corp.