Here’s some more on your testing questions. I hope it helps.
It seems to me there are at least three ways to look at this. They’re related, and they overlap. They also align with typical roles in development/operations.
- How do you test infrastructure: servers, networks, operating systems (traditional or mobile), databases, etc.? Typically this question is for the organization developing the infrastructure system.
- How do you test/check that the integrated and configured infrastructure operates correctly in support of an application or service? Typically this question is for the organization operating the infrastructure system.
- How do you test that an application or service works correctly with its infrastructure? Typically this question is for the organization developing the application and/or operating the service (end-to-end).
I’ve worked on projects where people had all three of these test roles, but I’m not expert in any of them.
- In the first case, developing infrastructure, the testing varies widely on what is being developed. Testing a server is different from testing a network of course. But before you deploy or sell either of them, you need to test each with the other to meet customer needs. In addition to functional testing, there can be load tests, response time measurements, tests at performance limits, and more. I.e. the infrastructure needs to be tested before customers integrate it further.
- Ola gave good suggestions for verifying infrastructure. And operations organizations can use spare or back-up systems (if available) for testing beyond development, reproducing service problems, etc. In my experience operations designed their own configurations and purchased or built their own tools.
- The third case is the one I think most testers would encounter: testing applications running on previously tested infrastructure. The infrastructure enables the application for testing, and often the new build is the source of a fault. But problems also can arise from interactions with infrastructure.
Here are answers I’d suggest to some of your specific questions:
Before DevOps, how did operations team test infrastructure? In consultation with development, operations would acquire, integrate and configure the infrastructure. Application installation would be supported by development as needed.
I was more interested in the testing of infrastructure. What does it mean to test a server? It varies widely. It can depend on what services it supports, on the networks it uses, on the client operating systems, etc.
Was there any explicit approach for testing? Even with infrastructure as code, is there really any (explicit) approach to testing? We would start with requirements, which needed appropriate buy-in from the organizations on the project. We also wrote test plans. If the infrastructure was not developed inhouse, it would be acquired from a supplier. The supplier would be responsible for their testing and support for the component.