写在最前:
我是skytraveler,微博@skytraveler,是一名测试工程师。总在从事API相关的测试工作,也跟好多同行在做交流。API测试其实是非常重要的一项测试活动,但是,我发现很多公司竟然是非常忽略它的,而且,这么多年,竟然没有一些系列的文章好好的说道一下它。因此我想在这里写一些关于API测试的文字,希望能够和同行们一起讨论提高。也希望没有重视起API测试的团队重视起它来,因为这真的很重要。
为什么API很重要?
API是构筑现在软件系统的基石,我们使用到的各种类库、各种本地、远程调用都是以API的形式暴露给我们。随着整个信息产业的发展,API越来越复杂,被调用的频率也一直在爆发性增长。并且随着internet的不断深化发展,越来越多的API提供了各类能力卓绝的原子服务,被整合到无数的系统中去。著名的IT资讯和咨询公司Gartner在一篇预言2020年IT发展的文章中预言:未来应用中有70%的API是调用自公共的API,而不是由自己完成。
这是一个很惊人的猜想,但是这种猜想正在慢慢变为现实,从BAT这样的巨头提供的公共API的惊人使用率就能初见端倪。最常见的例子是:如果你要开发一个GIS相关的系统,你不会去写一份地图,而是会去调用Baidu的地图API;如果你想实现一个类似QQ一样的私有及时通讯系统,你也许会想到环信这样的企业提供的云服务,而不是从头去实现。
API测试现状
既然API很重要,那它的质量一定要过硬才行,但是目前行业普遍的一个现象是:API测试做得并不是那么充分。分析原因,大概有这么几条:
- 传统的软件测试将测试人员同开发人员割裂了起来,测试工作偏向系统测试和功能测试,而API多半的时候是半成品,系统测试往往不会把API的测试纳入其中。
- API测试很多时候需要写程序去调用,这对于很多离代码较远的测试人员构成了工作障碍,也构成了心理障碍。因此很多测试人员不乐意接收接口测试的工作。就算有辅助程序可以适当隔离技术层,也不乐意接手。
- 其实开发人员做API测试是效率最高的。但是目前业界才慢慢的把单元测试这份“测试工作”放到了开发人员头上(还不是所有人认同这一点)。单元测试的内容和API测试是一回事儿么?显然他们概念上并不完全重合,单元测试侧重于函数的内部逻辑实现,但是API侧重于暴露出来的功能是否能够很好的满足下游需要。另外一个考虑是,单元测试只关注自身逻辑。而接口测试需要关注外部依赖。对于很多分前后台开发的团队,后端团队开发的最终产出物就是可用的API,它们显然不是单元测试能cover的。
以上几点让API的测试处于一个灰色的地带。在很多团队中,API甚至没有经过一丝一毫的测试,就被组合起来大用特用了。其后果可想而知。
小系统还好,复杂度不高。但是对于一个公司,如果你的产品复杂度一直在提高,用户也越来越多。如果对API没有一个良好的测试策略,并加以实施。最后公司为了维护系统付出的代价会越来越高,也许有一天会不堪重负,不得不承受灾难性的后果。这样的例子我经历过,也直接听说过了太多。
接上段文字,如果70%以上的开发工作是调用接口,那么,显然接口测试是非常重要的。所有IT从业者都应该把印象中对它的重视程度多提升几个级别。
如需转载,请注明出处和作者@skytraveler (新浪微博)