Sunday, 9 June 2013

Software Testing

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.

No comments:

Post a Comment