談到自動化測試,一般就會提到測試工具。許多人覺得使用了一、兩個測試工具就是實現了測試自動化,這種理解是不對的,至少是片面的。的確,測試工具的使用是自動化測試的一部分工作,但“用測試工具進行測試”不等于“自動化測試”。那什么是“自動化測試”? 半自動化測試過程,算不算自動化測試?是否可以為“自動化測試”給出如下定義?
以自動化的方式完成測試?
測試過程的自動化?
將手工測試的過程變成了自動化測試的過程?
擺脫手工測試的各種途徑和方法?
自動化測試是相對手工測試而存在的,所以自動化測試的真正含義可以理解為“一切可以由計算機系統自動完成的測試任務都已經由計算機系統或軟件工具、程序來承擔并自動執行”。它包含了下列3層含義:“一切”,不僅僅指測試執行的工作——對被測試的對象進行驗證,還包括測試的其它工作,如缺陷管理、測試管理、環境安裝、設置和維護等。
“可以”,意味著某些工作無法由系統自動完成,如腳本的開發、測試用例的設計,需要創造性,其工作需要手工處理。
即使由系統進行自動化測試,還少不了人的干預,包括事先安排自動化測試任務、測試結果分析、調試測試腳本等。
軟件測試嚴ge意義上,“自動化測試(Automated Testing)”不等于“測試自動化(Test Automation)”。自動化測試,模擬手工測試步驟,通過執行程序語言編制的測試腳本自動地測試軟件,自動地實施軟件的單元測試、功能測試、負載測試或性能測試等。自動化測試集中體現在實際測試執行(test execution)的過程,也就是由手工逐個地運行測試用例的操作過程被測試工具自動執行的過程所代替。自動化測試,強調借助工具(不僅僅是工具,有時包括策略和工件)來完成測試的執行,也就是用工具來幫助或輔助測試,這個執行過程可能是全自動的,也可能是半自動的。
測試自動化的要求高得多,側重說明將測試用自動化設計和實現的過程,即所有的測試工作都能有計算機系統自動完成,包括:測試環境的搭建和設置,如上載安裝包到服務器;腳本自動生成,如根據UML狀態圖、時序圖等生成可運行的測試腳本;測試數據的自動產生,例如自動產生數據負載測試所需要的大量數據;測試操作步驟的自動執行,包括測試執行過程的控制;測試結果分析,實際輸出和預期輸出的自動對比分析;測試流程的自動處理,即測試工作流的自動實現,包括測試計劃復審和批準、測試任務安排和執行、缺陷生命周期等流程的自動化處理。
測試報告自動生成功能等
這樣,測試自動化意味著測試全過程的自動化和測試管理工作的完全自動化,是測試工程師所追求的一種理想境界,但是很難實現的。往往不能完全通過全自動化過程來完成一個完整的測試任務,自動化到不需要人工參與的程度是不現實的。雖然不能完全實現那種理想境界,但是我們每時每刻可以向這個方向去思考,優化每項工作,一切可以由計算機系統自動完成的測試任務都已經由計算機系統或工具來承擔并自動執行。
在一般情況下,人們并不嚴ge區分“自動化測試”和“測試自動化”,就是通過工具或程序來對軟件進行測試,一般不需要大量的手工操作來完成測試,而只要很少的人工干預。自動化測試,理應從工作效率和產品質量的目的出發,而不是為了自動化而自動化,在某些時刻,也可能得不償失,即投入過大,產出遠遠小于投入。脫離了目的,測試人員可能會變成自動化測試的奴隸。奢想做到百分之百地實現自動化測試,不僅不現實,所引起的代價可能會非常大,而且可能引起負面性,造成質量水平的降低。
最后,我們還不得不承認,自動化測試和手工測試往往交織在一起,相互補充,工具執行過程往往需要人工分析,手工測試時也可以借助工具處理某些數據、日志或顯示某些信息。也就是說,不是試圖用自動化測試來代替所有的手工測試,而應該在尊重手工測試的同時,盡量采用自動化測試,根據各自的特點充分發揮各自的優勢,使手工測試和自動化測試實現完美結合。
|
新聞熱點
疑難解答