CMA/CNAS双资质软件测评机构【Apifox高效编写自动化测试用例的技巧和规范】

Apifox高效编写自动化测试用例需要按照一套规范并充分利用内置功能来实现用例的可维护、可读和高包括率。

自动化测试用例的编写规范

1. 命名和结构:

用例命名:采用 情形条件预期结果 格式。如 用户登录_使用正确密码_应成功并返回令牌。

用例结构:确定包含前置条件、测试步骤、断言三部分,思路清晰。避免使用"测试1"、"新增用例"等无意义名称。

**2. 独立:**每个用例只证实一个独立的业务或功能点。用例之间无依赖,可单独或按任意顺序执行。

**3. 数据分离:**测试数据(尤其是动态参数)和用例分离。使用环境变量、数据变量或外部文件管理数据。

**4. 确定断言:**断言应具体、完整,包括状态码、响应体结构、重点字段值、响应时间等。

**5. 清理和还原:**对会产生脏数据的测试(如创建、修改),需在后置操作中添加清理步骤(如删除测试数据),保证干净。

**6. 完整文档:**在用例的描述中清晰说明测试目的、业务思路、特殊的测试数据含义等,便于其他测试人员理解和维护。

Apifox技巧和功能应用

掌握以下Apifox特性,能极大提升编写和执行用例的效率。

技巧一:环境变量和全局/局部变量

实现数据分离和用例可配置

环境变量:用于管理不同环境(开发、测试、生产)的基础URL、通用账户等。在用例中通过 {{BASE_URL}} 引用。

全局/局部变量:在测试流程中动态存取值。

提取变量:从一个请求的响应中,使用JSONPath或 正则表达式提取值,并保存为变量。

javascript 复制代码
// 在"后置操作"中提取响应中的token,并设置为变量

pm.environment.set("auth_token", pm.response.json().data.token);

引用变量:在后续请求的URL、Header、Body中通过 {{auth_token}} 引用。

文章来源:卓码软件测评

精彩推荐:点击蓝字即可
软件负载测试API自动化测试软件测试第三方软件测试软件性能测试软件测试机构

技巧二:使用强大的断言库

Apifox根据 pm.test 和 pm.expect 提供了丰富的断言能力,超过简单的状态码检查。

javascript 复制代码
// 在"后置操作"的"Tests"标签中编写

pm.test("响应状态码为200", function () {

    pm.response.to.have.status(200);

});



pm.test("业务状态码为成功", function () {

    const jsonData = pm.response.json();

    pm.expect(jsonData.code).to.eql(0); // 断言业务码为0

});



pm.test("响应时间在合理范围内", function () {

    pm.expect(pm.response.responseTime).to.be.below(500); // 断言响应时间小于500ms

});



pm.test("响应体包含重点字段且格式正确", function () {

    const schema = {

        type: "object",

        required: ["code", "data"], // 要求必须包含的字段

        properties: {

            code: { type: "number" },

            data: {

                type: "object",

                required: ["userId", "userName"],

                properties: {

                    userId: { type: "number" },

                    userName: { type: "string" }

                }

            }

        }

    };

    pm.response.to.have.jsonSchema(schema); // 使用JSON Schema证实结构

});

技巧三:参数化和数据驱动测试

提升用例包括率和复用性的最高效手段。Apifox支持在测试套件或测试用例中关联外部CSV/JSON文件进行数据驱动。

准备数据文件(如 logindata.csv):

复制代码
username,password,expected_code,expected_message

admin,admin123,0,登录成功

在测试步骤中引用变量:在请求的Body中,使用 {{username}}、{{password}}。

在断言中引用变量:在Tests脚本中,使用 pm.iterationData.get("expected_code") 获取当前行数据。

运行数据驱动测试:在测试套件中,为该用例选择数据文件,运行时会自动迭代每一行数据执行测试。

技巧四:利用前置/后置操作实现流程化

前置操作:可用于准备测试数据(如调用一个接口创建一个测试用户,并存储其ID)、设置通用请求头等。

后置操作:除了断言和提取变量,还可用于清理测试数据(如删除上面前置操作创建的用户)。

相关推荐
饼干哥哥2 小时前
腾讯会议出AI同传了?这下跨境人开会不用担心哑巴英语了
人工智能·性能优化·腾讯
在水一缸3 小时前
深入浅出 Catch2:现代 C++ 测试框架的优雅实践
开发语言·c++·单元测试·log4j·测试框架·catch2
爱喝水的鱼丶3 小时前
SAP-ABAP:ALV跨版本兼容指南——适配ECC与S4 HANA系统的ALV开发注意事项
开发语言·性能优化·sap·abap·经验交流
世人万千丶6 小时前
鸿蒙Flutter Flex布局性能优化
学习·flutter·性能优化·harmonyos·鸿蒙·鸿蒙系统
花椒技术1 天前
AI Coding 后半程:6 类 QA Skills 如何接住测试与发布?
单元测试·ai编程·测试
疯狂打码的少年1 天前
【软件工程】软件测试阶段:单元测试与集成测试(高频对比考点)
笔记·单元测试·集成测试·软件工程
糖果店的幽灵1 天前
【langgraph 从入门到精通graphApi 篇】生产部署与性能优化
人工智能·性能优化·langgraph
●VON1 天前
鸿蒙 PC Markdown 编辑器查找系统:大小写、整词与循环定位
华为·单元测试·编辑器·harmonyos·鸿蒙
heimeiyingwang1 天前
【架构实战】CI/CD流水线:从手动部署到一键上线
ci/cd·架构