Why Testopia ?
最近想研究一些時下流行的測試案例(Test Case)管理系統,之前有稍微裝一下Test Link來玩看看。因為看到《How Google Tests Software》裡面有提到一點,就是在Gogole裡,如果自動化測試測試沒過的話,會直接自動新增一筆Bug Tacker給相關人員,可見其相當重視自動化測試的品質,讓Automation的Bug提升到跟Product Bug相等重要。這也讓我重新思考 Bug Tracking System 對於Automation們的重要性。所以這讓我注意到另一套 Test Case Management System: Testopia。我覺得Testopia最大的特色,就是他是一套Bug Tracking System: Bugzilla 的延伸套件。也就是如果我們採用了Testopia來當我們的測試案例管理系統的話。也就相當於能直接擁有一套 Bug Tracking System了。這成為我想玩玩看 Testopia 的最大理由 :)
安裝 Testopia:
要玩 Testopia 之前要先安裝 Bugzilla,關於 Bugzilla 的安裝,這邊有記錄,安裝 Testopia 其實很簡單,下載 Testopia 的 tarball file : 當下最新的版本是2.5版
-
解壓縮︰ tar zxvf testopia-2.5-BUGZILLA-4.2.tar.gz
-
把裡面的內容丟到 bugzilla 的根目錄,例如 /var/www/html/bugzilla
-
執行 checksetup 的 perl 檔 : ./checksetup.pl
這樣就安裝完成了。
Testopia 的架構
Testopia 手冊裡面有一張圖很清楚地表達整個 Testopia 的架構︰
基本的使用流程如下︰
- 新增一個 Product 以及多個 Components : Administration > Product
- 新增一個 Test Plan
- 新增多個 Test Cases : 要注意的是狀態要 CONFIRMED 之後才能被挑選來執行。
- 新增一個 Build : ex 1001
- 新增一個 Environemnt : 這邊的 Environemnt,通常是指一些像是OS,Browser,Hardware等等不同的執行環境。
- 新增一個 Test Run : 選擇要執行的 Test Plan,以及選擇要跑的Build,挑選 Test Case
- 執行 Test Run : 把相
- 產成 Report,在 Test Run 上按右鍵,就可以把相關的的報告展現在 Dashboard上面
編輯 Test Case
一個 Test Case Management System 最重要的就是要很方便新增修改 Test Case,目前我只有少量輸入過,不過感覺還算及格,我曾經有使用過一套Test Case System,是每新增一個 Test Step 就要換頁一次。用起來就頗不方便。另外,官方建議在 Firefox 使用,編輯的介面如下︰
跟 Jenkins 整合 執行自動化測試
目前 Jenkins 有一個 Testopia 的 Plugin: https://wiki.jenkins-ci.org/display/JENKINS/Testopia+Plugin。這個Plugin在設定好之後,在Build Step 只需要指定 RunID,如圖
目前 1.0 版僅支援三個Environment Variable TESTOPIA_TESTCASE_ID
TESTOPIA_TESTCASE_SCRIPT
TESTOPIA_TESTCASE_ALIAS
。
有了Script名稱,接下來就可依照不同的測試框架,實際執行測試了,這邊只單純echo 出 ID 跟 Script 名稱。至於 Test Report,目前僅支援 TAP 格式。而測試案例跟測結結果的配對是使用TESTOPIA_TESTCASE_ALIAS
。舉例,測試通過的TAP︰
1..1
ok 1 It is passed
而測試失敗的TAP:
1..1
not ok 1 It is failed , oh no ~
例如 Testcase A 的 TESTOPIA_TESTCASE_ALIAS
是 1
,那麼我們就可以準備一個1.tap,放在這個 Jenkins Job 的跟目錄裡面,這樣 Jenkins 就可以把測試結果直接回傳回Testopia。
這個是 Jenkins 的結果︰
這個則是 Testopia 的結果︰
這樣就可以完成透過 Jenkins 來執行 Testpoia 的自動化測試了。
PS : 測試案例必需是有勾選自動化,還必須要有Tester,這才會被Jenkins找到。
接下來?
但是要達到更高程度的自動化,其實還少了幾個部份︰
-
Jenkins 如果看到有新 Build,自動新增 Testopia 的 Build
-
自動複製/新增 Test Run for new build
-
Jenkins 要知道新的 Test Run ID 是多少
-
傳送 Failed test result log 到 Testopia or Bugzilla
-
如果 Automation Fail,自動 Submit 一個 Bug 到 Bugzilla
如果要達到以上幾點,光靠 Jenkins 的 Plug-in 就不夠了。目前有看到 PyZilla 有 Wrap Bugzilla 的 XML-RPC API。而 Testpoia 也有自己的 XMLRPC 可用,看了一下,基本上可以完成大部份任務所需。
所以,還有很多事情可以弄 :)