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


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

Комментарии (16)


  1. Mihail57
    27.04.2016 02:02
    +5

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


  1. MooNDeaR
    27.04.2016 05:36
    +4

    Признаться, по названию статьи думал, что расскажете о том, как антивирусы тестируют файлы.

    Если по теме, то я немного не понял к чему эта статья-интрига? Сказали, что есть python, есть библиотеки к нему, создали интригу… а где код?


    1. irony_iron
      27.04.2016 09:16

      Мне нечего рассказать о python, в этом вся сила python — после того как решили писать что-то на нем, просто берете и пишите, никакого загадочного или нелогичного поведения ) Пост написан чтобы снять с автоматизаторов тестирования груз ответственности в изобретении очередного велосипеда — в случае тестирования системного софта золотой пули или стандартного дешевого и простого средства кроме чистого python — нет. Все пишут или допиливают чужие фреймворки: kaspersky доделал tfs, drweb насколько знаю по списку их вакансий — python, мы — python.


      1. irony_iron
        27.04.2016 09:53

        Ах, да, agnitum outpost тестили головой и руками, инфосеки(информзащита) хотели помнится скриптования на powershell(возможно tfs настроили), и всякие ребята по-проще, о которых знаю — кто-то из детей газпрома пробовал testcomplete(получилось дорого само по себе и bus-фактор на автоматизатора), sikuli (не гарантированно и тяжеловато для процессора)


      1. lostpassword
        27.04.2016 11:29

        А вы таки выложили бы скриптик, народ бы посмотрел.)


        1. irony_iron
          27.04.2016 11:56

          NDA же, не я владелец своего кода :(
          Выглядит как-то так
          image


          1. teecat
            27.04.2016 13:06

            И это все тесты? Установка на чистую систему и онлайн-сканирование?


            1. irony_iron
              27.04.2016 13:38

              Смоки же :) А Ви почиму спгашиваете? Конкуренты не дремлют смотрю XD


              1. teecat
                27.04.2016 13:50
                +2

                Получить конкурентную информацию — это святое!
                Если серьезно, то как минимум + удаление, переустановка, установка поверх предыдущих версий, установка поверх конкурентов, обновления, прогон по коллекциям. И все это на кучке конфигураций, на которых были глюки


  1. kasperos
    27.04.2016 07:03
    +2

    А где «Я пиарюсь»?


    1. irony_iron
      27.04.2016 09:09

      Нехватка кармы для публикации туда, но я искренне хотел сделать пост именно в «Я пиарюсь», Вы прозорливы ;)


      1. kasperos
        27.04.2016 09:19
        +1

        Собственно а где в тексте взгляд изнутри про непосредственно тестирование антивирусов?
        В тексте все упоминание про антивирусы:

        лечение вирусов


        1. irony_iron
          27.04.2016 11:00
          -1

          Вы забываете про последнюю ссылку в посте ;) она и есть самый простой и дешевый способ тестирования антивирусов на различном железе и платформах xD


  1. teecat
    27.04.2016 13:05

    Всеж таки хотелось услышать про проблематику тестирования антивирусов, описания методик — или увидеть смену заголовка


    1. irony_iron
      29.04.2016 22:06

      Главная проблема — как выяснилось, это политика неразглашения. Даже такой водянистый пост вызвал бурное внутреннее обсуждение о том, что можно делать в личное время сотруднику.


  1. LEQADA
    27.04.2016 18:10
    +1

    Пост о том, как вы для себя открыли возможности Python?