What is Impact analysis in software testing?

Impact analysis is basically analyzing the impact of the changes in the deployed application or product.

It tells us about the parts of the system that may be unintentionally affected because of the change in the application and therefore need careful regression testing.  This decision is taken together with the stakeholders.

What is Maintenance Testing?

Once a system is deployed it is in service for years and decades. During this time the system and its operational environment is often corrected, changed or extended. Testing that is provided during this phase is called maintenance testing.

[Read more…]

What is Structural testing (Testing of software structure/architecture)?

The structural testing is the testing of the structure of the system or component. Structural testing is often referred to as ‘white box’ or ‘glass box’ or ‘clear-box testing’ because in structural testing we are interested in what is happening ‘inside the system/application’.

[Read more…]

What is Regression testing in software?

When any modification or changes are done to the application or even when any small change is done to the code then it can bring unexpected issues. Along with the new changes it becomes very important to test whether the existing functionality is intact or not. This can be achieved by doing the regression testing.

  • The purpose of the regression testing is to find the bugs which may get introduced accidentally because of the new changes or modification.
  • During confirmation testing the defect got fixed and that part of the application started working as intended. But there might be a possibility that the fix may have introduced or uncovered a different defect elsewhere in the software. The way to detect these ‘unexpected side-effects’ of fixes is to do regression testing.
  • This also ensures that the bugs found earlier are NOT creatable.
  • Usually the regression testing is done by automation tools because in order to fix the defect the same test is carried out again and again and it will be very tedious and time consuming to do it manually.
  • During regression testing the test cases are prioritized depending upon the changes done to the feature or module in the application. The feature or module where the changes or modification is done that entire feature is taken into priority for testing.
  • This testing becomes very important when there are continuous modifications or enhancements done in the application or product. These changes or enhancements should NOT introduce new issues in the existing tested code.
  • This helps in maintaining the quality of the product along with the new changes in the application.

Example:

Let’s assume that there is an application which maintains the details of all the students in school. This application has four buttons Add, Save, Delete and Refresh. All the buttons functionalities are working as expected. Recently a new button ‘Update’ is added in the application. This ‘Update’ button functionality is tested and confirmed that it’s working as expected. But at the same time it becomes very important to know that the introduction of this new button should not impact the other existing buttons functionality. Along with the ‘Update’ button all the other buttons functionality are tested in order to find any new issues in the existing code. This process is known as regression testing.

Types of Regression testing techniques:
We have four types of regression testing techniques. They are as follows:

1) Corrective Regression Testing: Corrective regression testing can be used when there is no change in the specifications and test cases can be reused.

2) Progressive Regression Testing: Progressive regression testing is used when the modifications are done in the specifications and new test cases are designed.

3) Retest-All Strategy: The retest-all strategy is very tedious and time consuming because here we reuse all test which results in the execution of unnecessary test cases. When any small modification or change is done to the application then this strategy is not useful.

4) Selective Strategy: In selective strategy we use a subset of the existing test cases to cut down the retesting effort and cost. If any changes are done to the program entities, e.g. functions, variables etc., then a test unit must be rerun. Here the difficult part is to find out the dependencies between a test case and the program entities it covers.

When to use it:

Regression testing is used when:

  • Any new feature is added
  • Any enhancement is done
  • Any bug is fixed
  • Any performance related issue is fixed

Advantages of Regression testing:

  • It helps us to make sure that any changes like bug fixes or any enhancements to the module or application have not impacted the existing tested code.
  • It ensures that the bugs found earlier are NOT creatable.
  • Regression testing can be done by using the automation tools
  • It helps in improving the quality of the product.

Disadvantages of Regression testing:

  • If regression testing is done without using automated tools then it can be very tedious and time consuming because here we execute the same set of test cases again and again.
  • Regression test is required even when a very small change is done in the code because this small modification can bring unexpected issues in the existing functionality.

 

What is Confirmation testing in software?

Confirmation testing or re-testing: When a test fails because of the defect then that defect is reported and a new version of the software is expected that has had the defect fixed. In this case we need to execute the test again to confirm that whether the defect got actually fixed or not.

This is known as confirmation testing and also known as re-testing. It is important to ensure that the test is executed in exactly the same way it was the first time using the same inputs, data and environments.

Hence, when the change is made to the defect in order to fix it then confirmation testing or re-testing is helpful.

What is Internationalization testing and Localization testing in software?

It is a type of non-functional testing. Internationalization is a process of designing a software application so that it can be adapted to various languages and regions without any changes. [Read more…]

What is Volume testing in software testing?

It is a type of non-functional testing. Volume testing refers to testing a software application or the product with a certain amount of data. E.g., if we want to volume test our application with a specific database size, we need to expand our database to that size and then test the application’s performance on it. [Read more…]