JMeter用例自动化测试
什么是JMeter接口自动化测试?
JMeter是一款功能强大的测试工具,它主要用于对软件的性能进行测试。而JMeter接口自动化测试是利用JMeter工具对软件接口进行自动化测试。
JMeter接口自动化测试的重要性
JMeter接口自动化测试在软件开发过程中扮演着至关重要的角色。以下是一些JMeter接口自动化测试的重要性:
- 减少人为错误:自动化测试可以减少人为因素所带来的错误,确保软件的接口在各种情况下都能正常运行。
- 提高测试效率:相比手动测试,自动化测试可以大大提高测试的效率,节省时间和人力成本。
- 快速发现问题:自动化测试可以快速执行大量的测试用例,帮助开发人员更快地发现和解决问题。
- 持续集成:自动化测试可以与持续集成工具集成,实现持续测试和快速反馈。
- 提升软件质量:通过频繁执行自动化测试,可以持续监控软件接口的质量,确保其稳定性和可靠性。
如何进行JMeter接口自动化测试?
本文,主要介绍如何使用JMeter,对接口进行自动化的用例测试。
1、在写脚本之前,需要先使用Excel 编写好测试用例,这里最好不要使用txt,因为我们的用例中,可能会包含逗号分隔符或者其他的字符类型,影响脚本的运行。
请注意以下表格的格式,当然,可以根据自己的实际需要增减字段。保存表格时,选择CSV逗号分隔符即可;
2、打开JMeter,在线程组中添加CSV配置文件。并完成相应的设置;
需要注意的是:为规范流程。Variable Name 需要等于步骤1,表格中的表头,位置也不要去做改变,以英文逗号为作为间隔符。Variable Name后续是需要使用的;
3、在线程组下面添加Loop Controller,(loop循环控制器);
4、在loop循环控制器下面,放前面写好的CSV配置文件,并添加一个If Controller(如果控制器);如下图,完成If Controller的设置;
注:"${Priority}"!="B";写这一行代码的用意为:区分优先级,根据CSV用例中的Priority字段,执行用例。我们这儿写的"${Priority}"!="B",就是说,本次只执行不是B级的,如果要执行A级,可以写成"${Priority}"=="A",后续诸如此类;
5、然后再次在If Controller,下方添加两个If Controller,一个给GET请求使用,一个给POSt请求使用,分成两个的原因是,POST和GET,他们参数的位置,组合形式不相同,甚至信息头都不是一样的,所以需要分开去执行。
"${Method}"=="GET" 的意思是如果CSV中这条用例Method是GET,这使用这个If Controller去执行;反正 "${Method}"=="POST"是执行POST请求的;
6、按照下图,分别在步骤5的两个如果控制器下面,添加两个HTTP Request;
注:POST和GET,参数的拼接形式是不同的。请根据自己接口事情情况放置参数的变量
7、信息头和断言
信息头不用赘述,按实际接口拼写就行,断言需要认证写,毕竟我们用例自动化,批量执行的,结果必须清楚明确;
8、查看结果树的使用:建议如下图,添加两个查看结果树,一个只看正确结果,一个只看错误结果;这两可以快速知道,哪些用例失败,哪些用例成功了;
9、如过需要将接口的失败成功信息,存到表格中,可以在查看结果树中,配置表格。
到这儿,我们的接口用例自动化技术,就已经讲完了,欢迎各位同学查漏补缺。
PS:分享一个异常情况:CSV读取中文乱码
如果咱们的CSV文件中,有汉字,有时候JMeter在读取SCV的时候就容易乱码,明明我们在请求头和CSV配置文件中,都写好了UTF-8,仍然乱码,也尝试过,使用notepad++更改CSV的编码方法,都是无效的。网友也有说把编码方式改为GB2312,(但是我的JMeter没有这个选项)
这里介绍一种方法,就是在CSV配置中,把编码方式选择Edit,就可以了。同学们可以尝试。
另外这里再提出一个概念:数据驱动测试(Data-driven testing)
数据驱动测试是一种软件测试的方式,数据驱动测试会配合一个有许多测试输入及对应的验证输出值的表格,而其测试环境设定及控制不会固定在程式码中。最简单的数据驱动测试会将表格的某一栏作为输入,同一列的另一栏则是预期的测试输出。表格内一般会对应输入值的边界或是输入值分组的边界。在有些测试中,会从数据库中读取测试组态。
是不是有点绕?其实本文上面的内容,就是一种简单的数据驱动测试,脚本和数据分开存放,通过脚本读取数据,执行测试。