The definition of regression testing makes it seem that any testing after bug-fixing is supposed to be called regression testing. But in the case that after bug-changes I just want to make sure the app works fine, would it be more appropriate to label the test case as functional or regression?
It is not true that
any testing after bug-fixing is supposed to be called regression testing
Testing whether a bug-fix was successful:
- You run one or more tests which failed.
- You analyse this failure and could identify a bug/defect.
- You correct this bug/defect
- You run the test or tests from step 1 again to test whether your corrections fixed the bug/defect. This is called re-testing or confirmation testing
Testing a previously tested software to find out whether changes did introduce or uncover new defects in unchanged areas of the software is called regression testing.
So, these tests have different goals.
By the way, it is possible that a test case which once failed could later be tagged as a regression test. In this case, the test case was once used for re-testing, and later for regression testing.
Functional Tests are a type of test (taking user perspective, more gray-black box, more focussed on the the expectations of the users) whereas I see Regression Tests as a phase of tests. Like you mentioned you will launch some automated tests after a bug was fixed, to check all the features are still working. But you will also launch those tests after a new feature is added, to check that the existing features are not broken. In that situation I call that "regression tests", but those tests are not made only of functional tests. Launching your unit tests portfolio or your performance tests is also a good idea.
Functional testing is where the functionality of the product is tested. Whether the right product has been developed. Where as regression testing is done around the bug fixes to ensure that there are no injected issues. So in your case if you just to confirm that the fix is correct and check all the area which might be impacted by the fix, it will be regression testing. And if you want to check the overall functionality of the application just to see if it's not breaking, then smoke testing can be done.
Regression Testing: Regression testing is one of the most important types of testing, which checks whether a small change in any component of the application affects the unchanged components or not. This is done by re-executing the previous versions of the application.
Functional Testing: The software is tested for the functional requirements. This checks whether the application is behaving according to the specification.
Mutation Testing: In mutation testing, the application is tested for the code that was modified after fixing a particular bug/defect.
You are not completely right actually. Test engineer just need to verify bugfix after state of issue changed to resolved, just be sure that expected and actual result are same. Test engineer does not need to execute regression testing after each bugfix.
Regression means retesting the unchanged parts of the application. Test cases are re-executed in order to check whether previous functionality of application is working fine and new changes have not introduced any new bugs. Regression testing is usually performed after verification of changes or new functionality.