API接口测试入门

API是Application Programming Interface的简写,我们又把接口测试叫做API测试,主要用于实现多个系统之间或系统内部模块之间的通信和数据交换的能力。

1.接口定义

接口测试主要用于系统与系统之间以及内部各个子系统或模块之间的交互点。定义特定的交互点,然后通过这些交互点,以及一些特殊的规则也就是协议,来进行数据之间的交互。前后端之间配合工作,就是其中一方定义实现接口,另一方来调用接口,以实现预期功能。

举个简单的例子,我们在开车踩油门时,并不需要知道油门内部的零线/火线以及具体的电路结构,因为汽车制造商已经将给油的一系列操作全部封装成了油门这样一个接口,用户只要傻瓜式地进行踩油门的操作就可以让汽车实现加速。

2.接口分类

WebService和HTTP

(1)WebService接口走soap协议,请求报文和返回报文都是xml格式,通过SoapUI工具进行测试;

(2)HTTP API接口走HTTP协议,通过路径来区分调用的方法,请求报文入参有多种形式,返回报文一般为json串,最常见的是get和post方法。

3.接口测试必要性

(1)效率上:
现在系统的复杂性与日俱增,传统测试方法人工成本过高且效率低下,而接口测试比较容易实现自动化集成,减少人工成本与时间,缩短测试周期;

(2)安全上:
前后端架构分离,只依靠前端进行测试已经完全不能满足系统安全要求,绕过前面实在太容易,需要后端同样进行控制,在这种情况下就需要从接口层面验证。

4.接口测试原理

通过程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对报文做处理并向客户端返回应答,客户端再接收应答的一个过程。

5.接口文档关键部分

接口说明

调用的url

请求方法(get、post)

请求参数,参数类型、请求参数说明

返回参数说明

返回示例

6.接口测试分类

(1)功能测试:
由于是针对基本业务功能进行测试,这部分是两种测试重合度最高的一块,开发同学通常所指的也主要是这部分的内容。
测试覆盖:业务流程,参数类型、可选项等。

(2)边界分析测试:
在基本功能测试的基础上考虑输入输出的边界条件。相对来说接口可以覆盖的范围很广,同样的,接口出现问题的概率也更高。
测试覆盖:边界值、特殊字符等。

(3)性能测试:
接口性能主要关注接口响应时间、并发、服务端资源的使用情况等。越靠近底层,对于系统的性能优化越有利。
测试覆盖:并发数、吞吐量、tps等

7.接口测试工具

Postman,jmeter,soupUI等测试工具。

测试用例基本概念拓展

简单来说,测试用例就是一个文档,描述输入、输出、动作、时间等,其目的是确定应用程序的某个特性是否正常工作,并且达到程序所设计的期望结果。

测试用例的作用

  • 有效性

避免穷举测试,选取代表性的测试数据进行测试,节省时间和资源,提高测试效率

  • 避免测试的盲目性

开始测试之前设计好测试用例,避免盲目测试,使得重点突出、目的明确

  • 可维护性

软件版本更新后,只需部分修正测试用例即可继续开展,降低工作强度,缩短项目周期

  • 可复用性

项目功能的模块化,使软件易于开发,使得测试过程事半功倍

  • 可评估性

程序代码的质量的量化标准应该用测试用例的通过率和测试输出软件缺陷的数目来进行评估

  • 可管理性

测试用例是测试人员的重要参考依据,也可以作为检验测试进度、测试工作量的因素,来对测试工作进行有效管理

测试用例的设计

通常由经验丰富的测试人员设计测试用例,经验较少的人员从执行测试用例开始进行,随着经验和技术的积累,再逐渐开始参与测试用例的设计工作。

tip1.测试设计说明

类似开发人员有项目开发功能书一样,测试人员也要有说明书来指导测试人员如何设计测试用例,包括但不限于:被测特性、测试所用的方法、测试准则等。

  • 标识符

  • 被测特性

  • 方法

  • 测试用例信息

  • 通过/失败规则

tip2.测试用例编写

  • 用例的编号

由测试引用的唯一标识符,便于查找测试用例,也便于用例的追踪和管理

  • 测试标题

对测试用例的描述,清楚表达用例的相关用途等

  • 测试项

测试用例应该具体详细的描述所测试项的详细特征,更加详细具体

  • 测试环境要求

该测试用例执行的外部条件,软硬件具体指标和测试工具等

  • 特殊要求

对环境的特殊需求,如所需设备型号、对防火墙等的特殊设置

  • 测试输入说明

提供测试执行中的各种输入条件。根据需求中的输入条件,确定测试用例的输入。

  • 操作步骤

提供测试执行的过程步骤,对于复杂的用例,应该分为几个步骤分别完成测试。

  • 预期结果

提供测试执行的预期结果,预期结果应该根据软件需求中的输出得出。如实际结果与预期结果不符合,则测试不通过。

  • 测试用例之间的关联

用来标示该测试用例和其他测试用例之间的依赖关系。在实际测试中,很多测试用例并不是单独存在的,而是可能存在 某种相互依赖关系。

  • 测试用例设计人员和测试人员

  • 测试优先级

一般分为0~4的一共5个等级,通过优先级来标注出软件测试的重点和先后顺序。

测试用例的分类和阶段

测试阶段 测试类型 执行人员
单元测试 模块功能测试、部分接口测试、覆盖测试、路径测试 开发与测试结合
集成测试 接口测试、路径测试、部分功能测试 开发与测试结合或测试
系统测试 功能测试、兼容性测试、性能测试、用户界面测试、安全性测试、强度测试、可靠性测试 测试人员
验收测试 对于实际项目基本同上、包含文档测试 测试人员或包含用户