三、接口自动化(postman、HttpRunner、pytest)
一、接口测试
1.1 接口协议的分类
硬件接口:USB接口,投影仪接口,鼠标键盘接口。
软件接口:称为API,微信(腾讯公司):提现和充值。银行卡(银行系统),银联接口(想要调用必须拿到鉴权码:token,key,appkey)。软件的接口主要使用与数据交互。
软件接口分类:
内部接口:开发人员开发一个系统,此系统提供了一些接口给本系统使用。特点:对于安全要求不高,外界访问不到。只需要测正例。
外部接口:
1.系统对外提供的接口:这种接口外部的用户是可以接触到,对安全性要求很高。
2.系统调用外部的接口:开发的电商系统需要支付宝和微信支付。只需要测正例。
1. 前后端分离,子系统分离。
2. 基于安全考虑
3. 测试前移。
1. 基于SOAP的接口架构,它是一种轻量级的简单的基于XML的协议规范。基于webservice协议,地址是以?wsdl结尾。是一种比较old的技术。soapui
2. 基于RPC的接口架构,它是一种远程调用,调用服务器的服务接口就和调用本地一样。
1.dubbo协议,阿里的rpc的框架。地址是以dubbo://,适合传输高并发数据量少的数据。
2.基于springcloud的微服务。
3.thrift,rmi,hessian
3. 基于RestFul的接口架构,主流,默认是使用的http协议。它默认使用json传输数据,它有一种约定规则:
对于同样的一个接口地址:http://127.0.0.1/yuser,使用不同的请求方式得到的结果不一样。
get(查询用户),post(增加用户),put(修改用户),delete(删除用户)
二、HTTP协议
http协议是超文本传输协议,主要是用于浏览器和服务器之间交互数据,交互分为请求和响应两部分。
请求:请求行,请求头,请求正文数据。
响应:响应行,响应头,响应正文数据。
响应码:1XX信息,2XX请求成功,3XX重定向,4XX客户端错误,5XX服务器错误。
2.2 请求
请求行:POST /phpwind/index.php?m=u&c=login&a=dorun HTTP/1.1
请求头:
Host: 47.107.116.139
Connection: keep-alive
Content-Length: 112
Accept: application/json, text/javascript, */*; q=0.01(客户端接收的数据类型)
X-Requested-With: XMLHttpRequest(ajax异步请求(不需要刷新),高速上有多条道,多线程)
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114
Safari/537.36(客户端类型)
Content-Type: application/x-www-form-urlencoded; charset=UTF-8(内容的格式)
Origin: http://47.107.116.139
Referer: http://47.107.116.139/phpwind/index.php?m=u&c=login
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: csrf_token=78e0caa2743c89fa; wNq_visitor=Nsb6UFT9aEsPxBlZw0XRqvIIZVOHaYgnTMt9rdP0EoY%3D;
wNq_lastvisit=697%091621428405%09%2Fphpwind%2Findex.php%3Fm%3Du%26c%3Dlogin%26a%3Dcheckname(Cookie
信息)
Cookie的原理: 当客户端第一次访问服务器的时候,那么服务器就会生成Cookie信息,这个Cookie信息会通过响应头里面的Set-Cookie传输到客户端。从第2-N次请求,只要访问当前的域名和路径,那么客户端就会在请求头的Cookie里面自动的带上客户端的Cookie信息。
Cookie它不是缓存,它是保存在客户端的一小段的文本信息,格式是dict格式,
响应:
响应行
响应头
响应正文数据。
1.json格式
JSON是一种数据格式,它由键值对和列表组成。
键值对:{key1:value1}
列表:[array1,array2]
接口开发的潜规则:{error_code:错误码,message:错误码的中文说明,data:[]}
2.html格式
3.XML格式
1. 拿到api接口文档(规范:swagger,showdoc,不规范:word文档,没有:抓包或录制,一般需要抓包或者录制的接口很有可能只测正例),熟练接口业务,接口地址,接口鉴权,接口入参,接口出参,错误码。
2. 编写接口测试计划和方案(接口怎么测)。
思路:
正例:输入正常的入参,接口成功返回。
反例:
鉴权反例:鉴权码为空,错误的鉴权码,鉴权码过期。。。。
参数反例:参数为空,参数类型异常,参数长度异常,错误码异常.....
其他场景:接口黑名单,接口调用次数,接口分页(0,1,中间页,最后一页)
其他场景:根据业务而定。
3.编写接口测试用例。
4.使用接口测试工具执行接口测试。
5.输出接口测试报告(HTML格式)
1. 拿到api接口文档(规范:swagger,showdoc,不规范:word文档,没有:抓包或录制,一般需要抓包或者录制的接口很有可能只测正例),熟练接口业务,接口地址,接口鉴权,接口入参,接口出参,错误码。
2. 编写接口测试计划和方案(接口怎么测)。
思路:
正例:输入正常的入参,接口成功返回。
反例:
鉴权反例:鉴权码为空,错误的鉴权码,鉴权码过期。。。。
参数反例:参数为空,参数类型异常,参数长度异常,错误码异常.....
其他场景:接口黑名单,接口调用次数,接口分页(0,1,中间页,最后一页)
其他场景:根据业务而定。
3.编写接口测试用例。
4.使用接口测试工具执行接口测试。
5.输出接口测试报告(HTML格式)
Postman+newman+git+jenkins实现接口自动化。
newman是专为postman而生,主要用于和jenkins持续集成。
Jmeter+Ant+Git+Jenkins实现接口自动化。
Ant是Jmeter的插件,主要用于和jenkins持续集成。其他工具:soupui,apipost,fiddler,charles
https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
六、postman的使用
七、。。。