What's the best way to choose a test automation tool?

It's easy to get caught up in enthusiasm for the 'silver bullet' of test automation, where the dream is that a single mouse click can initialize thorough unattended testing of an entire software application, bugs will be automatically reported, and easy-to-understand summary reports will be waiting in the manager's in-box in the morning.

Although that may in fact be possible in some situations, it is not the way things generally play out. In manual testing, the test engineer exercises software functionality to determine if the software is behaving in an expected way. This means that the tester must be able to judge what the expected outcome of a test should be, such as expected data outputs, screen messages, changes in the appearance of a User Interface, XML files, database changes, etc. In an automated test, the computer does not have human-like 'judgement' capabilities to determine whether or not a test outcome was correct. This means there must be a mechanism by which the computer can do an automatic comparison between actual and expected results for every automated test scenario and unambiguously make a pass or fail determination. This factor may require a significant change in the entire approach to testing, since in manual testing a human is involved and can:
  • make mental adjustments to expected test results based on variations in the pre-test state of the software system
  • often make on-the-fly adjustments, if needed, to data used in the test
  • make pass/fail judgements about results of each test
  • make quick judgements and adjustments for changes to requirements.
  • make a wide variety of other types of judgements and adjustments as needed.
For those new to test automation, it might be a good idea to do some reading or training first. There are a variety of ways to go about doing this; some example approaches are:
  • Read through information on the web about test automation such as general information available on some test tool vendor sites or some of the automated testing articles listed in the Automation section.
  • Read some books on test automation such as those listed in the Refence Books.
  • Obtain some test tool trial versions or low cost or open source test tools and experiment with them
  • Attend software testing conferences or training courses related to test automation
As in anything else, proper planning and analysis are critical to success in choosing and utilizing an automated test tool. Choosing a test tool just for the purpose of 'automating testing' is not useful; useful purposes might include: testing more thoroughly, testing in ways that were not previously feasible via manual methods (such as load testing), testing faster, or reducing excessively tedious manual testing. Automated testing rarely enables savings in the cost of testing, although it may result in software lifecycle savings (or increased sales) just as with any other quality-related initiative.

With the proper background and understanding of test automation, the following considerations can be helpful in choosing a test tool (automated testing will not necessarily resolve them, they are only considerations for automation potential):
  • Analyze the current non-automated testing situation to determine where testing is not being done or does not appear to be sufficient
  • Where is current testing excessively time-consuming?
  • Where is current testing excessively tedious?
  • What kinds of problems are repeatedly missed with current testing?
  • What testing procedures are carried out repeatedly (such as regression testing or security testing)?
  • What testing procedures are not being carried out repeatedly but should be?
  • What test tracking and management processes can be implemented or made more effective through the use of an automated test tool?
Taking into account the testing needs determined by analysis of these considerations and other appropriate factors, the types of desired test tools can be determined. For each type of test tool (such as functional test tool, load test tool, etc.) the choices can be further narrowed based on the characteristics of the software application. The relevant characteristics will depend, of course, on the situation and the type of test tool and other factors. Such characteristics could include the operating system, GUI components, development languages, web server type, etc. Other factors affecting a choice could include experience level and capabilities of test personnel, advantages/disadvantages in developing a custom automated test tool, tool costs, tool quality and ease of use, usefulness of the tool on other projects, etc.

Once a short list of potential test tools is selected, several can be utilized on a trial basis for a final determination. Any expensive test tool should be thoroughly analyzed during its trial period to ensure that it is appropriate and that it's capabilities and limitations are well understood. This may require significant time or training, but the alternative is to take a major risk of a mistaken investment.

0 comments:

Post a Comment