• 接口自动化测试用例编写规范


    一、接口自动化测试用例设计方法

    1.1接口参数覆盖

    接口测试通过输入使用参数组合,获得服务器返回值,并根据预先设定的规则判断是否符合预期值。在接口测试中,根据接口的功能不同,需要侧重检测的方面也不同。主要从以下几个方面考虑用例设计:

    1) 前提条件

      有些接口需要满足前提条件,才可以成功获取数据。

      例:常见的需要登录    token

    2)      参数类型(数值型、字符型、布尔型、枚举型、组合类型)

      a.       特定接口字段对入参的参数类型有要求

      例:商品的价格

    3)      异常值:null、空字符

      a.       必要参数不允许为空

      例:登录账号/密码

    4)      边界值

      a.       有限定取值范围的字段(取值范围内的最大、最小、最大+1、最小-1,范围内取值)

      例:用户可用积分

    5)      默认值

      a.       非必选参数,未传值时采用默认值

    6)      非法值

      a.       类型不匹配

      b.      超出类型范围

      c.       超出操作系统限制

      d.      系统关键字

    7)      参数组合

      采用笛卡尔积的全组合策略。

      例:3个参数,每个参数有5种取值,组合起来就有5x5x5=125个测试用例,优点是覆盖全面,缺点是组合数量巨大,工作量大。

    8)      全对偶组合

      保证每个参数和其他参数都有组合出现,即采用尽可能少的组合覆盖尽可能对的参数,覆盖性价比很高。

      例:3个参数,每个参数有5种取值,大约只需25个用例即可覆盖。

    9)      单点失效

      单个参数使用非法或异常值,其他值保持正常取值。

    10)   多点失效

      多个参数使用非法或异常值,其他采用正常取值。

    11)业务规则、功能需求

      根据时间情况,结合接口参数说明,可能需要设计n条正向用例和逆向用例。

    1.2场景覆盖

      a.       从用户角度进行设计的测试覆盖。主要是模拟用户的业务操作,达到对用户行为的覆盖。

      b.      场景测试优先覆盖正常路径,其次是分支路径以及异常路径。

      c.       测试场景保持独立性和原子性,每个测试场景完成独立的功能,不受其他操作的影响。

    二、测试断言设计

    自动化测试中的测试通过条件,断言用于判断测试用例执行结果是否符合预期。

    设计原则:

     a.       尽量保持断言形式统一。

      b.      选择具有明确的message参数的断言方法,使断言结果的可读性更强。

      c.       选择断言的对象需准确,有代表性。

      d.      不使用接口响应数据作为唯一断言,需结合数据库相应数据变化做断言。

    三、自动化用例编写规范

      a.       一个脚本是一个完整的用例。

      b.      用例中正向逻辑用例为主,逆向逻辑用例为辅。

    逆向逻辑的情况较多(例如手机号输错有很多种情况),逆向逻辑按等价类划分法选取具有代表性的用例编写。

      c.       用例之间不要产生关联性,即编写的每一个用例都是独立的,不依赖或影响其他用例脚本。

      d.      整个脚本中只对验证点进行验证,不需对整个脚本每一步都做验证。

      e.       测试用例的上下文有一定的顺序性,能够互相连接,并且前置条件清晰。

      f.        尽量把重复任务放入一个方法中,这样它可以被多个测试用例调用。

      g.      测试用例只要不匹配预设的验证点,抛出合适的异常并提供详细的失败信息。

      h.      前置条件的准备尽量调取功能接口完成,非必要情况不使用直接修改数据库字段值的形式(必要情况下也要保证所修改字段不影响其它数据或系统功能)  。

      i.        统一命名方式,测试用例模块名、方法名以test_api名称命名。

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

  • 相关阅读:
    系统编程 day12 (linux ) 消息队列 的函数 与知识
    机器学习——正则化
    园区高效管理的“神器”--快鲸智慧园区管理系统
    Microsoft的PromptBench可以做啥?
    探索 Google Guava
    6、Linux-服务管理、权限管理和授权(sudo权限)
    就业班 第三阶段(nginx) 2401--4.22 day1 nginx1 http+nginx初识+配置+虚拟主机
    Visual Studio 和 VSCode哪个更好?
    微前端是模块化后的最终选择
    SpringBoot 集成 SpringSecurity + MySQL + JWT 附源码,废话不多直接盘
  • 原文地址:https://blog.csdn.net/YLF123456789000/article/details/134427363