<audio id="audio" title="开篇词 | 把接口测试这件小事做深、做透" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/3d/f6/3dde5fcd8e1d3eb14e44b5c379b2eff6.mp3"></audio>

你好，我是陈磊，欢迎来到我的接口测试课。

我曾经在京东中台工作，经历了京东虚拟平台质量团队从业务驱动到技术驱动的转型过程，我也是整个过程的推动者之一。

我对接口测试的认知，是我在从测试工程师做到测试架构师这个过程中逐渐形成的，因此，我想先和你讲讲我的从业经历，跟你分享一下我和接口测试的缘分。

## 接口测试思维，给我带来技术与能力的跃升

我在2009年硕士毕业后，就成为了一名软件测试工程师。刚入行时，我一直在做功能测试，主要的工作内容就是设计测试用例，然后手动执行。后来在工作中，开始人工回放大量的测试用例，我每天被各种项目的测试用例淹没在电脑前，使用最多的软件就是Excel。**大量重复性的工作让我逐渐失去了目标，那时我认为，测试就是不断地人工点点点的操作，不是一个纯技术的工作。**

后来我被自动化测试的浪潮拍醒，开始用Selenium自娱自乐地写自动化测试脚本。一开始我还是乐在其中的，刚接手的项目，写好自动化测试脚本后，再次迭代时我只要运行一下测试脚本，等着脚本自己运行结束就可以了。

但随着项目不断迭代，我的Selenium脚本越来越难以应付我的测试任务了。最开始我还可以通过它来“偷懒”，到后来，它反而变成了我测试工作中的负担。不维护它，我心里觉得不甘；继续维护它，又平白给自己增加了更多额外任务。那时界面自动化测试的一些问题我都遇见了，例如项目页面变更频繁导致测试脚本维护成本特别高、页面重构导致脚本大面积失效等，诸如此类的问题导致我加班时间越来越长，只能用996的工作节奏才能勉强跟得上项目进度。

那时好像也没有极客时间这么好的学习应用，我把碎片时间主要用在了刷技术类微博上。记得有一次偶然的机会，我在一篇微博文章上看到了Postman这个做接口测试的小工具，当时它的功能还没有现在这么强大，但我也被它方便、易学、易用的特点吸引了。

我开始把Postman应用到我的工作中，从接口测试开始完成我的测试任务，并逐渐积累了很多测试脚本。在使用Postman开始接口测试后，我逐渐放弃了Selenium的界面自动化测试，也摆脱了加班维护界面自动化测试脚本的困境；同时依靠它强大的功能，也提升了整个项目的测试工作速度，因此在很长一段时间里，我的工作都很轻松，每天都能准时下班。

**Postman这款工具也让我重新思考了测试工作，我开始逐渐体会到，测试工作也是一项技术驱动的工作，测试工程师也是一个技术岗位。**

接着在一次工作中，由于被测系统的接口不是HTTP协议，我这才发现，Postman在非HTTP协议的接口测试上，已经没有办法发挥任何作用了，于是我开始自己写接口测试脚本，并慢慢将它封装成自己的测试框架。我做的测试框架从我的第一份工作伴随我到现在，已经经历了无数次的迭代，我现在依然还在维护它。

后来，我在京东中台担任测试架构师，主要负责中台的微服务接口测试，以及提高质量效能等工作，我的工作目标就是让机器做完接口自动化测试中费时、费力的事情，这包括测试脚本的开发、测试数据的准备、测试执行以及测试结果收集等待等一系列工作。

我和几个小伙伴也一起开发了自动的自动化接口测试平台AAT，我也是AAT自动化脚本生成算法的主要设计者之一，并在各种技术峰会上对它的关键算法做过详细介绍。关于它的一些主要思路，我在我们团队一起撰写的《京东质量团队转型实践：从测试到测试开发的蜕变》一书中也有介绍，如果你对它感兴趣，可以去看看这本书。

在京东工作期间，我通过引入算法完成了测试框架的一次完美升级，主要实现了框架自动的编写测试脚本，给出推荐的测试入参数据等特性。**但我深知，这些高级功能的实现都离不开我在之前所有工作中形成的接口测试思维，它仅仅是在一些特别的方向上变得更加先进和智能而已。**

伴随着我的成长，我的接口测试框架也在不断变得完善，就像武侠小说里那种人剑合一的感觉一样，我的技术和我在共同成长。在这个过程中，我完成了从一个具体的测试代码到一个框架设计的思维转变，拥有了平台设计的思维，并通过不断尝试和探索，完成了智能化测试框架的设计和开发。

从使用工具完成接口测试，到自己写代码完成接口测试，然后慢慢封装自己的框架，最后走到让测试框架更智能的技术路线上，这一路我走了十几年，走过不少弯路，也趟过不少坑。

在这个过程中我最深的感触就是：无论你在工作中参与了一个多么智能的测试平台的设计与开发，还是引入了一个多么强大的自动化测试框架，**你首先都要会用最原始的方式完成这件事情，这才是万变不离的宗。在这个基础上，如果你掌握了接口测试思维，那你不只可以快速掌握某一种测试工具来解决问题，更可以打造属于自己的测试框架，最终建造出只属于你自己的终极测试框架。**

因此我设计这个课程，就是从接口测试的思维开始，教你把业务测试的思维和接口测试的技术结合到一起，合成接口测试的思维，最终让你拥有接口测试的能力，这种能力既包含了工具的使用、代码的编写同时也包含用例的设计。

## 为什么说接口测试是你的必修课？

那么在测试中，我为什么要强调接口测试的重要性呢？

**从它对项目的影响来说，接口测试直接测试后端服务，更加接近服务器上运行的代码程序，也更能发现影响范围广泛的Bug。**

我记得在《软件测试的艺术》中有这么一句话：“越早发现Bug，修复的成本越低。”

随着现在中台化、微服务化的发展，一套服务支持多种终端，例如Android端、iOS端、Web端等，这些服务都是由一套后端服务支持的，上面这句话就可延伸为“越接近底层的Bug，影响用户范围越广泛”。

就如同你发现了一个Web端的界面错误，那么这个Bug只会影响Web端用户，但是如果后端服务有一个Bug，这个Bug有可能会影响所有用户，无论他是使用电脑还是手机访问我们的系统。而接口测试就是为了后端服务测试而生的，它会保证后端服务的质量，避免这种情况出现。

**抛开它对项目的影响，单单从它对你自身的影响来看，你会发现，如今进入任何一个招聘网站，随意点开一个测试工程师的招聘要求，接口测试几乎已经成为测试招聘中一项必备的技能了。**

所以作为一名测试工程师，掌握接口测试，并能熟练完成接口测试，无疑对你在求职时和工作中都有很多好处，比如：

- 增加自己的技能，在找工作时获得更多机会；
- 通过接口自动化完成接口回归测试，让自己的工作更轻松、更高效；
- 通过持续集成平台调用接口自动化测试，为流水线提供质量保障方法和手段，赋能研发。

## 这个专栏是如何设计的？

为了更好地理解和学习接口测试，我来和你说下这个课程的设计思路。

我把整个专栏的内容分成了三大模块，分别是初级技能篇、综合技能篇和进阶技能篇。

- **初级技能篇。**在这里我会带你重新认识接口和接口测试，了解接口测试都包含哪些测试活动，教你如何由测试工程师主导、整理接口测试需要的输入条件。我也会带你合成接口测试技术和业务测试知识，让你形成接口测试思维。
- **综合技能篇。**在这里我会教你如何从流水账式的接口测试脚本，一步步抽象出属于自己的接口测试框架。这样随着课程的深入，你会建立一套自己的接口测试框架，也会同时完成从接口测试到接口自动化测试的转变。最后，我还会告诉你一种借力打力的方法，借助工具的优势，弥补测试框架的缺陷。
- **进阶技能篇。**在这里我会教你如何利用测试工程师的思维，开始并顺利完成一个陌生的协议接口的测试任务，同时将它加入到自己的测试框架中，不断提升它的测试能力。测试框架是你强大的武器，框架数据层的封装则是你的弹药库。所以最后我会教你完成外部依赖解耦的方法和思路，保证你能顺利完成测试任务，并不会因为遇见不靠谱的队友而迟迟无法交付。

测试行业是一个技术驱动的行业，而在测试的工作内容中，接口测试又是一项基础技术能力。

我相信在我们一起学习的这段时间里，我会和你一起学习这项基础技能，我会将你带入一个通向更有价值、更有满足感的任务中，让这个过程中赋予你接口测试的思维和技能；当你完成这个专栏的学习后，你也会带走有你个人标签的接口测试框架，这些都会让你这个行业里身价倍增。

纵观接口测试的发展，这一项技术在最近两年才上了快车道，所以现在上车，你并不算晚。最后，欢迎你在留言区写下你的工作经历，以及你对接口测试的看法；也欢迎你先为你自己的接口测试平台起一个名字，并在留言区先立下自己的目标，我们一起在这个专栏，与一群志趣相投小伙伴相互督促，相互鼓励，一起学习进步，我相信在学习完所有课程后，你一定会顺利完成你的目标！
