在当今企业推动数字化转型的背景下,如何在提升研发效率的同时守住质量底线,成为了技术团队尤为关注的话题。软件测试是确保软件质量的重要实践之一,而其中的测试分层策略更是关键。尽管“测试分层策略”这一概念对许多团队来说还比较陌生,它实际上是软件测试中的一个重要组成部分,决定了团队如何根据代码架构的不同,制定相应的测试方法。然而,很多团队在面对测试分层策略时存在认知缺乏、设计不完整、以及与实际工作脱节等问题,这直接影响了测试实践的效率。本文旨在通过提出一个模型,帮助团队建立统一的测试分层策略认知,提升测试实践的效果。
在Google的DORA DevOps的研究中,测试数据管理被视为软件交付和组织绩效的重要能力之一[1],它被用于手动或者自动化测试当中,也可能用于生产环境的全链路压测,良好的测试数据可以快速验证不同逻辑分支的测试用例、重现缺陷或者模拟错误。 但伴随着业务的迅速迭代,数据库、表不断的增加,同时存量的表结构也频繁变更,测试数据的生成与管理也变得越发困难。传统的手动创建测试数据、接口造数方法低效且难以确保全面覆盖,数据的关联性、通用性和复用率也有所欠缺。虽然使用生产数据进行测试看似便捷,但却经常面临用户隐私安全事故的风险。同时,在使用脱敏或历史数据时,数据的有效性和关联性也容易丧失。 在这种情况下,怎样在保证维护测试数据的效率、质量和信息安全的同时,又能最大程度地降低测试数据生成的成本和管理的复杂性呢?
EasyModeling 是我在2021年圣诞假期期间开发的一个 Java 注解处理器,采用 Apache-2.0 开源协议。它可以帮助 Java 单元测试的编写者快速构造用于测试的数据模型实例,简化 Java 项目在单元测试中准备测试数据的工作,在提高编写效率的同时,使单元测试更加整洁易读。经过一年的维护,EasyModeling 已经在几个 Thoughtworks 内部的项目上得到了应用,并迭代发布了几个版本。