为什么需要做接口测试? 怎么用Jmeter接口测试工具? 你都会了吗? 这里给大家全面介绍!

  • Post author:
  • Post category:其他



Jmeter是Apache公司开发的基于Java语言的压力测试工具,可以做接口测试,也可以做性

能测试。

jdk:建议1.8以上

jmeter:不要用最新版。用最新版的下1-2个版本



一、什么是接口以及为什么需要做接口测试




(1) 什么是接口?


硬件接口:USB接口,投影仪接口,鼠标键盘接口。 作用?

软件接口:统称为:API,提现,充值。(鉴权码:token,key,appkey,.csrf_token)

内部接口:开发人员开发软件接口给当前自身软件调用。模块和模块之间。子系统之

间。

用户接触不到,对完全性的要求不高。

外部接口:

1.系统对外提供的服务接口。(长沙银行项目:提供接口给微信。。。。)

对安全非常重视,所以测试的覆盖率达到极致。

2.系统调用外部的接口。(电商项目:使用支付宝支付,调用支付宝接口)

只需要测试正例即可。


(2)为什么做接口测试?


1.前后端分离

(1)当后端的接口开发完成,即可以直接测试,

(2)前端开发好了,但是后端接口还没完成,需要使用Mock Server

2.基于安全考虑,UI的JS的验证很容易绕过,所以需要在接口层面对安全性做考虑。

3.测试左移(前移)的思想。



二、目前市场上的接口架构设计风格以及它们所基于的协议



(1) 基于SOAP的接口架构:08的时候很流行,它是一种轻量级的,简单的,基于XML协议

的规范。

webservice协议:地址的最后面以?wsdl(web service discription language)结尾的

(2)基于RPC的接口架构:远程调用,它像调用本地服务一样去调用远程服务器的接口服

务。

1.dubbo协议,阿里RPC架构,特点:dubbo:// 适用于高并发,数量少的情况下。

2.基于SpringCloud的微服务

3.thrift,RMI,Hessiasn

(3)基于RestFul的接口架构:它将网络上的事物看成是资源,xml,json,jpg,所有的操作

无状态


特点:同样的接口地址:


http://127.0.0.1:8080/user


,不同的请求方式结果不一样,get查

询用例,psot新增用户,put修改用户,delete删除用户


http协议:



超文本传输协议,主要分为请求和响应两部分,

请求:

请求行(GET /phpwind/ HTTP/1.1),

请求头(很重要,因为很多的接口必须带特定的请求头。常用请求头)

Accept


:客户端接收的数据格式。

X-Requested-With


:登录接口,异步请求(ajax的技术)

User-Agent:


发送请求的客户端的类型(百度的查询接口必须带这个请求头)

Content-Type:


请求的内容格式,发送post请求默认加application/json

Cookie


;发送Cookie信息,


Http Cookie管理器。(作用,工作原理)

Cookie的工作原理:Http Cookie管理器的工作原理

第一步:在客户端第一次访问服务器的时候,那么服务器会生成Cookie信

息,并且在响应头的Set-Cookie里面把Cookie的信息传输到客户端。

第二步:从第2-N的请求都会在请求头的Cookie里面自动的带上上面的

Cookie信息。

作用就是:Cookie鉴权。证明后面的请求都是同一个客户端。


session和token可以通过cookie传输,也可以不通过它传输。

其他请求头:Host,Connnection,Content-length,Accpt-Language


请求正文数据。

请求的数据。

响应:

响应行

响应头

响应正文数据。



三、目前市面上接口返回的数据类型



1.xml webservice

2.html http

3.json http,dubbo

开发接口潜规则:{error_code:错误码,message:错误码的中文说明,data:[]}

JSON数据详解:是一种数据格式,1,2,3,abcd,只有两种数据:

键值对:{key:value,key:value}

列表:[value1,value2,value3]

{



“name”


:


“John Doe”


,


“age”


: 18,


“address”


: {



“country”


:


“china”


,


“zip­

code”


:


“10000”


}}

{



“a”


: 1,


“b”


: [1, 2, 3]}



四、目前市面上的接口测试工具的应用场景



jmeter+ant+jenkins+git/svn接口自动化

postman+newman+jenkins+git/svn接口自动化。

jmeter好还是Postman好,看公司,全要会。

没有git是因为你的项目比较小,不需要团队协作。

其他:soupui,apipost,postwoman,fiddler,charles

git,github,gitlib,gitee

git:分布式的版本控制工具

github:网站,国外,所有的文件都是公开的。私有的版本控制需要收费。

gitlab:网站,是本地公司搭建的网站,私有的。

gitee:网站,码云,既有公开的也有私有的

git,gitlab

git,码云gitee



五、熟练Jmeter每个文件夹的作用



backups:自动备份的文件夹,当你保存Jmeter的脚本的时候,会自动的在这个目录生成

一份JMX脚本。

bin目录:存放Jmeter的启动脚本,配置文件,模块文件等。

ApacheJMeter.jar是jmeter最核心的jar包,可以通过java -jar ApacheJMeter.jar

jmeter.bat文件,jmeter的启动文件。

jmeter.properties jmeter最核心的配置文件。

XXX.sh的文件,都是Linux操作系统的文件。

docs目录:存放Jmter的api离线文档,用于二次开发。

extras目录:存放和第三方进行集成构建的文件,比如Ant,jenkins集成。

lib目录“:存放jar包,组件类,函数类等。

licences:存放许可文件

printable_docs:用户手册



六、Jmeter常用的组件(元件)




(1)必须组件


1.测试计划:他是Jmeter接口测试的起点,是其他组件的容器,注意可以加外部jar包(加 Lib下)。

2.线程组:代表的一组虚拟用户。

3.Sampler取样器:发送请求最小单元


(2)辅助组件





4.逻辑控制器:自定义发送请求的逻辑。

5.前置处理器:在发送请求之前的操作6.后置处理器:在发送请求之后的操作

7.断言:用来判断请求是否成功的组件

8.定时器:负责定义请求之间的延迟时间。固定,随机,高斯。

9.配置元件:基本的配置信息

10.监听器:负责收集结果

组件执行顺序:

配置元件–前置处理器–定时器–取样器–后置处理器–断言–监听器


组件的作用域:

辅助组件对父组件,同级组件,子组件起作用。

需求:希望java3请求发送之后,停留三秒再发送java4请求

注意:前置,后置,断言只能对取样器起作用,如果没有取样器,那么这三个组件不执行



七、接口测试流程和方案



接口功能测试。

1.拿到api接口文档(找开发拿,抓包,录制(badboy,代理服务器)),熟练接口业务,接口地址,鉴权方式,入参, 出参,错误码。

2.编写接口测试计划和方案(怎么测)。

3.接口测试用例以及评审(组内评审,三方会审)

思路:

正例:输入正常入参,接口正常返回。

反例:

鉴权反例:空,错误,已过期。。。

参数反例:空,类型异常,长度异常,错误码异常。

其他场景:黑名单,接口调用次数,分页(第0页,第1页,中间页,最后一页)

业务异常:……

4.使用接口工具执行测试。

5.输出报告。



八、使用Jmeter执行接口测试



1.测试计划

2.线程组

线程数:虚拟用户数10

Ramp-UP时间:多久时间加载上面的虚拟用户数。1秒代表5秒加载5个用户。

循环次数:每一个虚拟用户发送多少个请求,2 总共发送10*2=20个请求



3.Http Cookie管理器(非必要)

4.Http请求默认值

5.取样器

HTTP请求

自动化重定向和跟随重定向:当发送请求如果返回300,那么Jmeter会自动化重定向到新的页面。

Keep-Alive:保持和服务器的活跃状态。

参数:用户传键值对


(它不能和消息体数据一起使用)

消息体数据:用于传JSON格式。


(它不能和参数一起使用)

文件上传:用于传文件。

6.监听器

查看结果树:以不同的格式查看结果,同时也可以查找结果中的内容:

{“access_token”:”45_YOh9-rtnEgiTZH4-

IHcXXV1kptChjmPlyFc9XO5TzObXVjXLvPh6Ore7kwlhbCiMwDoMCtEmHIHjjDX4ptwIwavIVPv0qWPwOQyzUDRlKlPC4Ia6Atz661TSAbJeAkKaKSfgZmLn0nXUis_2VKKbAHAKZZ”,”expires_in”:7200}

(1)RegExp Tester:正则表达式查找测试

左边界:”access_token”:”(.*?)”右边界

(2)CSS查找测试(CSS定位:自动化八大元素定位)

li[class=’current’]

(3)Xpath查找测试(自动化八大元素定位)

//title

(4)JSONPath查询测试

$.access_token



九、接口关联



1.JSON提取器

2.正则表达式提取器(Cookie提起器:选择信息头,表示从响应头里面取值。)



十、断言



Apply to“:主请求和子请求,仅主请求,仅子请求。

测试字段:

响应文本:返回的数据

响应代码:200,300 404

响应信息:OK

响应头

请求头

URL

文档(文本):匹配响应数据的文本信息。

忽略状态:一个请求断言失败,直接忽略。

请求数据:

匹配规则:

字符串:响应内容中包括匹配的字符串就会成功,不支持正则表达式,区分大小写

包括:响应内容中包括匹配的字符串就会成功,支持正则表达式,区分大小写

匹配:响应内容完全等于输入的字符串,,支持正则表达式,区分大小写

相等:响应内容完全等于输入的字符串,,不支持正则表达式,区分大小写

否:取反。

或者

csv,txt参数化。



十一、Jmeter接口测试的调试方案



1.检查【查看结果树】

检查:请求头,请求信息,响应头,响应信息

2.使用【调试取样器】

3.Jmeter结合Fiddler进行调试



十二、没有接口文档如何开展接口测试



1.抓包

2.录制(jmeter自带的代理服务器)



十三、ant+jenkins+jmeter持续集成



掌握jmeter命令行的运行方式:

jmeter命令来执行。、


参数列表:

-n 表示让jmx脚本通过非GUI(图形)的方式运行,不能单独用,必须和-t(指定jmx脚 本)结合使用

例如:jmeter -n -t mashang.jmx

-l:表示指定存储测试结果的文件。一般情况下通过jtl文件来保存报告。

jtl文件格式的报告,可以通过任意的监听器查看结果



注意:默认的情况下是没有请求和响应信息的

jmeter.save.saveservice.output_format=xml

默认不支持CSV,改成XML

jmeter.save.saveservice.response_data=true

响应数据

jmeter.save.saveservice.samplerData=true

请求数据


在生产jtl的时候,直接生成HTML报告

jmeter -n -t mashang.jmx -l result.jtl -e -o html

注意:-e -o

jmeter.save.saveservice.output_format=csv


使用ANT实现

1.官网上下载并且安装ant,并且配置环境变量。

E:\apache-ant-1.10.10\bin

2.自定义一个bulid.xml。构建比较麻烦。

精通接口测试还需要掌握哪些技能?

1.Jmeter所有工作的场景基本都要实现。

2.接口加解密。

3.金融:接口签名

4.ant+jenkins持续。

既然有接口工具postman和jmeter,为什么现在企业里面需要用python来实现接口自动化?

postman+newman+jenkins+git/svn

jmeter+antr+jenkins+git/svn

1.Jmeter团队协作能实现吗?大型项目无法实现团队协作。异常工作。

2.功能限定死的,没有办法扩展。

加密接口,md5加密,其他的加密方式,自定义的加密方式。接口签名(


js





java


)。

3、多种协议的接口。

4.日志监控。问题定位。

5.复制接口,多接口串联

6.allue报告。

7.接口


+web


一体化



版权声明:本文为Faith_Lzt原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。