1.1 接口测试背景

应用程序编程接口(Application Programming Interface,API)是近年来最流行的技术之一,强大的Web应用程序和领先的移动应用程序都离不开后端强大的API。API技术的应用给系统开发带来了便利,但也对测试人员提出了更高的要求,如何以一种有效的方式测试这些API,并且确保它们按照预期运行,是目前测试人员面临的主要问题。

大多数互联网公司和团队都在实施敏捷开发项目,在敏捷开发产品的生命周期中,测试人员需要一种简单、快捷的方法自动化测试API,甚至希望能够监控生产环境API(线上环境)的实时状况。

本书将介绍一套完整的接口自动化测试解决方案,帮助读者快速了解和掌握该方案,并顺利应用到实际项目中。

近年来项目开展接口测试的比例逐年上升,如图1-1所示。

图1-1 受访者所在项目开展接口测试比例统计

图1-1反映出从事接口测试工作的人员越来越多,应用接口测试的项目也越来越多。

1. 接口测试的必要性

目前,软件系统的复杂度不断上升,传统功能测试的片面性及滞后性导致测试成本急剧增加,且测试效率大幅度下降,仅靠功能测试已难以保证项目质量及进度。而接口测试的应用,恰好能使测试团队更早、更深入地介入项目,这样测试人员在项目初期就能发现系统深层次的问题,降低问题修复的时间成本。同时,由于接口的变更概率远远小于用户界面(User Interface,UI)的变更概率,因此,接口测试自动化维护成本比UI自动化维护成本更低,接口测试相对更容易实现自动化测试持续集成,且可以减少回归测试的人力与时间成本,缩短测试周期,满足后端快速发布版本的需求。持续集成是接口测试低成本、高收益的根源,是接口测试的灵魂。

2. 接口测试的原理

测试人员借助工具模拟客户端向服务器端发送请求报文,服务器端接收请求报文后,对相应的报文做出处理并向客户端返回应答,工具模拟客户端接收应答,然后测试人员检查应答是否准确,这就是接口测试的原理。

3. 接口测试的范围

关于接口测试的范围,主要从以下两方面进行介绍。

(1)是否所有的接口都需要测试?

随着系统复杂度越来越高,接口越来越多,想完全覆盖所有接口是一件很困难的事情。通常情况下,主要测试最外层的两类接口:数据进入系统的接口(调用外部系统的参数为本系统使用)和数据流出系统的接口(验证系统处理后的数据是否正常)。

(2)被测接口需要测试哪些方面?

测试人员需要关注被测接口的功能是否实现、性能是否达标、安全性是否满足,重点关注数据的交换、传递、处理次数以及控制管理过程。