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…
- 每一個if…else…或switch語句就會把情況增加一倍
- 許多異常處理代碼在正常使用中不會碰到
- 許多與時序,死鎖,資源衝突,多線程有關的錯誤很難捕捉到
- NT4, VS6 SP1~SP5, Windows 2000 SP1-SP4
- VS .NET, SQL Server SP1 – SP3
2. Attributes of TA,
- Speed 速度
- Efficiency 效率
- Accuracy and Precise 準確、精確
- Relentlessness 無情
4. 做手工不能做
低可靠性
人力資源
不一致性
僅對於一次性的測試有益
可重複
覆蓋率
可靠
可以再度使用
重複測試節省時間
- 在系統功能邏輯測試、驗收測試、適用性測試、涉及物理交互性測試時,多采用黑盒測試的手工測試方法;
- 單元測試、集成測試、系統負載或性能、穩定性、可靠性測試等比較適合採用TA;
- 對那種不穩定軟件的測試、開發週期很短的軟件、一次性的軟件等不適合測試自動化
- 工具本身並沒有想象力和靈活性,根據經驗報道,自動測試只能發現15%的缺陷,而手工測試可以發現85%的缺陷;TA工具在進行功能測試時,其準確的含義是迴歸測試工具,因爲工具不能發現更多的新問題,但可以保證對已經測試過部分進行測試的準確性和客觀性
測試自動化能:
- 顯著降低重複手工測試的時間
- 建立可靠、重複的測試,減少認爲錯誤
- 增強測試質量和覆蓋率
- 完全替代手工測試和手工測試工程師
- 保證100%的測試覆蓋率
- 彌補測試實踐的不足
本質:測試自動化項目本質上是軟件開發項目
一個測試自動化項目必須具有:
- 清晰定義並嚴格實施的過程
- 來自組織各級的支持
- 周密的計劃
- 具體的設計和架構
- 找準測試自動化的切入點
- 把測試開發納入整個軟件開發體系
- 測試自動化依賴測試流程和測試用例
- 軟件測試自動化的投入較大
- 進行資源的合理調度
- 代碼分析: 類似於高級編譯系統,在工具中定義類/對象/函數/變量等定義規則、語法規則等,在分析時對代碼進行語法掃描,找出不符合編碼規範的地方。
- 捕獲和回放: 代碼分析是一種白盒測試的自動化方法,捕獲和回放則是一種黑盒測試的自動化方法。
- 線性腳本,是錄製手工執行的測試用例得到的腳本,這種腳本包含所有的擊鍵、移動、輸入數據等,所有錄製的測試用例都可以得到完整的回放。
- 結構化腳本,類似於結構化程序設計,具有各種邏輯結構、函數調用功能。
- 共享腳本,是指某個腳本可以被多個測試用例使用。
- 數據驅動腳本,將測試輸入存儲在獨立的(數據)文件中,而不是存儲在腳本中。
- 關鍵字驅動腳本,是數據驅動腳本的邏輯擴張
- 不正確的觀念或不現實的期望
- 缺乏具有良好素質、經驗的測試人才
- 測試工具本身的問題影響測試的質量
- 沒有進行有效的、充分的培訓
- 沒有考慮到公司的實際情況,盲目引入測試工具
- 沒有形成一個良好的使用測試工具的環境
- 其它技術問題和組織問題
2.測試工具的分類和選擇
在資金和人力、時間的供給一定的條件下面,擁有好的測試工具能夠提高測試效率從而降低測試成本,則能夠選擇更高的測試充分性標準進行測試,從而提高軟件質量。
- Static analysis
- Dynamic analysis
Test Execution Tool
- Capture and Replay ( Record & Playback)
- Monitor Tool
- Stubs and Drivers
- Automated Testing Environment
Test case generators
3.測試工具的主流產品介紹
- C/C++單元級測試工具Panorama C++,C++Test, Numega
- JUnit是一個開發源代碼的Java測試框架
- 根據工具的功能特點進行分類:
- 內存資源泄漏檢查工具:Numega中的BounceChecker, Rational的Purify等
- 代碼覆蓋率檢查工具:Numega的TrueCoverage, Rational的PureCoverage,TeleLogic公司的Logiscope
- 代碼性能檢查工具:Logiscope和 Macabe等。
- 軟件糾錯工具Rational Purl等。
基於GUI功能測試工具主要適合迴歸測試階段。當一個應用開發基本完成後,程序界面基本定型,雖然業務的需求會很頻繁變化,但測試腳本結構基本不需要改動,只需要做些小調整,就可以自動運行,則可大大提高了測試的效率和測試的準確性。
目前主要產品有MI公司的 WinRunner, Compuware的QARun, Rational的 SQA Robot,MS Visual Test Suite等
- 設計測試用例,並手工進行測試。
- 如果測試未通過,則先改正缺陷,再次執行測試。
- 如果測試通過,利用測試工具運行該測試過程,捕獲運行過程需要檢測的屏幕對象,並保存。
- 在進行迴歸測試測試,自動利用測試工具運行測試,並比較運行過程的屏幕對象與保存的屏幕對象比較,從而判斷測試用例是否通過。
主要Web測試工具有MI公司的Astra 系列(如Astra QuickTest )、RSW公司的 E-Test Suite等;
Web系統測試工具: WorkBench、Web Application Stress Tool(WAS)、頁面鏈接測試Link Sleuth等。
- 各種操作的響應速度
- 最大併發用戶數
- 最大數據容量