测试数据管理是自动化中最古老的问题之一。早期的自动化(Excel中的测试脚本、宏、旧的QTP)中的数据往往“保存在测试作者的脑海中”或直接在代码中。随着CI/CD和并行运行的发展,需要新的策略:如何避免竞态条件,当多个测试同时使用相同数据时,以及如何确保结果的可重复性?
问题:共享的测试数据很快导致冲突和不可预测的结果。测试变得不稳定,调试困难,数据片段“污染”数据库,多个线程运行导致错误(数据竞争)。
解决方案 — 实施“测试数据每个测试”的策略:
关键特点:
使用生产数据作为测试数据是否正常?
不! 这对安全性、保密性造成风险,并由于数据的变化性导致测试的不可预测性。
仅使用setUp和tearDown来清理数据是否足够?
不总是。他们帮助最小化风险,但并行运行可能会让测试相撞,如果数据保持为全局的或没有唯一化。
可以在烟雾测试和回归场景中使用相同的测试数据吗?
最好不要。烟雾测试应该尽可能独立,而回归测试需要复杂的数据准备,否则可能会导致误报。
在公司中,有一个共同的登录和几个“共享”用户和订单,在所有自动化测试中使用。并行运行导致测试互相删除订单或在多个线程中更改一个订单的状态。
优点:
缺点:
实施了测试数据工厂:在每个场景的测试开始之前,创建唯一的订单和用户,并在测试结束后删除它们,沙盒环境被重新初始化。
优点:
缺点: