Получи случайную криптовалюту за регистрацию!

Самые необычные тесты, с которыми я встречался, были в проекте | Протестировал

Самые необычные тесты, с которыми я встречался, были в проекте KVM. Это тот проект, который реализует поддержку аппаратной виртуализации в Linux. За счёт него QEMU и другие виртуальные машины превращаются из медленной черепашки в виртуальную машину с достойной проиводительностью и пригодной для реального использования. Так вот в проекте KVM есть тесты, которые проверяют аппаратную часть внутри виртуальной машины сразу после её старта. Это тоже самое как тестировать на компьютере, на котором не то что приложений никаких нет, там нет операционной системы, которая выделит память и обеспечит другими ресурсами. Каждый такой тест сам по себе небольшая операционная система, которая самостоятельно выполняет инициализацию оборудования и даже имеет реализацию небольшого набора функций libc. После того, как виртуальная машина стартовала и внутри неё BIOS закончил инициализацию оборудования он передает управление одному из таких тестов. И что делает тест? Правильно, он включает MMU, инициализирует UART, это так называемая фикстура перед выполнением самого теста. А потом начинается тестирование, которое заключается в проверке перезагрузки контроллера клавиатуры, проверка контроллера прерываний, проверка эмуляции некоторых инструкций для CPU, проверка того, как CPU обрабатывает исключения, запуск и инициализация других CPU, если используется SMP. В некоторых тестах используются не только позитивные, но и негативные сценарии, а вот рандомизированного тестирования пока нет (хотя мне кажется было бы забавно иметь библиотеку для PBT, написанную на ассемблере). После завершения тестирования что делает тест? Конечно же сообщает результат. Так как он запущен один-одинёшенек, то способов сообщить что-то внешней программе в хостовой ОС не так много - нужно записать результат в специальное устройство, а тестовая инфраструктура прочитает это снаружи. И тест пишет 1 или 0 и скрипт, который запустил виртуальную машину с тестом, интерпретирует это как PASS или FAIL. Потом код теста выполняет выключение, виртуальная машина завершает выполнение и запуск этого теста на этом заканчивается.

https://www.linux-kvm.org/page/KVM-unit-tests