李宏偉
隨著軟件產品在各個應用領域的普及和發展,軟件的質量問題越來越成為大家關注的焦點。質量不過關的軟件在用戶的使用過程中可能會出現各種意想不到的問題,因此,軟件用戶迫切希望能提高軟件使用的可靠性,軟件測試就逐漸擔負起軟件開發過程中的“質量監督員“的作用,重要性不言而喻!
軟件測試方法可以分為靜態測試和動態測試。
靜態測試是針對需求說明書、設計文件等文檔和源程序進行人工檢查和靜態分析,以保證軟件質量。靜態測試能有效的發現軟件中30%到70%的邏輯設計錯誤和編碼錯誤。動態測試則要在計算機上實際運行被測軟件的代碼模型,通過選擇適當的測試用例,來判定運行結構是否符合要求,從而測試軟件的正確性、可靠性和有效性。它是一種檢錯技術,根據功能劃分為白盒測試和黑盒測試。黑盒測試側重考慮組件的行為和結構;白盒測試側重組件的內部結構,它獨立于特定的輸入輸出行為,保證對象動態模型的每個狀態與對象之間的每次交互都得到測試。白盒測試是對軟件工作過程的細致檢查,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同測試點檢查程序的狀態,確定實際的狀態是否與預期的狀態一樣,因此白盒測試又成為結構測試或邏輯驅動測試。白盒測試一般選用最少量的可以有效揭露隱藏錯誤的路徑進行測試,所以如何設計軟件測試用例是這種方法的關鍵。
軟件測試活動主要包括單元測試、集成測試、系統測試。
a.單元測試試圖根據用例模型中的用例找出參與對象或參與子系統中的錯誤。單元測試主要是測試構成軟件系統的模塊即對象和子系統。
b.等價測試是黑盒測試技術。假設對一個類的所有成員都按照類似的方式運行,那么將可能的輸入都劃分為等價類,每個類選擇一個用例,從而將測試實例的數量降到最小。等價測試由兩步組成:確定等價類和選擇測試。每一個等價類,至少選擇兩條數據:用來檢驗普通用例的象征性輸入,以及用來檢驗組件處理異常能力的無效輸入。所有等價類都確定后就要確定用于每個類的測試輸入覆蓋所有的等價類。
c.邊界測試是等件測試的特例,主要考慮等價類的邊界條件。邊界測試要求從等價類的邊緣選擇元素,提出邊界條件時,一定要測試臨近邊界的合法數據即測試最后一個可能的合法數據以及超出邊界的非法數據。
d.路徑測試是白盒測試技術。至少測試一次代碼的所有可能路徑,大多數錯誤將被發現。路徑測試技術是為命令語言開發的,它特別依賴程序的控制結構,只能通過檢查程序中的路徑查出結果的錯誤。
集成測試使綜合起來測試已經單獨測試過的組件并找出錯誤的轟動。系統結構測試是集成測試的頂峰,集成并測試兩個或多個組件。
集成測試策略如下:一次性組裝測試、自底向下測試、自頂向上測試、多層結構測試。
a.一次性組裝測試策略。假設所有組件一開始都經過單獨測試然后作為單個系統一起測試。雖然一次性組件策略聽起來很簡單但它的花費很高,如果測試到故障很難查出導致故障的特定組件的正確位置,其優點是不需要附加任何測試驅動和存根。
b.自底向上測試策略。首先單獨測試底層的每個組件然后把它們與上層組件集成起來。測試驅動用來模擬還沒有集成的高層組件。它的優點是很容易找出故障,缺點是最后才測試最重要的系統即用戶接口的組件。
c.自頂向下測試策略。首先對頂層組件進行單元測試,然后把它們與下層組件集成到一起,當新一層的所有組件都一起測試完畢后就選擇再下一層進行測試;另一方面,將組件逐個加入測試中,如此反復直到所有的層次都包含在測試中。它用測試存根來模擬底層中還沒有集成的組件。自頂向下測試的優點在于它從用戶借口組件入手,從需求得到的同樣一組測試可以用來測試復雜度逐漸增加的一組子系統。它的缺點是非常耗時而且很容易出錯,通常測試重要系統需要大量測試存根。
d.多層結構測試策略。綜合了自底向上和自頂向下策略,試圖利用這兩種策略的優點。多層結構式測試過程中,測試人員必須能夠再次規劃或將子系統的分解與三層結構映射起來(一個目標層和上下兩層),將目標層作為注意的焦點就可以并行地進行自頂向下的測試和自底向上的測試。一般來說,與自頂向下和自底向上的測試相比,多層結構測試時間要短很多。
集成完組件后系統測試確保整個系統與系統的功能和非功能需求保持一致。系統測試統一測試的所有組件,作為單一的系統確定場景的誤差。場景來自分析和設計系統中確定的問題說明、需求和設計目標,分別如下:功能測試、性能測試、驗收測試、安裝測試。功能測試也稱為需求測試,功能測試是黑盒技術。從用例模型中找出測試實例。在功能需求比較復雜的系統一般是不可能根據所有的有效和無效輸入測試所有用例。性能測試找出系統設計期間選定的設計目標與系統之間的差異。在性能測試期間執行的測試有:強度測試、容量測試、安全性測試、計時測試、恢復測試。安裝測試,系統驗收后就在目標環境中進行安裝。一個好的系統測試計劃允許系統從開發環境移到目標環境中進行簡單的重新配置。安裝測試的預期結果是安裝的系統正確地處理所有的需求。大多數情況下,安裝測試重復目標環境中功能測試和性能測試執行的測試實例。
隨著全面質量管理思想在軟件開發領域的應用,軟件測試貫穿軟件開發的全過程,包括從軟件需求分析、軟件概要設計、軟件詳細設計、編碼、集成、驗收等各個工程階段,對于識別和控制軟件缺陷、提高軟件質量祈起到了明顯的成效。