A solid, repeatable, tactical process is key to establishing the foundation for effectively producing quality, working software. An implemented process should be flexible and enhance the organizations ability to produce software. While the chosen process must fit the needs of the organization, it should not be overly complicated else it will be dismissed by the project teams and frankly not followed. In addition, the emphasis of the process must be on the tactical SQA activities. Team members need to know what is expected of them and perform their duties as a matter of reflex response.
A repeatable process significantly enhances a project team members ability to perform their given project task. A repeatable process ensures consistency in execution of project tasks, thusly vastly increasing project productivity. Consistency in execution will also help to stabilize costs of project tasks and will help to drive down the overall cost of delivering software.
While helping to ensure consistency of execution throughout a project, an effective process also significantly reduces the time needed to train new resources. Using a process as a base, new team members can be trained relatively quickly making them available to be productive project members. Ramping up resources quickly is key to a plethora of operataion models, especially the just in time testing model. The software testing process that I have been using for close to a decade, coupled with an expert mentor, will allow entry level resources to be up to speed in less than 2 weeks. Following this process, seasoned staff will be up to speed and productive within 2 to 3 days. A key factor to successful projects is productive project members, an effective process will allow your project members to become productive faster with less training costs incurred.
The least expensive and most effective way to ensure quality in your software is to implement a Test Driven Development (TDD) approach. The test first development approach stresses the simplest form of testing, the Unit Test. The concept of test first development is fairly simple; developers should design the tests for their units prior to developing them. This practice will ensure that unit tests pass more often and that the unit is actually being tested. In an agile environment, pairing a SQA resource with a development resource can make TDD approach very effective. Performing unit testing on each and every unit of code produced is fairly simple and will cost the organization far less then defects that will be identified further into the development life-cycle if unit testing is not performed. While simple and definitely cost effective, unit testing is far too often not performed. There are many reasons for the lack of unit testing, one of which is the perception that unit testing is too time consuming. I can assure you, a developer will spend much more time in defect analysis and defect resolution if unit testing is not performed then he or she would if unit testing was performed.
A good way to ensure that unit testing is performed in your organization is to have development teams adhere to a well defined unit testing process. The below process flow diagram illustrates the Unit Test Execution section of a well defined software testing process that I have used for years. In an agile environment it is beneficial to automate the unit tests as soon as possible and then execute them after each and every build. Automating unit tests is a key factor to success in an agile environment.


