一、什么是接口测试
1.为什么做接口测试:
接口是连接前后端及移动端的;不同端的工作进度不一样,需要对最开始出来的接口进行接口测试,优点:节约时间,缩短项目时间;提高工作效率;提高系统的健壮性。
post与get接口类型差异:
参数提交方式:post请求的数据是放在WebForm里面的,以表单形式提交;get是通过地址栏提交数据的。
请求数据大小:psot大,get小
安全性:post以表单形式提交更安全,get相对不是很安全
二、接口测试流程
1.接口测试流程
2.测试用例
编写测试用例目的:
理清思路,避免漏测;
提高测试效率;
跟进测试进度;
测试记录;
跟进重复性工作。
用例设计分为:
1)功能用例设计
功能是否正常(用postman工具,输入请求参数及相关url后,看是否可以正常发送请求)
功能是否按照接口文档实现(假设接口文档里面有两个参数;要看两个参数是否正确)
2)逻辑业务用例设计
是否依赖业务(假如是支付业务下单时候,要测试用户登录是否正确是否登录)
3)安全
cookie(没有登录直接调用和下单接口可以下单就是有问题的)
header(如把header信息删除)
唯一识别码
4)异常测试用例设计
参数异常:(关键字参数、参数为空、多或少参数、错误参数)
数据异常(关键字数据、数据为空、长度不一致、错误数据、)
三、接口测试工具及使用
1.接口测试工具分类
使用目的:提高工作效率
选择测试工具切入点:时间、简易程度、业务复杂度、测试员能力
2.接口测试分类工具介绍
抓取接口工具:
httpwache的缺点:只能在IE和firefox浏览器里面,其他浏览器不支持,看数据比较麻烦。
wireshark:抓取经过电脑的所有请求,需要添加表达式来确定请求
fiddler:轻量级的抓包,记录所有的http请求,相对比较清晰,而且可以进行接口测试。
测试接口工具:
loadrunner:性能测试基于http请求的。
fiddler:在Composer中可以进行接口测试。
soapui:接口测试,自动化测试。
jmeter:性能测试工具,也可以做接口测试工具,也是基于HTTP请求做性能测试的。内存占用小,免费开源,轻巧方便、无需安装。
postman: 最常用接口测试,是谷歌的一款接口测试插件,支持用例管理,支持不同请求类型、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。
接口测试三剑客: fiddler 、postman、 Python自己开发
自己开发接口测试程序原因:(工具没法满足需求时,业务限制,安全性)
3.fiddler工具运用
优点:独立可以直接抓取http请求;小巧,功能完善;快捷,启动就行;代理方便
含义:fiddler是一个http协议调试工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据。
工作原理:在电脑端设置了一个代理,电脑发出的所有请求都要经过这个代理,代理收到后,再将这些请求发送给服务器,服务器处理后,再将处理后的信息返回给fiddler,最后fiddler再把数据返回给计算机。
运用:
1.查看接口请求方式;查看请求数据,响应数据;接口返回状态(200返回成功);设置代理(移动端需要设置。在工具栏--【Tools】--【Fiddler options】--【Connections】输入端口号,并勾选后三个选项即可,之后在移动端进行设置即可)
2.查看header和cookie图示
3.设置断点:
4.添加筛选:
5.进行接口测试
4.postman工具的运用
优点:可以自动反复测试一个需要携带header的post请求,并且对针对线上、测试环境同一个数据进行测试,并对实际结果作比较,以作为测试结果。
配置不同环境步骤:
【设置】--【添加】--【配置环境的url或者标识】
主要使用优点:
1.能添加header和cookie。cookie的添加也是在header栏。
2.多接口一起使用。 (可以配置测试环境和线上环境)
3.方便回归。(可以批量执行一个文件夹的所有接口)
4.提高开发语言的技能水平。点击右边的code可以选择编程语言,生成对应语言的http请求的代码,方便学习。
四、接口测试简单实践
1.python-get接口实践
python-get请求实现方式:
1.定义接口地址
2.定义请求数据
3.整理请求数据
4.发送数据并获取结果
如果使用python3以上的版本的话则会报错:
File "F:/MYSOFT/pyCharm/untitled/test.py", line 3, in <module>
import urllib2
ModuleNotFoundError: No module named 'urllib2'
解决办法:
在3以后用urllib.request代替urllib2
用urllib.parse代替 urllib.urlencode