Software Testing
Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not limited to the process of executing a program or application with the intent of finding software bugs (errors or other defects).
Software testing can be stated as the process of validating and verifying that a computer program/application/product:
- meets the requirements that guided its design and development,
- works as expected,
- can be implemented with the same characteristics,
- and satisfies the needs of stakeholders.
Principles of Testing
There are seven principles of testing They are as follows:
1) Testing shows presence of defects: Testing can show the defects are present, but cannot prove that there are no defects. Even after
testing the application or product thoroughly we cannot say that the
product is 100% defect free. Testing always reduces the number of
undiscovered defects remaining in the software but even if no defects
are found, it is not a proof of correctness.
2) Exhaustive testing is impossible:
Testing everything including all combinations of inputs and
preconditions is not possible. So, instead of doing the exhaustive
testing we can use risks and priorities to focus testing efforts. For
example: In an application in one screen there are 15 input fields, each
having 5 possible values, then to test all the valid combinations you
would need 30 517 578 125 (515) tests. This is very
unlikely that the project timescales would allow for this number of
tests. So, accessing and managing risk is one of the most important
activities and reason for testing in any project.
3) Early testing: In the SDLC testing activities should start as early as possible and should be focused on defined objectives.
4) Defect clustering:
A small number of modules contains most of the defects discovered
during pre-release testing or shows the most operational failures.
5) Pesticide paradox:
If the same kinds of tests are repeated again and again, eventually the
same set of test cases will no longer be able to find any new bugs. To
overcome this “Pesticide Paradox”, it is really very important to review
the test cases regularly and new and different tests need to be written
to exercise different parts of the software or system to potentially
find more defects.
6) Testing is context depending:
Testing is basically context dependent. Different kinds of sites are
tested differently. For example, safety – critical software is tested
differently from an e-commerce site.
7) Absence – of – errors fallacy:
If the system built is unusable and does not fulfil the user’s needs
and expectations then finding and fixing defects does not help.
TESTING OBJECTIVES:
1. Testing is a process of executing a program with the intent of finding an
error.
2. A good test case is one that has a high probability of finding an as yet
undiscovered error.
3. A successful test is one that uncovers an as yet undiscovered error.
Testing should systematically uncover different classes of errors in a minimum
amount of time and with a minimum amount of effort. A secondary benefit of
testing is that it demonstrates that the software appears to be working as
stated in the specifications. The data collected through testing can also
provide an indication of the software's reliability and quality. But, testing
cannot show the absence of defect -- it can only show that software defects are
present.
No comments:
Post a Comment