Компания AMD открыла исходные тексты системы Tapper, разработанной в дрезденском Центре разработки операционных систем (amd64.org). Система Tapper создана для обеспечения работы инфраструктуры, ориентированной на выполнение всех аспектов тестирования программного обеспечения, операционных систем и технологий виртуализации. Используя Tapper группы по контролю качества программного обеспечения могут организовать проведение всего жизненного цикла тестирования, от планирования и выполнения тестовых заданий, до генерации отчетов. Код Tapper доступен под лицензией BSD. Проект написан на языке Perl с использованием стандартных CPAN-модулей.
Система разработана в виде набора модулей, связанных между собой через стандартные интерфейсы. Ключевым звеном системы является серверный процесс, координирующий выполнение тестов и сохраняющих результаты. Подобный подход позволяет упростить адаптацию пакета для различных уровней оценки качества, от простейших измерений производительности и вывода результатов, до создания автоматизированных систем проверки работоспособности группы серверов, учитывающих особенности развернутой инфраструктуры виртуализации и генерирующих детальные отчеты с оценкой полученных данных.
Для формирования результатов тестирования используется стандартный протокол TAP (Test Anything Protocol). Алгоритм проведения тестов можно оформить на Shell, Perl и Python. Результирующие данные могут быть сохранены в соответствии с определенной пользователем моделью объектно-реляционного маппинга данных, по умолчанию поддерживаются MySQL и SQLite. Загрузка тестовых окружений может быть организована с использованием PXE, GRUB, TFTP, NFS. Проект Tapper может использоваться совместно с фреймворком autotest.kernel.org, используемом для тестирования работоспособности различных компонентов Linux-ядра.
Ключевые особенности Tapper:
- Автоматизация
- Загрузка тестовых окружений по сети и их конфигурирование;
- Инсталляция с использованием готовых образов установленной системы или установка штатными средствами с задействованием таких технологий, как kickstart и autoyast;
- Поддержка тестирования систем внутри виртуализированных окружений Xen и KVM, а также проверка работоспособности в сочетании с различными типами дистрибутивов (RHEL, SLES, Debian)
- Возможность подстановки нужных пакетов, программ и файлов на заданный хост или в заданное виртуальное окружение;
- Контроль за исполнением тестовых скриптов на заданном хосте или виртуальном окружении;
- Гибкая обработка таймаутов для всего цикла тестирования.
- Планирование
- Оптимизация тестирования при нехватке машин для выполнения большого числа сценариев тестирования;
- Возможность смешивания очередей проведения тестов для различных областей тестирования с разной пропускной способностью;
- Выбор хоста для проведения тестирования с учетом заданных параметров (размер ОЗУ, число процессороных ядер, тип производителя и т.п.);
- Автоматическое перестроение очереди при непрерывном тестировании;
- Использование сценариев, охватывающих несколько хостов;
- Веб-интерфейс
- Поддержка высокоуровневой оценки результатов тестирования и возможность охвата всех результатов в одном окне;
- Обзорные списки состояния тестирования и детализированные отчеты.
- Подсвечивание статуса выполнения теста цветом (зелёный, желтый, красный);
- Возможность фильтрации результатов по времени, тестовым заданиям, хостам, статусу выполнения;
- RSS-лента для слежения за выполнением тестов;
- Контроль запуска тестовых наборов;
- Оценка результатов
- Программируемый API для взаимодействия с web-фронтэндом;
- Поддержка выполнения сложных запросов к базе данных с результатами тестирования, комбинируя SQL и XPath-запросы. Подробнее об интерфейсе для формирования запросов можно прочитать в данной презентации;
- Планирование проведения тестов
- Возможность определения плана выполнения тестов, комбинируя разнообразные возможности Tapper;
- Средства для управления иерархией спецификаций с определением тестовых планов;
- Поддержка взаимодействия с ПО TaskJuggler для автоматического планирования и генерации отчетов;
- Возможные области применения
- Тестирование ядра (стресс-тестирование, оценка работоспособности функций, выполнение перезагрузки);
- Тестирование систем виртуализации (KVM, Xen);
- Тестирование комбинации результатов работы на физических хостах и под управлением систем виртуализации;
- Тестирование дистрибутивов и компиляторов;
- Оценка производительности.