1.什么是接口测试?
接口测试是测试系统组件间接口的一种测试,主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口。测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性。
2.如何做接口测试?
一个规范的接口测试流程包括以下基本步骤:
接口需求分析、测试计划编写、测试用例设计、测试脚本开发、测试执行、发布测试结果。
3.HTTP请求的组成部分:
1⃣️.请求URL
2⃣️.请求方法
常见的请求方法有:GET POST
GET:用于获取信息时的接口请求方法,例如:
https://wwwbaiducom/s?wd=api&time=239248920139参数会在url中进行传递,和url之间会用?分隔,多个参数之间会用&分隔。
POST:用户数据的提交,POST方法的数据会存在请求体里传递,保证了安全。例如登录接口的时候,会通过POST方法将账号和密码信息存在请求体传递给登录的接口。
3⃣️.请求头(Request Headers)
请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等,部分常见的请求体字段如下:
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非
常有用。
Content-Length:表示请求消息正文的长度。
Cookie:这是最重要的请求头信息之一
From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不
会用到它。
Host:初始URL中的主机和端口。
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语
言版本时要用到。
Authorization:授权信息,通常出现在对服务器发送的www-Authenticate头
的应答中。
Content-Type表示后面的文档属于什么MIME类型Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType
4⃣️请求体(Request Body) 即请求体,一般用于POST请求中,主要定义向服务器提交的数据类型,而对于GET请 求Request Body则为空。
Content- TypeI 提交数据方式
application/x-www-form-urlencoded Form表单提交
multipart/form-data 表单文件上传提交
application/json 序列伤Json 数据提交
text/xml XML数据提交
5⃣️Response
Response,即响应,由服务端返回给客户端。Response可以划分为三部分:
·Response Status Code
·Response Headers
·Response Body
4.Jemeter添加接口测试
工具栏-选项-选择语言-中文
1⃣️测试计划-右键-添加-线程-线程组
线程组-右键-添加-取样器-HTTP请求
HTTP请求-右键-添加-监听器-查看结果树
2⃣️线程组-右键-添加-配置元件-HTTP请求默认值(用来添加一个测试计划里所有请求的url)
3⃣️HTTP请求-右键-添加-断言-响应断言
各个匹配模式含义如下:
包括:响应内容包括需要匹配的内容即代表响应成功,支持正则表达式
匹配:响应内容要完全匹配需要四配的内容即代表响应成功,不区分大小写,支持正则表达式
相等:响应内容要完全等于需要匹配的内容才代表成功,区分大小写,需要匹配的内容是字符串正则表达式
字符串:返回结果包含指定结果的字串,但是subString不支持正则字符串
否:不进行匹配
4⃣️变量
在请求过程中,有时我们需要在请求中设置一些变量来测试不同的场景
Jmeter 支持以下类型变量:用户自定义变量、函数生成变量、BeanShell变量、数据文件变量
(1)用户自定义变量
设置步骤:选中http请求--添加--前置处理器--用户参数设置变量名称为username,值为admin,变量名称为password,值为111111(可添加多组用户名和密码,模拟用户输入正确和错误的情况,比如设置了4组,则点击线程组设置线程数为4)
在请求时引用变量如下所示变量引用格式为:${user}
(2)函数生成变量
Jmeter有许多内置的函数,可以生成随机数。创建步骤点击菜单栏选项--函数助手对话框--下拉选择Random()函数函数配置最大值最小值,点击拷贝并粘贴函数字符串
(3)Bean Shell变量
HTTP请求-右键-添加-前置处理器-BeanShell预处理程序(处理后的程序输出值做参数可以用BeanShell)
BeanShell是一种完全符合Java语法规范的脚本语言并且又拥有自己的一些语法和方法
BeanShell是一种松散类型的脚本语言(这点和JS类似);
BeanShell是用Java写成的一个小型的、免费的、嵌入式的Java源代码解释器具有对象脚本语言特性,非常精简;
BeanShell执行标准Java语句和表达式另外包括一些脚本命令和语法。
官网:http://www.BeanShell.org
Jmeter 有哪些Bean Shell?
定时器: BeanShell Timer
前置处理器:BeanShell PreProcessor
采样器: BeanShell Sampler
后置处理器:BeanShellPostProcessor
断言: BeanShell 断言
监听器: BeanShell Listener
Bean Shell 常用内置变量
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
vars-(JMeterVariables)操作jmeter变量这个变量实际引用了JMeter线程中的局部变量容器本质上是Map它是测试用例与BeanShell交互的桥梁,常用方法:
//定义jmeter变量
vars.put(String key, String value);
//从 jmeter中获取变量
vars.get(String key);
log写入信息到jmeberlog文件,使用方法:
log.info("hello 51zxw!”);
(4)CSV数据文件变量
CSV数据文件变量是指从外部csv文件读取数据出来作为变量。
设置步骤:选择请求--添加--配置元件--CSV数