Thursday, August 21, 2014

Smoke Vs Sanity Testing

SMOKE TESTING: Smoke testing originated in the hardware testing practice of turning on a new piece of hardware for the first time and considering it a success if it does not catch fire and smoke.
Smoke Testing is usually Scripted or Automated
In software industry, smoke testing is a shallow and wide approach whereby all areas of the application without getting into too deep, is tested.
A Smoke test is designed to touch every part of the application in a cursory way. It’s shallow and wide.
Smoke testing is conducted to ensure whether the most crucial functions of a program are working, but not bothering with finer details. (Such as build verification).
Smoke testing is normal health check up to a build of an application before taking it to testing in depth.
SANITY TESTING:
A sanity test is a narrow regression test that focuses on one or a few areas of functionality. Sanity testing is usually narrow and deep.
A sanity test is usually unscripted.
A Sanity test is used to determine a small section of the application is still working after a minor change.
Sanity testing is a cursory testing, it is performed whenever a cursory testing is sufficient to prove the application is functioning according to specifications. This level of testing is a subset of regression testing.
Sanity testing is to verify whether requirements are met or not, checking all features breadth-first.
Difference between Regression and Retesting
1-Retesting is done to make sure that bug is fixed and failed functionality is working fine or not, This is kind of verification method followed in testing field for the fixed bugs. Whereas, Regressionis re-execution of the test cases for unchanged part to see that unchanged functionality is working fine are not.
2-  Retesting is a planned testing while Regression is know as the generic testing.
3- Retesting is only done for failed Test cases while Regression is done for passed test cases.
4- We should always keep this in mind, Re-testing has higher priority than the regression testing. But in bigger projects Retesting and Regression is done in parallel effort.But never forget importance of both in the success of the project.
Below are the differences between Regression Testing and Retesting.
a) Retesting is carried out to verify defect fix / fixes. Regression testing is done to check if the defect fix / fixes have not impacted other functionality of the application that was working fine before applying the code changes.
b) Retesting is planned based for the defect fixes listed in Build Notes. Regression testing is generic and may not be always specific to any defect fix or code change and can be planned as regional or full regression testing.
c) Retesting involves executing test cases that were failed earlier and regression testing involves executing test cases that were passed earlier build i.e., functionality that was working in earlier builds.
d) Retesting will involve rerunning failed test cases that are associated with defect(s) fixes being verified. Regression testing does not involve verifying defect fix but only executing regression test cases.
e) Retesting always takes higher priority over Regression testing i.e., Regression testing is done after completing Retesting. In some projects where there are ample testing resources, Regression testing is carried out in parallel with retesting.
f) Though Retesting and regression testing have different objectives and priorities, they equally important for project’s success.
As the main intention of testing is to ensure the quality of the final product, understanding of various testing types is crucial for a tester. In this article we will see the main difference between two testing types- retesting and regression testing.
Retesting:
In this type of testing, the tester re tests the application which was earlier reported as a bug and now fixed by the developer. This bug can be due to functionality issues as well as design issues. Retesting the functionality of a button which was previously not working or testing the alignment issues of a page etc can be listed as examples for retesting.
Regression testing:
Regression testing is done to test whether the changes made on the site have any impact on other modules which were earlier working fine. New requirement change, implementation of new functionality are some of the scenarios where regression testing is effective. Regression testing can be automated using effective automated tools such as Selenium, Quick Test Professional etc.
Refer the given example for further understanding:
For example, we have a image uploading field which supports only certain image formats say JPG, PNG etc. Suppose one of the image formats failed (say JPG) and the developer fixed it. Testing the functionality, after fixing this bug is retesting. Here, testing and ensuring whether this new change (fixes) has not altered the working of other fields on that page is regression testing.
In normal cases, regression testing is carried out only after retesting of the application. But there are exceptions where both testing are carried out simultaneously. While testing a website, make sure that the application have undergone both retesting and regression testing.


Regression Testing
Retesting
Regression testing is a type of software testing that intends to ensure that changes like defect fixes or enhancements to the module or application have not affecting unchanged part.
Retesting is done to make sure that the tests cases which failed in last execution are passing after the defects against those failures are fixed.
Regression testing is not carried out on specific defect fixes. It is planned as specific area or full regression testing.
Retesting is carried out based on the defect fixes.
In Regression testing, you can include the test cases which passed earlier. We can say that check the functionality which was working earlier.
In Retesting, you can include the test cases which failed earlier. We can say that check the functionality which was failed in earlier build.
Regression test cases we use are derived from the functional specification, the user manuals, user tutorials, and defect reports in relation to corrected problems.
Test cases for Retesting cannot be prepared before start testing. In Retesting only re-execute the test cases failed in the prior execution.
Automation is the key for regression testing.
Manual regression testing tends to get more expensive with each new release.
Regression testing is right time to start automating test cases.
You cannot automate the test cases for Retesting.
Defect verification is not comes under Regression testing.
Defect verification is comes under Retesting.
Based on the availability of resources the Regression testing can be carried out parallel with Retesting.
Priority of Retesting over Regression testing is higher, so it is carried out before regression testing.

In the Regression Testing test cases are extracted from functional test cases to ensure that no new defects should be included & check whether original features and functionality is working as expected and make sure no new defect has been introduced. Once the regression test suite is created you can automate test cases using automation tool but same is not applicable for Retesting.

No comments:

Post a Comment