Configuration Management and Testing

Posted in testing on December 21, 2017 by Adrian Wyssmann ‐ 2 min read

Configuration management has always been a challenging topic. But what is it? Why is it so challenging?

The article on Wikipedia summarizes it quite precisely:

Configuration management is a system engineering process for establishing and maintaining consistency of a product’s functional and physical attributes with its requirements, design and operational information throughout the product lifecycle.

In more simple words, it is all about tracking and controlling changes to configuration items and plays a very important role in SW development which includes testing.

  • Configuration management determines clearly about the items that make up the software or system. These items include source code, test scripts, third-party software, hardware, data and both development and test documentation.
  • Configuration management is also about making sure that these items are managed carefully, thoroughly and attentively during the entire project and product life cycle.

Bob Aiello’s framework is a great way to look at the configuration management as it looks at what people are really doing. These are …

  • Build Engineering
  • Environment Configuration
  • Change Control
  • Release Engineering
  • Deployment

Looking at theses activities, there is a lot of overlap of the different roles like SW (Test) Engineer, Build & Release Manager and the Configuration Manager. Therefore the SW (Test) Developers shall be involved in the planning of the configuration management and shall consider the test relevant aspects of the configuration management procedures and the related tools. This implies to defined clear interfaces to the rest of the development process.

Implications for Testing

As already mentioned the configuration management also influences the testing as it …

  • … allows the developers/testers to manage their test applications
  • … allows the developers/testers to manage their test environments
  • … supports the build process, which is important for delivery of a test release into the test environment.
  • … allows us to keep the record of what is being tested to the underlying files and components that make it up (version control)