可持续软件测试:为更绿色和更高效的未来制定 5 项策略
最近看到一篇文章是关于软件测试与节能减排的讨论的,可持续发展这个观点在西方国家目前经常被拿出来探讨,因为这与气候变化等的人类世问题关系非常密切。把这篇可持续软件测试:为更绿色和更高效的未来制定 5 项策略 简单翻译了一下,里面还是有很多中肯的建议的,一些看法其实与效能提升关系密切,毕竟效率提高了,消耗和浪费可能会有所减少。
背景
在技术进步与进步同义的时代,软件开发的生态足迹往往被忽视。
- ShiftProject 的一项研究估计,2018 年信息和通信技术(ICT)行业的碳足迹约占全球温室气体排放的 2-3%。
- 彭博社预测,到 2030 年,IT 系统将占全球能源需求的惊人 20%。从这个角度来看,交通运输业目前占全球能源消耗的 25%。
- 根据国际能源署(IEA)的数据,2018 年数据中心在全球消耗了约 200 太瓦时(TWh)的电力。
绿色软件开发的出现宛如灯塔,提供了一种转向生态友好实践的范式转变,与全球对可持续发展的迫切呼吁一致。这种方法不仅仅是一个流行语,它呼吁在软件生命周期中致力于资源效率、减少能源消耗和全面考虑环境。
通过优化软件测试流程中的资源利用和能源需求,组织可以降低整体测试成本。对于大型测试项目来说,这可以节省大量的资金。此外,测试过程变得更加高效和流线化,从而实现更快的交付周期和更短的上市时间。
目标很简单:优化测试策略和自动化实践,以节省资源,从而节省能源。
以下是 5 项策略,可立即在您的组织中启动“绿色 QA”。
1. 使所有测试执行“上下文相关”
- 仅执行与代码更改相关的测试。避免盲目执行;不要在每个环境上运行每个测试。避免大批量的测试执行。这将减少资源消耗并最大限度地减少能源使用。
- 避免像晚上、一天多次等计划执行。这些执行会消耗太多资源,如果自上次执行以来部署的代码没有变化,则可能不会提供任何价值。
- 将测试隔离,确保每个测试套件或测试用例在不影响其他测试套件或测试用例的情况下独立运行。这可以防止资源争用并提高并行执行的整体效率。减少测试间依赖,以便更容易地在不等待其他测试完成的情况下并发执行测试。
- 利用云平台进行测试执行,因为它们可以根据需要动态分配资源。这可以为能源效率做出重大贡献。
- 重新设计 CI 和 CD pipeline,以在各种“测试”阶段结合上述原则。
可以通过转向 Trunk-based 开发和使用注释在代码中标记测试并将其作为参数传递给 CI/CD pipeline 来实现。
2. 实施节能的测试自动化 (编码) 实践
测试执行能耗 = 活动代码能耗 + 等待代码能耗 + 空闲代码能耗
- 将测试自动化框架和脚本容器化。容器提供了一个轻量级且孤立的环境,使其易于水平扩展。它们还减少了每次代码下载和构建过程生成的网络流量。
- 最小化文件 I/O 操作,尤其是在循环或频繁文件访问场景中。使用缓冲 I/O 操作来减少磁盘访问次数。例如:从文件中读取测试数据或从文件中读取配置或将结果推送到测试管理工具。
- 学习编写优化的代码,包括死代码消除、循环优化、公共子表达式消除等。此外,分析不同算法的性能特征并为您的特定用例选择最合适的算法。
- 保持测试工具和库是最新的,以受益于任何性能改进。
- 在代码中及时释放资源,尤其是在资源受限的环境中,如移动设备或物联网设备测试。
- 最小化后台进程、任务和线程,这些进程、任务和线程可能会提高 CPU 和内存利用率,从而增加功耗。
- 调整日志记录和报告的详细程度,以避免不必要的资源消耗。
可以通过在自动化指南文档中记录所有上述内容、与质量工程师沟通并在代码审查过程中将它们作为检查领域来实现。