接口测试 1. 接口测试,想说爱你 “很” 容易

solo · July 07, 2017 · Last by gggyy3 replied at September 24, 2019 · 4017 hits
本帖已被设为精华帖!

接口测试没什么高深,只是测试的对象是接口而已。

案例

某公司发现,价值 100 元的商品,在该公司网上商城被以 0.01 元买走了很多。攻城狮们火速定位,问题原因很快被找到了,原来是购买商品接口的 bug。该接口需要 3 个参数:商品 id、商品单价、购买数量,而服务器根据接口传过来的商品单价(0.01 元)生成了订单。服务器本应根据数据库中的商品单价 100 元来生成订单。如下图,我们将页面上的单价修改后,再购买,提交到服务器的商品单价就是 0.01 元。
image

image

作为测试工程师的你,有做过这种测试吗?

如果没有强烈建议你赶紧补充测试。侥幸是测试工程师的最大天敌之一


what-接口是什么?

在计算机中,接口是计算机系统中两个独立的部件进行信息交换的共享边界。举个例子,我提供加法的计算接口,你给我两个数,我就给你返回一个和。

what-什么是接口测试?

狭义的接口测试指的是对接口进行测试,上个例子中测试的是不同输入参数时,我加法的返回是否正确。一般讲的接口测试是这种。

广义的接口测试包含接口提供方、接口调用方的测试。 比如,你调用我的接口执行加法,我返回错误的响应,或者我响应超时,这时你的处理是否正确。


为什么要做接口测试?

上面的案例就能说明做接口测试的重要性。一般做接口测试有如下原因:

  1. 一般的功能测试,覆盖不到多种情况。(如上例所示)
  2. 从安全角度考虑,只依赖于前端的校验不能满足要求,需要服务端也要做校验,比如:APP 上一个充值的界面,充值金额输入框不能输入负数,测试时,我们要确保服务器也做了这个校验。有一万种手段绕过前端验证。
  3. 从安全的角度考虑,用户密码、其他用户隐私信息传输时都需要进行加密。
  4. 当 APP 的代码不更新,而服务端代码更新时,直接通过接口自动化测试就能快速知道是否影响 APP 的功能。
  5. 很多系统是没有界面的,只提供接口功能,没法通过界面的方式进行测试。

6. 接口测试相对容易实现自动化,也容易实现持续集成,且相对 UI 自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

How-怎么做接口测试?

“怎么做接口测试” 这个问题可以分解为两个问题:

  1. 怎么设计接口测试用例?
  2. 怎么执行接口测试?
怎么设计接口测试用例?

image

怎么执行接口测试?
  1. Fiddler、SOAPUI、PostMan 等可以做半自动的接口自动化测试;
  2. 使用 Robot Framework 做全自动化的接口自动化测试;
  3. 自己用代码做全自动的接口自动化测试,如 Java+testNG;

4. 找其他第三方平台做全自动的接口自动化测试。

总结

本文讲了接口测试 what、why、how 的问题,在后续的文章中会逐步深入,讲工具的使用、接口自动化测试的框架搭建、接口测试出现问题的一般分析思路等。一部大片刚刚拉开帷幕,敬请期待!

共收到 24 条回复 时间 点赞

在社区讨论不是更好?qq 群讨论,文字还容易流失

how 中没有提到 JMeter 呢

3Floor has deleted

后端没有对前端传进的参数进行校验,我也被这坑过,一把泪啊

—— 来自 TesterHome 官方 安卓客户端

思寒_seveniruby 将本帖设为了精华贴 07 Jul 22:34

文中的例子很赞,很真实地反映了接口测试的重要性~

👍~

jmeter 也很好用

接口安全方面用 burpsuite 挺不错的

Robot Framework 怎么做接口测试?

沐芓李 回复

应该是基于 python 的 requests 库,再安装 robotframework 官方的 obotframework-requests 库进行 http 接口的测试的吧😀

solo #13 · July 11, 2017 Author

谢谢

solo #14 · July 11, 2017 Author
回复

是的是的

solo #15 · July 11, 2017 Author
blabla 回复

忘了写,我的锅,哈哈。

@solochen84 楼主,Postman 的命令行工具 Newman,也是可以做持续集成的,我现在就是 Newman+Git+Jenkins+Slack 做的接口监控

solo #17 · July 12, 2017 Author
小背影 回复

恕我孤陋了,多谢兄弟!

solo #18 · July 12, 2017 Author
小郑 回复

是的,我用过

@solochen84 楼主,我想借鉴你的分享,做个 PPT,给我们小组做个培训,OK 不

solo #20 · July 24, 2017 Author
ma 回复

可以的

感觉还是自己写比较方便,python:requests 完全可以的

charles 直接修改接口参数更便捷!只是不利于保存😂

感谢分享,巩固了很多基本知识~

感谢分享

感谢分享

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up