02 Jun Functional vs Regression Testing : QA (2021)
What’s the difference between functional vs regression testing?
In short, functional testing ensures all functionalities are working as expected, while regression testing occurs only after a team publishes a new build in order to fix defects or debug software updates.
Functional testing includes validating the functionalities of any given program. Typically, functional testing involves black box testing. A tester identifies if a set of code is meeting any given criteria. The functionality is the only thing measured. Design and user experience are not considered during functional testing.
The main points of functional testing:
- Understanding customer requirements
- Testing input data
- Gathering expected results
- Executing test cases
- Comparing actual vs. expected results
- Updating results according to test case
Functional testing best practices – focus on:
- GUI coverage: with different screen resolutions, GUI elements like font size, color, etc.
- Input domain coverage: taking valid and correct size with appropriate formats.
- Return of correct data with correct input.
- Order of functionality (i.e. Tab order).
While executing test cases we need Input data. The input data is the data that is used for test case execution.
There are two types of input data:
i) +Ve Test Data – Inserting data should be valid data. Valid data means we have to follow SRS (System Requirement Specification) document, where the input range or valid inputs details are described.
ii) –Ve Test Data – Inserting data should be invalid data. This means the data which is not specified in SRS or invalid inputs details or not in range.
A diagram of Functional Testing: Input Data Results
From the above diagram, we can use the Bombardment of +Ve and –Ve Input data on software build to find whether the actual result matches expected results.
Even small changes or modifications to software can bring unexpected issues. Regression testing becomes very important to test whether existing functionality is impacted. Regression testing ensures every functionality is working properly after any update or modification happens.
Regression testing is done when:
- Any patches added to software or configuration of software have been changed.
- If new Change Requests are implemented to the build.
- New Features are added or any functionality has been added.
- Existing functionality is modified with improvements.
Sometimes regression testing is implemented to:
- Find bugs that can found because of new changes or modifications done on the build.
- Check for side effects after fixing bugs or any changes made.
- See if there are continuous change requests then there is a high possibility of new issues.
- Help quality improvements.
Diagram of regression testing:
Conclusion – Functional vs Regression Testing
At the end of the day, functional testing is verifying whether functionality meets customer requirements. An example of regression testing best practices could be represented as development teams making changes to existing builds or published code.
Read More: UAT vs. SIT Testing in QA – tCognition