軟件測試作為保證軟件質量和可靠性的關鍵技術手段正日益受到廣泛的重視。但如何進行測試,如何提高測試的質量和效率,從而確保軟件產品的質量和可靠性,仍是令許多人深感困繞的問題。本文僅根據筆者多年從事軟件測試研究與實踐的體會,簡要介紹軟件測試的基本過程,以及一些常用的技術手段、測試策略和準則,并介紹兩個很有特色并具有代表性的軟件測試支持工具,以期愈來愈多的人在認識到軟件測試的重要性的同時,能夠進一步了解應如何正確地選擇和有效地運用各種各樣的測試方法、技術和工具,來提高軟件的質量和可靠性。
一、軟件測試的基本過程
軟件測試是一個極為復雜的過程。如圖一所示,一個規范化的軟件測試過程通常須包括以下基本的測試活動。
·擬定軟件測試計劃
·編制軟件測試大綱
·設計和生成測試用例
·實施測試
·生成軟件問題報告
對整個測試過程進行有效的管理實際上,軟件測試過程與整個軟件開發過程基本上是平行進行的。測試計劃早在需求分析階段即應開始制定,其它相關工作,包括測試大綱的制定、測試數據的生成、測試工具的選擇和開發等也應在測試階段之前進行。充分的準備工作可以有效地克服測試的盲目性,縮短測試周期,提高測試效率,并且起到測試文檔與開發文檔互查的作用。
此外,軟件測試的實施階段是由一系列的測試周期(Test Cycle)組成的。在每個測試周期中,軟件測試工程師將依據預先編制好的測試大綱和準備好的測試用例,對被測軟件進行完整的測試。測試與糾錯通常是反復交替進行的。當使用專業測試人員時,測試與糾錯甚至是平行進行的,從而壓縮總的開發時間。更重要的是,由于專業測試人員豐富的測試經驗、所采用的系統化的測試方法、全時的投入,特別是獨立于開發人員的思維,使得他們能夠更有效地發現許多單靠開發人員很難發現的錯誤和問題。
軟件測試大綱是軟件測試的依據。它明確詳盡地規定了在測試中針對系統的每一項功能或特性所必須完成的基本測試項目和測試完成的標準。無論是自動測試還是手動測試,都必須滿足測試大綱的要求。
一般而言,測試用例是指為實施一次測試而向被測系統提供的輸入數據、操作或各種環境設置。測試用例控制著軟件測試的執行過程,它是對測試大綱中每個測試項目的進一步實例化。已有許多著名的論著總結了設計測試用例的各種規則和策略。從工程實踐的角度講有幾條基本準則:
1.測試用例的代表性:能夠代表各種合理和不合理的、合法的和非法的、邊界和越界的,以及極限的輸入數據、操作和環境設置等;
2.測試結果的可判定性:即測試執行結果的正確性是可判定的或可評估的;
3.測試結果的可再現性:即對同樣的測試用例,系統的執行結果應當是相同的。
二、測試方法
軟件測試的方法和技術是多種多樣的。從測試是否針對系統的內部結構和具體實現算法的角度看,通?煞譃閮深:白盒子方法(結構測試)和黑盒子方法(功能測試)。前者是針對系統內部實現的測試,而后者側重于系統的外部功能和特性。
三、軟件測試工具
一些受軟件開發人員歡迎的軟件測試工具為軟件測試提供了強有力的支持。本文將介紹美國Rational公司的著名套裝軟件SQA和Pure Atria公司極具特色的Purify。
SQA SuiteSQA直接支持對客戶/服務器應用軟件的測試,它的一個重要特點是可以自動驅動被測程序的運行。SQA可以自動記錄和重放程序執行過程,從而實現了對測試進行"復查"的自動化。
由于測試是一個需要反復進行的過程,常常要數十次甚至數百次地重復。因此,這一特性大大地提高了軟件"再測試"(Re-Test)和"回歸測試"(Regression)的自動化程度,把測試人員從繁雜的、重復性的手工測試中解脫出來,從而顯著地提高軟件測試效率。
除了這個最基本的自動錄放功能外,它還提供了一系列的輔助支持功能,比如,
· 被錄制的程序執行過程可以被自動轉換成具有良好可讀性的高級語言程序,從而使這個測試驅動程序可以由測試人員根據測試需要進行必要的修改,甚至完全用手工方式編制。
·自動記錄和分析比較測試的執行結果。不論是簡單的正文方式的輸出結果,還是任意的圖表、聲音、動畫、圖形用戶界面(GUI)中的任一構件,都可以根據測試人員的指定被自動記錄在測試結果庫中,并可對兩次測試的結果自動地進行比較,指出其差異部分。此項功能無疑對"自動查找錯誤"很有幫助。
·調節和設定事件的發生時間和速度。
·基本的測試庫管理功能。
此外,SQA還支持軟件測試人員進行以下工作:
·制定測試計劃和測試大綱,并將這些文檔按照自然的樹狀結構分層地管理起來,并據此控制和驅動整個測試過程。
·不僅能夠自動記錄各類測試結果,而且對其進行修改,從而使得測試人員可以在程序運行結果尚有許多錯誤的情況下,通過對所記錄下的結果做適當修正來獲得理想的"期望結果" ,為測試結果的自動比較奠定基礎。
·測試問題報告的記錄與管理。
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/