This site is designed for XHTML and CSS compatible browsers. We recommend that you update your browser to a newer version.

Skip navigation.
Print this page

Quality Assurance and Testing

11/15/06

Quality is built into the product throughout the software development project.

Lasse Koskela, Methodology Consultant

Creating almost error-free software has traditionally been considered a nearly impossible task. When modern quality assurance methods are used, error-free software is a more realistic objective than before.

Test-Driven Development and comprehensive test automation combined with continuous integration and inspection, and project-wide performance monitoring help us create systems that function correctly and are more easy to adapt to future changes.

Test Automation

Testing is the cornerstone of quality assurance in all stages of system development. Test sets that are formed through unit testing not only verify the correctness of the application parts but also create protection against regression. This is invaluable for maintainability and adaptability. Higher level integration and acceptance tests build a corresponding safety network throughout the entire system.

In order to enable the continuous running of an extensive set of tests, these tests must be automated as much as possible. Automated tests enable testers to concentrate on tasks where people are better than machines: a sensible testing strategy enables better management of the time and skills of testers.

Continuous Integration

Build processes must operate reliably in extensive development projects so that each addition or change in the software can immediately be tested as an integrated part of the entire system.

The problems with integrating software components have traditionally been a considerable problem in software development projects. Their number and difficulty often increase as the project proceeds. By integrating frequently, even several times an hour, integrations remain small and easier to manage.

A single change often affects a rather isolated part of a high-quality system. Because a full test run may take several minutes, a common practice is to run only a limited subset of all automated tests during an integration. A so-called integration server then takes care of running a build with the full test run while the developer proceeds. The tools we use for continuous builds include Hudson, Continuum and Bamboo.

Continuous Inspection

Software systems are generally subject to non-functional requirements such as its maintainability, the quality of the code or the manageability of the system. These demands require continuous inspection of the products throughout the development project.

The practices and tools used for quality inspections include:

  • Code inspection: Pair programming, automatic change reports in version management
  • Shared ownership of program code
  • Automated reports, for instance test coverage and static code analyses
  • Programming conventions that aim to provide uniform code

One of the most important principles in the Agile Methods we apply is that the development team is responsible for the continuous evaluation and improvement of its own work.

Ensuring Non-functional Quality

When information systems are in question, error-free operation by itself does not mean high quality. Non-functional features such as system performance must also be ensured. These features must be measured and monitored from the beginning, just like the functional qualities. The tools for these tasks include system profiling and performance tests for both the key components as well as the architecture. This ensures that possible problems are detected at an early stage when it is still easy and cost-efficient to fix them.

Applying sensible practices both in system development, quality assurance and testing takes us a big step forward in work productivity which helps us produce solutions that meet the client's needs in the best possible way. Quality is a prerequisite for fast development. That is why we at Reaktor pay particular attention to the efficient use of quality assurance methods.

Lasse Koskela, Methodology Consultant

 

Lasse is the methodology specialist at Reaktor. Author of "Test Driven" (Manning Publications, 2007), Lasse is a frequent speaker in international conferences but spends most of his time training and coaching software development organizations around Agile Methods and engineering practices.

Quality Assurance

The high quality of our software is ensured by disciplined working methods and versatile testing. The measures include:

  • Test-Driven Development and automated unit testing
  • Automated integration and acceptance testing
  • Exploratory testing
  • Performance and load testing