x-ray简介
Xray是JIRA的一个插件,主要用于测试管理。它可以定义测试计划,测试计划中包含测试执行,测试执行中有包含具体的多条测试用例。
一个Xray项目一般包含“Test Plan”, “Test”, “Test Set”, “Test Execution”, “Pre-condition”五类Issue Type。
概念/术语 | 描述 |
Test | 一个测试用例。可能是手工或者自动化的测试用例,由测试步骤,行为和预期结果构成 |
Pre-Condition | 测试前置条件,一个测试前置条件可以被多个测试用例所引用 |
Test Set | 一组测试用例的集合。一个测试用例可能会属于多个测试集合。 |
Test Plan | 一个正式的测试计划通常被用于为某个给定的项目版本执行 |
Test Execution | 测试执行是一个可分配的,可规划的任务,用于给一个指定的版本执行一个或多个测试用例,并给出结果报告 |
创建,编辑等操作基本和JIRA其他类型issue类似,主要有一些xray专用项需要填写。对Test类型,要注意填写“Action”,“Data”,“Expected Result”。
测试用例(test)也可以从CSV文件导入测试用例操作,编辑excel文件,另存为,选择类型“CSV UTF-8 (逗号分隔)“。在JIRA主菜单中选择“Tests”, “Test Case Importer”,如下图:
注意:字段匹配时,字段“Summary”,“Test Case Identifier”,“Action”必须匹配。
x-ray和Jenkins交互实现测试自动化执行
自动化测试希望能够在测试计划中触发jenkins的自动测试任务,并反馈测试结果到xray上,这样在xray上就可以直接看到测试用例是否执行成功。
具体案例
新建一个测试计划,新功能XXX测试计划。期望,在这个测试计划中增加一个comment,内容包含“Jenkins build”(和下文jenkins任务配置中pattern配置一致), 就会触发Jenkins上的相应任务”新功能XXX自动测试任务“,任务执行pytest, 运行测试用例脚本,执行完成后,从xray上可以看到该测试计划执行结果:
该test plan下面会出现几个新的tests,这些tests的summary就是pytest里面测试用例的函数名,如pytest里定义def test_demo1(),那么新出现的test的summary就是test_demo。如果已经存在这个test,就在这个test里直接更新返回的测试结果。
功能实现
JIRA配置
首先JIRA上配置webhook,在“system”, “webhook”里面:URL: jira_url/jira-trigger-webhook-receiver/
Jenkins配置
首先安装两个插件:
JIRA Trigger plugin,主要用于JIRA上触发Jenkins任务
xray-test managerment for jira plugin,主要用于Jenkins任务执行结果反馈到JIRA
然后Jenkins系统配置里配置,JIRA Trigger Configuration和Xray Configuration,这里主要需要配置URL,账号密码之类。比较简单,就不赘述了。
完成后的简单测试,xray configuration里面有test功能,直接测试返回成功即可。
JIRA Trigger的测试,需要先打开jenkins的system log配置,增加一个log recorder, name自己指定,logger填入com.ceilfors.jenkins.plugins.jiratrigger.webhook,Log Level选择FINE。
然后从JIRA服务器上执行curl -H "Content-Type: application/json" -X POST -d '{"user_id": "123"}' http://Jenkins_url/jira-trigger-webhook-receiver/。
正常jenkins的log recorder会收到类似”Received Webhook callback ...“的记录。否则需要检查配置,网络等问题。
Jenkins任务配置
JIRA触发Jenkins任务配置(Jenkins任务配置,JIRA配置为上述webhook配置):
Build Triggers中勾选
Build when a comment is added to JIRA
Build when an issue is updated in JIRA
按需填写jql和pattern即可。
BUILD配置,按需配置。例如选择BUILD SHELL: 执行pytest,如下:
cd /home/lucky/jenkins/pytest_example/ && pytest --junitxml=/home/lucky/jenkins/pytest_example/report/report_from_jenkins.xml
反馈构建结果到xray的配置:
Post Build里面选择XRAY result import task, 选择JIRA instance,格式选择JUnit XML, 指定xml文件位置,JIRA相关信息按需填写。
参考文档
GitHub - jenkinsci/jira-trigger-plugin: Triggers a build when a certain condition is matched in JIRA
GitHub - jenkinsci/xray-connector-plugin: Xray Test Management Connector for Jenkins