陆续在几个公司都有接触过接口测试,每一个公司的接口测试需求都差很少。可是,项目的大小会影响接口测试任务的简繁。javascript
涉及到TCP协议的接口,也涉及到http协议的接口。css
前段时间,刚接到一个走HTTP协议的接口测试需求。html
开发提供过来的接口以下:前端
1. get_listjava
a. url - subject_id / compliance_id
b. ajax - subject_id / compliance_idweb
2.get_mapajax
a. url -
b. ajax - qry_id / extra_coljson
3............后端
由上得出:浏览器
1.每一个接口有两种请求方式
a)走地址栏url-----GET请求
b)走ajax模式
2.两种请求方式后端带有参数的key
3.无其余信息
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
咨询开发同个接口为何走两种请求方式?
获得的回复:
1.url----Get请求获取静态信息,即处理获取数据后的前端页面处理
2.ajax----POST请求为处理数据,返回json数据,即用户须要的数据
请根据这个回复,确认测试的需求范围!!!
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
经过以上信息,测试在开始接口自动化以前,须要将开发提供的接口转换为测试熟悉的模式。
HTTP协议,正常状况下须要包括头部信息,地址,参数等。而开发提供的信息并无这么丰富。
因此,测试要本身进行抓包获取剩余未知的信息!!!
以百度新闻为范例,谷歌浏览器作为抓包工具
1.进入百度新闻网址:http://news.baidu.com/
2.右键点击网页->【检查】(若是您的网站右键被禁止,请使用F12打开开发者模式)
3.请在打开工具菜单栏选择network
4.刷新网页,观察工具变化(请选择XHR,咱们仅观察html页面,js/css等不须要)
5.点击,出现的Name,即开发提供中的模块--test以下:
a)General显示内有咱们须要的信息:URL地址,请求模式(GET)等
b)response headers为咱们发送请求过去,服务器返回响应的头部信息
c)request headers内有咱们须要的信息,当你不知道哪些是接口特殊须要的,请完整保留该区域的全部信息
d)query string parameter为发送请求须要带的参数
6.经过第5点,将接口整理成测试比较熟悉的格式
get_list接口 |
||||||||||||||||||||
接口功能:xxxx | ||||||||||||||||||||
请求url |
http://IP:PORT/test/get_list |
|||||||||||||||||||
请求模式 |
POST |
|||||||||||||||||||
请求头 |
|
|||||||||||||||||||
参数 |
subject_id:11 compliance_id:11 |
|||||||||||||||||||
响应(json) |
{data:[{}]} |
|||||||||||||||||||
备注 |
描述该接口依赖的其余接口名称,该接口的特殊点 |
备注
若是是移动端的web获取app,请使用第三方工具进行抓包如flddler
若是知道产品的开发语言,而且能够看懂代码的话,请根据接口名称查看源码,肯定参数是否必填/返回的错误响应等等信息
开始接口测试以前,请考虑清楚接口测试的范围(功能?冒烟回归?压测?),这将影响工具的选择及接口覆盖率的脚本编写