接口测试

接口理念

不要过度迷信工具,首先还是解决原理问题

接口测试就是用两个工具调用一下然后结果就出来了

接口是指系统模块与模块或系统与系统间进行交互,一般我们用的多的是HTTP协议的接口,WebService协议的接口,还有RPC(Remote Procedure Call Protocol)---远程过程调用协议的接口

不管哪种接口,其本质就是发送一个request,然后服务器响应后返回一个response,然后我们队response进行分析,这即是接口测试

1.接口测试做好要覆盖业务

2.接口测试做好要覆盖代码

MC/DC

为什么要做接口测试

随着系统越来越多,以及复杂性越来越高,为了保证系统的独立性,也为了使业务更加的独立,系统间的交互,越来越多的使用接口这时候,为了保证数据的传输的准确性,接口测试也应运而生了,数据的错误,有可能引起系统的重大bug,所以,为了持续性的检查接口数据的准确性,接口测试的重要性也就不言而喻了

接口测试的目的及方法

核心:保证系统的稳定

方式:持续集成

目的:提高测试效率,保证数据的准确性

文档:接口的数据类型是需要事先定义好的,所以,要形成文档的习惯,以方便查阅,尽量减少团队与团队间的沟通成本,同理,我们在接口测试中,也需要根据文档,整理出我们的接口测试数据,整理出我们的断言字段,也方便其他人去审核我们接口测试的成果

常见接口测试工具

SoapUI:测试webservice接口  (如果有乱码修改配置文件:Soapui-Pro-4.6.4.vmoptions配置文件添加-Dfile.encoding=UTF8)

 

roadrunner:测试HTTP接口

自动化大概是10倍效率提升

接口和UI自动化100倍

UI的稳定性很差

1.http调用需要的是具体的请求地址

2.webservice调用需要的是WSDL(就是关于webservice的方法说明)

化UI操作成请求操作

通过将一系列的UI操作转化为数据包的交互,可以大大的简化测试的过程,并且快速验证大量数据

常见接口测试工具及原理

常见接口测试工具

典型商业工具:loadrunner,soapui

典型开源工具:jmeter,jsoup,httpclient python中的urllib2,urllib库

扩展插件:Postman,Poster

接口测试与抓包:

协议原理

协议捕获:(firebug,fiddler,HTTPwatch)

协议变更:(Poster,Postman,HTTPRequest,Temper Data)

http抓包:HTTP Analyzer

通用数据抓包:MiniSniffer

进程级抓包:WSExplorer

接口测试工具的选择

1.被测对象(基于什么协议)

2.对什么工具比较熟

3.这个工具是否能解决我要解决的问题

4.成本

实现原理

模拟客户端对服务器进行多连接

伪造报文欺骗服务器认证机制

了解服务器认证机制

了解客户<->服务器之间的交流报文结构

合理的技术构造报文结构

服务器去判断是否是合理的报文结构

1.cookie&session

2.报文体

RFC2616

HTTP协议 超文本传输协议

1.request

GET/WebTours/HTTP/1.1 (意思是从服务器上面get一个叫WebTours的内容然后连接方式是http1.1)

get 是从服务器上拿一个东西下来, post 发送一个东西给服务器

form表单一般是get请求但是也可以做成post请求

第二个是 Host: 127.0.0.1:1080

当我在浏览器上面打http://127.0.0.1:1080/WebTours/ 浏览器会自动帮我解析出来两块内容:一块是GET/WebTours/HTTP/1.1 另一块是 Host: 127.0.0.1:1080

服务器会返回body和header

header是一些状态说明,在浏览器中看到的所有内容都是body

HTTP2.0可以压缩header

HTTP1.0只能压缩body

接口测试和设备终端无关

服务器识别客户端的方式几乎都用user-agent

keepalive

长连接 占用你的连接池

网页的时候往往都是多请求所以一般都是长连接

接口基本都是短连接

webservice都是短连接

200ok表示服务器理解了你的意思,并且给了你返回,不代表给你返回的内容是你想要的,只是个物理状态,并不是一个逻辑状态

404 500 503

2xx都是服务器正常返回

4xx都是客户端问题(在服务器上不存在,或者非法的会返回40几41几等)

5xx都是服务器问题

5xx两种情况返回:

1)你发过去的数据非法,导致服务器上的某些逻辑错误

2)服务器太忙了,挂了

缓存

RFC2616中的一些和接口基础比较相关的内容

f12中

1)主要看左边发出去的主要看第一行和host主题

2)返回主要看body,body的解码器在content中

AJAX体系

http里面的data数组是不加密的

两种加密:

https是加密的

表单js处理控件处理加密

 

GET标准

?后面的是参数,参数和参数之间用&分割,=号前面是参数名,=号后面是参数值

Request URL: https://www.baidu.com/s?wd=123&rsv_spt=1&rsv_iqid=0xd798e78f0003f7ab&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=4&rsv_sug1=3&rsv_sug7=101&rsv_sug2=0&inputT=961&rsv_sug4=1784

 

 

 

 

你可能感兴趣的:(接口测试,api测试,自动化测试)