一.接口
1.内部接口
程序内部模块之间的交互时使用的接口
2.外部接口
用户使用程序时调用的接口
我们所做的接口自动化测试,是外部接口测试。接口实际上就是对数据库的各种操作。接口测试可以发现一些页面上操作发现不了的bug。越早发现bug,解决bug的成本是越低的。
一个网站分为:前端和后端,前端也就是客户端,后端及服务端、server端。
前端 后端
| |
客户端 服务端
前端和后端就是通过接口交互的。那么接口返回的数据是json格式的,json是一个通用的数据类型,是key-value格式的,注意在使用json传参时,一定要注意格式。
例如,一个json数据类型的举例:
{"error_code": 0,"stu_info": [
{"id": 1,"name": "nana","sex": "女","age": 28,"addr": "河北省保定市","grade": "天蝎座","phone": "18612532911","gold": 100},
{"id": 2,"name": "lily","sex": "女","age": 28,"addr": "江苏省苏州市","grade": "天蝎座","phone": "18612538946","gold": 100},
]
}
3.接口测试
测试接口的话,必须得有接口文档:
1、url2、请求方式 post、get等3、入参(请求参数)4、返回参数5、请求、返回示例6、 状态码说明
接口的协议类型
1.http接口:通过http协议,有get post等方法,返回常为json串。
get请求他没有请求体,只有请求头
get请求的参数只能写在url后面或者cookie里面,get请求直接用浏览器就能发送了
如:http://xxxxxxxx/api/user/stu_info?stu_name=lily&id=1
post有请求头和请求体
请参数放在请求体里面,post请求就需要借助postman jmeter等工具了
如在postman中,post类型的请求的参数和cookie:
在body中添加参数
在headers中添加cookie
2. webservice接口:soap协议通过http传输,请求报文和返回报文都是xml格式,需要通过工具进行调用和测试。
后面会讲到。
二.Jmeter接口测试脚本制作
先修改两个地方,保证我们的请求体和响应中的中文能正常显示。
1.Jmeter 中响应乱码:
修改bin/jmeter.properties
搜sampleresult.default.encoding
sampleresult.default.encoding=utf-8 保存后重启jmeter生效
2.Jmeter中请求体乱码
(当前使用jmeter版本为3.0,在3.3版本中没有看到请求体乱码)
修改bin/jmeter.properties
搜 jsyntaxtextarea.font.family
jsyntaxtextarea.font.family=宋体 保存重启jmeter生效
3.测试脚本的制作
(1)get类型的请求
接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=8
(2)post类型的请求
接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=12
例如:登录
(3)post类型需要通过json传参数:
接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=10
(4)需要添加信息头的请求
接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=14
(5)需要cookie信息的请求:
接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=11
(6)上传文件的请求:
接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=11
4.Jmeter的其他常用技巧:
(1)参数化
因为数据库可能会校验数据的唯一性,所以我们需要使用参数化。
除了使用csv定义参数化文件外,可以用用户自定义变量来参数化,或者用函数助手来参数化
用户自定义变量参数化:
csv文件方式参数化:
(2)关联
后面的请求需要用到前面请求的返回值,所以我们获取到这个返回值后,把它作为参数,以供后面的请求去使用这个参数值。
如,添加金币请求需要登录请求的cookie,那么我们在登陆请求下加获取json中指定字段值来作为cookie,然后再添加金币请求后添加cookie管理器来使用这个cookie。
(3)断言
判断请求是否成功
如在登录请求下添加断言:
断言判断成功时在查看结果树看不到,只有在失败时才会出现在查看结果树中
(4)生成随机数或时间戳
用到的地方把变量粘过来就行了
时间戳:
格式自己选择 如:yyyyMMddHHmmss
(5)jmeter操作数据库
Jmeter 连接数据库需要添加对应的jar,如mysql
mysql-connector-java-5.1.7-bin.jar
在测试计划导入jar或者把jar放入jmeter的lib目录下,
填写数据库信息,只填写最下面部分即可
jdbc:mysql://211.149.218.16:3306/jxz?allowMultiQueries=true&characterEncoding=UTF-8
com.mysql.jdbc.Driver
如果要插入中文:
(6)jmeter下载文件
参考:http://www.nnzhp.cn/archives/547
桌面上有下载到的图片: