问题的历史:
自动化测试与创建和维护可预测、可重现的测试数据的需求密切相关。手动测试可以使用任意数据,但自动化场景需要对数据库或环境中数据的状态进行精确控制。应用程序的规模、微服务的工作以及隐私要求使得测试数据管理的任务变得更加复杂。
问题:
没有可管理的测试数据,测试会变得不稳定,其结果也不会具有代表性。经常出现以下情况:
此外,使用真实数据可能会违反安全性或隐私政策。
解决方案:
现代方法包括:
关键特性:
可以使用来自生产环境的真实数据进行自动化测试吗?
不可以。这可能导致数据泄漏、违反法规,并且由于生产系统的持续变化,测试也可能不稳定。
仅仅在测试之间清除所有数据是否足以保证测试的稳定性?
不够。重要的是不仅要清除数据,还要正确准备数据到所需状态。此外,大规模清理可能会影响并行执行的测试或服务。
为所有团队提供一个测试环境是否足够?
不够,这会导致不同团队的测试之间发生冲突和冲突。最佳做法是使用隔离环境或容器化(Docker测试套件、临时环境)。
测试团队使用一个测试数据库,其中既有自动化测试也有手动测试。由于手动删除或更改数据,自动化测试经常失败,导致长时间调试和时间损失。
优点:
缺点:
公司实施了短暂环境的基础设施:每个测试在通过Docker展开的数据库的单独副本上运行。固定装置通过迁移脚本自动加载。
优点:
缺点: