軟件自動化測試的設計標準

軟件自動化測試的設計標準

軟件自動化測試的設計標準

摘要:軟件測試是目前用來驗證軟件是否能夠完成所期望的功能的唯一有效的方法。以往的軟件測試一直採用手工測試,但隨著軟件日益複雜和龐大,手工軟件測試設計的大量的重複性的工作,將耗費更大量的時間和人力,軟件測試的開銷將不斷增大,如何更有效的進行測試就成為一個新的討論熱點,因而誕生了軟件自動化測。軟件自動化測試的設計要符合一定的標準,其使用也有著特定的適用範圍。

關鍵詞:軟件危機;軟件測試;系統測試

軟件危機是軟件界的熱門話題。由於軟件中的錯誤會導致軟件開發在成本、進度和質量上的嚴重失控,所以保證軟件質量的測試在軟件生命週期中佔據了及其重要的地位。

軟件測試是目前用來驗證軟件是否能夠完成所期望的功能的唯一有效的方法。軟件測試是一種以受控的方式執行被測試的軟件,以驗證或者證明被測試的軟件的行為或者功能符合設計該軟件的目的或者說明規範。所謂受控的方式應該包括正常條件和非正常條件,即故意的去促使錯誤的發生,也就是事情在不該出現的時候出現或者在應該出現的時候沒有出現。

以往的軟件測試一直採用手工測試,但隨著軟件日益複雜和龐大,手工軟件測試設計的大量的重複性的工作,將耗費更大量的時間和人力,軟件測試的開銷將不斷增大,如何更有效的進行測試就成為一個新的討論熱點,因而誕生了軟件自動化測。現在,軟件測試自動化已成為人們日益關注的一個焦點。

所謂軟件自動化測試就是執行用某種程序設計語言編制的自動測試程序,控制被測軟件的執行,模擬手動測試步驟完成全自動或半自動測試。全自動測試過程中,不需要人工干預,由程序自動完成測試的全過程;而半自動測試就是指在自動測試過程中,需要由人工手動輸入測試用例或選擇測試路徑,再由自動測試程序按照人工指定的要求完成自動測試。

軟件測試自動化不能解決測試中的所有問題,也不意味著任何軟件測試都可以自動化。要成功地實現軟件測試自動化,需要周密的計劃和大量艱苦的工作,軟件測試自動化的開發人員必須清楚地認識到該自動化什麼。

一、軟件自動化測試的設計標準

軟件自動化測試的設計標準主要應考慮以下幾個方面:

1、自動化迴歸測試

從軟件測試自動化的目的知道,軟件測試自動化所獲得的好處來自於自動測試工具的重複使用,所以應該把迴歸測試作為自動化的首要目標。軟件自動測試的設計和開發人員應該自動化那些每個軟件都需要重複的測試,一次性的測試是不值得自動化的。

2、自動化對穩定的應用進行的測試

在自動化對某一個應用的測試之前,首先應該確定該應用是否穩定。對一個在將來可能發生變化的應用的測試進行自動化是沒有必要的,因為應用一旦改變,相應的自動測試代碼就要隨之改動,所以應該只自動化穩定應用的測試。

3、自動化沒有時間依賴性的測試

不要自動化與複雜的時間問題相關聯的測試。自動化一個與複雜的時間問題相關聯的測試的工作量是不具備時間依賴性的測試的工作量的許多倍,並且最後的結果也很難滿足測試的要求。作為軟件測試自動化的開發人員必須清醒地認識到,如果一個測試很難自動化,那就應該把它留給手工測試。100%的自動化並不是追求的目標,把一些過於複雜的測試仍然用手工方式進行是合理的。

4、自動化重複性測試

如果一個測試經常重複使用,並且使用這個測試不方便,那麼就應該考慮自動化這個測試。

5、自動化已經實現的手工測試用例

在對軟件測試自動化前,通常已經有了很多實現的詳細的手工測試用例,從中選擇可以自動化的手工測試用例自動化。

6、合理限制自動化的範圍

百分之百的自動化並不是追求的目標,過大追求自動化的範圍只會取得其反的後果。軟件測試自動化的開發人員應該在一個合理的可以進行自動化的範圍內投入精力,在能力許可的情況下,再逐步擴大測試自動化的範圍。

二、典型系統級測試的種類

從軟件測試自動化的定義、目的和自動化測試的標準,很容易推出軟件自動化測試主要適用於系統級的測試,而不適用於單元測試。典型的系統級的測試主要包括:集成測試、迴歸測試、系統測試和性能測試。

1、集成測試

集成測試是指在系統的各個功能模塊集成為一個完整的軟件系統初期所進行的測試。這一階段,主要集中於測試頂層模塊和重要模塊,自動測試程序相對較小,只需完成簡單的功能測試,不需要進行深入測試。由於在軟件開發週期中,同一軟件的功能結構不可能有大的變化,所以自動測試程序需要完成以下測試目標:

一是系統頂層模塊測試;

二是系統重要模塊測試;

三是與系統重要模塊相關的底層模塊測試。

2、迴歸測試

迴歸測試是指在軟件測試過程中,由於需要軟件開發部門及時修改軟件錯誤,所以就會產生新的測試版本。在每個測試版本提交測試部門以後,測試部門的人員首先對其要進行迴歸測試,以檢測軟件是否達到基本測試目標。一般來講,迴歸測試的方法和測試用例是相對固定的,所以可以用自動測試程序完成這一測試。

在迴歸測試過程中,自動測試程序主要完成以下測試目標:

一是集中測試用戶相關功能;

二是隻對測試用例子集進行選擇功能測試;

三是決定接受或拒收這一測試版本。

3、系統測試

系統測試是指在系統已成為一個相對穩定的可測試版本以後,對系統進行的大規模的、多週期的、全面的功能測試。自動測試程序在這一階段中,可以完成對全部功能或部分功能的測試。

在系統測試過程中,自動測試程序可以完成以下測試目標:

一是覆蓋系統所有功能;

二是覆蓋系統關鍵功能;

三是利用特殊的測試用例進行極限測試和邊界測試;

四是完成所有與文本相關的用戶界面和聯機幫助文檔的測試。

4、性能測試

性能測試是通過對被測系統進行長時間、多用戶、大數據量等壓力負載的測試,以驗證軟件系統是否能夠達到用戶提出的性指標,同時發現軟件系統中存在的性能瓶頸,優化軟件,最後起到優化系統的目的。性能測試類型包括負載測試,強度測試,容量測試等。

在性能測試過程中,自動化測試可以完成以下測試目標:

一是評估系統的能力:測試中得到的負荷和響應時間等數據可以被用於驗證所計劃的模型的能力,並幫助做出決策。

二是識別體系中的弱點:受控的負荷可以被增加到一個極端的水平,並突破它,從而修復體系的瓶頸或薄弱的地方。

三是系統調優:重複運行測試,驗證調整系統的活動得到了預期的結果,從而改進性能並檢測軟件中問題,因為長時間的測試執行可導致程序發生由於內存洩露引起的失敗,揭示程序中的隱含的問題或衝突。

四是驗證穩定性和可靠性:在一個生產負荷下執行測試一定的時間是評估系統穩定性和可靠性是否滿足要求的唯一方法。

使用自動化測試的過程中會遇到許多問題,意外出現的問題尤其難以處理。

三、自動化測試中應當注意的問題

1、不現實的期望

測試界內一般對於任何新技術的解決方案都深信不疑,認為可以解決面臨所有問題。測試工具也不例外,對新工具持樂觀態度已成趨勢。人們都期望這種解決方案可以解決目前遇到的所有問題。廠商自然會強調好的和成功的一面,可能會忽略取得持久效益所做的努力。如果管理者期望不實現,那麼無論工具從技術角度實現的多麼好,都滿足不了期望。

2、缺乏測試實踐經驗

如果缺乏測試實踐經驗,測試組織差,文檔較少或不一致,測試發現缺陷的能力較差,在這種情況下采用自動測試並不是好辦法。改進測試的有效性比改進差勁測試效率要好得多。

3、期望自動化測試發現大量新缺陷

測試在首次運行時最有可能發現缺陷。如果測試已經運行並通過,再運行相同的測試發現新缺陷的可能性小得多。除非測試正執行一段已修改過的代碼或由於軟件其他部分的修改影響到該代碼,或者在不同的環境中運行。

測試執行工具是“回放”工具,即迴歸測試工具,用於重複已經運行過的測試。這是一件很有意義的工作,但並不是用來發現大量新的缺陷,特別是運行在與以前相同的硬件和軟件環境。

4、安全性錯覺

因為測試軟件沒有發現任何缺陷並不意為軟件沒有缺陷。測試可能不全面或測試本身就有缺陷。如果期望的輸出不正確,自動測試只是簡單地保留這些有缺陷的結果。

5、自動測試的維護性

當軟件修改後,經常需要修改部分或全部測試,以便可以重新正確地運行。對於自動測試更是如此。測試維護的開銷打擊了測試自動化的積極性。當修改測試比手工重新測試更費勁時,測試自動化將被丟棄。

6、技術問題

測試工具與以前的軟件的互操作性是一個非常嚴重的問題。技術環境變化的如此之快,使得廠商很難跟上。許多工具在理論上聽起來似乎比較理想,但在具體環境中執行確是失敗的。

商用測試執行工具是較龐大且複雜的產品,並要求有較好的技術知識,才能把工具利用得較好。除了工具本身的技術問題,用戶還要了解被測軟件的技術問題。如果軟件在設計和實現時沒有考慮可測試性,則測試時無論自動測試還是手工測試難度將非常大。如果使用工具測試這樣的軟件,無疑更增加測試的難度。

7、組織問題

自動測試實施起來並不簡單,必須有管理支持及組織藝術。必須進行工具選型、培訓、實踐並瞭解哪種工作方式最好,並在組織內普遍使用工具。

上述幾點為自動化測試中普遍存在的問題,須要使用者在實際運用中加以注意和克服,以便使測試軟件能夠發揮出正常的作用。


分享到:


相關文章: