Ядро Linux это один из самых старых и масштабных opensource проектов. В каждом релизе участвуют около 1.5к разработчиков из 200-250 компаний. Последняя версия ядра содержит 24,766,703 строк кода. Ядро используется повсеместно телефоны Android (2e9 пользователей), облачные сервера, настольные системы, ноутбуки, машины, а также в критически важной инфраструктуре: атомные подводные лодки, Большой Андронный Коллайдер, Международная Космическая Станция и т.д. Казалось бы очевидно, что ПО с таким количеством пользователей должно cоответствующим образом тестироваться и иметь налаженный процесс выпуска качественных релизов. Но до сих пор процесс тестирования являлся фрагментированным и каждая компания, которая разрабатывала продукты с использованием Linux ядра, тестировала их самостоятельно, а патчи с исправлением проблем при возможности разработчики возвращали в основную ветку ядра. Для выпуска нового релиза ядра нет формальных процедур тестирования.
Сотрудник Гугла Дмитрий Вьюков долгое время занимался фаззинг-тестированием ядра и последние его доклады на конференциях Linux-разработчиков посвящены фрагментации разработки и огромному количеству неисправленных проблем, которые были найдены с помощью его инструмент для фаззинга ядра syzcaller. Он пытается донести до сообщества разработчиков, что у ядра Linux есть слабое место: плохое тестирование.
Некоторые из его докладов:
- syzbot: and the tale of thousand kernel bugs Слайды, Видео - Reflections on kernel development process, quality and testing Слайды, Видео
Но в ближайшее время возможно текущее положение с тестированием может поменяться и одним из главных признаков этого является то, что KernelCI, среда автоматического тестирования ядра Linux, становится частью проекта Linux Foundation.
На последней конференции Linux Kernel Plumbers одной из самых обсуждаемых тем была автоматизация тестирования ядра Linux. Ведущие компании-разработчики ядра Linux объединили свои усилия в рамках одной среды тестирования: KernelCI и теперь KernelCI стал проектом Linux Foundation. Пока в KernelCI регулярно тестируются сборка ядра в разных конфигурациях и их загрузка на множестве поддерживаемых платформ. В ближайших планах добавлять тестпланы с регресионными тестами на разные части ядра.