Testing of Operating Systems.
An operating system is a base stone of any computer system. Failures and bugs in an operating system impact the functionality of the system as a whole, that is why correctness and reliability of operating systems are so important. A variety of circumstances make verification and testing of operating systems a complicated issue. The list includes high dependence of operating systems on hardware, their massive internal concurrency, huge number of configuration options, required tolerance to aggressive actions of counteragents and hardware faults, a need for long continuous work without reboot, etc. Testing methods applied to operating systems include functional testing, backward compatibility testing, robustness testing, performance testing, configuration testing and others. Functional testing should be based on specifications of functional requirements to interfaces provided to applications and supported by test generation and coverage analysis tools. Model-based methods are very effective here. Backward compatibility testing includes both structural and semantic compatibility testing. Robustness testing includes detecting specific defects like memory leaks, data races and instability when processing incorrect data. Performance testing and benchmarking is of most importance for real-time operating systems. It includes definition of characteristics to be measured and development of benchmarking methods with predictable accuracy for each characteristic. Finally, composite approach to testing of operating systems is very important. The most appropriate testing method should be identified for each component or a subsystem of an operating system. An integrated testing control system helps making the testing process effective, especially when regression testing during operating system development and improvement.
Proceedings of the Institute for System Programming, vol. 26, issue 1, 2014, pp. 27-72.
ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).