第1章 前言
目前市場上已經有了不少自動測試工具,不過滿足自己需求的測試工具卻很難找到或者是難以支付其昂貴的費用,對于在Linux/Unix后臺運行的軟件產品,自己開發一個自動測試工具,不但可以滿足軟件的測試需求,還可以節省一大筆費用。
這個自動測試系統架構的設計,是基于Linux/Unix后臺運行的軟件產品,架構的思想,源于主流測試工具與前輩的實踐經驗。
軟件的自動測試,其實就是一種思想,不管是市場上的主流測試工具,還是自主開發的測試工具,都只是工具,關鍵的是怎樣去組織一個工具,怎樣將工具應用于軟件測試中。
第2章 系統架構
2.1 設計思想
1.自動測試的組成:自動測試主要有幾部分組成:(1)、自動測試工具(2)、測試案例(3)、模擬接口(4)被測試軟件(5)自動編譯與安裝
2.自動測試工具:自動測試工具的主控程序不需要理解業務,所有的業務邏輯和測試數據都寫在測試案例中,主控程序執行每個測試案例中的指令完成每個測試案例的測試,測試結果記錄在指定的文件中。
3.測試案例:業務邏輯和測試數據體現在測試案例中,一個完整的測試案例應該包括測試條件預置、測試步驟、每個測試步驟的輸入與輸出、預期結果、實際測試結果的獲取、實際測試結果與預期測試結果的對比。每個測試動作為一個操作指令,每個操作指令包括指令的ID、輸入與輸出,主動測試工具就是通過執行測試案例的這些指令來完成自動測試的。
4.黑盒測試:被測試軟件對于自動測試工具來說,是一個黑盒子,自動測試工具不關心被測試軟件的內部邏輯和業務流程,關心的被測試軟件的接口以及每個接口的輸入和輸出。自動測試工具向被測試軟件輸入測試數據,在相應的接口獲取測試結果,如果測試結果與預期結果相一致則測試通過,否則測試失敗。
5.模擬接口:與被測試軟件打交道的各個接口,需要模擬,在必要時可以設置模擬接口給被測試軟件的返回值,以達到測試的目的。
6.自動編譯與測試:自動編譯就是自動到源代碼管理服務器編譯軟件,將軟件上傳到測試服務器。自動測試就是自動更新或安裝被測試軟件,啟動自動測試工具執行自動測試案例,記錄測試結果并將測試結果以郵件的方式發送給相關的人員。
7.測試環境的恢復:在某個測試案例執行完成后,不管測試是成功還是失敗,都需要恢復被該測試案例特殊化后的測試環境。
8.重用策略:公用的模塊提取出來,被別的模塊或功能調用,提高模塊的公用性,減少程序冗余代碼。
9.自動測試工具模塊組成:
(1)主控程序:讀取測試案例以及每個測試案例的操作指令,根據不同的操作指令調用不同的指令接口執行每個測試案例的指令,記錄測試結果。
(2)指令接口:是測試案例操作指令與具體測試步驟實現之間的橋梁,與測試案例的操作指令相對應,指令接口就是實現測試案例的操作指令所需要做的事情,動作完成之后將該動作的操作結果返回給主控程序。
(3)驅動程序:驅動程序是實現具體的指令操作的程序,被指令接口調用完成具體的測試工作,并將測試結果返回給指令接口。
(4)輔助功能:實現系統的輔助功能,比如案例文件的處理,底層socket處理,文件處理或者數據庫操作。
2.2 系統架構
2.3 系統流程圖
第3章 自動測試核心設計
3.1 系統組成
自動測試工具由主控程序、指令接口、驅動程序和輔助功能組成。
3.1.1 主控程序
控制模塊不理解業務,把業務邏輯和測試數據全部寫在案例里,控制模塊讀取所有需要測試的測試案例以及每個測試案例的每一個操作項的動作,調用不同的接口處理模塊來實現整個測試流程。
控制模塊處理流程:
1.讀取命令,獲得需要執行的命令以及配置文件。
2.分析命令以及命令的參數,比如如果命令是想查看幫助,則打印幫助提示;如果命令是執行測試案例,則開始執行自動測試的測試案例。
3.分析配置文件,獲取測試案例存放目錄,需要執行的案例的ID文件,數據庫連接信息,測試案例所使用到的參數。 (注:因為在測試案例的執行中,未必執行完整個測試案例,測試案例中的某些動作可能不需要執行,可在配置文件或測試案例中進行配置)
4.根據測試案例存放目錄以及測試測試的ID文件獲取具體需要測試的測試案例。
5.獲取每個測試案例需要執行的動作指令以及輸入數據。
6.逐個執行測試案例,根據測試案例的動作指令調用不同的接口執行不同的動作。
7.某個測試案例測試完成后,獲取該測試案例的測試結果,并將測試結果輸出到結果記錄文件中。
8.繼續執行下一個案例,直到所有的測試案例都被測試完為止。
3.1.2 指令接口
是測試案例操作指令與具體測試步驟實現之間的橋梁,與測試案例的操作指令相對應,指令接口就是實現測試案例的操作指令所需要做的事情,動作完成之后將該動作的操作結果返回給主控程序。接口模塊負責與接口的數據處理,包括輸入和輸出,同時必須包括數據處理的結果。主控程序在讀取了測試案例的操作指令之后,調用這些操作指令所對應的指令接口執行相應的操作,如果該接口執行操作成功則主動程序繼續下一步操作,否則測試終止,只有所有的測試步驟的指令都被成功之行,測試案例才通過。
為了方便管理與調用,所有的接口都實例化都一個接口工廠中,在實現了相應的指令接口后,需要將這些指令接口增加到接口工廠中,接口工廠根據案例中的接口類型來調用不同的接口實例。
指令接口,事實上就是執行測試案例中的每個指令要求做的事情,比如輸入測試案例的測試數據、執行相應的測試步驟、獲取測試結果、對比測試結果,指令接口完成一個指令之后將這個指令的操作結果返回給主控程序。
比如,話單檢查指令接口,指令接口需要做的事情就是初始化要監聽的話單文件,獲取話單文件,把獲取到的話單文件同期望話單進行比較,返回比較結果給主控程序。
原文轉自:http://blog.csdn.net/xuyubotest/article/details/4682639