李長星 時 靜
(西安石油大學電子工程學院,陜西 西安 710065)
軟件測試作為保證軟件質量的重要手段已經引起國內外越來越多的關注。軟件測試目的是為了找到軟件的錯誤和缺陷,在發現錯誤后,提供信息給軟件開發人員,幫助分析錯誤原因,從而改正錯誤,達到預防錯誤的發生,減少軟件開發費用的目的。狹義上講,軟件測試是對軟件產品質量的檢驗和評價。它一方面檢查軟件產品質量中存在的質量問題,另一方面對產品質量進行客觀的評價。測試可以發現盡可能多的缺陷,從而期望消滅缺陷來提高軟件質量。
軟件測試的目的決定了如何去組織測試。如果測試的目的是為了盡可能多地找出錯誤,那么測試就應該直接針對軟件比較復雜的部分或是以前出錯比較多的位置。如果測試目的是為了給最終用戶提供具有一定可信度的質量評價,那么測試就應該直接針對在實際應用中會經常用到的商業假設。
測試只能證明缺陷存在,而不能證明缺陷不存在。測試的目標是想以最少的時間和人力系統地找出軟件中潛在的各種錯誤和缺陷。測試的附帶收獲是,它能夠證明軟件的功能和性能與需求說明相符合。
需要指出:測試有助于提高軟件的質量,但是提高軟件的質量不能依賴于測試。如同考試時做完試卷后進行的檢查有助于提高分數,但獲得高分數不能依賴于答完試卷后的檢查。
雖然軟件的高質量依賴于初始的設計,對需求的把握,但是只有在測試過程中才能發現軟件中存在的錯誤和缺陷,所以測試對軟件的質量起著至關重要的作用。對一個軟件而言,需求分析則是它的“先天期”,設計、編碼則是“后天成長期”,測試的任務就是根據先天的特征更有效更合理的檢驗后天成長,并及時的指出錯誤和缺陷。所以,應當把“盡早地和不斷地進行軟件測試”作為軟件開發者的座右銘,在軟件開發中及早的引入軟件測試,這樣才能在開發過程中盡早發現和預防錯誤,提高軟件的質量。
一個有效的測試流程可以找到更多的錯誤,節約更多的成本。在實踐過程中,逐漸總結出了軟件測試的生命周期:如圖1所示

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