学习笔记一 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是随机一个。

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

  

  

原文地址:https://www.cnblogs.com/eichar/p/9923979.html