High availability testing is to test the availability of back up servers when the actual servers fail. The proper or uninterrupted functioning of a system all the time so that the users will not face any trouble while accessing the system is what high availability means. It does not mean that system undergo any failure but the High availability system is designed to manage failures so that the services are restored and neglected to have an adverse impact on users.
High availability testing helps in finding the errors or bugs that will cause an adverse effect on the system functions. It helps in gaining the insight behaviour of the system under failover situations for developers. Failover is that the event that avoids the cause of negative impacts on the primary system failure by automatically shifting to the high reliable back up. Failure of single system doesn’t mean failure of entire system because redundancy is added to the system. This type of testing helps to overcome or determine mean time between failures and arithmetic calculation between average time a device operates before a failure. The objectives behind the high availability testing are:
- Service Reliability
- To check the system capability of system design for high availability
- Mean time Between Failure
- Prevent outright failures of online cloud service
- Design fault model
High availability means a system is continuously operational for a relative long length of time. Availability can be measured as 100 percent a widely held or difficult to achieve standard availability for a standard product known as 5 9’s(99.999)%. There are two approaches for storage of a redundant data for an independent disk is one approach(RAID). More common approach is Storage area network(SAN). The following are the High availability techniques
- Reliability engineering
- Change Management
- Configuration Management
- Capacity management
- Runbook Automation
- Load Balancing
- Failure detection
- Service desk
- Incident management
- Problem Management
As you reach to the higher level of reliability, several things happen to the system. The cost of hardware rise due to increase in the server, network and disk redundancy. Identifying and eliminating the failures become highly difficult. In case of designing the high availability test cases like converting the faults occurred from fault modelling to actionable test cases.
Categorising test cases into
- Component level fault test cases which is within the machine boundary
- System level fault test cases.
- Third party test cases.
- Infrastructure level and operational level fault test cases.
It is not enough to conduct high availability testing during pre production environment as infrastructure and maintenances factors are different from production environment. Faults related to software, hardware are environment specific and often witnesses scaling, addition of new data centres. All aspects make testing in production environment to high availability of system resources.
Robustness testing strategy of high availability.
Robustness is defined as an approach in which the system operates correctly in the presence of exceptional inputs under stressful conditions. The first step is to identify the potential sources to activate the robustness faults in high availability middleware systems. With the development of common interface the comparison of multiple products for high availability is achieved. The approach of robustness testing is similar to the functional black box testing but it concentrates on the activation of potential robustness faults by providing exceptional inputs and generating stressful conditions.
Check your understanding:
- What is high availability testing?
- What are the objectives of High availability testing?
- What are the testing techniques used for this type of testing?