Finding and correcting errors early in the development cycle reduces the overall
cost of a software project. Studies have shown that the cost to fix errors
increases exponentially as the development cycle progresses from requirements,
to coding, to a released product.

Ideally, testing should be an integral part of the software development
cycle. Developers tend to test the software as they expect it to
work. Test engineers
have no preconceived ideas on how the software should work, but can be objective
in evaluating how the software actually performs. Software quality assurance improves the overall
stability of the software leading to increased customer satisfaction.

Often, when the software is developed on contract, the customer requires
a successful run of an acceptance test before taking delivery. The acceptance
test exercises key functions of the software and is written for and approved
by the customer. A tester usually is responsible for developing, documenting,
and running this test.

Consumer software projects are often developed on a tight budget with a minimal
staff. A software tester is one of the few people who will examine the product
in detail before it is released, and be intimately familiar with the whole product
and how the individual components work together.

Configuration Management

Configuration Management is the discipline of managing software releases. It
includes a version control system for the code, standardized build processes
for producing the deliverables, and tracking of changes from one release to the next.

Good configuration management practices improve the quality and reliability of
the software, especially in environments where multiple releases are being used
simultaneously at customer sites, and patches are being released on multiple versions.

Mary Ann Dunant
has over twenty years of experience in software testing and configuration
management in both the commercial and military sectors. She has worked
primarily for small software companies, and has often been the lead
test engineer on software projects.