Thursday, October 25, 2012

Test Case Optimization

Story behind test case optimization

When an application is designed, testing team will come up with a set of test cases for validation. To ensure end to end coverage, usually testers will add many inter-component overlapping test cases. As the testing cycle proceeds, fixed defects will/may be converted as a test case in regression cycles. Slowly these two activities will pile up the test cases. One fine day, test suite size will be huge, taking weeks/months to finish a regression cycle.

What is Test case Optimization?

Identify the test cases that will aid in qualifying the product or software under test for release. Minimize the overlaps across the components, without compromising test coverage and quality.

How do we do test case optimization? 

  • · Categorizing the components- >Club inter-components under a single caption
  • · Inactivate the obsolete test cases ->Test cases that no longer can yield a defect
  • · Designating appropriate priority -> When test suite is very huge, we can prioritize the cases, so if a cycle has less number of days for execution, then only high priority cases can be pushed for execution.

This activity payback if we concentrate on constant and legacy features of a project. Since the new/upcoming components will undergo frequent updates, they are not ideal candidate for this activity.

When to take up?

Optimization should be an ongoing activity, identify the constant and legacy components and optimize it whenever possible.

Conclusion
Test case optimization can be completely waived if the tester writes the cases, by keeping the following in mind
Test cases should be

  • Pluggable - Writing generalized test cases. Not hard coding the test steps with any data
  • Minimizing inter-component overlaps
  • Assigning appropriate priority