functional testing and regression testing in software engineering - csmates.com

Functional Testing

An alternative form of black-box testing is to base the test data on the functionality of the module, which is called functional testing. In functional testing, each function implemented in the module is identified. From this, test data are devised to test each case function separately.
functional tesing and regression testing in software engineering

Functional testing verifies that an application does what it is supposed to do and doesn't do what it shouldn't do.

For example, if you are functionally testing a word processing app, a partial list of checks you would perform minimally includes creating, saving, editing, spell checking, and printing documents.

Functional testing usually includes testing of all the interfaces and should therefore involve the clients in the process. Because every aspect of the software system is being tested, the specifications for this test should be very detailed describing who, where, when, and how will conduct the tests and what exactly will be tested.

The portion of the testing that will involve the clients is usually conducted as an alpha test where the developers closely monitor how the clients use the system. They take notes on what needs to be improved.

Functional testing can be difficult due to the following reasons:

  • The functions within a module may consist of lower-level functions, each of which must be tested at first.
  • Lower-level functions may be independent.
  • Functionality may not coincide with module boundaries; this tends to blur the distinction between module testing and integration testing. This problem arises in the object-oriented paradigm when an object sends a message to a method of a different object.

Functional testing has two categories:
  • Positive Functional Testing
  • Negative Functional Testing

Positive Functional Testing 

This testing entails exercising the application's functions with valid input and verifying that the outputs are correct.
ex: With word processing app example, a positive test for the printing function might be to print a document containing both text and graphics to a printer that is online, filled with paper, and for which the correct drivers are installed.

Negative Functional Testing

This testing involves exercising app functionality using a combination of invalid inputs, unexpected operating conditions, and other "out-of-bounds" scenarios.

  •  Continuing the word processing example, a negative test for the printing function might be to disconnect the printer from the computer while a document is printing.
  • What probably should happen in this scenario is a plain-text error message appears, informing the user what happened and instructing him/her on how to remedy the problem.
  • What might happen, instead, is the word processing software simply hangs up or crashes because the "abnormal"  loss of communication with the printer is not handled properly.

What is regression testing in software engineering

Regression testing is the process of running a subset of previously executed integration and function tests to ensure that program changes have not degraded that system. The regression phase concerns the effect of newly introduced changes on all the previously integrated code. Problems arise when errors made in incorporating new functions affect the previously tested functions, which are common in large systems.

Regression testing may be conducted manually or using automated tools. The basic regression testing approach is to incorporate selected test cases into a regression bucket that is run periodically to find regression problems. In many organizations, regression testing consists of running all the functional tests every few months. This generally delays the regression problem detection and results in significant rework after every regression run.

It is wise to accumulate a comprehensive regression bucket and also define a subset of the cases. The full bucket is run occasionally, but the subset is run against every spin. The spin subset should consist of all the test cases for recently integrated functions and selected samples from the full regression bucket. Depending on the success history of test subsets and the complexity of the program the test cases are selected from the subset.

Post a comment