This site is designed for XHTML and CSS compatible browsers. We recommend that you update your browser to a newer version.
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.
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.
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.
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:
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.
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.
The high quality of our software is ensured by disciplined working methods and versatile testing. The measures include: