天天看點

《 自動化測試最佳實踐:來自全球的經典自動化測試案例解析》一一2.4 開發内部測試工具

2.4 開發内部測試工具

該内部測試工具的基本功能是由3 ~ 4位開發人員在6 ~ 9個月的時間内開發出來的,是用java語言編寫的。第一個版本開發之後,一個人專門負責對其進行維護和進一步的開發,顯然維護和進一步開發的工作量是逐漸減少的。

圖2-1是測試的java引擎(java engine for testing, jet)架構的一個概覽。每個大的矩形都是一台運作某些軟體的計算機。

我們在圖2-1中的運作機(runner)處開始運作一組測試集合。它使用jetbatch來開始運作測試并收集運作結果。用戶端(client)運作與jetbatch進行互動的jet代理程式(jet agent,jag),即使用jag來啟動jet運作單個測試。這些jet讀入一個xml文檔,該文檔會給jet提供測試運作的内容,并與伺服器的jag進行互動來啟動我們需要測試的軟體。整套系統還包括一個測試裝置,通過使用不同的機器操作不同的任務,避免了架構本身的資源消耗對被測任務的影響。

因為我們确實投入了大量的時間和精力來設計自動化測試,是以幾乎實作了所有的目标(隻有性能測試是由我們的另一款内部開發工具完成的,這不在本案例研究的讨論範疇)。幾乎所有的測試都是通過我們的工具自動運作的,其中隻有幾個測試,我們認為自動化的價值并不是很大,是由手動完成的。最後,我們有了一款可以在很多不同領域使用的、功能非常強大的工具。

《 自動化測試最佳實踐:來自全球的經典自動化測試案例解析》一一2.4 開發内部測試工具

2.4.1 配置

測試配置:我們的測試是定義在一個資料庫中的,并且可以單選、成組選擇或者根據特定序列來進行選擇。工具在每次測試之前都會進行一次初始化,避免前面的測試結果影響到後續的測試,工具在每次測試之後也會将測試環境清理幹淨。工具還自動将測試件進行收集和歸檔。

【小竅門】

把實施預處理和後續處理作為啟動一個測試套件的一部分。

測試時應用程式的配置:可以對産品版本進行選擇,包括調試版本和來自開發人員“沙箱”(sandbox)的本地版本。

伺服器和用戶端平台的配置:我們使平台的定義和在運作測試的平台組的定義變得簡單。根據測試裝置在一個平台組(例如,windows vista,64位,jdk 6)裡面是否可用而将其劃分成不同的測試裝置。我們可以用一到兩個平台為伺服器設定一個單獨的配置,通常也可以用一個平台為用戶端設定一個單獨的配置。對于用戶端和伺服器來說,都可以選擇不同的作業系統。

一個标準的測試需要4台機器:一台測試機器,一台客戶機,兩台包含被測資料庫的伺服器。

2.4.2 資源優化

通過添加更多的機器到測試裝置池中,我們可以并行地運作測試。另外,測試具有排隊機制:一個測試裝置上的測試完成之後,候選隊列裡面的下一個測試就開始運作。

2.4.3 測試報告

這個内部工具建立了網站來記錄測試報告,所有的結果在一個資料庫中也進行了詳細存檔,這有利于我們建立詳細的度量,比如下面的度量:

1)在哪些平台上會有一些什麼樣的bug及其出現的頻率(可以幫助指定bug的優先級)。

2)每個平台上的一般資訊統計。

3)測試中bug的檢出率。

4)測試的備援。

一個測試完成之後,會自動發送一個包含測試結果的彙總郵件,同時生成一個xml檔案,它包含了用以導入到其他資料庫或者報表生成器的所有必要資訊。

該工具也使得從開源測試覆寫工具(emma)中導入資訊變得更容易,而且讓我們能觀察到測試的品質——至少從表面上看是這樣的。

2.4.4 故障分析

在測試失效分析達到60% ~ 80%正确率之後,才能對失效進行自動識别。比如,通過定義描述故障的模式和标記來進行識别,在大多數情況下,我們定義一些模式或者簽名對故障進行描述,這些模式或者簽名通常與測試産生的錯誤資訊、測試名稱和産生這條實效資訊的測試語句直接相關。一個bug可能有多個标記,如果要對新的故障或者已知故障的新症狀進一步進行人工分析,就需要新的标記資訊。

用這個新工具實施的某産品的首次釋出測試中,要求不論何種原因,無論是産品原因或者是測試原因,至少75%的測試運作的時候不會出現故障。最後,要求至少96%的測試運作的時候不會出現故障。