Software Testing Methods

Software Testing

Software Testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test, with respect to the context in which it is intended to operate. This includes, but is not limited to, the process of executing a program or application with the intent of finding software bugs.

Testing methods
Software testing methods are traditionally divided into
• Black Box Testing,
• White Box Testing
• Gray Box Testing.
These two approaches are used to describe the point of view that a test engineer takes when designing test cases.
Black box testing
Black box testing treats the software as a black box without any knowledge of internal implementation. Black box testing methods include

A. Equivalence partitioning
A software testing technique that involves identifying a small set of representative input values that invoke as many different input conditions as possible.
EX: Credit card limit ($10,000 and $15000)
Less than- 10,000 invalid
Equal to ($10,000 and not as greater as 15000) valid
$15,000 or greater invalid

B. Boundary value analysis
To set up boundary value analysis test cases, the tester first determines which boundaries are at the interface of a software component. This is done by applying the equivalence partitioning technique

C. All-pairs testing
All-pairs testing or pair wise testing is a combinatorial software testing method that, for each pair of input parameters to a system (typically, a software algorithm), tests all possible discrete combinations of those parameters. Using carefully chosen test vectors, this can be done much faster than an exhaustive search of all combinations of all parameters, by "parallelizing" the tests of parameter pairs. The number of tests is typically O (nm), where n and m are the number of possibilities for each of the two parameters with the most choices.

D. Fuzz testing
Fuzz testing; fuzzing; Robustness Testing or Negative Testing is a software testing technique that provides random data ("fuzz") to the inputs of a program. If the program fails (for example, by crashing, or by failing built-in code assertions), the defects can be noted.

E. Model-based testing
Model-based testing is software testing in which test cases is derived in whole or in part from a model that describes some (usually functional) aspects of the system under test (SUT).

G. Exploratory testing
Exploratory testing is a method of manual testing that is concisely described as simultaneous learning, test design and test execution.
Specification-based testing.

H. Specification Based Testing refers to the process of testing a program based on what its specification says its behavior should be. In particular, we can develop test cases based on the specification of the program's behavior, without seeing an implementation of the program. Furthermore, we can develop test cases before the program even exists!
White box testing
White box testing, by contrast to black box testing, is when the tester has access to the internal data structures and algorithms (and the code that implement these)


White box testing
The following types of white box testing exist:
A. Code coverage
Creating tests to satisfy some criteria of code coverage. For example, the test designer can create tests to cause all statements in the program to be executed at least once.
B. mutation testing
Mutation testing (or Mutation analysis) is a method of software testing, which involves modifying program's source code in small ways. These, so-called mutations, are based on well-defined mutation operators that either mimic typical user mistakes (such as using the wrong operator or variable name) or force the creation of valuable tests (such as driving each expression to zero). The purpose is to help the tester develop effective tests or locate weaknesses in the test data used for the program or in sections of the code that are seldom or never accessed during execution.

C. Fault injection methods.
Fault injection is a technique for improving the coverage of a test by introducing faults in order to test code paths, in particular error handling code paths that might otherwise rarely be followed. It is often used with stress testing and is widely considered to be an important part of developing robust software
Static testing White box testing includes all static testing.

D. Static testing
This is a form of software testing where the software isn't actually used. This is in contrast to dynamic testing. It is generally not detailed testing, but checks mainly for the sanity of the code, algorithm, or document. It is primarily syntax checking of the code or and manually reading of the code or document to find errors. This type of testing can be used by the developer who wrote the code, in isolation. Code reviews, inspections and walkthroughs are also used.

Grey Box Testing
In recent years the term grey box testing has come into common usage. This involves having access to internal data structures and algorithms for purposes of designing the test cases, but testing at the user, or black-box level.
Manipulating input data and formatting output do not qualify as grey-box because the input and output are clearly outside of the black-box we are calling the software under test. This is particularly important when conducting integration testing between two modules of code written by two different developers, where only the interfaces are exposed for test. Grey box testing may also include reverse engineering to determine, for instance, boundary values or error messages.

Comments

  1. explanation is clear thanks for that, if examples are also provided it would great

    ReplyDelete

Post a Comment