Thursday 21 November 2013

Software Testing

Software Testing 

Software Testing is the process of executing a program with the intent of finding errors or to determine that it meets the software requirement. The main aim is to enhance the software quality. Many different people are involved to test a program like developer's team, testing team and customers' team. They test the program by giving all possible ways input data and observed the result. As result is deviate from the requirement then fix the problem and correct it by the developers. The purpose of testing can be quality assurance, verification and validation (they are termed as correctness), or reliability estimation.

Testing is an integral part in software development. It is broadly deployed in every phase in the software development cycle. Typically, more than 50% percent of the development time is spent in testing.

Testing is potentially endless. We cannot test till all the defects are unearthed and removed -- it is simply impossible. At some point, we have to stop testing and ship the software. The question is when.

Testing is usually performed for the following purposes:

For Verification & Validation 

Verification and validation is correctness of the product. Testing can serve as metrics. Testers can make claims based on interpretations of the testing results, which either the product works under certain situations, or it does not work. We can also compare the quality among different products under the same specification, based on results from the same test.

We cannot test quality directly, but we can test related factors to make quality visible. Quality has three sets of factors -- functionality, engineering, and adaptability. These three sets of factors can be thought of as dimensions in the software quality space.

Tests with the purpose of validating the product works are named clean tests, or positive tests. The drawbacks are that it can only validate that the software works for the specified test cases. A finite number of tests cannot validate that the software works for all situations. On the contrary, only one failed test is sufficient enough to show that the software does not work. Dirty tests, or negative tests, refer to the tests aiming at breaking the software, or showing that it does not work. A piece of software must have sufficient exception handling capabilities to survive a significant level of dirty tests.

For reliability of software

Software reliability refers to the probability of failure-free operation of a system. It is related to many aspects of software, including the testing process.

Testing is an effective sampling method to measure software reliability. Software testing (usually black-box testing) can be used to obtain failure data, and an estimation model can be further used to analyze the data to estimate the present reliability and predict future reliability. Therefore, based on the estimation, the developers can decide whether to release the software, and the users can decide whether to adopt and use the software. Risk of using software can also be assessed based on reliability information.

 Software reliability has important relations with many aspects of software, including the structure, and the amount of testing it has been subjected to. Software testing is an art, because we are not inventing the new concepts. We are still using the same testing techniques invented 20-30 years ago, some of which are crafted methods or rather than good engineering methods. Software testing can be costly (it take very much time to verification and validation of the product). We can never be sure that a piece of software is correct. We can never be sure that the specifications are correct. No verification system can verify every correct program. We can never be certain that a verification system is correct either.

Conclusions

Top BBA Colleges in Delhi must focus on Software testing subject in their syllabus
Software testing is an art. Most of the testing methods and practices are not very different from 20 years ago.
Testing is more than just debugging. Testing is not only used to locate defects and correct them. It is also used in validation, verification process, and reliability measurement.
Testing is expensive (time wise). Automation is a good way to cut down cost and time.

Complete testing is infeasible. Testing is to improve software quality.

www.jagannath.org

No comments:

Post a Comment