Quality assurance
Software testing is a huge topic, and an important one. Over the years, we've amassed knowledge about software testing that we put to use in our projects. The main aims of software testing at Bredex are:
Begin testing as early as possible
The sooner testing begins, the earlier errors can be identified and resolved. Resolving errors earlier reduces the cost of quality assurance throughout the whole lifecycle, and increases the quality of the project.
Starting testing early is critical to application success. Because of this, we have tests running even at the earliest phase of the project. Developers use JUnit tests to implement test-driven-development, and to test their code. Even GUI testing starts early at Bredex, so functional tests through the user-interface can test business logic right from the start.
Continuous testing
Because the state of an application changes continuously, its functions and processes have to be tested continuously. Changes to code can have widereaching effects in an application. Not only do new functions need to be tested thoroughly and promptly, but previously tested features also have to be rigorously retested to ensure that the quality is still the same. One of the challenges of continuous testing is keeping the test maintenance work low so that the maximum quality is attained for the minimum cost.
Use of automation tools
One of the most effective ways to attain continuous testing is to automate. Nightly test runs provide a running commentary on the state and quality of the application. Our project experience means that we know when to automate (and, importantly, when not to), and which tools to use.
For functional testing, we use GUIdancer, the test-tool we developed to allow early and continuous testing through the GUI. More information about the benefits of GUIdancer can be found on the GUIdancer pages.
Agile testing
In agile development processes, testing has to be agile too. This means:
- Starting testing early in the process
- Continually testing - integration and regression tests
- Keeping tests flexible to cope with changes to the program and requirements
- Ensuring that test creation and maintenance is easy and quick
Ideally, testing should fit into the development process as shown in this diagram:

Once the design is complete, developers begin implementing features. Alongside this development, test specifications are being created. The tests for each feature are executed as soon as the story is complete, which means that integration testing is in sync with development. Regression tests run nightly to ensure continuing quality. This situation leads to huge advances in quality. Our use of GUIdancer even allows us to have this scenario for our functional GUI tests.





