Better Software Magazine Articles

Usability and Privacy

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.

Nathaniel Good
Deconstructing GUI Test Automation

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.

Bret Pettichord's picture Bret Pettichord
How to Avoid Adaptive Testing Syndrome

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.

Paul Sixt
Bypassing the GUI

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.

Brian Marick
A Picture's Worth a Thousand Words

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.

Elisabeth Hendrickson's picture Elisabeth Hendrickson
Mission Made Possible: Harnessing Tools and Procedures to Test a Complex, Distributed System

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.

A Lesson in Scripting: Improve Your Testing with Programming Skills

You can write simple programs to help with your daily testing tasks using Perl or other scripting languages. Here's a primer on scripting languages and programming skills for testers.

Danny R. Faught's picture Danny R. Faught
Generating Test Code with Teradyne TestMaster

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.

Robin Sahner
Bugs Beneath the Surface

Brian Marick uses two bugs to illustrate a small, but valuable, test design tip: Try the next thing that a user would try.

Brian Marick
Testing for Exceptions

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.

Keith Stobie

Pages

CMCrossroads is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.