• 接口测试设计及接口自动化工具分享


    接口测试不是单纯请求接口

    举一个极端的例子:接口测试实现就是简单的把要测试的接口通过抓包实现实现自动化,入参参数值原方不动的作为入参传参,断言接口返回为200就好了。接口测试没有设计用例,如果真是这样实现接口测试,顶多就算校验接口,其实校验接口也需要根据接口定义设计用例全面覆盖接口测试。那真正的接口测试需要注意哪些方面呢?做了几年的接口自动化总结经验的我跟大家一块讨论讨论。

    接口自动化测试用例设计

    1.    接口用例不能乱,目录结构很重要

    接口用例不能把每个接口名称起一下放在那就完事了,还是建议大家要跟写功能测试用例一样,分模块、分功能。这样在开发用例脚本的时候也能层次清楚,一目了然,比如说要统计哪些模块有多少用例;筛选需要测试的模块用例等等,最重要的是同一个模块可能有很多共用的变量或者方法可以共享。接口用例示例如下表所示:

    模块

    功能

    测试点

    参数配置

    结果验证

    登录模块

    快捷登录

    快捷登录手机号和短信验证码匹配

    phone=10086;smsCode=123456

    statusCode=200;token=123456

       

    快捷登录手机号为空

    phone=;smsCode=123456

    statusCode=200;isSuccess=false

       

    快捷登录短信验证码为空

    phone=10086;smsCode=;

    statusCode=200;isSuccess=false

     

    账密登录

    邮箱账号登录

    。。。

    。。。

    注册模块

    手机号注册

    正常注册

    。。。

    。。。

    2.    接口验证常常需要考虑的情况

    • 字段是否为必需字段
    • 字段值是否为必填,注意这一条主要是考虑参数是否可以为空值,上一条主要考虑某字段是否可不放在请求接口中。
    • 字段值要求的类型,比如字段要求为字符串,测试用例可以设计为非字符串类型。针对字段类型为数值型,还要考虑是否可以为小数、负数、不同小数位数等等。
    • 字段值之间的联合校验,比如接口字段中有单价、数量和总价,势必要验证一下总价=单价*数量。
    • 返回字段是否完整以及各字段类型是否正确。
    • 验证返回字段值时可以考虑与数据库存取的数值对比,而不是只验证返回的数字。
    • 接口需要验签的话可以验证签名不正确的情况。
    • 每个接口只需一条用例验证所下发字段的完整性,其他用例只需关注测试点。主要是考虑万一有某个字段缺失或者返回值修改,如果所有用例都去验证全部返回字段,则其相关接口的用例都会失败。
      后边想起其他的情况,我再追加,也欢迎各位提供

      我的一个接口校验判断方法:

    • 读接口校验:分别请求基础环境和项目环境,对比两个环境的返回结果,如果一致说明代码改动对此接口用例没有影响,进而可以判定用例校验通过

    • 写接口校验:一般写接口落库的数据可以通过一个或者多个读接口拿到,那么同样的写接口分别在基础环境和项目环境进行落库,只要对应环境的读接口返回结果一致,那么校验通过

    • 不论读写,都有一些随机字段,为了降低接入成本,需要提供计算忽略字段能力

    3.  扩展接口用例,覆盖功能场景

    接口自动化测试还有一类是场景化测试,是接口自动化测试替代或着协助部分手工功能测试的意义所在。比如说我想测试删除淘宝购物车某个商品这个接口,我们要完成的就不单单是执行删除购物车商品这个接口,而是需要多个接口构造这个测试场景。如下图所示:

    因此,在设计接口自动化测试用例的过程中,除了要针对每个接口单独设计用例之外,还要从功能的层面设计用例,从而达到验证产品业务逻辑的目的。

    接口自动化测试工具对比

    适合自己的才是最好的,依据自己要测试的复杂业务接口打造自己的接口自动化测试框架。

    工具

    学习成本

    录制

    持续集成

    测试报告

    用例管理

    性能测试

    扩展难度

    最低要求

    Java+rest-assured

    支持

    支持

    支持

    Java

    Python+Unittest+Request

    支持

    支持

    支持

    Python

    Roberframework

    支持

    支持

    不支持

    Python

    Httprunner

    支持

    支持

    支持

    Python

    Postman+Newman

    支持

    支持

    收费支持

    JavaScript

    Jmeter+Ant

    支持

    支持

    支持

    Java

    Vue+Flask&jango

    支持

    支持

    支持

    Python

  • 相关阅读:
    Mysql8.0中caching_sha2_password报错解决
    Centos7 安装mysql-8.0.18(rpm)
    如何有效的清理yum缓存
    虚拟机安装后配置IP地址
    正确计算linux系统内存使用率
    Linux 怎样更改locale语言设置
    linux把EDT时间修改为CST格式
    开放接口的安全验证方案(AES+RSA)
    Linux下JDK中文字体乱码
    服务器http请求https服务时报错解决方案
  • 原文地址:https://www.cnblogs.com/Tanwheey/p/14419614.html
Copyright © 2020-2023  润新知