What are the differences between functional validation and non-regression tests?

    5 Minutes Read

    With a variety of terms describing testing methodologies that attempt to be explicit but often fail, the vocabulary of testing can sometimes be confusing.

    In this article, we will clarify the differences between the functional validation tests and non-regression testing (NRT)but first we need to establish that the way in which the category "regression testing" is referred to can be interchanged.

    In other words: regression test = non-regression test

    THE ISTQB prefers the term regression test, but many people in the field also use the term non-regression test (in France at least).

    However, before discussing the differences between functional validation tests and non-regression tests, let's first examine what they are.


    What is functional validation testing?

    Functional validation testing is a type of testing performed to verify that each function or feature of the software application works according to the requirements specification.

    The tester is not concerned with the underlying code.Functional validation tests focus on the mechanical fluidity or on the verification of the proper functioning of each module.

    It is performed using test cases that recreate all possible scenarios, both negative and positive. Ideally,functional validation testing begins at the initial stage of productdevelopment and verifies:

    • Missing features
    • Incorrect specifications
    • If interface errors persist
    • Gaps that exist during the requirements phase

    Properly executed functional validation tests help deliver a high-end product. They help produce a bug-free product or software to ensure end-user satisfaction.


    Examples of functional validation tests :

    • Check that the back button on the page navigates to the right page
    • Check that the links redirect to the right pages.
    • The drop-down features must list the correct values when clicked
    • Check that the next button goes to the next page
    • Verify that a user is able to enter characters in the text fields as defined in the data element sheet.

    *Unlike regression testing, the terms "functional validation tests" and "non-functional tests" cannot be interchanged.Unlike regression testing, the terms "functional validation testing" and "non-functional testing" cannot be interchanged. Non-functional testing consists of testing the application on non-functional aspects such as performance, usability, security, reliability, load, stress, etc. They are performed based on real-world scenarios to verify the performance of the system when kept under such circumstances.



    What is a regression/non-regression test (NRT)?

    Regression: an evolution that brings back to an earlier stage.

    Regression testing are performed to detect any regression in a previously tested feature.

    These regressions in the code can occur as a result of "bug fixes", "new features added to the code" or "requirement changes".

    The goal is to test all code that could be impacted by recent changes to ensure that no new bugs are introduced.

    In short, a regression test is used to verify that advanced changes to the software, site or mobile application, such as adding a new feature or an update, have not impacted existing previous functionality.


    The differences between these two types of tests


    The purpose of functional validation tests is to determine to what extent the developed application corresponds to the desired requirements.

    The purpose of regression testing is to verify that any changes in the application or systems have not resulted in code breakage and that the system is functioning properly.


    Test case executed

    The functional validation tests allow to understand all the cases and functionalities, which have never been tested and executed before. The test cases are re-run when a defect is found against a requirement. Then it is corrected and assigned for retesting. In the retest, if the defect is resolved, the related test cases that failed earlier are passed.

    The regression suite contains cases that have been previously tested and resolved. Basically, in regression testing, test cases are run to ensure that changes have not impacted previously tested functionality.

    Functional validation tests are required:

    • When a new system is tested.
    • When an application is verified against its specifications and desired requirements.
    • To verify that the system and module integration is working properly.
    • When the functionality of a system as a whole needs to be examined.
    • To determine the workflow of a system and its functions.
    • To ensure that the flow produces the expected result.

    While regression tests are performed when:

    • A change request is issued by the client, which results in a change to the code base.
    • The back-end code is migrated to another platform.
    • A new feature is added to the existing application.
    • Corrections are added.
    • There is a change in the test environment.
    • Critical bugs found by the tester during the testing phase are fixed by the developer.
    • The main concerns about performance issues and crashes are solved by the developers.
    • The application's user interface is modified for a better user experience.


    Process used

    The functional testing process begins with testers reading and understanding the requirements, raising a discrepancy in the requirement, followed by identifying the test input. Passing the input values to the systems and comparing the output with the expected results.

    If the result does not match, the fault is reported and the test case is marked as having failed.

    The entire functional testing process includes:

    • Identification of the features to be tested
    • Increased demand for data
    • Test case execution
    • The comparison of a result with an expected result.
    • Failure of the test case that did not meet the requirement.
    • Creation of test cases according to the requirement
    • Conversion of test cases to test scenarios
    • Raise defects and attribute them to the developer, if discrepancies are found in the application.
    • Re-execute the failure case once the reported defect is corrected

    In contrast, the regression testing process is entirely different because this activity only takes place when the existing application is modified or new functionality is added.

    The activities involved in this type of testing are as follows:

    • Identification of modified parts
    • Prioritization of test cases according to the risk involved.
    • Selection of test cases according to the domains impacted by the change.


    Feasibility of automation

    Functional validation tests are first performed manually. Once a feature is stable, the test cases are automated.

    In regression testing, test cases can be executed manually or automatically. Since the test cases are already stable by default (since they have already passed their functional test) in regression testing, they can be automated.


    Functional test cases do not require much modification because they are fewer in number and focused on a specific functionality.

    Whereas in regression testing, test scripts require more maintenance and may contain older test cases.

    Test cases may contain features that have changed, new features that have been added or some features that have been removed, so the regression suite must be updated after each release.


    Mr Suricate | Automate your tests with a codeless solution

    At Mr Suricatewe protect the client's brand image and increase their revenue while ensuring that the user journey is working properly and detecting bugs before and after production.


    Request a demo

    Picture of Mr Suricate

    Mr Suricate