上一篇,我们介绍了 如何利用STP智能测试平台开展接口自动化测试!
而在接口测试中,数据构造是测试设计的关键环节之一,“动态数据”更是提升测试深度、覆盖度与真实性的核心手段。
今天我们就来聊聊:动态数据在接口测试中的用途、以及STP智能测试平台如何借助数据构造能力来自动生成动态数据,让自动化测试变得更加便捷、灵活。
一、数据构造在接口测试中的用途
1. 模拟真实业务场景
接口测试的本质是验证系统在不同输入条件下的行为是否符合预期。而真实业务场景中,数据是多种多样的。例如:
- 用户注册接口需要不同格式的手机号、邮箱;
- 下单接口需要不同金额、商品ID、用户等级;
- 查询接口需要合法/非法的ID、分页参数等。
通过构造数据,我们可以模拟这些真实场景,确保接口在各种业务逻辑下都能正常工作。
2. 覆盖边界条件与异常情况
测试不仅要验证“正常路径”,还要覆盖“异常路径”。例如:
- 超长字符串、空值、特殊字符;
- 超大数值、负数、0值;
- 不存在的ID、过期Token等。
数据构造能帮助我们快速生成这些边界和异常数据,提升测试覆盖率。
3. 支持自动化回归测试
在自动化测试中,接口需要反复执行,如果每次都使用相同数据,容易导致“用例污染”——比如重复注册、重复下单。通过构造数据,可以保证每次测试都使用“干净”的数据,避免依赖执行顺序,提升稳定性。
二、为什么要用动态数据?
1. 避免数据污染与重复执行问题
在持续集成/持续交付(CI/CD)流程中,接口测试会被频繁触发。如果使用静态数据(比如固定的手机号、用户名),会出现:
- 数据重复插入导致唯一性冲突;
- 依赖数据状态(如“待支付”订单)被后续用例修改;
- 用例之间相互影响,导致测试结果不可靠。
而动态数据(如随机手机号、时间戳、UUID)能确保每次执行都是独立、干净的,大幅提升测试的健壮性。
以验证注册接口
为例,在接口传参中, 输入注册的用户名、密码、邮箱等信息。
比如上图中,用户名为testuser
,但若用户名参数采用的是硬编码数据,意味着这条接口用例只能第一次执行能跑通,下次再运行时,会因为用户名已注册而失败。
2. 提升测试的灵活性与可扩展性
动态数据可以基于规则生成,例如:
- 使用Faker库生成随机姓名、地址、公司;
- 使用时间戳构造不重复的订单号;
- 使用模板+变量生成符合业务规则的测试数据。
这种方式让测试用例更具“可配置性”,适应不同环境、不同业务规则,减少维护成本。
3. 支持复杂业务逻辑的测试
某些业务逻辑依赖“数据之间的关联”,例如:
- 用户注册后要登录,登录后要下单;
- 下单后要支付,支付后要查询订单状态。
使用动态数据可以轻松构建这种“链路数据”,让自动化测试不再局限于单接口,而是支持全流程的端到端测试。
三、STP测试平台具备哪些数据构造能力
打开STP智能测试平台,进入到数据构造
菜单,在数据构造中,支持常用数据生成、自定义数据生成、项目变量管理等功能。
1、在常用数据生成
菜单中,支持常用数据一键生成,如姓名、手机号、地址、邮箱、身份证号、年龄、订单号、时间戳等。这些常用数据可单独生成,也可批量生成,在生成数据时,支持选择生成的数据语言,如生成英文数据、中文数据、日文数据等。
除了数据生成外,还可以将常用数据保存为项目变量,供项目内(接口测试、性能测试、安全测试)使用。
以姓名为例,点击生成按钮,可实时预览生成的数据,点击保存变量,可以将变量保存到项目中。生成的变量名默认为$userName_cn
,意味着以后你只需要在接口测试中,通过引用$userName_cn
变量即可动态获取到一个随机姓名。
2、除了常用数据生成外,还可以自定义数据生成。
在自定义数据生成菜单中,提供了常用的数据模板库,以及支持通过数据规则自定义生成任何你想要的数据。
包括可以自定义生成的数据类型、生成模式、生成长度、生成字符集等。几乎能满足工作中所有对测试数据的生成需求。
自定义数据,变量名还可以命名为中文哦
3、所有保存到项目中的变量,可以统一在项目变量管理菜单中进行维护,提供了实时生成预览功能。
在数据构造菜单中,默认保存的变量为项目变量,即同一个项目内有效,除此之外,还可以将项目变量提升为全局变量。一旦设置为全局变量,意味着所有的项目都可以相互共享该变量的使用。特别是针对一些公共通用的数据构造需求,所有项目都可能需要用到的数据,这样就不用所有项目重复设置了。
四、接口测试如何引用数据构造动态变量
1、在接口调试或接口测试场景中,支持通过$
符号来引用项目变量(在数据构造中生成的变量称为项目变量)。
2、先以接口调试菜单为例,进入接口调试页面,选择项目,此时可以列出当前项目中的变量有哪些。
如上图,在username参数栏中,通过引用$userName_cn
即可在发送请求后,每次生成一个随机的用户名。
这里还有一个小设计,当输入框调用的是动态变量(即用$符号),鼠标悬浮时,还可支持实时预览哦。
3、除了接口调试,在接口测试场景配置中,也支持直接引用项目变量。
点击接口配置
除了在接口配置中,可以通过项目变量引用动态数据外,还支持在测试步骤之间,通过变量提取功能来设置动态执行变量,所谓的变量提取
,就是常说的将上一个接口的响应提取出来作为下一个接口的入参。
4、以注册接口->登录接口
为例,将注册接口返回的响应中,提取用户名变量,作为登录接口的用户入参。
通过变量提取生成的变量,我称之为执行变量,使用时,通过
{{}}
符号进行引用。
5、讲到这里,你以为就完了,错!还有更绝的!在接口测试应用中,STP智能测试平台
不仅支持对接口响应中的数据进行变量提取,还可以对变量提取的结果,再进一步处理,将自定义处理的结果再设置为动态变量,从而满足更加复杂的测试场景。
6、比如我想验证产品信息查询这个场景,该场景接口调用链接:登录接口->获取产品列表->查询产品信息
。
在接口调用链中,需要先调用登录接口拿到token,然后将token作为下一个接口(获取产品列表)的认证入参。
我的需求是从产品列表接口中,随机返回一个产品ID,将产品ID作为产品信息查询接口的入参。
如上图所示,通过配置变量提取规则results[*].id
并赋值给变量名为ids
,由于产品列表接口中会返回多个产品,意味着ids这个变量,提取到的值是一个数组,而不是一个单一的产品ID。 而我的需求是想要一个随机有效的产品ID,这就需要对$ids
这个变量再做进一步处理。
只需要在原有的变量提取规则后面,点击后处理脚本即可
后处理脚本,支持通过脚本代码的方式进行更复杂的逻辑处理。(为了方便使用,平台已内置了许多常用的处理函数,选择后对应的名称后,可一键生成函数代码)
// 从其他变量中随机选择元素
// 示例:从变量 'ids' 中随机选择一个ID
const idsArray = getVariable('ids');
if (Array.isArray(idsArray) && idsArray.length > 0) {const randomId = Random.choice(idsArray);return {random_id: randomId,selected_from: 'ids',total_count: idsArray.length};
} else {return { error: '变量 ids 不存在或不是有效数组' };
}
如上述,我们通过后处理脚本,实现从变量ids中,随机获取一个元素,并将元素输出保存到变量名random_id
中,接下来,在测试步骤中,只需要调用{{random_id}}
即可拿到一个随机有效的产品ID。
项目变量、动态执行变量支持在接口的任意位置引用,可以是URL、请求头、请求体、认证等位置。
如果你之前做过自动化测试,想必已经能感受到STP智能测试平台,在测试构造生成这块功能的强大了。受限于篇符,其实还有很多实用技巧,就不一一介绍了。
四、最后
随着测试复杂度的提升,静态数据已无法满足高效、可靠的测试需求。在接口测试中,数据构造决定了测试的广度,动态数据则决定了测试的深度。它不仅帮助我们模拟真实业务、覆盖异常场景,还能保障自动化测试的稳定性与可维护性。
你还遇到过哪些因数据问题导致的测试坑?欢迎在评论区分享你的经历与见解!👇
好了,关于STP智能测试平台的介绍,今天就分享到这里了。
我个人对STP平台的定位是:可开源、可定制、可商业。
STP智能测试平台,也将会作为第2025年最新AI+全栈测试开发技能实战指南(第6期)实战演练项目之一。
在今年最新一期全栈测开训练营中,我们将会带着学员学习掌握如何从0到1开发打造一款STP智能测试平台。 并且本期训练营结束后,STP平台的项目全部代码,可授权给第6期表现突出的学员使用,学员可将平台部署到公司内部使用,这也将是你在公司成果提效、加薪的一大助力。(开箱即用)
喜欢这篇文章?欢迎点赞、转发,让更多人了解动态数据的重要性!我们下期再见!
技术改变世界!--狂诗绝剑