zoukankan      html  css  js  c++  java
  • 学习笔记一 jmeter接口测试

    一.什么是接口测试:

     接口测试实际上就是功能测试,可以不考虑业务逻辑,对接口的传参进行自由组合进行正常和异常的测试。

      设计用例分以下几种情况:

      1.正常的数据

      2.异常的数据:数据类型和格式不按照文档说明设置

      3.根据业务逻辑来设计不同的测试用例。测试用例需包含:项目  模块   url  请求方式 请求参数  预期结果  实际结果 状态

    二.常用的两种请求方式:

       get和post是http请求头里两种常用的请求方式,http请求包括请求头(head)和请求体(body)两部分,body是我们发送过去的正常数据,head附带额外的信息,如cookie,浏览器信息,数据格式等等。

      get和post的区别:

      1.get请求没有请求体,只有请求头(参数包括在url里,url?xx=xxx&xx=s,参数是?后的键值对,以&号分隔),post含有请求体,通过表单形式提交。

      2.get请求没有post安全,因为get把参数都写到url里面,但是两者的传参都可以通过抓包形式获取。

      3.get请求有参数的大小限制,post请求。(早期的浏览器有这个限制,现在已经没有了)

      4.get请求一般用来获取数据,像服务端发送数据的时候用post。(行业默认的规定)

    三.使用postman进行接口测试:

      1.get请求:

        

      2.post请求:

       

      

            

            

    四.用jmeter进行接口测试:

      jmeter是java开发的开源的性能测试工具。需要安装jdk,修改java环境变量,windows操作系统直接执行jmeter中bin目录下的jmeter.bat文件(免安装)

      1.解决乱码问题的配置修改:

        jmeter返回中文乱码:

        1、在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把sampleresult.default.encoding=UTF-8加到最下面

        2、重新打开jmeter
        jmeter bodydata里面中文乱:

        1、在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把jsyntaxtextarea.font.family=Hack加到最下面

        2、重新打开jmeter

      2.jmeter接口测试常规步骤:

        testplan>>线程组>>取样器下的 http请求>>监听器下的 查看结果树

      例1 get方法:

       

      

      例2 post方法

        如果需要有cookie信息的,则需要在登录操作之后获取cookie值,例如用谷歌浏览器,获取到cookie信息,然后加入到jmeter的消息头管理里。

      例如:需要获取QQ群成员的信息,网址:https://qun.qq.com/member.html#gid=XXXX(qq群号)

           

      将cookie值添加到消息头管理器中: 

     

      填写数据,在谷歌上查到发送的数据如下:

      

      在jmeter的http请求里添加参数:

      

      

        例3 通过post方法上传文件:

      在输入完协议,服务器名称,方法,路径后,点击“文件上传”,点击“添加”,在参数名称那里输入接口文档中上传文件的参数名,然后点击“浏览”,在本地选择文件,mine类型如图所示。

      

      例4 参数为json格式:

      当接口文档中明确指出数据类型为json格式时,必须选择"消息体数据"

      

      

    五.jmeter三种参数化的方法:

      1.csv data set config:

        csv数据文件设置是在"配置元件"下,是一种通过导入外部文件的形式将数据参数化,方便进行大批量的参数化,或者多个参数取值顺序相同的,比如取值的顺序为同一行。

      

      文件编码:如果文件中的数据包含中文,则在下拉框中选择“编辑”然后手动输入GBK,一般都是utf-8格式

      变量名称:多个变量名称需要用逗号隔开,一个变量则不需要

      忽略首行:如果首行有变量名(比如从数据库复制过来带有字段名),则可以选此项,一般不会有

      是否允许带引号:文本数据取值后自动带上引号,一般不用

      线程共享模式:所有线程表示所有线程共用一份数据,依次取值,其他模式都是多份数据,有几个线程就有几分数据文件,每个线程可以取相同的值

      遇到文件结束符再次循环:文件结束符为EOF,该设置要在“遇到文件结束符停止线程”选择“false”的情况下才有效,此时如果遇到文件结束符再次循环选择“true”,则一份文件的数据可以循环用,如果选择“false”,则数据会取值“EOF”

      2.用户参数:

      取值灵活,对取值顺序没有要求,可以在任何地方取值,在“前置处理器”中选择。

      

      

      3.函数助手:

      

      

      在里面常用的有随机数和时间,以随机数为例:

      找到__Random函数,按照要求输入范围,在这里为1-99的随机值,然后点击“生成”,函数生成为${__Random(1,99,)}。

      

           常用的函数还有时间戳:从计算机诞生的那一天到现在过了多少秒,__time 取当前的时间戳,如果要取格式化好的时间,YYYY MM dd HH mm ss,格式可以自定义拼接。

      

      在jmeter里,变量的使用方式是在需要替换的地方用${变量名}。

    六.jmeter关联:

      关联是从服务器响应结果里提取值作为一个变量,需要关联的数据是服务器每次返回的一个动态变化的,但是要给后续业务进行提交校验的一个值。

      jmeter的关联有两种常用格式:josn提取和正则提取。 josn的提取只用在返回的数据为josn格式的情况下。正则没有格式限制。

     1.josn提取:   

      例如一个抽奖接口:如要传入的参数是在用户登录的时候,返回的用户id和sign值,这种情况下就需要关联:

      返回的数据是josn格式,所以可以用josn提取:线程组下添加后置处理器中的json提取器

      

      登录成功后,服务器返回结果如下:

    在此我们要获取sign和userid,要设置两个json提取,其中的apply to有几个选择,main sample and sub-samples是在有重新向跳转的时候选,一般选

    main sample only.

    2.正则提取:

      josn格式返回是键值对,但是里面的键值对是无序排列的,可以看出,最后一个键值对没有以逗号结尾,在用正则写的情况下会比较麻烦,如果写的不好,当每次键值对顺序不一样会导致提取不成功,所以josn格式最好用josn提取,在此用上面个例子写出正则提表达式(在此不接受正则表达式规则)。

    如下图中,“模板”是以$N$的形式,N是代表数字,一个正则表达式里可以提多个值,数字可以是1,2,3,表示从第几个正则表达式里提,模板之间也可以拼接,例如有3个正则提取,则正则表达式里有三个()的形式,例如分别要提取年月日,则模板可以写成$1$-$2$-$3$,则提取出来就是2018-11-08的形式。

    “匹配数字”用于一个正则提取有多个值得形式(正则表达式有贪婪和非贪婪模式,贪婪模式下可以获取多个结果),数字表示匹配到的第几个结果,0是随机一个。

      提取出来的结果传入抽奖接口:

      

      

  • 相关阅读:
    springboot开发之配置Servlet三大组件(Servlet、Filter、Listener)
    springboot开发之配置嵌入式Servlet容器两种方式
    springboot开发之利用idea自带的插件模拟客户端请求
    springboot开发之配置自定义的错误界面和错误信息
    springboot开发之删除员工
    springboot开发之修改员工
    springboot开发之添加员工
    springboot开发之thymeleaf页面公共元素的抽取
    oracle 创建表、删除表、添加字段、删除字段、表备注、字段备注、修改表属性
    C#拼装JSON数组简易方法
  • 原文地址:https://www.cnblogs.com/eichar/p/9923979.html
Copyright © 2011-2022 走看看