Abstract
The paper presents methods aimed to extend coverage of existing tests by systematic and targeted fault injection in Linux kernel. The main goal is to test if kernel components correctly handle abnormal situations. As long as such situations happen seldom and unpredictably, it is difficult to debug bugs in the code handling them. Currently the only approach used in practice is random fault injection. The paper presents new methods that inject faults systematically. It allows to achieve better coverage and to make test results more predictable. The paper describes results of evaluation of the methods proposed and random fault injection.
Highlights
Random fault injection works much better than absence of abnormal testing at all, but it has a number of drawbacks
The paper presents a method of systematic fault injection for robustness testing that enables reproducibility of test scenarios out of box.The basic idea of the method is to detect all execution points where a fault can happen, to filter out the points on the base of some equivalence relation and to execute tests bringing code into the chosen execution points with injecting faults at that points.Applicability and efficiency of the approach depends on the equivalence relation
The equivalence relation can be defined using manual markup of important segments of tests or it can be defined completely automatically on the base of a set of stack traces describing a fault injection.Experimental data were collected using test suites for Linux kernel file system implementations augmented with random and systematic fault injection.The experiments demonstrate the efficiency of systematic approach and acknowledge benefits coming from its deterministic nature
Summary
Операционные системы, основанные на ядре Linux, широко используются в мире. Они обеспечивают работу более 90% мощнейших суперкомпьютеров из международного рейтинга TOP500 и преобладают на рынке операционных систем для мобильных устройств в составе ОС Android. Далее в статье будет использоваться название драйвер как общее обозначение для драйверов устройств и "драйверов программных сущностей". Как эффективный способ такого тестирования предлагалось использовать симуляцию таких условий в функциях, вызываемых из тестируемого драйвера. В данной статье исследуются существующие методы тестирования с использованием такого рода симуляции, а также предлагаются новые методы. В третьем разделе будет описан уже существующий метод с использованием рандомизированного сценария симуляции сбоев. Хотя качественные показатели метода неплохи, недетерминированность сценария симуляции сбоев не позволяет использовать его результаты тестирования в качестве обоснования корректности драйвера. Использование симуляции сбоев при тестировании компонентов ядра ОС Linux. В пятом разделе будут приведены результаты испытания описанных методов c существующими тестовыми наборами на одном из драйверов ОС Linux. В шестом разделе будет проведено сравнение описанных методов тестирования с симуляцией сбоев, и будут сделаны выводы об их применимости на практике
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
More From: Proceedings of the Institute for System Programming of RAS
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.