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

Read more

Summary

Введение

Операционные системы, основанные на ядре Linux, широко используются в мире. Они обеспечивают работу более 90% мощнейших суперкомпьютеров из международного рейтинга TOP500 и преобладают на рынке операционных систем для мобильных устройств в составе ОС Android. Далее в статье будет использоваться название драйвер как общее обозначение для драйверов устройств и "драйверов программных сущностей". Как эффективный способ такого тестирования предлагалось использовать симуляцию таких условий в функциях, вызываемых из тестируемого драйвера. В данной статье исследуются существующие методы тестирования с использованием такого рода симуляции, а также предлагаются новые методы. В третьем разделе будет описан уже существующий метод с использованием рандомизированного сценария симуляции сбоев. Хотя качественные показатели метода неплохи, недетерминированность сценария симуляции сбоев не позволяет использовать его результаты тестирования в качестве обоснования корректности драйвера. Использование симуляции сбоев при тестировании компонентов ядра ОС Linux. В пятом разделе будут приведены результаты испытания описанных методов c существующими тестовыми наборами на одном из драйверов ОС Linux. В шестом разделе будет проведено сравнение описанных методов тестирования с симуляцией сбоев, и будут сделаны выводы об их применимости на практике

Целенаправленная разработка тестов с симуляцией сбоев
Рандомизированный метод симуляции сбоев
Систематическая симуляция сбоев
Метод перебора всех возможных точек симуляции сбоев
Выделение уникальных участков в коде тестов
Учет стека вызовов для отбрасывания неинтересных сценариев симуляции сбоев
Апробация методов и ее результаты
Тестовый набор xfstests
Сравнение методов тестирования с симуляцией сбоев
Заключение
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call