The importance of quality contorol in large projects is very important. Just as a reminder for my self here a list of things to remember for a high quality project:
Quality control has different levels of quality assuring I've been thinking of drawing this deployment diagram about quality control so will use this as a template for it.
<br><br>First level of quality control:
<br><br>Code format, code quality code conventions for all produced code, not relevant for a working project but gives synnergy to the whole project. Well commented code for future developers
Junit tests: all methods should have a corresponding junit test for them, i some cases this can go to far , once we were writing unit tests for get set methods for java beans this was and is pointless.
A continuous integration process
for a large project is the way to do it. Using something like cruisecontrol
to build the project assures that the code is uptodate all the time. What this does is it runs a set of junit tests on the java code once per hour for instance and the generates a report from the tests if something fails in the build the relevant developer get an email and the code gets fixed, this way the system is working all the time while all the developers are "continuously integrating" new features into the build. This wont fit all projects, but in java heavy projects with many developers working on the same code this is the way to go.
<br><br>Second level of quality control: Testing
A designaded tester needs to test all code according to requirements a good way to do this is to write a test case for each requirement defined with a customer and then this list should be verified by the tester, this way all code is inline with the requirements.
Memory monitoring, responce times: in some cases profiling is needed for checking that there are no memory leaks in the code or any other code that takes up resources. Consistent checks for memory leaks together with load testing should be done to assure a reliable product. For this you need a profiler, there are many possibilities depending on the platform you are using. Find a list of open source profilers here
Usually in large project the testing is done in stages where the product is in different environments, pretty normal is that there are at least 3 environments:
A development environment, A testing environment , and then usually 1 more environment for ensuring that the product quality is uptodate this last quality control environment ususally is reviewd by the customer before the product can go into production.
Load testing all pages should be stress tested with a user load that exeeds the maximum load that the site should be able to process.
<br><br>Third level of quality control is to ensure that all of the above has been achieved without any problems.