JMeter用例自动化测试



前言

      JMeter 这个工具既可以做接口的功能测试,也可以做自动化测试,还可以做性能测试,其主要用途就是用于性能测试。但是,有些公司和个人,就想用这些 jmeter 来做接口自动化测试。大家应用JMeter的方式方法,多种多样。我们这里主要介绍的是,用例自动化。即,提前把各用例参数、预期断言等用CSV先行写好,然后使用HTTP请求,批量调用,批量执行。

     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:如果想要最终导出的结果更精准,即只需要响应或者请求中部分关键数据,请参考:https://www.cnblogs.com/xiaodi888/p/18163709

 

到这儿,我们的接口用例自动化技术,就已经讲完了,欢迎各位同学查漏补缺。

 

10、分享一个异常情况:CSV读取中文乱码

      如果咱们的CSV文件中,有汉字,有时候JMeter在读取CSV的时候就容易乱码,明明我们在请求头和CSV配置文件中,都写好了UTF-8,仍然乱码,也尝试过,使用notepad++更改CSV的编码方法,都是无效的。网友也有说把编码方式改为GB2312,(但是我的JMeter没有这个选项)

这里介绍一种方法,就是在CSV配置中,把编码方式选择Edit,就可以了。同学们可以尝试。

 

 

 

 

11、另外这里再提出一个概念:数据驱动测试Data-driven testing

       数据驱动测试是一种软件测试的方式,数据驱动测试会配合一个有许多测试输入及对应的验证输出值的表格,而其测试环境设定及控制不会固定在程式码中。最简单的数据驱动测试会将表格的某一栏作为输入,同一列的另一栏则是预期的测试输出。表格内一般会对应输入值的边界或是输入值分组的边界。在有些测试中,会从数据库中读取测试组态。

       是不是有点绕?其实本文上面的内容,就是一种简单的数据驱动测试,脚本和数据分开存放,通过脚本读取数据,执行测试。

 

 

 


结语

亲爱的朋友:
      希望本文中描述的问题以及解决方案,可以帮助到您。当然,我们深知,问题和挑战总是层出不穷,新的情况也在不断涌现。如果读者朋友您有更好的方案,或者在实际应用中发现了文中的不足之处,请不吝分享您的宝贵建议。诚挚地邀请每一位读者加入我们的行列,共同完善这份教程。
    感谢您的阅读与支持!

Dear frends,

     We hope that the questions and solutions presented in this article can be of assistance to you. Of course, we are fully aware that problems and challenges are always emerging in an endless stream, and new situations are constantly arising. If you, our readers, have better solutions or have discovered any deficiencies in this article through practical application, please do not hesitate to share your valuable suggestions with us. We sincerely invite every reader to join us in continuously improving this tutorial.

Thank you for your reading and support!
See you,Parting is for better meeting!


 
posted @ 2024-04-25 16:20  xiaodi888  阅读(1604)  评论(0)    收藏  举报