Test management involves the test strategy / planning, defining the test data, testing and reporting, automation, and collaboration within the team. What do these fundamentals mean?
Test Strategy / Planning
A test strategy determines the approach to doing the actual testing for system in order to be confident that a product is ready for release. A good test strategy will help to find and fix defects in the product before releasing to customers. Usually there will be a way to track the testing being done.
What kind of testing takes place? Well this can be varied and is tackled by different teams. The fact is that project teams rarely know every type of testing that is taking place, and lo and behold, what testing is NOT taking place.
Well, that is until you start getting complaints coming in from customers and it is realised that certain types of testing were left out of the strategy. This where very long and defensive emails, with numbers, stats and figures, start getting circulated internally, usually with fingers pointing everywhere and anywhere.
I've seen this and ironically it struck me as William Shakespeare's Hamlet and the "The lady doth protest too much, methinks" line. I think I know where the guilt lay.
Some examples of tests are:
- Unit tests
- No impact
The issue I often see is one of regression and no impact as business resources will be pulled into help and has to be done with the backdrop of BAU. Because of this, this type of testing is sometimes skimped on but this is no fault of the business! Automation should come in to play but more on this later.
The test planning may also depend upon on the development style. If it is Scrum and iterations are expected to be completed in two weeks, test planning needs to take this into consideration to ensure adequate test coverage.
If it's a Kanban style, the team will need to decide what testing needs to be done to ensure that a feature is tested.
For system developers who do unit tests, they usually have the luxury of being able to create and data that they want and then being able to go into the test databases to change it as they see fit. When other types of tests take place the data requirements need to be considered and planned for.
For example, a million fake customers may need to be set up to to test performance. Special characters may need to be set up to see if these can be handled further downstream. Perhaps a certain status needs to be mimicked, for example if we want to mimic renewals for an insurer. There may be other considerations such as sensitive data being in the data set which will need to be masked.
This needs to convey the status of testing, detailing what is being tested, what is due to be tested, what is passing or failing and overall progress set against any deadlines.
Reports will need to answer these questions in order to help the team focus on their activities and keep stakeholders informed. Jira is a popular tool in Agile teams and is great for tracking and monitoring progress, usually by way of some well crafted dashboards which display the most pertinent information.
Manual testing can not be dispensed with as it is needed for testing new features. However, automation is a key element of agile software development. When you consider that iterations of a product can be as frequent as every two weeks, it will be very difficult to manually test the new features and the parts of the product that in theory should not be affected.
Extensive interface regression testing is laborious and time-consuming. Not to mention it being a great morale crusher as someone is asked to find time to test something for the umpteenth time. In addition, a manual approach might be effective in finding certain defects, especially if the outcome to test is affected multiple variables in a calculation. Test automation offers a possibility to perform these types of testing effectively.
If a department considers itself to be Agile but doesn't include automated testing in its strategy then I doubt the efficiency of the department in producing defect free, two week iterations of software.
Automation of testing offers great possibilities for efficiency gains.
Collaboration is a key part of being an Agile team. This is key part to testing is really an obvious one as everything is easier when teams collaborate. As testing continues, Agile retrospectives will lead to changes in behaviours which will improve the team effort.