下面介绍一种可根据实际业务权重或人工设置权重进行持续集成接口自动化测试方法。本方法主要分为三个模块,一是持续集成部分,二是智能适配并运行用例,三是生成报告发送邮件。第一和三模块主要依赖于jenkins插件功能来实现,架构图如下
ESB自动化测试系统架构
jenkins持续集成配置并计算接口权重值
1) 根据实际需要建立不同任务JOB,比如全部回归JOB,针对支付类接口JOB,针对微信功能接口的JOB,通常一个JOB就是运行一个测试用例集。
测试用例集:通常我们将测同一平台接口或同一功能的接口用例,当作一个用例测试集,比如提供某APP的接口,就是某APP测试用例集,一个用例集可以包含多个接口用例,一个接口用例也可归类于多个用例集。
2) 配置SVN源码管理
3) 构建触发器
4) 可配置定时触发或选择不配置(手动启动)
5) 配置测试范围(配置读取文件)
本步骤为配置核心,主要在配置文件上设置job执行的内容,配置文件内容包含测试集名称(或全部测试集)、业务系数、接口权重值等内容,其中业务系数、接口权重值以全局参数形式存储,可以人工设置固定值,也可以选择从系统 数据库 里读到接口的访问次数根据公式建模计算出权重比。测试接口权重值即衡量接口风险大小,该值可以人工主观判断后配置,也可以通过自运获取数据库的接口访问频率,通过公式自动生成。常见于以下2种公式。
1)全部回归测试配置文件、新增功能\缺陷测试场景使用以下配置:
所有测试集名称(配置测试集名称即可执行测试集底下的测试用例)、用例权重值(一个用例权重为1);
测试集权重=sum(接口权重值*用例数)
2)基于风险选择的回归测试配置文件、基于代码相依性分析的回归测试:
测试集名称、测试集权重值(自动计算)。
测试接口权重值=SUM(本测试集下各接口调用次数)/所有配置接口的调用次数*本用例集接口数*业务系数(默认业务系统值为1)。
测试集权重值=sum(测试接口权重值)
如产品业绩发布接口日常访问量较低,但若年底或月初时,该接口访问量会急增,若该接品有修改或与该接口相关的其它接口有修改,为用例覆盖率高,出现BUG风险低,可人工调整业务系数值以提高该接口的权重值。若有些相关接口暂时关闭,不需要回归测试,也可人工设置将业务系统值设置为0,则jenkins在构建自动化接口回归时,因为权重值为0,系统可自动跳过该接口用例。
使用第2种方法时,jenkins在执行时需要调用python的另一程序,即读取 oracle 信息并写入到一个python文件中如excel.py,将上图的配置文件改成excel.py即可。
6) 配置运行文件(要调用的python编写的自动化接口程序)
7) 配置构建后操作,比如邮件内容配置等
邮件内容配置:
智能适配并运行用例
我们的自动化程序使用python编写,程序框架如下图:
步骤1:运行测试集的程序入口;
在步骤1中,打开程序入口代码,代码会去读取【测试集配置文件】,并计算出用例集的权重比,来决定运行哪些测试集(也就是ESB服务,每个服务下有很多的接口)。
步骤2:智能运行对应测试集下的接口,接口程序示例如下图:
在步骤2中:根据步骤1生成的接口集权重值,运行测试集下的所有接口,每一个接口对应一个接口类,其中接口分成两种类型:wsdl和rest:如果运行的是wsdl对应接口类,系统可智能读取【单个配置文件】拿到wsdl的准确地址并初始化;如果运行的是rest对应接口类,系统可智能读取【单个配置文件】拿到该接口对应的url。
步骤3:拿到初始化的wsdl实例和url地址后,读取测试用例发送请求。
在步骤3中:根据上一步骤拿到wsdl实例和url地址,智能读取对应接口用例文件生成测试用例,注意用例和接口一样同样存在两种类型:wsdl接口用例和rest接口用例,如果运行的是wsdl接口的用例,系统会自动识别并把用例中的 json 入参转化为 xml 的入参(也就是说用例文件中入参必须写json),并使用wsdl实例发送请求得到运行结果,并将运行结果和用例中的预期结果(这里的运行结果是xml类型,因为wsdl本身就是以xml格式进行请求交互的)进行比较,如果实际结果包含预期结果,此用例就运行通过,反之运行失败;如果运行的是rest接口的用例,系统智能获取用例中的json入参(rest接口的入参也是json类型)和配置文件中url并自动发送请求得到运行结果(这里的运行结果也是json类型,因为rest请求本身就是以json格式进行请求交互的),如果运行结果与实际结果一致,此用例就运行通过,反之运行失败。
步骤4:把运行结果写入excel和 html 测试报告中;
在步骤4中:每当运行完成一个接口后,就把该接口的测试结果保存至列表中,当所有结果运行结束后,就把列表内容写入excel文件以及测试报告html中;
步骤5:运行结束后,程序会将本次运行的结果,以(接口名,用例数,通过用例数,失败用例数,)显示在控制台,并生成excel和WEB测试报告保存至本地方便后期调用和监控。结果参考如下:
生成报告发送邮件
每次jenkins的JOB构建完成后,系统记录用例集运行情况,包含用例数、通过数、失败数、接口权重值等信息,jenkins可将测试结果自动汇成邮件,发至项目成员邮箱。