Effective QA Testing: Managing Short Release Deadlines

Software quality is a vitally important issue in software development. As companies are facing increasingly shorter cycle times, and formal specifications are sometimes overlooked, it is even more critical that quality engineers maximize their time and effort to ensure project quality is not sacrificed. Today's rapid application development (RAD), the dominant approach in client-server and Internet software projects, focuses on shortened development schedules. This software development method provides early review points, delivered as "builds" or iterations of development, to ensure that requirements are met. This article outlines some strategies that can make your testing department more efficient and more effective.

Even for a short testing cycle, there are three steps that your quality engineers can take to make your company's testing more productive:

  1. Discover the project's requirements
  2. Define what areas of quality are most critical, to allocate appropriate levels of time and effort to different components of the project
  3. Define a test plan, including release criteria

1. Discover the Requirements

Your quality engineers should play detective. Your project will have a variety of requirements over its lifetime, through several releases. Some requirements will be more important sooner, and others later. It is important that your Quality Assurance team focus on this release's requirements.

First and foremost, this requires data gathering. Once data is gathered, it is transformed into requirements specifics - where you really discover the product's intent.

Requirements are the reasons that drive design choices. If development has begun on a project, this indicates that design decisions were made, even if there is no formal specification. The product was built based on its requirements; otherwise, there would not be a product to test. Lots of people made lots of choices in building the software. The reasons for those choices are the requirements.

Software systems may have hundreds of requirements. The key is not to uncover them all - but to choose how much you're willing to invest in finding out what the requirements are. This stage involves a risk analysis. The fewer requirements you probe in depth, the more risk is incurred. Your company needs to meet its release deadlines, but is taking dangerous chances if your quality engineers don't learn enough about the product's requirements to decide what to test and at what depth. During this requirements gathering phase, it is also helpful for the developers to communicate with the QA team about what areas of the product they consider to be the most complex from a development standpoint. Those areas pose a high risk for the most defects, and should receive more attention from QA, particularly if they are areas critically important to the client.

There are a variety of methods the QA team can utilize to discover a product's requirements, even if there is no formal specification:

  • Read any documentation on the product, even if it is informal design notes. Talk to the project manager, and anyone else who might have contact with the client or who was involved at the design stage. If your QA department is not currently involved in the project planning stage in your company, encourage them to initiate involvement. The earlier QA can learn about how a product is designed and the business rules governing the design of the product, the more effective testing of that product will be.
  • Encourage communication between QA and developers. The more testers understand about how the code was developed, the underlying database structure of the project (if applicable), and the extent of unit testing and code reviews, the more they learn about areas of potential vulnerability in the project.
  • If a previous version of the project is already in production, encourage communication between customer support and QA. Those who interact with the clients directly generally have valuable information on how customers use the software on a daily basis. This information is vital to QA, since they can design more realistic testing scenarios, and may uncover test cases not previously thought of.

2. Define What "Quality" Means to This Project

Once the requirements are known, and the QA team understands what must be tested, the next step is to figure out how hard it should be tested.

The ultimate goal of a software project is to add value to your company. Testing goals must reflect this project's quality criteria. Your project quality definition helps you plan how much testing you need to do in which areas.

Not all requirements are critical to your project's success. Testers can choose how much to test each requirement based on how important each requirement is to your project. The key is to look for the combination of requirements that provides the critical set of features needed by your customer base.

3. Define a Test Plan Including Release Criteria

Once requirements and prioritization are known, QA is now able to define the test plan and the release criteria.

Testing is certainly a big part of SQA, but by no means the only part. Testing, of course, is the process of executing a computer program with the specific intention of finding errors in it. It's nearly impossible to prove that a program is correct, so instead testers do their best to make it fail. Unfortunately, many testers perform testing quite casually, without a real plan and without keeping any records of how the tests went.

Proper software testing requires a plan, or test script. It includes documentation, sample input datasets, and records of test results. Instead of being informal and ad hoc, good software testing is a systematic, reproducible effort with well-defined expectations. Consider each requirement in the context of the entire product, and plan what will and will not be tested. Use cases or scenarios should be developed to illustrate how to test each requirement or set of requirements. Project Management and QA should specify the release criteria, so everyone knows what the specific testing goals are. Make sure other people on the project review the release criteria. Confirm that they know what project quality is, and how that translates into non-negotiable ship criteria and project success. The project should be released based on the release criteria and no other criteria.

Conclusion

Once there is a test plan that corresponds to the product's requirements, the job is half done. Testing against this test plan will ensure that key areas of the project are targeted, and provide more assurance that testing is covering these critical areas. Of course the job does not end here. Defect logging, prioritizing, tracking, and retesting are necessary to communicate issues effectively. Effective defect tracking strongly contributes to enhancing software quality and reducing development project costs. Even without a formal specification and even with a tight timeline, your testing group can still maximize their effectiveness by discovering key requirements, identifying the product's quality criteria, creating a test plan based on this information, and having a structured method of defect tracking and reporting.