What is software Testing?
Software Testing is 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.
Objectives and Principles of Testing
Ø To test whether the software is working as
per the functional requirements.
Ø
To find errors in the software.
Ø
To test the quality of software.
Ø
To identify weakness / risks / limitations in
the software.
Difference between testing and
debugging:
Testing activity is carried down by
a team of testers
Debugging is the activity which is
carried out by the development team (or developer), after getting the test
report from the testing team about defect(s)
Testing is the process of detecting
an error. Debugging is the process of identifying the root cause of an error
and correcting it..
Seven Testing
Principles:
Testing shows presence of errors
Testing shows the presence of bugs
(but a failure to find bugs does not necessarily mean that none exist).
Tests must be designed to find as many bugs as possible, and since it is
assumed that every product initially has bugs, a test that identifies bugs is
better than one that finds none.
Exhaustive testing is not possible
Exhaustive testing is impossible
because there are usually too many variables that come into play.
Therefore, testers must focus efforts on only the most critical priorities and
risks.
Test early and regularly
Testing should be done as early as
possible after the product or application has been created, in order to fix
issues as fast as possible. Errors identified later in the process tend
to be more expensive to mitigate.
Accumulation of errors
Use defect clustering, as software
problems tend to cluster around narrow areas or functions. By identifying
and focusing on these clusters, testers can efficiently test the sensitive
areas while concurrently testing the remaining “non-sensitive” areas.
Fading effectiveness
Use a variety of tests and
techniques to expose a range of defects across different areas of the
product. Avoid using the same set of tests over and over on the same
product or application, because this will reduce the range of bugs you will
find.
Testing depends on context
The same tests should not be applied
across the board because different software products have varying requirements,
functions and purposes. For example, a website should be tested differently
than a company Intranet site.
False conclusion: no errors equals usable system
Don’t buy into the absence of errors
fallacy. In other words, a test that finds no errors is different than
concluding that the software is error-free. It should be assumed that all
software contains some faults, even if said faults are hidden.