1:接口测试的定义?
目前,软件接口中基HTTP(RESTfull架构)的接口 是软件测试领域最常见的接口。基于我们主要针对的接口类型, 定义为:根据前后两端通信的协议规则,组装一个请求数据发送给服务端,获取到来自服务器端的响应,对响应中的各类数据进行判断,是否符合接口设计时定义的业务和技术需求。
总结为:基于http协议的请求和响应的数据交互是否符合开发设计为接口测试,因此接口测试也叫数据交互测试,在测试过程中,应该关注请求和响应的数据正确性。
2:为什么要进行接口测试?
1.接口测试是真正意义上的提前介入测试,而越早和越底层发现bug,其修复成本越低,因此接口测试非常有必要。
2.前端因需求不同而多样多变(比如小程序,h5,原生app,web网页的多形态前端),因此进行接口测试非常有必要,因为后端基本不变。
3. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
4. 现在很多系统前后端架构是分离的,从安全层面来说:
(1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。(前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。)
(2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
3:如何开展接口测试?或者说接口测试的流程?
1、了解接口需求,评审接口测试文档==》(协议描述是否正确和完整,接口是否符合业务需求)如下图所示
2、制定接口测试计划(针对专项接口测试任务)==》测试计划的内容:(确定测试接口的范围,人员,时间任务安排,相关标准事项, 测试工具。)3、设计接口测试要点==》根据开发提供的文档提取测试点,如下图所示,不仅需要从业务的角度来提取测试点,还需要从实现技术上来提取。
4、将文字用例转换为接口测试工具的”脚本文件”==》接口测试通常借助工具(如postman,jmeter等)进行,因此需要将用例转换
5、执行各工具下的脚本并判断结果==》接口是否正确需要进行判断,因此会基于响应状态码,响应时间和响应正文进行断言来判断
4:接口的请求和响应的构成?或者说http协议的构成
链接资料有常见的请求头和响应头数据:HTTP 结构详解_Simki的博客-CSDN博客_http结构
请求报文如下构成:
请求行:包含请求的方法,请求的URL和请求的HTTP版本
请求头:从客户端向服务器端发送请求报文是使用的首部。补充说明了请求的附加内容、客户端信息、响应内容优先级等信息。(如set-cookies等非Http协议的请求头)
空行:[CR+LF]由它来划分
请求主体:应该被发送的数据(并不一定要有报文主体,如get请求)
响应报文如下构成:
状态行:包含Http版本号,响应结果状态码和原因语句
响应头:从服务器向客户端返回响应报文是使用的首部。补充说明了响应的附加内容,也会要求客户端附加额外的内容信息 。
空行:[CR+LF]由它来划分
响应主体:同上
5:响应状态码详解
1xx:100-101 信息提示,表示请求成功,需要用户继续发送请求2xx:200-206 成功
3xx:300-307 页面重定向
4xx:400-415 错误类信息,客户端错误
5xx:500-505 错误类信息,服务器端错误
常见的http协议的响应状态码
200: 成功,请求数据通过响应报文的entity-body部分发送;OK
301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现 在所处的新位置;Moved Permanently
302: 响应报文Location指明资源临时新位置 Moved Temporarily
304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态 码通知客户端;Not Modified
307: 浏览器内部重定向
401: 需要输入账号和密码认证方能访问资源;Unauthorized
403: 请求被禁止;Forbidden
404: 服务器无法找到客户端请求的资源;Not Found
500: 服务器内部错误;Internal Server Error
502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
503: 服务不可用,临时服务器维护或过载,服务器无法处理请求
504: 网关超时
标签:请求,报文,接口,响应,测试,客户端 From: https://www.cnblogs.com/lwcx/p/17018060.html