
И дело не в том, что все системы автотестов имеют фатальный недостаток, или не отвечают простому списку требований, порожденному моей буйной фантазией(ссылка на мои требования), или не могут отобразить всю невообразимую сложность юзеркейсов использования — нехитрый анализ говорит нам, что набор юзер-кейсов любого антивируса обязан включать относительно простые шаги:
- Развертывание на чистую машину
- Проверку статических характеристик файлов антивируса
- Лечение и детектирование разнообразных угроз
- Деинсталляцию
- Повторную инсталляцию
- Обновление старой версии
- Совместимость инсталляции с антивирусными решениями конкурентов
- Тесты самозащиты
Особо хочется отметить пункт о совместимости — для меня казалось нормальным, что антивирус — это кто-то из списка kaspersky, drweb, eset, symantec, etc, но мир не стоял на месте и пользователи нового поколения чего только не нашли для себя — теперь приходится парсить страницу download.cnet.com/s/antivirus с популярными закачками за неделю и тестироваться с тем что актуально.
Как видно все кейсы прямо напрашиваются на автоматизацию.
Но в тестировании системного софта, и антивирусов в том числе, существует пара проблем:
- Работа на железе отличается от работы в vm, среди тестовых машин могут и должны быть как физические, так и виртуальные среды.
- Вторая проблема тестирования системного софта отмечена еще в 2013 году талантливым исследователем Фридлянд Ю. М. и звучит она как «обеспечение поддержки перезагрузки в системе автотестов».
Почти месяц формирований разнообразных запросов к поисковым системам привел меня к факту, что иных релевантных ответов на вопрос «как делать автотесты с перезагрузкой» кроме презентации к дипломному проекту наших партнеров нет. О боги, подумал я, прочитав тот pdf — тащить целый TFS со всей сопутствующей инфраструктурой Microsoft ради жизни после перезагрузки?

За что мне это?
И я стал изучать другие решения. Да-да, я действительно смотрел docker, читал про ci на основе jenkins, пробовал и разочаровывался — либо решение полностью не подходило, либо количество необходимых смежных технологий к изучению давало в перспективе уникально-модифицированное неподдерживаемое решение (либо поддерживаемое штатом высококлассных специалистов), я менял проекты и работодателей (на все более именитых конечно же), но везде видел одно и то же — тестировать системный функционал (обновление драйверов, выключение ОС, лечение вирусов, проверка автозагрузки) руками являлось наиболее быстрым, надежным и дешевым способом.
А потом я открыл для себя python. На одной этой технологии оказалось возможным написать простой менеджер виртуальных машин (import pysphere), веб-интерфейс к нему (import web2py), агента тестирования- win32 службу (import win32service), доставляемого на виртуалку через iso образ, и сами тесты, собранные в отдельные exe-файлы через pyinstaller(чтобы не мучиться с предподготовкой систем, инсталляцией python etc). Концептуально это все выглядит следующим образом:

Все это добро поддерживается 1 специалистом со знанием 1 технологии, bus-фактор минимален, чему я несказанно рад.
Результаты работы тестов собираются в страничку дневного отчета:

Таким вот нехитрым образом мы избавились примерно за полгода разработки своего велосипеда от регресс и смоук-тестов, на ручные тесты падает только новый функционал, от чего у всего отдела тестирования морщины разгладились, а волосы стали мягкими и шелковистыми, чего и вам желаю.

Собственно, после набора некоторого количества новых фич, продукт отдается зондер-команде — бета-тестерам и через фидбек в техподдержке качество доводится до небывалых высот.
Комментарии (16)
MooNDeaR
27.04.2016 05:36+4Признаться, по названию статьи думал, что расскажете о том, как антивирусы тестируют файлы.
Если по теме, то я немного не понял к чему эта статья-интрига? Сказали, что есть python, есть библиотеки к нему, создали интригу… а где код?irony_iron
27.04.2016 09:16Мне нечего рассказать о python, в этом вся сила python — после того как решили писать что-то на нем, просто берете и пишите, никакого загадочного или нелогичного поведения ) Пост написан чтобы снять с автоматизаторов тестирования груз ответственности в изобретении очередного велосипеда — в случае тестирования системного софта золотой пули или стандартного дешевого и простого средства кроме чистого python — нет. Все пишут или допиливают чужие фреймворки: kaspersky доделал tfs, drweb насколько знаю по списку их вакансий — python, мы — python.
irony_iron
27.04.2016 09:53Ах, да, agnitum outpost тестили головой и руками, инфосеки(информзащита) хотели помнится скриптования на powershell(возможно tfs настроили), и всякие ребята по-проще, о которых знаю — кто-то из детей газпрома пробовал testcomplete(получилось дорого само по себе и bus-фактор на автоматизатора), sikuli (не гарантированно и тяжеловато для процессора)
lostpassword
27.04.2016 11:29А вы таки выложили бы скриптик, народ бы посмотрел.)
irony_iron
27.04.2016 11:56NDA же, не я владелец своего кода :(
Выглядит как-то так
teecat
27.04.2016 13:06И это все тесты? Установка на чистую систему и онлайн-сканирование?
irony_iron
27.04.2016 13:38Смоки же :) А Ви почиму спгашиваете? Конкуренты не дремлют смотрю XD
teecat
27.04.2016 13:50+2Получить конкурентную информацию — это святое!
Если серьезно, то как минимум + удаление, переустановка, установка поверх предыдущих версий, установка поверх конкурентов, обновления, прогон по коллекциям. И все это на кучке конфигураций, на которых были глюки
kasperos
27.04.2016 07:03+2А где «Я пиарюсь»?
irony_iron
27.04.2016 09:09Нехватка кармы для публикации туда, но я искренне хотел сделать пост именно в «Я пиарюсь», Вы прозорливы ;)
kasperos
27.04.2016 09:19+1Собственно а где в тексте взгляд изнутри про непосредственно тестирование антивирусов?
В тексте все упоминание про антивирусы:лечение вирусов
irony_iron
27.04.2016 11:00-1Вы забываете про последнюю ссылку в посте ;) она и есть самый простой и дешевый способ тестирования антивирусов на различном железе и платформах xD
teecat
27.04.2016 13:05Всеж таки хотелось услышать про проблематику тестирования антивирусов, описания методик — или увидеть смену заголовка
irony_iron
29.04.2016 22:06Главная проблема — как выяснилось, это политика неразглашения. Даже такой водянистый пост вызвал бурное внутреннее обсуждение о том, что можно делать в личное время сотруднику.
Mihail57
Как-то быстро закончилась статья… Такое ощущение, что блог какой-то компании. Может стоит чуть расширить статью? В сторону технических подробностей по питону в тестировании.