Pull to refresh

Как тестируют антивирусное ПО

IT systems testing
Cezurity testing before meПоследние лет пять я занимаюсь тем, что помогаю делать тестирование системных приложений быстрее и дешевле. По молодости (будучи юн и горяч) я старался просто работать быстрее руками и внимательнее головой, но постепенно пришло понимание, что у ручного тестирования есть предел эффективности: для отдела из руководителя и двух тестировщиков это примерно 30 фич в месяц. Казалось бы — нет проблем, ведь существует хорошо отработанный путь по беспощадной автоматизации тестирования — одно избавление от регресса даст с лихвой свобдного времени, выберем просто систему из того, что есть на рынке, внедрим и будем жить счастливо. И тут жизнь заявляет: «Нет.»
И дело не в том, что все системы автотестов имеют фатальный недостаток, или не отвечают простому списку требований, порожденному моей буйной фантазией(ссылка на мои требования), или не могут отобразить всю невообразимую сложность юзеркейсов использования — нехитрый анализ говорит нам, что набор юзер-кейсов любого антивируса обязан включать относительно простые шаги:
  1. Развертывание на чистую машину
  2. Проверку статических характеристик файлов антивируса
  3. Лечение и детектирование разнообразных угроз
  4. Деинсталляцию
  5. Повторную инсталляцию
  6. Обновление старой версии
  7. Совместимость инсталляции с антивирусными решениями конкурентов
  8. Тесты самозащиты

Особо хочется отметить пункт о совместимости — для меня казалось нормальным, что антивирус — это кто-то из списка 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-фактор минимален, чему я несказанно рад.

Результаты работы тестов собираются в страничку дневного отчета:
image

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


Собственно, после набора некоторого количества новых фич, продукт отдается зондер-команде — бета-тестерам и через фидбек в техподдержке качество доводится до небывалых высот.
Tags:антивирусытестированиекак тестировать с перезагрузкой
Hubs: IT systems testing
Total votes 16: ↑7 and ↓9 -2
Views6.4K

Popular right now

QA Engineer, Тестировщик (ручное тестирование)
from 100,000 ₽СберЛогистикаМоскваRemote job
Performance Testing Specialist
to 250,000 ₽DINSСанкт-ПетербургRemote job
IT Recruiter
from 50,000 ₽Red LabRemote job
QA специалист (ручное тестирование)
from 50,000 to 80,000 ₽InsightWhaleRemote job
IT Recruiter
from 30,000 ₽Digital NomadsТомск