一、定义
接口测试测的是程序对外的接口,接口其实就是操作各种数据库。
前端:客户端包括客户后台 后端:服务器端
注:
前端一般用(html/css/js等语言开发),后端一般用(java/php/python),因为语言不通,所以要通过接口来进行交互。
接口返回的数据都是通用的数据类型:json类型(所有语言都可以解析)
接口测试必须有接口文档,接口文档必须包含以下参数:
- url
- 请求方式post、get
- 入参(请求的参数)
- 返回的参数
如果写的好的话还有以下两点
- 请求示例、或者返回示例
- 状态吗说明
如果是get请求,直接用浏览器就能发,不需要借助工具。接口测试可以发现一些操作页面发现不了的bug,越早发现bug,解决bug的成本是越低的,接口测试跟功能测试流程是一样的。
拓展1:get请求和post请求的区别
http请求
请求头
请求体(参数写在请求体)
Get请求只有在请求头参数可以写在url或则cookie 里面,一般情况下get请求用于获取数据,post请求用于发送数据。重定向就是把一个页面转移到另一个页面,状态码是:3xx(类似于呼叫转移)。4xx表示路径不存在。
请求报文就是把url和参数拼接在一起可以直接执行
Postman 添加get请求和post请求
一、HTTP 定义了与服务器交互的不同方法,最常用的有4种,Put(增),Delete(删),Post(改),Get(查),即增删改查:
1)Get, 它用于获取信息,注意,他只是获取、查询数据,也就是说它不会修改服务器上的数据,从这点来讲,它是数据安全的,而稍后会提到的Post它是可以修改数据的,所以这也是两者差别之一了。
2) Post,它是可以向服务器发送修改请求,从而修改服务器的,比方说,我们要在论坛上回贴、在博客上评论,这就要用到Post了,当然它也是可以仅仅获取数据的。
3)Delete 删除数据。可以通过Get/Post来实现。
4)Put,增加、放置数据,可以通过Get/Post来实现。
拓展2:你们是怎么进行接口测试的?
由于我们项目前后端调用主要是基于http协议的接口,所以测试接口主要是用Jmeter工具去模拟http请求的
发送与接收。
在做接口测试之前,我们第一步先分析测试需求,并拿到开发提供的api文档;
第二步:从api文档中整理出接口测试案例(里面主要包括详细的入参和出参参数以及明确的格式和检查点)
第三步:和开发一起对接口测试案例进行评审;
第四步:结合开发库,准备接口测试案例中的入参和出参数据,并整理成csv格式的文件;
第五步:准备接口测试环境,结合接口测试案例文档和csv格式的数据文档,创建测试案例。
二、用例接口设计
1、登录模块的接口测试用例详见下图所示:
设计的样板如下:
正常验证:
通过性的验证(按接口文档上传参数,看结果能否通过)
参数组合验证(添加商品、修改商品等)
异常验证:
不按接口文档上的要求输入参数
2、接口安全
1. 绕过验证(例如购买商品提交订单的时候把价格改成任意数字)
2. 绕过身份授权验证(普通用户可否修改商家信息)
3.参数是否加密(用户名密码是否是明文显示,或则暗文显示可否容易破解)
4. 密码安全规章、密码复杂程度校验
2、postman接口测试示例
(详见火狐浏览器收藏夹)
接口测试用例设计1:获取名为小黑的学生信息
Api接口文档见:http://doc.nnzhp.cn/index.php?s=/6&page_id=11
从接口文档中整理的需求是获取学生信息
http://api.nnzhp.cn/api/user/stu_info?stu_name=小黑
请求方式为get,参数为 stu_name=小黑,详见的postman操作方式如下:
接口测试用例设计2:获取所有学生信息
(这个接口是为了说明怎么添加header信息的)
接口信息:
Postman测试结果界面截图如下:(暂时不成功,可能文章来源有误)
接口用例设计3:登录接口测试
在postman中的截图如下:
接口测试用例4:添加学生信息实例
入参是什么类型,一般面试可以讲这点,传入的参数时JSON数据类型的
在postman的截图如下:
需要说明的是 Headers(1) 原本没有(1)显示的,是在选择了传入的参数时json类型后: JSON(application/json) 后才自动显示的。
接口测试用例设计5:上传文件
上传的文件类型为 .txt文件,这个可以在测试用例的时候考虑进去,将文件的类型作为一个测试对象,如上传 .xls .docx 格式的文件是否能够上传
在postman的截图为:
接口测试用例设计6:学生金币充值
这个涉及到用户安全性,所以一般来说需要验证用户身份,使用cookie身份登录:
参照测试用例3,先获取cookie信息:
请求成功后可以从获得的body数据中取得用户的values值:也就是sign值:e31f748108a8f33231bc1b52e87c064e
接着再以cookie方式登录,然后添加金币即可:
所以第一步先在Header头部中添加cookie信息(cookie是在请求头部中添加,其它数据在body):
然后第二步在请求体body中添加:
最后发送请求得到的数据如下:
这步由于来源cookie问题没试验成功,参考文章在:http://www.mamicode.com/info-detail-2220006.html