接口测试
什么是接口测试
接口测试就是针对软件对外提供服务的接口的输入输出进行测试,以及接口间相互逻辑的 测试,验证接口功能与接口描述文档的一致性
为什么做接口测试
接口测试通常能够对系统测试得更为彻底,更好地保障产品质量,同时越早越底层的发现问题,修改和维护的代价也越小
如何做接口测试
根据接口文档设计用例,调用接口,验证结果
发起第一个接口请求
天气API接口地址:https://www.tianqiapi.com/api
Postman发起接口请求
请求部分
通过chrome浏览器中按下F12打开开发者工具,切换到network菜单,对浏览器中的动 作进行抓包
在接口测试中,接口请求信息中,重点需要关注4大信息:接口URL地址、请求方法、 请求头以及请求参数
接口收发包
简单理解,接口收发包的过程就像通过快递公司寄快递,需要知道对方的地址(URL)、选 择快递公司(HTTP方法)、填写快递单(头域信息)、包装快递物品(发送请求体参数)
发起接口请求
根据抓包信息,填写 HTTP方法、URL、请求参数、以及请求地址 之后,点击send发包, 即可得到请求的响应返回信息
获取响应返回信息
接口的响应包中,测试关注的重点在于响应的正文主体,同时可能对响应头和状态码进行校验 Postman请求发起之 后将得到响应结果, 包括响应主体、响应头、cookies、状态码、请求耗时、报文数据大小等信息。 而接口测试,主要就是对响应得到的信息进行验证,是否与用例设计预期 相符
Postman接口请求实战
- 百度IP接口实战
接口地址:https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php 需要设置头域的请求实战 - 腾讯课堂评论接口,获取信息时需要添加头域referer,才能获取到正确的评论信息。 接口地址:https://ke.qq.com/cgi-bin/comment_new/course_comment_list 访问地址:https://ke.qq.com/course/315793?tuin=227706b0
- Post接口实战
使用用友云提供的新发债券查询接口进行测试。 接口地址:https://api.yonyoucloud.com/apis/pte/New_Issue_Bond_Information/New_Issue_Bond_Information - 接口申请描述地址:
https://api.yonyoucloud.com/apilink/tempServicePages/b1277b7e-b1e3-445c-818a-cdcd457f298c_true.html 新发债券服务目前不可用,可使用如下网易新闻接口,也可以在各开放api平台查找其它接口使用。 接口说明文档地址:https://api.apiopen.top/api.html 接口地址: https://api.apiopen.top/getWangYiNews - 文件上传接口发包实战
接口地址: http://www.testingedu.com.cn:8000/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/ba nner/dir/images.html - Json格式请求发包实战
接口地址:https://b.zhulogic.com/designer_api/account/login_quick_pc 网站访问地址:https://b.zhulogic.com/next/sign?redirect=%2F
请求体与Content-Type头域
之前案例中使用的GET方法接口都是通过在URL中添加请求参数的方式完成参数传递。 在对使用POST方法的接口进行测试时,需要特别注意请求参数在body中的格式以及请求头中的Content-Type头域,该头域规定了接口接受的请求参数传值格式。
在Postman请求体中传递参数时,在body菜单中设置请求体的格式。
- x-www-form-urlencoded对应于Content-Type头域为x-www-form-urlencoded的类型,是以键值对形式发送的表单参数,同时参数会携带在url中
- form-data对应于Content-Type的multipart/form-data类型,既可以发送键值对也可以进行文件参数传递
- raw选项中可以使用请求体原始格式编辑各Content-Type类型对应的参数格式,直接按请求体的格式来进行内容发送
- binary选项用于发送文件内容请求
断言与变量
环境变量与全局变量
接口测试过程中,经常需要使用已经设定好的参数或者从其他接口的返回中获取变化的参数。Postman 提供了变量的机制供这种场景使用。
Postman变量分为环境变量和全局变量两种,在接口请求中可以选择一组环境变量使用。而全局变量可供所有请求使用。 使用变量的格式为 {{变量名}} 调用变量的值
测试沙箱实战
测试沙箱常用功能
Postman测试沙箱其实是结合JS脚本完成测试中的功能,在请求发起前后实现部分测试操作。常用功能:
- 请求前脚本(pre-request scripts)设置请求前置操作如设置变量等。
- 请求后对状态码、响应头、响应正文等信息进行断言操作
使用console控制台进行调试
通过console查看接口请求返回信息,以及对脚本中使用的变量进行输出调试等操作
返回信息断言验证
为了更直观地进行接口测试,可以设置断言,来完成对响应结果的校验。
- 设置tests脚本,在右侧snippets中,提供了许多场景的脚本模板可以直接套用。
- 发包之后在响应面板中将得到测试结果。
- 官方文档地址: https://go.pstmn.io/ docs-test-scripts
测试管理-测试集与数据驱动
Postman测试集
为了更方便地管理接口请求的执行,可以通过postman测试集(collection)来完成测试的操作,每一个测试请求可以看成一个测试用例(testcase),collections 能够一次管理多个测试用例来执行。通过save,能够将请求保存到collections中使用
Postman数据驱动
当需要进行数据驱动方式运行多次Postman脚本时,可以通过csv文件或者json格式的文件对接口测试数据进行管理,以方便用例管理执行
在接口请求中,参数使用变量名获取, 之后在创建数据文件时,使用这些变 量名编辑测试数据。 在测试沙箱中,参数的获取用data. 参数名的形式来进行读取 创建测试数据文件 创建一个csv格式文件之后, 通过notepad++或者excel进行编辑。 注意:
- 文件需要使用UTF-8 编码,创建了csv文件之后, 在notepad++中使用编码 菜单中的转为UTF-8编码功 能将文件转为UTF-8编码使 用。
- 文件中第一行必须是接口请求使用的变量名,后续每行 填写本次执行使用的变量值
使用测试数据文件 在collection runner中data选项选择编辑好的测试数据文件,preview能够查看文件预览, 确保文件读取内容无误
cookie
在接口测试中某些接口的调用需要使用已有cookie,Postman操作cookie可以有两种方式
Postman接口请求使用Cookie
- 直接在头域中添加cookie头域,适用于已知请求时的cookie头域的情况
- 使用Postman的cookie管理机制,既可以手动添加,同时Postman也会将操作流程中获取的参数自动保存,因此可以通过调用前置接口来完成cookie获取。
电商接口测试实例
使用电商项目进行测试,在登录接口完成登录之后,通过购物车接口获取购物车中的信息。 由于购物车接口需要使用登录后的cookie保持登录状态。 登录接口: http://www.testingedu.com.cn:8000/index.php?m=Home&c=User&a=do_l ogin&t=0.5404187243051779 购物车接口: http://www.testingedu.com.cn:8000/index.php?m=Home&c=Cart&a=head er_cart_list
token
接口测试项目实例 使用接口测试项目实例,注册、登录、获取用户信息、登出接口均需要获取auth接口获取 到的token进行使用,因此通过auth接口返回信息获取token之后,存为变量供后续接口调用。
- 鉴权接口:http://testingedu.com.cn:8081/inter/HTTP/auth 该接口返回一个token值,之后的所有接口请求均需添加token头域使用该token
- 注册接口:http://www.testingedu.com.cn:8081/inter/HTTP/register
- 登录接口:http://testingedu.com.cn:8081/inter/HTTP/login
该接口返回一个userid,在请求用户信息时使用,因此保存为变量。 - 获取用户信息接口:http://www.testingedu.com.cn:8081/inter/HTTP/getUserInfo
该接口需要使用登录获取的userid,因此使用保存的userid变量值。 - 注销接口:http://testingedu.com.cn:8081/inter/HTTP/logout
练习接口
- 天气API接口平台地址:https://www.tianqiapi.com/api
注意:天气api更新了,需要注册获取appid和appsecret并传参才能使用,因此需要进行注册 - 用友云API开放接口平台的债券信息服务目前服务商不提供服务了,可用如下网易新闻接口替代 接口说明文档地址:https://api.apiopen.top/api.html
接口地址: https://api.apiopen.top/getWangYiNews - Json格式请求网址和接口地址变化如下: 接口地址:https://b.zhulogic.com/designer_api/account/login_quick_pc 网站访问地址:https://b.zhulogic.com/next/sign?redirect=%2F
- 特斯汀学院电商网站项目地址:http://www.testingedu.com.cn:8000/ 特斯汀学院token接口测试项目地址:http://www.testingedu.com.cn:8081/inter/ 注意:按课程练习时,token接口项目抓包时请选择HTTP模式
- 如果需要练习,网上有非常多的开放接口可用,比如: https://api.apiopen.top/api.html 无需注册即可使用 用友开放接口平台:https://api.yonyoucloud.com 聚合数据平台:https://www.juhe.cn/ 这些平台需要注册得到apicode之后才能进行测试,有兴趣的同学可以申请进行测试
|