测试

浅谈接口测试

2018-10-04  本文已影响0人  _Cause_

前言:没有接触接口测试之前,可能会对做接口测试感到无所适从。看再多的文档,不如动手实践来得快啦。当然,目前接触到的只是接口测试的皮毛,会不断学习改进的。

一、基础知识

主要是http相关的知识,看了很多次老是忘,多多巩固下。

1.HTTP和HTTPS的区别

HTTP:超文本传输协议
HTTPS:安全套接字层超文本传输协议
HTTP协议以明文的方式发送内容,不提供任何方式的数据加密。如果攻击者截获了服务器和浏览器之间的传输报文,就可以直接读懂其中的信息。为了数据传输的安全,避免支付密码之类的敏感信息泄露,HTTPS协议应运而生。
HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。简单讲,HTTPS是HTTP的安全版。

详细讲解指路:https://www.cnblogs.com/wqhwe/p/5407468.html

2.常见的http响应状态码
http响应状态码.png

二、接口测试

1.简介

接口测试是测试系统组件间接口的一种测试。主要用于检测外部系统与被测系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

接口测试的类型有:
(1)API测试(前端数据与服务器之间的交互)
(2)数据库测试(服务器与数据库之间的交互)

2.测试点
接口测试-初级版

ps:有同事对接口测试这一块研究更加深入,测试点很全,因为不是自己的东西,就没有放出来~~只列出自己觉得必不可少的且现阶段能够做到的。

三、工具

1.fiddler

fiddler是一个很美妙很实用的接口测试工具,谁用谁知道。使用详解和相关tips网上有很多教程啦,不多废话。这里就主要总结自己觉得比较有用的内容。

(1)模拟http请求

设置断点修改request,两种操作手段:
1.打开fiddler,点击Rules->Automatic Breakpoint->Before Requests(这种方法会中断所有的会话,全局断点)
取消断点:点击Rules->Automatic Breakpoint->Disabled
2.在命令行中输入命令:bpu www.baidu.com(这种方法只会中断www.baidu.com),bpu是打断点的意思。
注意:这里的url不用手动输入,可以直接选中左侧的http请求,右键->copy->just url,复制url 到剪贴板,或者使用快捷键 Ctrl + U
取消断点:在命令行中输入bpu
设置断点后,修改请求的参数->run to completion。

(2)模拟http响应

方法一:
1.打开Fiddler右侧找到AutoResponse
2.选择Enable rules 和Unmatched requests passthrough,意为匹配所设置的规则并且自动跳过不满足匹配的请求;Enable Latency可以设置延时
3.点击选中左侧的http请求,然后点击Add Rule
4.在下面的Rule Editor 中下拉选择要模拟的响应类型,比如200、404、502等;也可以自己创建返回给客户端的响应,选中Create New Response…,如果是要替换掉某些页面文件,选择Find a file,最后点击Save 保存下
5.这样子当客户端再次请求接口时收到的就是我们设置的响应了

方法二:
设置断点修改Response,同样两种操作手段:
1.打开Fiddler点击Rules->Automatic Breakpoint->After Response(这种方法会中断所有的会话,全局断点);
取消断点:点击Rules->Automatic Breakpoint ->Disabled
2.在命令行中输入命令:bpafter www.baidu.com(这种方法会中断www.baidu.com);
取消断点:命令行中输入命令bpafter
设置断点后,点击右侧break on response->修改想修改的响应参数->run to completion。

(3)显示对应域名的服务器ip地址

使用快捷键Ctrl+R ,或者点击Rules->Customize Rules,打开 Customize Rules.js文件, 查找static function Main() 这个函数,在FiddlerObject.StatusText = " CustomRules.js was loaded at: " + today; 这行下面新增一行:
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");
保存后重启 Fiddler ,则抓包时可以看到server ip一栏。

(4)查看请求的响应时间

在列表的标题栏上右键点击customize colums,然后选择session timers 里面有个overall_elapsed,则抓包时可以看到请求响应时间的列。
ps:还有另外一种设置方法,需要添加代码,比较麻烦,就不多做赘述。

(5)模拟网络请求超时

1.使用快捷键Ctrl+R ,或者点击Rules->Customize Rules,打开 Customize Rules.js文件, 查找 “oSession["response-trickle-delay"]”
2.默认值是150;把它的值设为10000,这样就一定能够引起超时了,保存文件
3.勾选Rules -> Performance -> Simulate Modem Speeds
4.命令行中输入 bpafter url,直接阻塞对应url的返回即可

2.postman

因为平时工作用的是fiddler,postman只能说是接触过但没有深入使用。所以就简单介绍一下。

(1)什么是postman

postman是一款可以用来调试网页与发送网页http请求,并且用来运行测试用例的chrome插件。

(2)优点

1.支持用例的管理,包括用例的导入、导出。
2.支持批量运行。
3.支持云端保存用例(付费用户的特权)。
4.支持各种请求方法,包括get、post、put、delete等。postman的request body编辑器会自动根据你所选择的请求方法做出改变,很是方便。
5.此外,postman还支持文件上传、响应验证、变量管理、环境参数管理等功能。

(3)实践部分用到了再做补充

四、经验总结

1.刚开始做接口测试时,可以设计相应的接口测试用例,相关的测试点尽量考虑全面,测试时一条条地过用例,会极大地加深对接口测试的理解和熟练度。

2.如果接口对错误处理不恰当,导致用户看到的错误信息不够明确,或者直接出现晦涩的错误码,可以对开发人员提出建议。否则用户不知道到底哪里出现了问题,如何解决等。

3.要多关注接口请求的次数,是否会出现重复请求,少请求,多请求,不应请求的情况;以及是否会出现请求已经废弃了的接口的情况。

4.测试过程中,修改后台接口中一些耦合性较强的数据时容易引发其他问题,因此不能滥用工具随意更改接口数据,而是应该更多地去模拟用户在使用过程中可能会遇到的问题。

5.对于接口测试的异常场景测试,开发人员可能会觉得,前端/客户端已经做限制了呀,正常的用户不会像你这么做的,我再做就等于重复工作了;或者这种情况几乎不可能发生之类的。身为测试人员,提出问题是职责所在,系统的安全问题也是我们必须考虑的。问题还没发生不代表永远不会发生。开发人员要做的是权衡利弊,在性能和安全性之间取一个平衡点。

6.有人认为,同样的功能,后台接口测试一遍,前端又再测一遍,没有必要。实际上,接口测试关注于服务器业务逻辑,而前端侧重于页面展示逻辑及前端与服务器之间的集成验证。

7.关于get请求和post请求:它们是表单提交数据的两种基本方式。get请求数据通过域名后缀url传送,用户可见,不安全;post请求数据通过在请求报文正文里传输,相对比较安全。之前遇到过没有经验的开发小哥哥使用get请求传送敏感数据,测试人员对这方面也可以稍加留意。

上一篇下一篇

猜你喜欢

热点阅读