【軟件測試】軟件測試自動化

1.測試自動化的內涵


1.1  手工測試的侷限性


  •  通過手工測試無法做到覆蓋所有代碼路徑;
  •  許多與時序、死鎖、資源衝突、多線程等有關的錯誤通過手工測試很難捕捉到
  •  在系統負載、性能測試時,需要模擬大量數據、或大量併發用戶等各種應用場合時,也很難通過手工測試來進行
  •  在進行系統可靠性時,需要模擬系統運行十年、幾十年,以驗證系統能否穩定運行,也是手工測試無法模擬的。
  •  如果有大量(幾千)的測試用例,需要在短時間內完成,手工測試又怎麼辦呢?
  •  測試可以發現錯誤,並不能表明程序的正確性。 
自動測試定義軟件系統
  • 功能規格書(Spec)只是從書面上的
  • 一套軟件產品是由一套完整的可運行的測試來定義的
測試所有可能情況將遭遇“組合爆炸”問題
  • Win98, WinME, WinNT, Win2k, WinXP, WinXP TablePC Ed, WinXP MediaCenter Ed, Longhorn, etc
  • English, German, Japanese, Chinese, Arabic, Thai…
  • Office 97, Office2000, Office XP, Office 2003…
  • X86  32-bit, Intel 64-bit, AMD 64-bit, Alpha, MIPS…
  • SQL Server 6.5, SQL Server 7.0, SQL Server 2000…
  •  Visual Studio 6, VS .NET, VS .NET 2003, Whidbey…
代碼全部Code Path測試覆蓋也幾乎不可能
  • 每一個if…else…或switch語句就會把情況增加一倍
  • 許多異常處理代碼在正常使用中不會碰到
  • 許多與時序,死鎖,資源衝突,多線程有關的錯誤很難捕捉到
每一個產品都會有不同的版本外加各自的SP與QFE (Quick Fix Engineering, 又稱Hot fix)
  • NT4, VS6 SP1~SP5, Windows 2000 SP1-SP4
  • VS .NET, SQL Server SP1 – SP3
可重複使用的自動測試對產品未來版本與Service Pack的測試將有事半功倍的效果

1.2  自動化測試帶來的好處

1. 縮短週期 Testing cycle - Regression Testing
2.  Attributes of TA,
  • Speed 速度
  • Efficiency 效率
  • Accuracy and Precise 準確、精確 
  • Relentlessness 無情
3. 容易實施、結果可靠
4. 做手工不能做

1.3  手工測試 vs.自動測試

手工測試:
耗費時間
低可靠性
人力資源
不一致性
僅對於一次性的測試有益

自動測試:
 速度
 可重複
 覆蓋率
 可靠
 可以再度使用
 重複測試節省時間

各自特點:
軟件測試自動化(TA)雖然具有很多優點,但只是對手工測試的一種補充,TA絕不能代替手工測試,有各自的特點:
  •  在系統功能邏輯測試、驗收測試、適用性測試、涉及物理交互性測試時,多采用黑盒測試的手工測試方法;
  •  單元測試、集成測試、系統負載或性能、穩定性、可靠性測試等比較適合採用TA;
  •  對那種不穩定軟件的測試、開發週期很短的軟件、一次性的軟件等不適合測試自動化
  •  工具本身並沒有想象力和靈活性,根據經驗報道,自動測試只能發現15%的缺陷,而手工測試可以發現85%的缺陷;TA工具在進行功能測試時,其準確的含義是迴歸測試工具,因爲工具不能發現更多的新問題,但可以保證對已經測試過部分進行測試的準確性和客觀性 

1.4  正確認識測試自動化

不現實的期望註定測試自動化的失敗
測試自動化能:
  • 顯著降低重複手工測試的時間
  • 建立可靠、重複的測試,減少認爲錯誤
  • 增強測試質量和覆蓋率
測試自動化不能:
  • 完全替代手工測試和手工測試工程師
  • 保證100%的測試覆蓋率
  • 彌補測試實踐的不足
1.5  測試自動化項目的本質

定義:利用GUI自動化測試工具來開發和執行測試腳本,從而驗證是否滿足需求
本質:測試自動化項目本質上是軟件開發項目
一個測試自動化項目必須具有:
  • 清晰定義並嚴格實施的過程
  • 來自組織各級的支持
  • 周密的計劃
  • 具體的設計和架構

1.6  自動化測試的引入和應用

  •  找準測試自動化的切入點
  •  把測試開發納入整個軟件開發體系
  •  測試自動化依賴測試流程和測試用例
  •  軟件測試自動化的投入較大
  •  進行資源的合理調度

1.7  自動化測試工作流程




1.8   測試自動化的基本結構



1.9  測試自動化的原理和方法

  •  代碼分析: 類似於高級編譯系統,在工具中定義類/對象/函數/變量等定義規則、語法規則等,在分析時對代碼進行語法掃描,找出不符合編碼規範的地方。
  •  捕獲和回放: 代碼分析是一種白盒測試的自動化方法,捕獲和回放則是一種黑盒測試的自動化方法。


腳本技術:
  •  線性腳本,是錄製手工執行的測試用例得到的腳本,這種腳本包含所有的擊鍵、移動、輸入數據等,所有錄製的測試用例都可以得到完整的回放。
  •  結構化腳本,類似於結構化程序設計,具有各種邏輯結構、函數調用功能。
  •  共享腳本,是指某個腳本可以被多個測試用例使用。
  •  數據驅動腳本,將測試輸入存儲在獨立的(數據)文件中,而不是存儲在腳本中。
  •  關鍵字驅動腳本,是數據驅動腳本的邏輯擴張 

 測試自動化普遍存在的問題:
  •  不正確的觀念或不現實的期望
  •  缺乏具有良好素質、經驗的測試人才
  •  測試工具本身的問題影響測試的質量
  •  沒有進行有效的、充分的培訓
  •  沒有考慮到公司的實際情況,盲目引入測試工具
  •  沒有形成一個良好的使用測試工具的環境
  •  其它技術問題和組織問題


2.測試工具的分類和選擇


2.1  測試工具的研究

軟件測試的過程是一項很複雜而費時的工作,它不僅執行每一個測試用例,還要設置運行環境、記錄輸出、運行後清理並記錄失敗信息。僅僅依靠測試人員手工完成是很困難的。所以必須研究測試工具以幫助測試人員自動或半自動的完成測試。
在資金和人力、時間的供給一定的條件下面,擁有好的測試工具能夠提高測試效率從而降低測試成本,則能夠選擇更高的測試充分性標準進行測試,從而提高軟件質量。


2.2  測試工具的例子




2.3  測試工具的分類

Code analysis Tools
- Static analysis
- Dynamic analysis
Test Execution Tool
- Capture and Replay ( Record & Playback)
- Monitor Tool
- Stubs and Drivers
- Automated Testing Environment
Test case generators

2.4  測試工具的選擇




3.測試工具的主流產品介紹


3.1  面向開發的單元測試工具

根據不同的語言進行分類:
  • C/C++單元級測試工具Panorama C++,C++Test, Numega 
  • JUnit是一個開發源代碼的Java測試框架
  • 根據工具的功能特點進行分類:
  •  內存資源泄漏檢查工具:Numega中的BounceChecker, Rational的Purify等
  •  代碼覆蓋率檢查工具:Numega的TrueCoverage, Rational的PureCoverage,TeleLogic公司的Logiscope
  •  代碼性能檢查工具:Logiscope和 Macabe等。
  •  軟件糾錯工具Rational Purl等。

3.2  負載和性能測試工具



3.3  GUI功能測試工具

將操作應用程序的各種動作和輸入記錄下來,包括鍵盤操作、鼠標點擊等捕捉(Record)下來,生成一個腳本文件,這個腳本以後可以被“回放( playback)” 。在實際測試過程中,要根據測試需求對錄製的腳本進行一些必要的修改或加入一些參數,如選擇不同的測試數據、腳本中插入檢查點(Check Point)進行跟蹤調試等。
基於GUI功能測試工具主要適合迴歸測試階段。當一個應用開發基本完成後,程序界面基本定型,雖然業務的需求會很頻繁變化,但測試腳本結構基本不需要改動,只需要做些小調整,就可以自動運行,則可大大提高了測試的效率和測試的準確性。
目前主要產品有MI公司的 WinRunner, Compuware的QARun, Rational的 SQA Robot,MS Visual Test Suite等

3.4  GUI自動化測試

  •  設計測試用例,並手工進行測試。
  •  如果測試未通過,則先改正缺陷,再次執行測試。
  •  如果測試通過,利用測試工具運行該測試過程,捕獲運行過程需要檢測的屏幕對象,並保存。
  •  在進行迴歸測試測試,自動利用測試工具運行測試,並比較運行過程的屏幕對象與保存的屏幕對象比較,從而判斷測試用例是否通過。
3.5  基於Web應用的測試工具

基於Web應用的測試工具主要進行鏈接檢查、HTML檢查、Web功能和Web站點安全性等各個方面的測試。

主要Web測試工具有MI公司的Astra 系列(如Astra QuickTest )、RSW公司的  E-Test  Suite等;

Web系統測試工具: WorkBench、Web Application Stress Tool(WAS)、頁面鏈接測試Link Sleuth等。 


3.6  Website性能測試測什麼?

  • 各種操作的響應速度
  • 最大併發用戶數
  • 最大數據容量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章