Classification of different types of test tools according to the test process activities:
The tools are grouped by the testing activities or areas that are supported by a set of tools, for example, tools that support management activities, tools to support static testing, etc.
It is not required to have a one-to-one relationship between a type of tool described here and a tool offered by a commercial tool vendor or an open-source tool. Some tools perform a very specific and limited function (sometimes called a ‘point solution’), but many of the commercial tools provide support for many different functions. For example a ‘test management’ tool may provide support for managing testing (progress monitoring), configuration management of testware, incident management, and requirements management and traceability. Similarly, another tool may provide both coverage measurement and test design support.
There are few things that people are good at in comparison to the computers. For example, when you see your friend in an unexpected place, like a shopping mall, you can immediately recognize their face. This is because people are very good at pattern recognition, but it’s not easy to write software that can recognize a face. On the other hand there are things that computers can do much better or more quickly than people can do. For example, to add up 20 three-digit numbers quickly. This is not easy for most people to do, there are chances that you make some mistakes even if the numbers are written down. A computer does this accurately and very quickly. Consider another example, if people are asked to do exactly the same work over and over, it will be monotonous and tedious they soon get bored and then start making mistakes.
So, the idea is to use computers to do things that they are really good at. Tool support is very useful for repetitive tasks – the computer doesn’t get bored and will be able to exactly repeat what was done before and that too without any mistakes. Since the tool will be fast, this can make those activities much more efficient and more reliable.
A tool that measures some aspect of software may have few unexpected side-effects also on that software. Like, for example, a tool that measures timings for performance testing needs to interact very closely with that software in order to measure it. A performance tool will set a start time and a stop time for a given transaction in order to measure the response time. But by taking that measurement, that is storing the time at those two points, could actually make the whole transaction take slightly longer than it would do if the tool was not measuring the response time. Of course, the extra time is very small, but it is still there. This effect is called the ‘probe effect’.
Other example of the probe effect is when a debugging tool tries to find a particular defect. If the code is run with the debugger, then the bug disappears; it only re-appears when the debugger is turned off, hence making it very difficult to find. These are sometimes known as ‘Heizenbugs’ (after Heizenberg’s uncertainty principle).
Following are the classification of different types of test tools according to the test process activities. The ‘(D)’ written after the types of tool indicates that these tools are mostly used by the developers. The various types of test tools according to the test process activities are:
- Tool support for management of testing and tests:
- Test management tools
- Requirements management tools
- Incident management tools
- Configuration management tools
- Tool support for static testing:
- Review process support tools
- Static analysis tools (D)
- Modelling tools (D)
- Tool support for test specification:
- Test design tools
- Test data preparation tools
- Tool support for test execution and logging:
- Test execution tools
- Test harness/ Unit test framework tools (D)
- Test comparators
- Coverage measurement tools (D)
- Security tools
- Tools support for performance and monitoring:
- Dynamic analysis tools (D)
- Performance testing, Load testing and stress-testing tools
- Monitoring tools