一.接口的作用
1)从数据库中读取数据、插入数据,比如打开一个博客页面,页面上展示的内容就是通过接口从数据库中读取到相应的数据展示到页面上,如果我们写博客就是通过接口把我写的博客内容通过接口插入到数据库中
2)连接前后端交互,我们前端代码语言正常是css、html、js等,后端代码语言正常是java、python等,前后端语言不一致无法正常进行交互,此时就需要接口连接前后端进行交互
接口测试其实就是功能测试,甚至比功能测试还简单,两者的区别在于功能测试可以在页面上点点点,在页面上输入值,提交数据看结果,可接口测试没有页面,通过接口文档上调用地址、请求参数,拼接报文,然后发送请求,检查返回的结果。
1)可以发现很多在页面上发现不了的bug,比如打开一个淘宝上买东西,支付订单,订单的金额是10块钱,支付的话肯定要调支付接口,为了检验后端是否对金额做了校验,页面上的金额肯定修改不了,这时可以直接调用接口,修改下订单金额,再发请求就可以了 2)检查系统的异常数据的处理能力、安全性、稳定性 3)在前端未开发的情况下,先进行接口测试,后端不用变,前端可以随便变化
四.接口测试常用工具 1)postman 2)jmeter
五.http请求中的get和post请求接口测试方法:
1.get请求接口的测试方法: 1)不需要借助任何的工具,在浏览器里面就可以发请求(url?parma=abc&name=abcd) 2)借助postman、jmeter测试工具 2. post请求接口的测试方法: 1)借助postman、jmeter测试工具
1.get请求: 2.post请求入参是key-value 3.需要传json类型(注意输入参数中的标点符号是英文格式的)
4.需要传cookie: 我们正常把有cookies的接口在headers中cookies所有的信息全部复制到postman的headers中就可以了
5.需要上传文件的
6.需要验权Authorization中选择 Basic Auth(根据接口文档),填入用户名密码后执行
a.右击测试计划添加线程组:
b.右击线程组添加请求类型,一般是http请求,输入请求信息
c.右击线程组-监听器-查看结果数,看接口调用是否正常,查看结果数如果有多个请求放在请求最上面这样对所有请求都有效,如果只放在某个请求下面那么只对这个请求有效 d.执行请求,查看结果树种查看接口返回结果
get请求如果一个线程组下面有多个请求,且每个请求的域名或者传参等有相同的,可以添加一个http默认请求,这样不用每个请求下面都添加一下相同的域名或者入参等
2.post请求入参是key-value
3.入参是json:如bodydata入参的值有中文,需要把界面中content encoding中的插入:utf-8,否则接口插入数据库的值可能会乱码
4.入参需要cookie jmeter添加cookie有两种方式: a.添加HTTP Cookie管理器(HTTP Cookie管理器需要加在所在请求下面,如果是跟所有请求平级那么会作用于所有的请求) b.HTTP Cookie管理器如果cookies里面有多个key-values,那么需要一个一个把key以及值输入那么需要输入很多条,所以我们添加cookie习惯添加HTTP信息头管理器,只要输入cookie,把后面所有的cookie值输入就行,只需要一行
5.入参需要添加header:jmeter中需要添加一个HTTP信息头管理器
6. 入参需要传文件
7. jmeter参数化 a.如果现在需要对添加学生的接口进行性能测试,支持并发10次(线程组中线程数改为10),每次入参的手机号码不能相同,此时就需要我们对手机号码进行参数化,参数化思路: 1)随机参数化:我们可以在jmeter中点击选项-函数助手对话框选择-选择rondom,rondom是一个随机函数,我们可以只把手机号码的后6位进行随机取值,这样执行10次请求,每次取的手机号码都是不同的,但是大并发随机数可能会重复的。 b.在参数后面加上当前的时间戳_time(可以用时间戳在线转换工具进行转换为当前时间,java中时间戳单位为毫秒) c.如果多个请求需要用同一个参数值:如果多个请求需要用同一个session值,方法如下: 1)我们可以右击线程组添加用户定义的变量,把这个session的值输入; 2)把需要用到session值的请求参数改为${session}
d.参数化文件,比如一个登录请求需要并发10次,每次并发的登录用户不能相同,因为这些用户已存在数据库的用户表中,此时我们可以用参数化文件导入 1)创建.csv文件,用户名和密码中间以逗号隔(逗号是英文模式下的) 2)添加CSV Data Set Config
3)配置CSV Data Set Config
4)引用csv文件参数:
.找到需要传递参数的HTTP请 .将具体值改为变量引用,引用变量:${变量名}
5)在查看结果树种查看变量引用的具体值
8. jmeter断言
jmeter中某个请求接口做压测,并发数量比较大,不可能人工一个一个请求点开去看返回的值对不对,此时就需要加断言自动的校验返回的结果是否正确。添加断言的方法: 1).添加断言 正常添加响应断言,响应断言就是接口返回的数据
2)响应断言添加:比如登录接口成功的话会返回userid这个字段,如果不返回userid则接口失败
9.jmeter关联
需求:比如现在一个学生需要充值金币,前提必须要该学生进行系统登录,登录后获取到该学生登录的session值,这个session值传给学生充值接口,这样才能保证充值的钱到该学生的账户中,现多个学生充值,每个学生登录都会获取到不同的session,我们怎么 把不同用户登录接口中的session值传给学生充值金币接口呢,此时我们就得用到关联,把登录接口的session值取出来供充值接口使用 1)登录接口中取出session
备注:接口返回结果为json,json path expression中怎么写能取到你想要的值呢
比如下面这个登录接口怎么取到userid,正常外面整个大括号用$表示然后login_info然后是userid,找到userid就能找到userid的值,所以json path expression中写$.login_info.userid就能取到userid值 2)金币充值接口怎么取到登录接口中的session呢 金币充值接口添加HTTP Cookie管理器,如下设置就能做到不同用户登录金币充值接口能取到不同用户的session的值
转载于:https://www.cnblogs.com/dmbk/p/10554434.html
相关资源:Http接口测试工具HttpTestTool