• Testing activities occur after software changes.
  • Regression testing usually refers to testing activities during software maintenance phase.

Major testing objectives:

  1.  Retest changed components (or parts)
  2.  Check the affected parts (or components)

Regression testing at different levels:

  • Regression testing at the unit level
  •  Re-Integration
  • Regression testing at the function level
  • Regression testing at the system level

Who perform software Regression:

  1. Developers – regression testing at the unit level or integration
  2. Test engineers – regression testing at the function level
  3. QA and test engineers – regression testing at the system level

What do you need to perform software regression testing?

  • Software change information (change notes).
  • Updated software REQ and Design specifications, and user manuals.
  • Software regression testing process and strategy.
  • Software regression testing methods and criteria.

Problems and Challenges in Software Regression Testing :
Major problems in software regression testing:

How to identify software changes in a systematic way?

  • REQ. specification changes
  • Design specification changes
  • Implementation (or source code) changes
  • User Manual changes
  •  Environment or technology changes
  • Test changes

How to identify software change impacts in a systematic way?

  • REQ impacts
  • Design impacts
  • Implementation impacts
  • User impacts
  • Test impacts

Major regression testing problems:

  • How to use a systematic method or tool to identify changed software parts?
  • How to use a systematic method or tool to identify software change impacts?
  • How to use a systematic method or tool to identify affected software test cases?
  • How to reduce the re-test suites?
  • How to select the test cases in a test suite?

Software Regression Process:

Step #1: Software Change Analysis
Understand and analyze various software changes.

Step #2: Software Change Impact Analysis
Understand and analyze software change impacts

Step #3: Define Regression Test Strategy and Criteria

Step #4: Define, select, and reuse test cases to form a regression test suite

Step #5: Perform Re-testing at the different levels.

  • re-testing at the unit level
  • re-testing at integration level
  • re-testing at the function level
  • re-testing at the system level

Step #6: Report and analyze regression test Results

 What is a software Regression strategy?

  • Software test strategy provides the basic strategy and guidelines to test engineers to perform software regression testing activities in a rational way.
  • Software Regression strategy usually refers to  a rational way to define regression testing scope, coverage criteria, re-testing sequence (or order) and re-integration orders.
  • Software regression test models are needed to support the definition of software regression test strategy, test cases, and coverage criteria.

Typical regression test models:

  • control flow graph, state-based behavior diagram
  • object-oriented class diagram
  • scenario-based model
  • component-based Regression model