[QA.NT.8] Practice eco-conscious development with sustainability testing
Category: OPTIONAL
Sustainability testing ensures that software products contribute to eco-conscious and energy-efficient practices that reflect a growing demand for environmentally responsible development. It is a commitment to ensuring software development not only meets performance expectations but also contributes positively to the organization's environmental goals. In specific use cases, such as internet of things (IoT) and smart devices, software optimizations can directly translate to energy and cost savings while also improving performance.
Sustainability testing encompasses:
-
Energy efficiency: Create sustainability tests which ensure software and infrastructure minimize power consumption. For instance, AWS Graviton processors
are designed for enhanced energy efficiency. They offer up to 60% less energy consumption for similar performance compared to other EC2 instances. Write static analysis tests that focus on improving sustainability by verifying that infrastructure as code (IaC) templates are configured to use energy efficient infrastructure. -
Resource optimization: Sustainable software leverages hardware resources, such as memory and CPU, without waste. Sustainability tests can enforce right-sizing when deploying infrastructure. For example, Amazon EC2 Auto Scaling
ensures compute resources align with actual needs, preventing over-provisioning. Similarly, AWS Trusted Advisor offers actionable insights into resource provisioning based on actual consumption patterns. -
Data efficiency: Sustainability testing can assess the efficiency of data storage, transfer, and processing operations, ensuring minimal energy consumption. Tools like the AWS Customer Carbon Footprint Tool
offer insights into the carbon emissions associated with various AWS services, such as Amazon EC2 and Amazon S3. Teams can use these insights to make informed optimizations. -
Lifecycle analysis: The scope of testing extends beyond immediate software performance. For instance, the AWS Customer Carbon Footprint Tool
can provide insights into how using AWS services impacts carbon emissions. This information can be used to compare this usage with traditional data centers. Metrics from this tool can be used to inform decisions throughout the software lifecycle, ensuring that environmental impact remains minimal from inception to decommissioning of resources.
Sustainability testing should use data provided by profiling
applications to measure their energy consumption, CPU usage,
memory footprint, and data transfer volume. Tools such
as Amazon CodeGuru Profiler
and SusScanner
Sustainability testing is still an emerging quality assurance practice. This indicator is beneficial for organizations focusing on environmental impact. We think that by making sustainability a core part of the software development process, not only do we contribute to a healthier planet, but often, we also end up with more efficient and cost-effective solutions.
Related information: