昨天芒果有发一篇谈接口测试的文章:
发过之后深觉这篇文章对于接口测试的谈论确实太浅,所以请了我们的“乌云安全白帽子”、接口 安全测试专家——韬光大大来跟聊一聊接口测试。下面是韬光养晦老师的看法:
为什么现在这么流行接口测试了?
做功能测试的都有体会,无聊,天天重复点点点,用例就那些花样,感觉自己就是试用的人,只是会设计一些常人不会去操作的“用例”,但往往很多的用例还不能实现,或者无法执行。
但是这些用例是真的不能实现么?答案是NO!事实上,所谓的不能实现、无法执行,都只是技术不到位罢了。具体能不能做到,并不是一二三点简单的说说。手工测试这个层次的不能,只不过是表面的界面无法操作而已;换个维度,在接口测试角度很多时候是可以做到的,而且可以达到对目标进行破坏式的行为,甚至达到安全测试的要求。只有想不到,没有做不到。
虽然现在关注接口测试的人越来越多,但是真正深入了解的反而不多。有的是完全不懂,完全不懂是因为没有接触过,不知道情况。有的是懂一点却总觉得很简单,这些人会觉得,会一些流行的工具、简单的代码就可以了,这种情况其实跟功能测试阶段只会用鼠标键盘一样,是在帮开发调试接口是否正常,并不算在测试。真正的接口测试,需要对业务数据、系统逻辑、数据传输等方面确保万无一失,如异常数据、异常流程、越过客户端的验证规范等等,能发现问题才是王道。至于接口的自动化,是稳定后的一种便捷的回归测试模式。
接口测试的第一步就是要了解数据的流向、实现方式,这对只会功能测试点点点的人来说是最麻烦的,越级最大的。因为习惯从界面和业务去考虑问题了,忽略了系统实现层面的真实数据传输,现在的系统都是互联网类型的,用户在自己电脑操作必然会把数据传输到服务器,这中间就会产生大量的接口调用操作,那么测试也需要保证数据的正确性,可靠性,安全性,这就是接口测试,最流行、最广泛的传输协议那就属HTTP了。
那么HTTP是怎么样的呢?
HTTP协议包含2大块,请求(Request)、响应(Response),简单说就是一发一收,甚至可以认为就是输入和输出的概念,请求中会包含链接、头信息、主体数据,响应会包含状态码、头信息、主体数据。这其中还包含了非常多的细节组成,这里就不详细讲述了,以后有机会给大家介绍(这里顺便做个小广告——也欢迎来我们的课堂上学习,点击接口测试与自动化测试课程简介了解我们的课程内容以及活动介绍)。
接口测试应该怎么做?
有人可能去问过一些做过的人,接口测试怎么学起、怎么做,基本得到的答案都会是,找个工具、参考下网上的代码,写个请求就好了,检查响应中的数据是不是你的预期,测试就完成了,具体参数参考你们的接口设计文档即可。
作为小白又懵逼了,工具不会用,那么多框填什么不知道,代码折腾了半天最终以看不懂的报错结束了,再退一步,看了学习视频,工具操作会了,基本的代码也会了,但是,拿到了接口文档测什么呢?要是没有接口文档又怎么办?
对于接口测试的学习大多数人其实面临下面的这些问题:
1 没有学习资源和对象,无头苍蝇
2 学是学了,只是跟着操作,项目不知道如何下手
3 只听接口其声,不知其理,会点代码但无从下手
4 完全不会代码,感觉很难退缩了
而且很多时候是上面所有问题一起发生,这就更难下手了,得想办法逐个击破才是。比如,工具是个好东西,能快速入手去专研接口测试;代码也是个好东西,能大量涨薪;但更扎根的底子如果不好,往往一起学习就会难上加难,最终一事无成。