一.接口

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、url
2、请求方式 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

桌面上有下载到的图片:

 

posted on 2018-03-11 11:53  lilyzhang_18  阅读(3497)  评论(0编辑  收藏  举报