[摘要]軟件測試是軟件工程的一個重要部分,貫穿整個軟件生命周期。測試是一項嚴謹的工作,隨著當今軟件的規模和復雜性日益增加,進行專業化高效軟件測試的要求越來越迫切,挑戰性極強。這里講述的測試的執行者包括開發人員、測試人員以及參加驗收測試的部分受眾者。
[關鍵詞]軟件測試 需求分析 測試計劃 集成測試
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0120078-01
一、測試策略
在執行測試之前需要做許多文檔工作。因此,當項目提議一經被審批,測試工作即開始展開。
(一)需求分析階段
1.需求調研。在軟件生命周期的需求分析階段,測試人員參與需求調研。從測試角度分析需求的可測試性,構思測試方法和準則。這也有助于更好的理解系統的需求。測試人員了解哪些部分需要重點測試,哪些部分不需要。這部分的工作有助于設計測試計劃。
2.審查需求規格說明書。當系統分析員完成了需求分析,他(她)將提交需求規格說明書。測試人員根據在需求調研階段獲取的對需求的理解審查整個文檔。檢查文檔是否覆蓋了所有需求。需求規格說明書非常重要,是整個開發過程的基線。
(二)分析設計階段
1.測試計劃。一個典型的測試計劃要包括對工作產品的最終工作流的詳細理解。在測試過程中有三種類型的測試計劃:系統測試計劃,集成測試計劃以及單元測試計劃。測試計劃寫明怎樣校驗與保證軟件產品符合設計文檔和其他需求文檔。一般的計劃包含以下幾點:測試怎樣被實現、誰來做、測試什么、測試要花費多長時間、測試覆蓋率是怎樣的。
2.審查設計文檔。在系統設計階段,測試人員要理解系統是怎樣被實現。這個階段的開發文檔包括概要設計、數據庫設計、功能說明以及詳細設計。測試人員審查這些文檔,檢查這些計劃與設計是否合理。如果不合理,問題在哪里,怎樣改進等等。
(三)開發階段
當我們在計劃測試時,我們需要將整個系統分解。對一個復雜的系統來說,它可以被分解成一些相對獨立的子系統。正確的劃分子系統可以降低測試的復雜性,減少重復與冗余,更加方便設計測試用例。設計測試用例是一項非常細致的工作。通常每個用例需要包括:序號和標題、用例說明、測試優先級、測試輸入及測試步驟、期望輸出、實際輸出(當執行測試時,它被用來記錄測試結果)。測試用例設計要考慮以下幾點:覆蓋率(要達到最大覆蓋軟件系統功能的功能點)、數量(一個多于半年的開發周期,用例不得低于4000)、使用管理工具軟件。
(四)測試執行階段
當以上的準備工作完成,系統開發也進入到了尾期。測試人員可以根據先前的測試計劃和測試用例逐個實施測試。每一個獨立的軟件部分要接受單元測試。若干個部分組合起來接受集成測試。當所有的軟件產品完成,系統測試是保證整個系統符合用戶需求。當然,性能測試也是必不可少的,保證軟件的各個部分滿足需求的性能標準。
1.單元測試。單元測試一般都由程序員自己完成,可以這么說,程序員有責任編寫功能代碼,同時也就有責任為自己的代碼編寫單元測試。執行單元測試,就是為了證明這段代碼的行為和我們期望的一致。經常與單元測試聯系起來的另外一些開發活動包括代碼走讀(Code review),靜態分析(Static analysis)和動態分析(Dynamic analysis)。
2.集成測試。集成測試,也叫組裝測試或聯合測試。在單元測試的基礎上,將所有模塊按照設計要求(如根據結構圖)組裝成為子系統或系統,進行集成測試。實踐表明,一些模塊雖然能夠單獨地工作,但并不能保證連接起來也能正常的工作。程序在某些局部反映不出來的問題,在全局上很可能暴露出來,影響功能的實現。
集成測試過程:制定集成測試計劃,設計集成測試,實施集成測試,執行集成測試以及評估集成測試。以常用的自底向上方法的集成方案為例:
步驟一:按照概要設計規格說明,明確有哪些被測模塊。在熟悉被測模塊性質的基礎上對被測模塊進行分層,然后排出測試活動的先后關系,制定測試進度計劃。
步驟二:在步驟一的基礎上,按時間線序關系,將軟件單元集成為模塊,并測試在集成過程中出現的問題。這里,可能需要測試人員開發一些驅動模塊來驅動集成活動中形成的被測模塊。對于比較大的模塊,可以先將其中的某幾個軟件單元集成為子模塊,然后再集成為一個較大的模塊。
步驟三:將各軟件模塊集成為子系統(或分系統)。檢測各自子系統是否能正常工作。同樣,可能需要測試人員開發少量的驅動模塊來驅動被測子系統。
步驟四:將各子系統集成為最終用戶系統,測試是否存在各分系統能否在最終用戶系統中正常工作。
3.系統測試。系統測試是將已經確認的軟件產品、計算機硬件、外設、網絡等其他元素結合在一起,進行系統的各種安裝測試、功能測試、確認測試等相結合的綜合測試,其目的是通過與系統的需求相比較,發現所開發的系統與用戶需求不符或矛盾的地方,從而提出更加完善的方案。系統測試多用黑盒測試的方法。按照系統測試用例逐個實施,記錄測試結果。
4.性能測試。性能測試在軟件的質量保證中起著重要的作用,它包括的測試內容豐富多樣。中國軟件評測中心將性能測試概括為三個方面:應用在客戶端性能的測試、應用在網絡上性能的測試和應用在服務器端性能的測試。通常情況下,三方面有效、合理的結合,可以達到對系統性能全面的分析和瓶頸的預測。性能測試根據性能需求選擇自動化測試工具。
5.驗收測試。驗收測試的目的是要對軟件產品在目標用戶的工作環境中做進一步的校對,確保軟件準備就緒,并且可以讓最終用戶將其用于執行軟件的既定功能和任務。驗收測試是部署軟件之前的最后一個測試操作。事實上,軟件開發人員不可能完全預見用戶實際使用程序的情況。一個軟件產品,可能擁有眾多用戶,不可能由每個用戶驗收,此時多采用稱為α、β測試的過程,以期發現那些似乎只有最終用戶才能發現的問題。α測試是指開發組織內部人員模擬各類用戶行對即將發布的軟件產品(稱為α版本)進行測試,試圖發現錯誤并修正。α測試的關鍵在于盡可能逼真地模擬實際運行環境和用戶對軟件產品的操作并盡最大努力涵蓋所有可能的用戶操作方式。經過α測試調整的軟件產品稱為β版本。緊隨其后的β測試是指開發組織各方面的典型用戶在日常工作中實際使用β版本,并要求用戶報告異常情況、提出批評意見。然后開發再對β版本進行改錯和完善。一般包括功能度、安全可靠性、易用性、可擴充性、兼容性、效率、資源占用率、用戶文檔八個方面。
二、測試完成
在整個測試過程中,需要有一個提交bug的工具,用來記錄整個測試過程中發現的bug。測試完成后,還有一項重要的工作,即寫測試報告。報告中的重要信息包括測試發現了多少問題、仍未被解決的問題、測試都做了哪些工作、花費了多長時間等等。這些都是為了使將來的測試工作能得到更好的改進,測試人員也應將幾個月來的工作進行總結。測試報告也是考慮系統是否發布的一個重要因素。
作者簡介:
時冬妮,女,山東文登人,研究方向:軟件工程。