测试用例覆盖率是度量测试完整性和有效性的一个重要手段,通常使用测试用例对于需求或代码的覆盖百分比来计算。这里的需求,可以包括涉众请求、需求规格等文档中的业务路径和规则,也涵盖据此衍生出的功能和非功能性方面的一些要求,后一部分内容通常细化于概要设计、测试设计等相关的文档中。

API规格文档用于详细描述其客户端如何调用这些接口,目前主流的规范有Swagger2、OpenAPI3两种,且Swagger3的最新版本版本已经和OpenAPI3相融合。Swagger通过在代码中嵌入注解来自动生成API规格文档,好处是可显著提高API文档对开发者的可维护性和理解性。近几年,一些API管理工具也逐步被越来越多的公司所引入,用户可以通过指定格式的WIKI或自定义的设计器来方便地编写和维护接口规范文档。

接口测试用例不仅可以用于验证API实现的有效性,也可以同时包含API规范、以及性能、安全性等方面的非功能性内容。在接口层面开展更多的测试,不仅可以获得比单元测试更高的业务累计覆盖率,也可以有比基于界面的自动化测试更高的效率。有关接口测试的优势,有兴趣的同学可以查看笔者以前发布的这篇文章

接下来,我们从3个方面,给大家介绍下接口测试用例设计的一些常见思路。

1.从API规格文档生成接口测试用例
以下是一个OpenAPI3文档示例。

openapi: 3.0.0
info:
  title: User Registration
  version: 1.0
  
paths:
  /register:
    post:
      summary: Register a new user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterRequest'
      responses:
        '201':
          description: User registered successfully
        '400':
          description: Invalid request
  /login:
      xxx

components:
  schemas:
    RegisterRequest:
      type: object
      required:
        - username
        - password
        - email
      properties:
        username:
          type: string
        password:
          type: string
          minLength: 8
        email:
          type: string
          format: email
      required:
        - username
        - password
        - email

设计的用例可以:

  • 包含用户注册、登录等文中列出的所有API功能端点(path);
  • 设计至少一个参数正确且可成功注册和登录的一个基本流测试用例;
  • 设计违反上述HTTP请求约束的异常用例,如空用户名、过短的密码和错误的邮箱格式等等;
  • 为不同的响应Code(此处为201和400)设计不同的测试用例。

我们开发的DeepTest,可以协助大家自动生成基于各个请求参数、请求头、请求体中的不同字段约束的异常用例。有兴趣的小伙伴可访问这里试用。
image.png

2.参照需求、设计文档中的用户操作和业务规则条款,设计可以在接口层面验证的功能测试用例。对于基于微服务或前后端分离的应用,在API接口层可覆盖绝大部分的后端业务处理场景。例如:

  • 使用相同的用户名重复注册;
  • 使用相同的邮箱重复注册;
  • 用户成功登录;
  • 登录账号过期;
  • 登录密码错误;
  • 登录密码错误3次,账号被锁定;
  • 密码错误非连续累计3次,账号不锁定。

目前市场上常见的一些接口测试工具如PostMan、MetersphereAPIFoxDeeptest,提供了测试场景的编排功能,无代码创建基于数据驱动、关键字驱动的接口自动化测试已十分方便。
image.png

3.基于接口开展其他的非功能性测试
比如安全性方面,可以测试系统管理接口对于某些用户的限制访问(基于角色的用户授权);项目A的用户不能够访问项目B的数据(数据安全控制)。
性能方面,测试各个接口是否达到预期的并发QPS和请求响应时间要求;也可以模拟双十一等特定时间的业务峰值,验证一组常用的业务操作组合的性能是达到预期。
对于一个长期提供服务的系统,老版本接口的回归测试显得尤为重要,建议大家可以选择主流的一些支持版本控制的接口管理和测试工具。

专题目录


陈哥聊测试
158 声望3.3k 粉丝

资深敏捷测试顾问,国内知名项目管理软件禅道团队成员。