JIRA是一個流行的產品,除了其自身功能強,可擴展性好以外,JIRA還擁有一個龐大的生態圈。擁有眾多的插件開發商、合作伙伴和用戶。
從產品層面看,JIRA產品具備很強的擴展能力,例如對於問題單類型、流程、表單、字段,報表,通知,權限配置都是可以定制的,而且還內置或者可以定制很多方案(Schemes)方便擴展。
另外JIRA產品擁有支持Add-On(插件)的能力,圍繞Add-On能力Atlassian公司做了一個App市場,各種外圍合作方和供應商可以通過App市場把他們開發的第三方的插件開放給所有JIRA產品的客戶購買和使用。另外JIRA產品相關的相關的各種培訓和論壇也都非常活躍。這些反過來也讓這個產品更受歡迎。
Xray就是眾多這些插件應用中的一個,Xray是一個叫xpand的英國公司開發的插件。據說就個插件已經在60多個國家被1K多的客戶在使用。因為我們在之前的一個項目上用這個工具,所有有所了解。Xray在測試管理這個領域比較知名,下面就用這個插件為例介紹下使用JIRA+Xray如何進行測試管理。
核心概念和模型
概念/術語 | 問題類型 | 描述 | 別名 |
---|---|---|---|
Test | 測試用例 | 一個測試用例。可能是手工或者自動化的測試用例,由測試步驟,行為和預期結果構成 | test case, test scenario, test template |
Pre-Condition | 前置條件 | 測試前置條件,一個測試前置條件可以被多個測試用例所引用 | |
Test Set | 測試集合 | 一組測試用例的集合。一個測試用例可能會屬於多個測試集合。 | test group, test suite |
Test Plan | 測試計划 | 一個正式的測試計划通常被用於為某個給定的項目版本執行 | |
Test Execution | 測試執行 | 測試執行是一個可分配的,可規划的任務,用於給一個指定的版本執行一個或多個測試用例,並給出結果報告 | test cycle* |
Sub-Test Execution | 子測試執行 | 一個“子測試執行”同“測試執行”擁有相同的功能,不同之處在於子測試執行是一個可以在需求上下文中創建的子任務。在需求單的界面創建一個測試執行可以讓用戶有能力在敏捷看板中跟蹤執行的進展。 | |
test run | - | 測試運行。一個測試運行的實例包括執行的狀態和執行規格的快照。當給一個測試執行增加一個測試用例后,一個測試運行會在測試執行的上線文中被內建出來。一個測試用例可能會擁有多個測試運行。 | |
test status | - | 測試狀態。大部分情況下,是一種測試運行的狀態的速記。Xray提供了一個定制化的估算狀態“TestRunStatus”,這個狀態根據不同的規則可以被用於查詢等多個場景中。 | .. |
requirement | Story, Requirement, .... | 需求是你希望從系統獲得的東西,或者叫特性。一個好的需求應該解釋系統是如何實現來達到目標的。 | |
test repository | - | 測試庫是在一個項目中所有的測試用例集合。在Xray中, 測試庫只是測試問題單的簡單組合。 | |
test strategy | - | 測試策略描述了哪些需求需要驗證,怎么驗證,手工還是自動方式,以及測試資源分配等主題 | |
testing lifecycle | - | 根據需求規格和修訂結果,測試生命周期會涉及到測試計划,測試設計,測試執行和測試報告。 |
以上這些測試概念的關系可以用下圖來表達:

項目可以包括多個版本,每一個版本可以包括一個或多個需求,一個需求可能包括一或多個測試用例。實際上,一個需求甚至可以包括測試集合。測試計划包括那些需要被跟蹤的測試用例。測試執行包括那些希望被執行的測試用例。一個測試用例可以被包括在多個測試集合中,可以被多個測試計划所使用,也可以被多個測試執行所執行。一個測試用例可以包括一或多個前置條件,一個前置條件也可以被多個測試用例所引用。每次一個測試用例在測試執行中被執行后,一個測試運行(Test Run)就會被創建。
測試流程
通常一個典型的測試生命周期如下,在Xray基本都可以找到對應的映射實體:

每一個階段的測試一般都包括計划,設計,執行和報告四個主要過程,Xray中可以通過創建特定的問題單來對應以上步驟。
- 計划階段: “Test Plan”問題單
- 設計階段: 通過創建“Pre-Condition”問題單和“Test”問題單(測試用例)解決. 另外還可以通過測試集合來組織這些測試用例。
- 執行階段: Test Execution問題單
- 報告階段: 通過使用JIRA內置工具,通過測試執行問題單可以產生需求覆蓋率及一些其它測試報告數據。
需求和測試用例關系
通常在使用一個Xray的測試項目之前,最好先創建一個需求相關的項目,這樣通過和需求項目的關聯,我們可以很容易知道測試的覆蓋率。
在系統中,測試用例會關聯到需求(Requirement)或者缺陷(Defect)中,典型的需求問題會包括:Epic,Story,Requirement,Sub Requirement,Feature和Improvement這些,典型的缺陷問題會包括:Bug和Defect。需求和缺陷同測試用例的關系可以表示如下。

使用JIRA內置的Link類型,可以把需求和測試用例鏈接起來,以上圖為例:
- 需求R "is tested by" 測試用例T (或者測試集合TS)
- 測試用例T (或者測試集合TS) "tests"需求R
- 缺陷D "is created by" 測試用例T
- 缺陷D "is tested by" 測試用例T (或者測試集合TS)
- 測試用例T "created" 缺陷D
- 測試用例T (或者測試集合TS) "tests" 缺陷D
如何使用Xray(操作介紹)
安裝Xray也很簡單,通過JIRA內置的Add-On市場找到Xray,選擇安裝即可,可以試用一個月,喜歡就可以直接購買了。下面介紹下如何試用Xray一步步來做一個UAT測試的項目。
- Xray Test Project
- Create a test
- Add a link
- Link defect with test
- Test samples
- Overall Coverage requirements chartTest Plans Report
結語
總體而言,Xray是一種非常簡單易用的插件產品。系統設計的思路很貼近業界最新的測試理論和實踐,例如自動化測試的設計,支持敏捷/看板的實踐,另外可以很容易對接需求用例以及外圍系統。
在我們的一個項目中,Xray被用於了UAT的測試過程,整個測試過程采用敏捷研發的方式,系統按照產品分多個團隊,每個團隊每兩周一個迭代,每個迭代一個測試計划,每個測試計划包括若干測試用例,每個迭代失敗的用例放入下一個迭代繼續測試。
測試用例結構上分為Epic->Story->Test Case,其中Epic和Story來自需求和HLD,Test case需要覆蓋所有Story。在用例執行層面有Sprint-> Test Plan -> Test Execution,用以管理所有用例的執行計划和執行結果。
整個使用過程很流暢,JIRA內置的強大JQL查詢能力和Dashboard的定制能力也讓人印象深刻。Xray+JIRA確實是值得推薦的測試管理方案。