While most bugs that make headline news are due to careless software implementations exploited by skilled hackers, the problems in KaZaA center around its user interface. This article details KaZaA's application flaws and then suggests ways to prevent such flaws.
Window mapping gives elements specific names so tests are easier to update and understand. Task libraries group sequences of steps that make up part of user tasks when those sequences show up in multiple tests. Data-driven test automation separates the parameters of a test case from the test script so that the test script can be reused for many related tasks. Keyword-driven test automation formats tests as tables or spreadsheets and creates parsers to read and execute the test descriptions. Take advantage of these four techniques to help you test a graphical user interface, and see how developers can make your life easier.
Adaptive Testing Syndrome happens when, for various reasons, test team members become blind to the idiosyncrasies of the software and even accept them as a normal part of the design. However, when a different tester, or maybe just a different set of tests, comes in contact with the software, the bugs become painfully obvious. Here's how to diagnose and avoid ATS.
Graphical User Interfaces make test automation hard. The problems are well known. You need specialized tools to drive the GUI. Those tools can be confused by the common programming practice of inventing custom user interface controls. When they are used in the simplest way, the tools lead to fragile tests that tend to break en masse when the GUI changes. Making the test resistant to change requires elaborate and sometimes awkward testing frameworks. Learn how to use a scripting interface to get around the GUI problem.
Maps are a universal way of describing an area. You use them to plan your route and find your destination. Just as it's a good idea to have a map when traveling, it's a good idea to have a picture of the software you're testing. Elisabeth Hendrickson describes UML, parts maps, flow charts, state diagrams, and more.
Automating unit, component, and integration testing can sometimes seem like an impossible mission. Read how one team of programmers combined the right tools and processes to make their test mission not just possible, but successful.
Robin Sahner looks at generating test code with Teradyne TestMaster. His group evaluated TestMaster on two projects. It did what they hoped it would, and now they're using TestMaster on all of their projects. They're not employing it to shorten their test development time or use fewer people; instead they plan to use it to get a more complete, more easily maintained set of functional tests using the same resources. Editors Note: Teradyne SST has become a new company called Empirix.
The basic problem with exception handling is that it is difficult! Exception handling in modern languages makes it easy to drastically change the contents of memory. The next instruction executed may be very distant from the site of the exception, and required cleanup might not be done. In C++ the problem can be particularly acute, with lost memory not reclaimed correctly. For these reasons, it's critical for good testing of exception handling that we test all representative sequences of normal and exceptional calls.