Risk-based testing (RBT) is a type of
software testing
Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to apprecia ...
that functions as an organizational principle used to prioritize the tests of features and functions in software, based on the risk of failure, the function of their importance and likelihood or impact of failure.
In theory, there are an infinite number of possible tests. Risk-based testing uses risk (re-)assessments to steer all phases of the test process, i.e., test planning, test design, test implementation, test execution and test evaluation. This includes for instance, ranking of tests, and subtests, for functionality; test techniques such as
boundary-value analysis
Boundary-value analysis is a software testing technique in which tests are designed to include representatives of boundary values in a range. The idea comes from the boundary. Given that we have a set of test vectors to test the system, a topolo ...
,
all-pairs testing In computer science, all-pairs testing or pairwise testing is a combinatorial method of software testing that, for ''each pair'' of input parameters to a system (typically, a software algorithm), tests all possible discrete combinations of those pa ...
and
state transition tables
State may refer to:
Arts, entertainment, and media Literature
* '' State Magazine'', a monthly magazine published by the U.S. Department of State
* ''The State'' (newspaper), a daily newspaper in Columbia, South Carolina, United States
* ''Our ...
aim to find the areas most likely to be defective.
Assessing risks
Comparing the changes between two releases or versions is key in order to assess risk.
Evaluating critical business modules is a first step in prioritizing tests, but it does not include the notion of evolutionary risk. This is then expanded using two methods: change-based testing and
regression testing
Regression testing (rarely, ''non-regression testing'') is re-running functional and non-functional tests to ensure that previously developed and tested software still performs as expected after a change. If not, that would be called a ''regres ...
.
* Change-based testing allows test teams to assess changes made in a release and then prioritize tests towards modified modules.
*
Regression testing
Regression testing (rarely, ''non-regression testing'') is re-running functional and non-functional tests to ensure that previously developed and tested software still performs as expected after a change. If not, that would be called a ''regres ...
ensures that a change, such as a bug fix, did not introduce new faults into the software under test. One of the main reasons for regression testing is to determine whether a change in one part of the software has any effect on other parts of the software.
These two methods permit test teams to prioritize tests based on risk, change, and criticality of business modules. Certain technologies can make this kind of test strategy very easy to set up and to maintain with software changes.
Types of risk
Risk can be identified as the probability that an undetected
software bug may have a negative impact on the user of a system.
The methods assess risks along a variety of dimensions:
Business or operational
* High use of a subsystem, function or feature
* Criticality of a subsystem, function or feature, including the cost of failure
Technical
* Geographic distribution of development team
* Complexity of a subsystem or function
External
* Sponsor or executive preference
* Regulatory requirements
E-business failure-mode related
* Static content defects
* Web page integration defects
* Functional behavior-related failure
* Service (Availability and Performance) related failure
* Usability and Accessibility-related failure
* Security vulnerability
* Large scale integration failure
Some considerations about prioritizing risks is written by Venkat Ramakrishnan in a blog.
[On Risk-Based Testin]
/ref>
References
Software testing
{{Soft-eng-stub