Monday, July 23, 2012

Types Of Software Testing

"My Software never had bugs; it just develops random features!" - This is a famous software developer quote. A better way to say there are bugs crept in the software. Let's answer the question 'when software is said to have bugs?' Well, when software behaves in an unexpected manner. In other words when your software produces a behavior that is never ever defined for it. This can happen due to several reasons. Have a look at different types of software errors and how to deal with them. In this article I'm going to explain what are the typical types of software testing methods to detect unexpected software behavior.

Unit Testing(UT)

Well, this is the most powerful and essential testing method. Unit testing is carried out by the developer himself/herself to see if the code written by him/her works as expected. In this type of testing, every method/ function written is tested for boundary conditions and for each conditional statements used in the method. Unit test cases are written prior to unit testing the code. There are two types how unit testing is carried out.(1) Automated Unit Testing - This is done by writing the code to test the code. There are tools/frameworks to do this. For Java code, the tool is called JUnit. (2) Manual Unit Testing - The possible unit test cases are written in a document in English Statements and then executed one by one. Manual unit testing is a time consuming method. The best practice is to use code coverage methods during Unit Testing to see if sufficient test cases are written. See how to collect code coverage reports for Java Code.

Developer Integration Testing(DIT)

In this type of testing all the public interfaces are tested to see they integrate well with all the modules in the project. As the name indicates, this type of test is executed by developers. DIT is very important method of software testing since DIT decides if all the software modules 'integrate' well themselves. DIT is a nightmare if public interfaces are not well defined. The best practice is that public interfaces are to be developed by a person who understands entire software architecture usually by a System Architect.

System Integration Testing(SIT)

System Testing is carried out by testing team and usually not by developers. Testing team develops system test plan and executes them. System testing also comprises  of Capacity and load testing of the software as a whole system apart from testing how well the software system under testing integrates with rest of the systems in the software portfolio. This especially important where a software product needs to work with different software products in an enterprise solution.

Smoke Testing(ST)

This type of testing is also known as acceptance testing. This test is carried out to see if there is any 'smoke' in the software before even full fledged software testing is taken up by the testing team. If the software has smoke, then further testing will be stopped and software build/release will be rejected until the smoke has been removed from the software by the developers.

Regression Testing (RT)

This type of testing is carried out by the system testers. Regression testing does not follow a definite pattern. The regression test cases are developed based on the code changes done. This type of testing very common in maintenance projects where the software is already developed and there some change requests (CRs) done on top of it and is given for testing it. See what should be the quality of regression testing.

The testing methodologies differ based on the type of the software being developed. For example, if its a software product then regression testing applies and usually not for software services. Not all software testing methodologies are mandatory for software testing. Software testing has been a challenge in the software development life cycle. People have hard time dealing with non reproducible software bugs. Have a look at my article on how to deal with non reproducible software bugs/issues.

Hope you enjoyed this article.

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...