专栏首页软件测试那些事Allure整合JIRA XRAY实现自动化用例管理

Allure整合JIRA XRAY实现自动化用例管理

笔者之前写过一篇文章 测试用例管理平台的一二三 ,介绍了几种常见的测试用例管理平台。本文将介绍如何实现通过Allure提供的注解以及xray-maven-plugin实现在JIRA上实现自动化用例的管理。

JIRA X-RAY用例管理

JIRA的XRAY插件利用了JIRA原生的issue管理和工作流引擎,可以在满足基本的测试用例和测试任务管理的同时,天然地连通需求、缺陷等内容,非常方便地实现需求-用例-缺陷的上下游追溯,并实时提供测试进度、需求覆盖强度等报告。如下图所示,

XRAY号称已经服务于70多个国家的5000多客户。作为一个小众市场的一款产品,其商业化无疑是非常成功的。

X-RAY的用例管理模型是这样的。

一般可以通过Test来描述一个测试用例,而使用Test Execution 来表征一次测试用例集的执行。这也是最为常见的测试用例管理的诉求。

使用Xray-Maven-Plugin实现JUnit与JIRA X-RAY整合

为了实现对于自动化用例的管理,我们通过找寻,发现X-RAY官方其实提供了一个Xray-Maven-Plugin插件,这个插件能够实现JUnit和JIRA X-RAY用例管理之间的联动。

具体来讲,JUnit在生成测试报告的时候,会将测试用例和测试执行结果生成xml格式的surefire report报告保存到约定的一个目录下。那么类似的,这个X-RAY插件,它也会去解析这个目录,同时的话把这些相关的结果向JIRA的服务端进行申报。所以整个插件实际上就完了surefire report报告的解析,以及向JIRA服务端批量申报测试用例和执行结果的工作。

笔者在曾经介绍过类似的方案【去中心化的测试用例平台之Maven插件

那以下是其官网给出的一个验证项目的结果图

https://docs.getxray.app/display/XRAY/Testing+web+applications+using+Selenium+and+Junit5+in+Java

配置X-RAY插件和相关属性

增加属性,xray.projectKey与Jira project key保持一致: ... ... xxxXX JUNIT ${basedir}/target/surefire-reports

引入XRAY插件: com.xpandit.xray xray-maven-plugin 1.1.0

运行使用

1、按照测试流程,在JIRA创建 Test Plan 和 Test Execution

2、maven的settings.xml文件配置jira地址及用户名密码,xray.username和xray.password配置成测试执行者的jira用户名和密码 jira-xray http://your.jira.com/jira yourName *****

在版本的jira中支持了使用token,会比目前的明文username、password更安全一些。

3、创建构建步骤,执行命令,指定Test Plan、TestExecution和fixVersion测试版本,运行

mvn clean package surefire:test com.xpandit.xray:xray-maven-plugin:xray -P jira-xray -Dxray.testPlanKey=xxx-82 -Dxray.testExecKey=xxx-83 -Dxray.testEnviroments=iOS/Linux -Dxray.fixVersion=xxx_V1.2.3

4、jira查看Test Plan和 Test Execution,用例执行情况已上报

可以看到,通过这样的一个操作过程,测试用例就可以通过这个Maven执行报告解析、用例先申报,那么最终的话,可以在JIRA上生成了测试用例Test,同时的话也生成测试用例的执行结果 Test Execution。也就是说,通不需要任何的二次开发,我们用利用原生的Xray-Maven-Plugin的功能,就能实现JUnit和JIRA之间的测试用例管理的整合。

但目前来讲,这个实现的功能和笔者之前提供的一个解析JUnit surefile测试报告,然后再生成生成测试用例和用例执行结果并向用例管理平台进行报告的方案基本上是类似的。

也就是说这个方案的一个不足之处,或者是一个局限性是说,该方案并没有充分地发挥X-RAY的功能。也就是在开篇所提到的,X-RAY除了描述测试用例本身的属性之外,它还提供了一些关联的注解,如需求、测试集、缺陷、优先级等等一些必须必要的管理要素。那比较遗憾的是说X-RAY的这个插件,它并没有去解析和获取这些数据,然后向JIRA进行申报。

Allure测试用例报告框架

Allure 是一款功能强大的测试报告框架,可以很好地与多种语言的不同测试框架进行集成,用于生成和管理测试结果报告。以下是Allure在JUnit5中使用的案例,

Allure注解使用案例

1.@Epic("Login Tests Epic")
2.@Feature("Invalid Login Features")
3.public class LoginTest extends BaseTest {
4.    @Test
5.    @Story("User tries to login the system with invalid username and invalid password.")
6.    @Description("Invalid Login Test with Invalid Username and Invalid Password.")
7.    public void invalidLoginTest_InvalidUserNameInvalidPassword() {
8.        page.getPage(HomePage.class)
9.            .givenIAmAtHomePage()
10.            .whenIGoToLoginPage()
11.            .andILoginToN11("onur@swtestacademy.com", "11223344")
12.            .thenIVerifyLogEntryFailMessage();
13.    }
14.        @Test
15.    @Story("This is a Fail Story.")
16.    @DisplayName("This is a Fail Story Description.")
17.    public void failTest() {
18.        assertTrue(false);
19.    }
20.}

可以看到,Allure提供了较为丰富的测试用例注解,简要介绍如下:

首先是关于用例自身的描述,如

@DisplayName("创建部门")
@Description("说明XXXXX")
@Severity(SeverityLevel.BLOCKER)//设置用例等级
1)blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
2)critical级别:临界缺陷(功能点缺失)
3)normal级别:正常
4)minor级别:次要缺陷(界面错误与UI需求不符)
5)trivial级别:轻微缺陷(必输项无提示,或者提示不规范)
@step:写在用例中,报告中case的执行步骤

除了描述一个用例自身的属性之外,Allure还提供了与需求、缺陷等的关联对象的注解,

@Epic、@Feature、@Story:这是常见的需求管理的三个层级
@Link("www.baidu.com")//添加超链接
@Issue("001")//添加问题编号

通常的Allure使用场景是通过Maven/Gradle等构建工具执行完测试用例后,再运行allure插件的命令,并生成Allure报告。

整合Allure+ XRAY-maven-plugin

在我们目前推行的方案当中,要求测试用例需要关联到需求,如Story。由于Story关联到了JIRA Project的组件Component, 间接地也就能梳理出来每个组件下有哪些用例了。同时由于Story中关联到了版本Version,也就能筛选出每个系统在本次发布中的新增用例清单了。

而在测试执行层面,JIRA X-RAY通过某个Test Execution来表示某个用例Test或者用例集Test Set的某次执行情况。并后通过Test Execution关联版本来了解本次发布中用例执行的情,如新增用例和回归测试,包括对需求、组件的覆盖情况。

目前团队选择的方案是选择了参考Allure的注解格式,补充扩展了一套测试用例注解,然后通过类似X-RAY的Maven插件来向JIRA报送测试用例和执行结果。这个方案是兼容了Allure的JSON格式的用例报告,这样也就保证了与原生方案的向下兼容,也可以以此为接口,支持多种语言的测试框架的统一接入。

就之前介绍的,由于X-RAY的插件只能读取用例的基本信息,Allure的用例注解中关于Story、Bug等信息只能由Allure服务端自行解析并展示,没有通过X-RAY的插件向JIRA进行报告。因此,重写了X-RAY的这个插件,在原先的测试用例和执行结果上报的基础之上,额外去调用其他的JIRA接口去完成测试用例、执行结果与Story、Bug之间的关联关系创建,以及测试用例执行与版本、组件等等基础信息的填报。

按照这样的一个思路的话,就能实现在测试用例管理系统中实现自动化用例的管理,除了用例自身的基础信息外,通过一套自定义的注解格式,就能实现自动化用例的管理要求,实现与上下游的联动以及管理要素属性的自主申报。

由于整个工作是基于开源工具来实施的。如果读者感兴趣的话,也可以参考X-RAY插件的源码来进行二次开发,在梳理好需要使用的自定义注解后,整个实现过程也并不太复杂。

文章分享自微信公众号:
软件测试那些事

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:风月同天测试人
原始发表时间:2022-01-05
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 测试用例管理平台的一二三

    一般的测试平台能干什么?测试平台有哪些类型?笔者简单梳理了一下,供大家参考。尤其是在DevOps平台建设时,关于测试管理是集成既有平台,还是自建其管理能力,又如...

    Antony
  • pytest文档30-功能用例与自动化用例完美对接(allure)

    做自动化做久了,经常会思考一个问题,到底别人是怎么做的自动化,跟自己的有啥不一样,看过不少书和资料,都是停留在demo的层面。 真正把自动化做的好的大牛又不屑于...

    上海-悠悠
  • Web UI自动化

    UI 自动化测试,即通过自动化的手段来控制机器模拟人进行手工操作。随着 GrowingIO

    花落花相惜
  • 详解用Pytest+Allure生成漂亮的HTML图形化测试报告

    对于软件测试工作来说,测试报告是非常重要的工作产出。一个漂亮、清晰、格式规范、内容完整的测试报告,既能最大化我们的测试工作产出,又能够减少开发人员和测试人员的沟...

    砸漏
  • 自动化的分布式

    当团队自动化用例达到一定数量后,如果仅在一台执行机上执行,执行时间就可能会达到几个小时以上,无法满足版本发布节点的时间要求,如何减少总的自动化用例执行时间就是不...

    赵云龙龙
  • 终端自动化测试探索之路

    测试作为质量保证极其重要的一环,在移动App开发流程中起到非常关键的作用。从开发工程师到测试工程师,人人都应具备良好的测试意识,将隐患和风险在上线之前找出并解决...

    岛哥的质量效能笔记
  • 自动化测试报告必会神器Allure使用

    之前用过testNG自带的测试报告、优化过reportNG的测试报告、extentreport、ZReport(大飞总原创),这些是我之前都用过的,也是在去年雯...

    软件测试君
  • 高颜值测试报告Allure使用详解

    之前用过TestNG自带的测试报告、优化过ReportNG的测试报告、ExtentReport、ZReport(大飞总原创),这些是我之前都用过的,也是在去年雯...

    软件测试君
  • pytest文档38-allure.setp添加测试用例步骤

    一般流程性的测试用例,写成自动化用例时,步骤较多写起来会比较长。在测试用例里面添加详细的步骤有助于更好的阅读,也方便报错后快速的定位到问题。 举个常见的测试场景...

    上海-悠悠
  • 一套框架测试全端,可还行?

    众所周知,市面上有很多自动化测试工具,web自动化有selenium,robotframework,playwright等,接口自动化测试工具有httprunn...

    归根落叶
  • 安装tep

    tep教程会随着版本更新或经验积累,持续维护在电子书中,最新的最全的内容请锁定这篇文章【最新】tep完整教程帮你突破pytest:

    dongfanger
  • 测试工程师测试工程师

    基于Selenium的Web自动化测试框架 基于Appium的App自动化测试框架 使用工具实现接口测试 基于Python+Resquests库的接口自动...

    孙寅
  • 自动化测试:如何构建Selenium框架-云层补充版

    云层:Selenium在某些角度已经是一个淘汰的技术了,但是并不妨碍大家重新看这篇文章来整下UI自动化框架实践体系。

    TestOps
  • 国内某大型银行的持续集成与交付实践

    随着架构的不断演进以及微服务技术在我行的深入应用,应用部署发布的复杂性大大增加,简单的代码配置管理模式、人工的版本记录及手工部署等发布操作和管理的模式,效率低、...

    JFrog杰蛙科技
  • 测试管理平台大比拼

    本文从以下九大功能对各个工具进行对比:测试需求管理、测试用例管理、测试套件管理、测试版本管理、测试计划管理、测试执行管理、缺陷管理、发布管理和分析报表。

    腾讯移动品质中心TMQ
  • 【腾讯TMQ】测试管理平台大比拼

    从以下九大功能对各个工具进行对比:测试需求管理、测试用例管理、测试套件管理、测试版本管理、测试计划管理、测试执行管理、缺陷管理、发布管理和分析报表。

    腾讯移动品质中心TMQ
  • 测试管理平台大比拼

    简介 工欲善其事,必先利其器。测试管理平台就是测试过程中的“器”,它是贯穿测试整个生命周期的工具集合,它主要解决的是测试过程中团队协作的问题,比如缺陷管理、用例...

    腾讯移动品质中心TMQ
  • 接口自动化项目落地之HTTPBin网站

    找个开源网站或开源项目,用tep实现整套pytest接口自动化项目落地,归档到电子书,作为tep完整教程的项目篇一部分。自从tep完整教程发布以后,tep被越来...

    dongfanger

扫码关注腾讯云开发者

领取腾讯云代金券