When developing GMS there are several ways we work to ensure the quality of each release, and we are continuously striving to improve the quality of GMS to make it as bug free as possible. We use a multi-layered approach to help in finding bugs as quickly as possible. We use unit testing, code reviews, intermediate testing with continuous builds, automated testing through the graphical user interface, and review by the Quality Control team.
The quicker a bug can be found and fixed the better. As a developer, best of all is to find and fix a bug before anyone else sees it. Our unit tests help this happen. Unit tests are tests that are included right along with the GMS code. When changes are made, tests are written to make sure that existing functionality isn't broken, and tests are written to test new functionality. Unit tests are a group of tests that run very quickly and are run each time GMS is built.
Code reviews can also be very helpful in finding issues. For code reviews we have another member of our development team look at the code changes we've made to make sure there aren't any problems. Just like reviewing a manuscript, it's always good to have another set of eyes to look at the code to make sure everything is okay.
Our intermediate tests are written in the same way as unit tests but each test takes more time to run. All of our unit tests only take a few seconds to run but intermediate tests can take several minutes. To run both our unit and intermediate tests we have a continuous build machine that is constantly looking for changes in our code base. When changes are made, GMS gets built and the unit and intermediate tests get run. To manage this process we use CruiseControl.NET. CruiseControl.NET automatically manages our unit and intermediate testing and provides a GUI interface so all developers can always easily see if the tests are passing or failing.
Our next layer of testing is graphical user interface (GUI) testing. For GUI testing we use TestComplete™. TestComplete™ allows us to record and write scripts that run the GUI of GMS. Tests include all of the GMS tutorials, several reported bugs, and tests that cover specific areas of GMS. The tests run each night and the results are reported through CruiseControl.NET.
The last layer of testing is the Quality Control team. After every sprint the QC team reviews the work the development team did during the sprint. If they find any problems they are reported to the development team.
When all of these fail to find new or existing bugs, and a bug isn't found here at Aquaveo, it is likely a bug will be found by one of our users. When this happens we will do whatever we can to get a bug quickly fixed and in our next release. For this to happen we need to know about the bug. It is very helpful to us when users who have run across a bug will take time out of their busy schedule and notify our Tech Support department about the bug (support@aquaveo.com, (801) 691-5530 [Monday-Friday, 8am-5pm Mountain Time]). They can walk you through what is needed so we can reproduce the bug and fix it. Another thing that can be helpful if it's a crash detected by BugTrap is entering your email address, a description of what you were doing, and clicking on "Submit Bug" to submit a bug report. We regularly go through the submitted bugs to fix them.