关于接口测试,笔者认为其难点分别在如下几方面:接口参数的获取和输入、测试数据的准备、场景的串联、测试结果的断言。 接下来笔者将通过介绍 BlazeMeter+Jmeter 这两种工具来解决以上问题。 BlazeMeter 使用方法 未使用 BlazeMeter 之前,笔者获取接口的方法是在浏览器中通过 F12 获取到地址和参数,然后将此接口的数据放置 Jmeter 中进行请求的录制。这样的方式耗费了大量的时间。 有了BlazeMeter 之后,我们可以在浏览器中模拟用户的操作,BlazeMeter 会将所有的接口记录下来。 笔者也曾经试过使用 BadBoy 录制工具,此工具默认支持的是 IE浏览器,但是大多数系统,尤其是内部系统,对 IE 的支持都不够友好。所以笔者选择了支持 Chrome的 BlazeMeter 工具。 安装方式: 1)输入地址
2)操作如下 搜索栏输入 blazemeter 点击 ADD TO CHROME,显示红色的“B”表示安装成功 BlazeMeter 的使用方式很简单:登陆、点击 start、停止录制、导出.jmx,录制完以后将 jmx 文件导入 Jmeter 中。 以下是笔者曾经在某项目中进行了的实验及实验结果: Jmeter 1)测试数据的准备 解决方案:前置条件中添加初始化 sql 语句 比如此 case。在进行 Level 2审批之前,A 需要 Level 1审批通过,然后 A 的状态会变更为待 Level 2审批,等待 Levle 2审批通过以后其状态会变更为待 Level 3审批。所以笔者在此的解决方案为:在数据库中直接把此渠道的状态更新为待 Level 2审批,直接测试待 Level 2审批的接口。 使用方式: 下载 mysql-connector-java-5.1.39-bin.jar 包 右键测试计划 Add->Config Element->JDBC Connection Configuration,在database url 中输入数据库的 ip 和端口 Username 和 password ,输入数据库用户名和密码 2)场景的串联 在 A 接口输出是 B 接口输入的情况下,我们需要将 A 接口和 B 接口联合进行测试。 在这个 case 中,需要创建A,但是在创建 A 之前需要创建 B。 解决方案:先创建 B。由于 B 的参数是不能重复的,所以笔者通过 Jmeter 自带的函数 UUID 取得一个随机数。 接口的返回参数如下,我们需要取得接口,"result":{"categoryCode":"ABC”} 我们需要取得此接口的 result 中 categoryCode 作为创建 B 的入参 解决方案:右键 http 请求 Add->Post Processors->JSON PathPostProcessor 最后将 variablenames 中当做参数,直播,直播,通过这种方式实现接口的串联。 3)测试结果的断言 Jmeter 提供了多种方式的断言,以下为笔者使用过的: Beanshell 断言: 这种方式主要是用于更新数据库时,判断数据库的状态是否被更新。 例如此case。A 立项拒绝,通过调用接口以后需要去判断数据的数据是否真的更新为9(被拒绝)。笔者采用的方式是获取数据的状态并赋值给 result variablename。 判断获取状态的值是否是9,如果不是9则此 case 测试失败。 ResponseAssertion 断言: ResponseAssertion 断言主要用于数据查询,例如:查询的回来数据字段包括了 SUCCESS 则测试通过。 在项目中的运用 编写完接口以后,笔者用 ANT 打包生成 HTML 文件,把它放到 JEKINS 中。 (责任编辑:本港台直播) |