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

    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


    Собственно, после набора некоторого количества новых фич, продукт отдается зондер-команде — бета-тестерам и через фидбек в техподдержке качество доводится до небывалых высот.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 16

      +5
      Как-то быстро закончилась статья… Такое ощущение, что блог какой-то компании. Может стоит чуть расширить статью? В сторону технических подробностей по питону в тестировании.
        +4
        Признаться, по названию статьи думал, что расскажете о том, как антивирусы тестируют файлы.

        Если по теме, то я немного не понял к чему эта статья-интрига? Сказали, что есть python, есть библиотеки к нему, создали интригу… а где код?
          0
          Мне нечего рассказать о python, в этом вся сила python — после того как решили писать что-то на нем, просто берете и пишите, никакого загадочного или нелогичного поведения ) Пост написан чтобы снять с автоматизаторов тестирования груз ответственности в изобретении очередного велосипеда — в случае тестирования системного софта золотой пули или стандартного дешевого и простого средства кроме чистого python — нет. Все пишут или допиливают чужие фреймворки: kaspersky доделал tfs, drweb насколько знаю по списку их вакансий — python, мы — python.
            0
            Ах, да, agnitum outpost тестили головой и руками, инфосеки(информзащита) хотели помнится скриптования на powershell(возможно tfs настроили), и всякие ребята по-проще, о которых знаю — кто-то из детей газпрома пробовал testcomplete(получилось дорого само по себе и bus-фактор на автоматизатора), sikuli (не гарантированно и тяжеловато для процессора)
              0
              А вы таки выложили бы скриптик, народ бы посмотрел.)
            +2
            А где «Я пиарюсь»?
              0
              Нехватка кармы для публикации туда, но я искренне хотел сделать пост именно в «Я пиарюсь», Вы прозорливы ;)
                +1
                Собственно а где в тексте взгляд изнутри про непосредственно тестирование антивирусов?
                В тексте все упоминание про антивирусы:
                лечение вирусов
                  –1
                  Вы забываете про последнюю ссылку в посте ;) она и есть самый простой и дешевый способ тестирования антивирусов на различном железе и платформах xD
              0
              Всеж таки хотелось услышать про проблематику тестирования антивирусов, описания методик — или увидеть смену заголовка
                0
                Главная проблема — как выяснилось, это политика неразглашения. Даже такой водянистый пост вызвал бурное внутреннее обсуждение о том, что можно делать в личное время сотруднику.
              • UFO just landed and posted this here

                Only users with full accounts can post comments. Log in, please.