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