Reliability testing is defined as a software testing type, that checks whether the software can perform a failure-free operation for a specified period of time in a specified environment.
Reliability means "yielding the same," in other terms, the word "reliable" mean something is dependable and that it will give the same outcome every time.
The same is true for Reliability testing. Reliability testing in software assures that the product is fault free and is reliable for its intended purpose.
In this tutorial, you will learn-
- What is Reliability Testing?
- Reliability Testing Example
- Factors Influencing Software Reliability
- Why to do Reliability Testing
- Types of reliability Testing
- How to do Reliability Testing
- Example Methods for Reliability Testing
- Reliability Testing Tools
The probability that a PC in a store is up and running for eight hours without crashing is 99%; this is referred as reliability.
Reliability Testing can be categorized into three segments,
The following formula is for calculating the probability of failure.
Probability = Number of failing cases/ Total number of cases under consideration
- The number of faults presents in the software
- The way users operate the system
- Reliability Testing is one of the key to better software quality. This testing helps discover many problems in the software design and functionality.
- The main purpose of reliability testing is to check whether the software meets the requirement of customer's reliability.
- Reliability testing will be performed at several levels. Complex systems will be tested at unit,assembly,subsystem and system levels.
Reliability testing is done to test the software performance under the given conditions.
The objective behind performing reliability testing are,
- To find the structure of repeating failures.
- To find the number of failures occurring is the specified amount of time.
- To discover the main cause of failure
- To conduct Performance Testing of various modules of software application after fixing defect
After the release of the product too,we can minimize the possibility of occurrence of defects and thereby improve the software reliability. Some of the tools useful for this are- Trend Analysis,Orthogonal Defect Classification and formal methods, etc..
Featured Testing check the feature provided by the software and is conducted in the following steps:-
- Each operation in the software is executed at least once.
- Interaction between the two operations is reduced.
- Each operation have to be checked for its proper execution.
Usually, the software will perform better at the beginning of the process and after that, it will start degrading. Load Testing is conducted to check the performance of the software under maximum work load.
Regression testing is mainly used to check whether any new bugs have been introduced because of the fixing of previous bugs. Regression Testing is conducted after every change or updation of the software features and their functionalities.
Reliability Testing is costly compared to other types of testing. So Proper planning and management is required while doing reliability testing. This includes testing process to be implemented, data for test environment, test schedule, test points, etc.
To begin with reliability testing, tester has to keep following things,
- Establish reliability goals
- Develop operational profile
- Plan and execute tests
- Use test results to drive decisions
As we discussed earlier, there are three categories in which we can perform the Reliability Testing,-Modeling, Measurement and Improvement.
The key parameters involved in Reliability Testing are:-
- Probability of failure-free operation
- Length of time of failure-free operation
- The environment in which it is executed
Step 1) Modeling
Software Modeling Technique can be divided into two subcategories:
1. Prediction Modeling
2. Estimation Modeling
- Meaningful results can be obtained by applying suitable models.
- Assumptions and abstractions can be made to simplify the problems and no single model will suitable for all the situations.
The major differences of two models are:-
|Issues||Prediction Models||Estimation Models|
|Data Reference||It uses historical data||It uses current data from the software development.|
|When used in Development Cycle||It will be usually created before the development or testing phases.||It will be usually used at the later stage of Software Development Life Cycle.|
|Time Frame||It will predict the reliability in the future.||It will predict the reliability either for the present time or in the future time.|
Step 2) Measurement
Software reliability cannot be measured directly and hence, other related factors are considered in order to estimate the software reliability. The current practices of Software Reliability Measurement are divided into four categories:-
1. Product Metrics:-
Product metrics are the combination of 4 types of metrics:
- Software size: - Line of Code (LOC) is an intuitive initial approach for measuring the size of the software. Only the source code is counted in this metric, and the comments and other non-executable statements will not be counted.
- Function point Metric:- Function Pont Metric is the method for measuring the functionality of the Software Development. It will consider the count of inputs, outputs, master files, etc. It measures the functionality delivered to the user and is independent of the programming language.
- Complexity:- It is directly related to software reliability, so representing complexity is important. Complexity-oriented metric is a method of determining the complexity of a program's control structure, by simplifying the code into a graphical representation.
- Test Coverage Metrics:- It is a way of estimating fault and reliability by performing the complete test of software products. Software reliability means it is the function of determining that the system has been completely verified and tested.
2. Project Management Metrics
- Researchers have realized that good management can result in the better products.
- A good management can achieve higher reliability by using better development process,risk management process,configuration management process, etc.
3. Process Metrics
The quality of the product is directly related to the process. The process metrics can be used to estimate, monitor and improve the reliability and quality of software.
4. Fault and Failure Metrics
Fault and Failure Metrics are mainly used to check whether the system is completely failure-free. Both the types of faults found out during the testing process (i.e. before delivery) as well as the failure reported by users after delivery are collected, summarized and analyzed to achieve this goal.
Software reliability is measured in terms of mean time between failures (MTBF). MTBF consists of
- Mean to failure (MTTF): It is the difference of time between two consecutive failures
- Mean time to repair (MTTR): It is the time required to fix the failure.
MTBF = MTTF + MTTR
Reliability for good software is a number between 0 and 1.
Reliability increases when errors or bugs from the program are removed.
Step 3) Improvement
Improvement completely depends upon the problems occurred in the application or system, or else the characteristics of the software. According to the complexity of the software module,the way of improvement will also differ. Two main constraints time and budget, which will limit the efforts are put into the software reliability improvement.
Testing for reliability is about exercising an application so that failures are discovered and removed before the system is deployed.
There are mainly three approaches used for Reliability Testing
- Test-Retest Reliability
- Parallel Forms Reliability
- Decision Consistency
Below we tried to explain all these with an example.
To estimate test-retest reliability, a single group of examinees will perform testing process only a few days or weeks apart. The time should be short enough so that the examinees skills in the area can be assessed. The relationship between the examinee's scores from two different administrations is estimated, through statistical correlation. This type of reliability demonstrates the extent to which a test is able to produce stable, consistent scores across time.
Parallel Forms Reliability
Many exams have multiple formats of question papers, this parallel forms of exam provide Security. Parallel forms reliability is estimated by administrating both forms of the exam to the same group of examinees. The examinees scores on the two test forms are correlated in order to determine how similarly the two test forms functions. This reliability estimate is a measure of how consistent examinees scores can be expected to across test forms.
After doing Test-Retest Reliability and Parallel Form Reliability, we will get a result of examinees either pass or fail. It is the reliability of this classification decision that is estimated in decision consistency reliability.
Importance of Reliability Testing
A thorough assessment of reliability is required to improve the performance of software product and process. Testing software reliability will help the software managers and practitioners to a great extent.
To check the reliability of the software via testing:-
- A large number of test cases should be executed for an extended period of time to find out how long the software will execute without failure.
- The test cases distribution should match the actual or planned operational profile of the software. The more often a function of the software is executed, the greater the percentage of test cases that should be allocated to that function or subset.
Some of the Tools used for Software Reliability are
1. WEIBULL++:- Reliability Life Data Analysis
2. RGA:- Reliability Growth Analysis
3. RCM:-Reliability Centered Maintenance
Reliability Testing is the important part of a reliability engineering program. More correctly, it is the soul of reliability engineering program.
Furthermore, reliability tests are mainly designed to uncover particular failure modes and other problems during software testing.
In Software Engineering, Reliability Testing can be categorized into three segments,
Factors Influencing Software Reliability
- The number of faults presents in the software
- The way users operate the system