一种基于Java的接口测试报告生成方法及系统技术方案

技术编号:20176528 阅读:38 留言:0更新日期:2019-01-23 00:20
本发明专利技术涉及一种基于Java的接口测试报告生成方法及系统。所述方法包括:S1,针对接口定义类注解@TestInterface,针对单个测试用例定义方法注解@TestMethod,@TestInterface和@TestMethod包括反映测试报告信息的若干参数;S2,将@TestInterface和@TestMethod添加到测试用例,在执行测试用例之前获取当前执行的测试用例@TestMethod以及其所处测试类的@TestInterface,解析@TestInterface和@TestMethod获取其反映测试报告信息的参数存入缓存;S3,执行测试用例,将测试结果存入缓存;S4,根据缓存中的信息生成测试报告。所述系统包括注解添加模块,注解运用模块,测试用例执行模块和测试报告生成模块。本发明专利技术将测试报告信息从测试用例中分离到注解中,使测试报告逻辑与测试脚本逻辑分离。

A Method and System for Generating Interface Test Report Based on Java

The invention relates to a method and system for generating interface test report based on Java. The methods include: S1, for interface definition class annotation @TestInterface, for single test case definition method annotation @TestMethod, @TestInterface and @TestMethod, including several parameters reflecting test report information; S2, adding @TestInterface and @TestMethod to test case, obtaining the currently executed test case @TestMethod and its location before executing test case. Test class @TestInterface, parse @TestInterface and @TestMethod to get its parameters reflecting test report information and store them in the cache; S3, execute test cases, store test results in the cache; S4, generate test reports according to the information in the cache. The system includes annotation adding module, annotation application module, test case execution module and test report generation module. The invention separates test report information from test cases into annotations to separate test report logic from test script logic.

【技术实现步骤摘要】
一种基于Java的接口测试报告生成方法及系统
本专利技术涉及软件接口测试领域,尤其涉及一种基于Java的接口测试报告生成方法及系统。
技术介绍
在IT的范畴内,接口的概念主要是子系统间交互并相互作用的部分。软件接口从形式上来看各种应用程序的API,硬件的驱动程序,数据库系统的访问接口,httprest接口。虽然接口的形式各有不同,但是从测试角度来说,需要测试的内容大致是相同的。接口测试属于功能测试,也可以看做是需要了解部分代码的灰盒测试。测试流程是:1.根据接口文档编写测试用例(用例编写方法完全可以按照黑盒测试的用例编写规则来编写,如:边界值、正交表等等设计方法);2.执行测试,查看接口返回的接口数据是否正确,主要检查返回的接口是否和接口文档中定义的一样。同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,具有很高的收益付出比。接口测试报告对自动化持续集成具有重要意义,测试报告是对测试过程和结果的直观反馈,测试报告体现了接口测试覆盖率、接口通过率等信息,对体现接口的鲁棒性和测试用例持续更新具有指导意义。接口测试报告常见指标包括接口覆盖率、接口成功率、接口覆盖深度、接口测试用例详情等,目前常见的生成测试报告的方案包括以下两种:方案一,通过在测试框架中集成代码覆盖率工具,通过生成的代码覆盖率计算接口覆盖率。代码覆盖率是为了统计被测程序的逻辑分支代码的执行情况,即被执行代码逻辑相对所有代码的比例。通过在junit4中集成jacoco工具获取代码覆盖率报告,再根据代码覆盖率计算接口覆盖率。例如有A、B两个接口(实际可能有上百个),接口源代码逻辑分为S1、S2、S3、S4等4处,A接口和逻辑S1是对等关系(调用A接口则一定会执行S1,此外,调用其他接口一定不会执行S1),B接口和逻辑S2是对等关系,因此S1、S2两处代码的覆盖率与接口覆盖率相等。如果通过jacoco获取代码覆盖率为50%,并且分别是S1和S3被覆盖,则接口测试率为50%,只有A接口被覆盖。具体实现过程如下:第一步,执行完毕自动化测试,通过jacoco统计得到全部代码覆盖率;第二步,寻找被测试的接口的关键逻辑代码,这部分关键逻辑代码一定是当前接口一定会执行的,并且其他接口一定不会执行,关键逻辑代码等于接口覆盖率。第三步,从第一步得到的代码覆盖率统计中,提取出关键逻辑代码的覆盖率,即接口覆盖率。方案一具有以下不足:a.提取关键代码的覆盖率,“提取”这个过程是需要手动去完成的,并且关键逻辑代码可能随着版本变更被修改,加大了维护成本。b.虽然有了接口覆盖率,以及通过自动化测试框架获取接口测试成功率,但是剩下的指标例如接口覆盖深度、接口测试细节流程等是没法得到的,功能实现度有限。c.代码统计率仅适用于基于源码的软件Api测试场景,对于黑盒测试、httpRest接口测试并不适用,通用性较差。方案二,通过在测试用例脚本中加入测试报告逻辑,使得测试用例执行时,将需要报告的内容记录下来,并在所有测试执行完成之后,通过已记录的信息,生成最终的测试报告文件。方案二具有以下不足:a.每个测试用例都需要修改逻辑,此方案前期成本很大。b.测试逻辑和测试报告逻辑耦合紧密,测试用例维护成本高。c.如果需要增加测试报告指标,则会牵一发动全身,不易扩展。
技术实现思路
为了解决上述问题,本专利技术的目的在于提供一种基于Java的接口测试报告生成方法及系统。能够基于Junit4框架进行接口测试,利用Java自定义注解技术,将测试报告信息从测试用例中分离到注解中,使测试报告逻辑与测试脚本逻辑分离,实现了自定义测试报告功能,具有灵活、高效、成本低的优势。对被测试的每个接口新建一个测试类,每种正常、异常的测试用例是这个测试类的一个方法,对于被测试接口的测试类,定义类注解,对于测试用例,定义方法注解,每个注解可以包含多个注解参数,自定义注解在定义的时候确定参数个数和类型,在使用时对每个参数设值,根据测试报告中所需要体现的指标定义参数,使本专利技术具备优良的扩展性。为了实现上述的目的,本申请的实施例是这样实现的:本申请实施例提供的一种基于Java的接口测试报告生成方法,所述方法包括:S1,针对接口定义类注解@TestInterface,针对单个测试用例定义方法注解@TestMethod,@TestInterface和@TestMethod包括反映测试报告信息的若干参数;S2,将@TestInterface和@TestMethod添加到测试用例,在执行测试用例之前获取当前执行的测试用例@TestMethod以及其所处测试类的@TestInterface,解析@TestInterface和@TestMethod获取其反映测试报告信息的参数存入缓存;S3,执行测试用例,将测试结果存入缓存;S4,根据缓存中的信息生成测试报告。作为优选技术方案,所述S2包括:将@TestInterface和@TestMethod添加到测试用例;利用Junit4的@Rule注解功能,定义MyRule实现MethodRule接口;定义MyRule的apply()方法,apply()方法包含参数Description,Description包含当前测试用例和测试类的信息,apply()方法执行从Description中获取当前执行的测试用例@TestMethod注解以及其所处测试类的@TestInterface。在测试用例类中声明MyRule,这样在每个测试用例执行之前,Junit4会自动执行MyRule的apply方法。作为优选技术方案,所述S3包括,增加一个Java基类BaseTest,BaseTest封装断言方法,在断言方法中将测试结果存入缓存;利用Junit4的@Rule注解功能,定义MyRule实现MethodRule接口;定义MyRule的apply()方法,在apply()方法中让测试类继承BaseTest;在测试用例类中声明MyRule,这样在每个测试用例执行之前,Junit4会自动执行MyRule的apply方法。作为优选技术方案,所述S4包括:将缓存中的所有测试信息写入测试报告文件生成详细的测试报告;提取缓存中记录的部分信息,根据相应的计算公式计算得到测试覆盖率、测试通过率生成简要的测试报告;将测试报告文件遵循预设的文件格式规范进行存储。作为优选技术方案,利用Jenkins持续集成工具执行所述方法。作为优选技术方案,使用html格式保存测试报告,并通过Jenkins自动发送测试报告邮件。本申请实施例提供的一种基于Java的接口测试报告生成系统,所述系统包括:注解添加模块,用于针对接口定义类注解@TestInterface,针对单个测试用例定义方法注解@TestMethod,@TestInterface和@TestMethod包括反映测试报告信息的若干参数;注解运用模块,用于将@TestInterface和@TestMethod添加到测试用例,在执行测试用例之前获取当前执行的测试用例@TestMethod以及其所处测试类的@TestInterface,解析@TestInterface和@TestMethod获取其反映测试报告信息的参数存入缓本文档来自技高网
...

【技术保护点】
1.一种基于Java的接口测试报告生成方法,其特征在于,包括:S1,针对接口定义类注解@TestInterface,针对单个测试用例定义方法注解@TestMethod,@TestInterface和@TestMethod包括反映测试报告信息的若干参数;S2,将@TestInterface和@TestMethod添加到测试用例,在执行测试用例之前获取当前执行的测试用例@TestMethod以及其所处测试类的@TestInterface,解析@TestInterface和@TestMethod获取其反映测试报告信息的参数存入缓存;S3,执行测试用例,将测试结果存入缓存;S4,根据缓存中的信息生成测试报告。

【技术特征摘要】
1.一种基于Java的接口测试报告生成方法,其特征在于,包括:S1,针对接口定义类注解@TestInterface,针对单个测试用例定义方法注解@TestMethod,@TestInterface和@TestMethod包括反映测试报告信息的若干参数;S2,将@TestInterface和@TestMethod添加到测试用例,在执行测试用例之前获取当前执行的测试用例@TestMethod以及其所处测试类的@TestInterface,解析@TestInterface和@TestMethod获取其反映测试报告信息的参数存入缓存;S3,执行测试用例,将测试结果存入缓存;S4,根据缓存中的信息生成测试报告。2.根据权利要求1所述的一种基于Java的接口测试报告生成方法,其特征在于,所述S2包括:将@TestInterface和@TestMethod添加到测试用例;利用Junit4的@Rule注解功能,定义MyRule实现MethodRule接口;定义MyRule的apply()方法,apply()方法包含参数Description,Description包含当前测试用例和测试类的信息,apply()方法执行从Description中获取当前执行的测试用例@TestMethod注解以及其所处测试类的@TestInterface。在测试用例类中声明MyRule,这样在每个测试用例执行之前,Junit4会自动执行MyRule的apply()方法。3.根据权利要求1所述的一种基于Java的接口测试报告生成方法,其特征在于,所述S3包括,增加一个Java基类BaseTest,BaseTest封装断言方法,在断言方法中将测试结果存入缓存;利用Junit4的@Rule注解...

【专利技术属性】
技术研发人员:夏文娟
申请(专利权)人:挖财网络技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1