一种基于JMeter和Jenkins的接口自动化测试方法及其装置与流程

文档序号:16880281发布日期:2019-02-15 22:04阅读:367来源:国知局
一种基于JMeter和Jenkins的接口自动化测试方法及其装置与流程

本发明涉及软件自动化测试技术领域,尤其涉及一种基于jmeter和jenkins的接口自动化测试方法及其装置。



背景技术:

接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点,重点检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

jmeter是apache组织开发的基于java的压力测试工具,可以对http和ftp进行性能测试和接口测试.

jenkins是一个开源软件项目,是基于java开发的一种持续工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

在现有技术中,jmeter测试结果不符合testanythingprotocol,无法自主生成测试结果统计趋势图,必须解析jmeter测试结果文件,使其符合tap,能够自主设置测试报告。



技术实现要素:

本发明目的是为解决现有技术中的上述缺陷,提供一种能动态生成签名的http请求接口测试方法,该接口测试方法是针对jmeter的接口测试,通过修改配置文件的数据,能够直接覆盖业务场景,不需要测试人员编写代码。通过jenkins的持续集成自动执行测试用例,达到自动化测试和监控线上业务正常运行的目的。

本发明提供了一种基于jmeter和jenkins的接口自动化测试方法,包括以下步骤:

根据实际业务场景划分业务模块,根据用例模块准备各个所述业务模块对应的用例;

运行jmeter读取各个所述业务模块的配置文件,获取对应用例的代码和数据;将用例代码和用例数据组装成不含签名的测试用例,然后通过jmeter自带http请求发送到服务端模块;

每次通过jmeter自带http请求发送测试用例时,签名算法拦截所述http请求,对测试用例请求的参数进行签名计算,然后重组测试用例,重新发送带有签名测试用例到服务端模块;

所述服务端模块根据所述业务场景返回接口测试结果给jmeter结果输出模块;

jmeter结果输出模块判断结果是否正确,生成对应测试结果集;

测试报告模块解析jmeter测试结果集,生成tap格式测试报告灵活展示;

将通过jmeter编写所有测试用例集合,配置在jenkins中以预设间隔时间循环执行,实时展示测试结果报告。

在本发明的其他实施例中,根据测试用例数量配置jmeter运行测试用例的接口测试的次数。

在本发明的其他实施例中,所述预设间隔时间的单位包括秒、分钟、小时、天,所述预设间隔时间被配置为根据实际需要调整。

在本发明的其他实施例中,所述签名算法用于根据实际业务需要对用户数据进行保护。

本发明还提供了一种基于jmeter和jenkins的接口自动化测试装置,包括:

用例模块,用于将用例代码和用例数据组装成不含签名的测试用例;

jmeter运行单元,用于读取所述测试用例,并通过jmeter自带的http请求发送到服务端模块;

自动签名模块,用于拦截所述http请求,对测试用例请求的参数进行签名计算,然后重组测试用例,重新发送带有签名测试用例到服务端模块;

服务端模块,用于根据所述业务场景返回接口测试结果给结果输出模块;

结果输出模块,用于生成对应测试报告;

结果判定模块,用于判断所述接口测试结果是否正确;

自动执行模块,用于将通过jmeter编写所有测试用例集合,配置再jenkins中以预设间隔时间循环执行;

测试报告模块,用于解析jmeter测试结果集,生成符合testanythingprotocol格式的测试报告,在jenkins中实时展示。

在本发明的其他实施例中,根据测试用例数量配置jmeter运行测试用例的接口测试的次数

在本发明的其他实施例中,所述预设间隔时间的单位包括秒、分钟、小时、天,所述预设间隔时间被配置为根据实际需要调整。

在本发明的其他实施例中,所述签名算法用于根据实际业务需要对用户数据进行保护。

本发明还提供了一种测试模块解析算法,将测试结果集进行处理符合tap格式,用于测试结果报告灵活实时展示。

本发明还提供了一种电子设备,包括存储器和处理器存储器用于存储一条或多条计算机指令,其中,一条或多条计算机指令被所述处理器执行以实现如上述任一所述的基于jmeter和jenkins的接口自动化测试方法。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使计算机执行时可以实现如上述任一所述的基于jmeter和jenkins的接口自动化测试方法。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明实施提供的一种测试系统的系统框架图;

图2是本发明实施提供的一种测试系统方法工作流程图;

图3是本发明实施提供的一种测试结果集示意图;

图4是本发明实施提供的一种测试报告示意图;

图5是本发明实施提供的构建自动化测试脚本的界面图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一

如图1所示,本发明所述的一种基于jmeter和jenkins的接口自动化测试系统包括用例模块,jmeter运行单元,自动签名模块,服务端模块,结果输出模块,结果判定模块和自动执行模块,其中,用例模块用于将测试数据(用例数据)和用例代码一起装配成不含签名的测试用例,输出给jmeter运行单元;jmeter运行单元用于读取所述测试用例,并通过jmeter自带的http请求发送到服务端模块;根据测试用例数量配置jmeter运行测试用例的接口测试的次数。自动签名模块用于拦截所述http请求,对测试用例请求的参数进行签名计算,然后重组测试用例,重新发送带有签名测试用例到服务端模块;签名算法用于根据实际业务需要对用户数据进行保护。服务端模块用于根据所述业务场景返回接口测试结果给结果输出模块;结果输出模块用于生成对应测试结果集(测试结果集,如图3所示,包括单个测试用例执行次数,测试数据,接口业务输出结果,判定结果);结果判定模块用于判断所述接口测试结果是否正确;自动执行模块用于将通过jmeter编写所有测试用例集合,配置再jenkins中以预设间隔时间循环执行。测试报告模块用于解析测试结果集生成测试报告(测试报告,如图4所示,包括单个测试用例执行结果,单次全部测试用例执行结果统计,历史测试结果趋势统计)。预设间隔时间的单位包括秒、分钟、小时、天,所述预设间隔时间被配置为根据实际需要调整。

本实施例所述的签名算法具体为:第一,获取客户端指定key值;第二,获取当前时间unix时间戳;第三,获取服务指定加密字符,第四,把请求参数统一排序,第五,通过md5加密把前面4个条件获取数据生成一串加密字符,就是签名请求参数,业务处理会先检验签名是否正确在进行业务相关的处理。

本实施例的用例是good,用例代码框架如下:

本实施例的用例数据如下:

getgoodscomment

commenttype,goodsid,result,reuslt2,desc

0,3512024,"""messagecode"":""0""","""goodsid"":3512024",详情页查看评论

1,3512024,"""messagecode"":""0""","""goodsid"":3512024",列表页查看评论

0,1421328,"""messagecode"":""0""","""goodsid"":1421328",详情页查看评论

实施例二

如图2所示,本发明所述的一种基于jmeter和jenkins的接口自动化测试方法,该接口自动化测试方法包括以下步骤:

步骤一、根据本公司实际业务场景进行业务模块划分,根据用例模块准备各个业务模块对应的用例;

步骤二、jmeter运行后读取都各个业务模块配置文件,获取对应用例的代码、读取用例相关数据,将用例代码和用例数据组装成不含签名的测试用例,然后通过jmeter自带http请求发送,根据测试用例数量可以让jmeter运行n次测试用例的接口测试,n大于等于1;

步骤三、每次通过jmeter自带http请求发送测试用例,签名相关算法代码拦截自带http请求,对测试用例请求参数进行签名计算,然后重组测试用例,重新发送带有签名测试用例到服务端模块;

步骤四、服务端模块根据业务场景返回接口测试结果给jmeter结果输出模块;

步骤五、jmeter结果输出模块判断结果是否正确,生成对应测试结果集;

步骤六、将通过jmeter编写所有测试用例集合,放在jenkins间隔相同时间不断的执行,间隔时间可以是秒、分钟、小时、天,根据实际需要调整;

在jenkins上建立一项目,并在工程设置中填写项目信息和jmeter插件需要加载的测试结果路径;编写自动化测试脚本(如图5所示),调用jmeter测试工具对项目进行测试,并生成测试结果。

用jenkins提供的api通知jenkins编译工程,jenkins会自动触发jmeter插件去指定的路径加载测试结果,并显示生成的测试报告。

本实施例所述的构建自动化测试脚本如下:

executeshell

command

#!/bin/sh/-l

cd/opt/apache-jmeter-4.0/app2test

gitpullorigindevelop

invokeant

antversionant

targets

buildfiles/opt/apache-jmeter-4.0/bin/build.xml

properties

testpath=app2test

projectpath=app2

mailaddress=never@jollycorp.com

weixinids=1913l614lmengluochuanllchengongll1179llzishaoll1019ll1371llliuqill790lljingdanll703l1560

javaoptions

实施例三

本发明实施例三提供了一种电子设备,包括存储器和处理器存储器用于存储一条或多条计算机指令,其中,一条或多条计算机指令被所述处理器执行以实现实施例二所述的基于jmeter和jenkins的接口自动化测试方法。

实施例四

本发明实施例四还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使计算机执行时可以实现实施例二所述的基于jmeter和jenkins的接口自动化测试方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机设备中的执行过程。

计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,本实施例仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入输出设备、网络接入设备、总线等。

处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器可以是计算机设备的内部存储单元,例如计算机设备的硬盘或内存。存储器也可以是计算机设备的外部存储设备,例如计算机设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器还可以既包括计算机设备的内部存储单元也包括外部存储设备。存储器用于存储计算机程序以及计算机设备所需的其他程序和数据。存储器还可以用于暂时地存储已经输出或者将要输出的数据。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1