Как я могу автоматизировать тестирование исправлений антивируса / WSUS для моего драйвера Windows и двоичного файла?

#python #testing #automation #functional-testing #cots

#python #тестирование #автоматизация #функциональное тестирование #cots

Вопрос:

Моя (довольно небольшая) компания разрабатывает популярное приложение для Windows, но с чем мы всегда боролись, так это с тестированием — оно часто тестируется разработчиками только в системе, подобной той, на которой они его разработали, и когда обновление распространяется среди клиентов, есть сегмент нашей базы, который испытывает проблемы из-за какой-то странной функциональности с исправлением Windows, или в случае определенных параноидальных антивирусных приложений (я смотрю на вас, Comodo и Kaspersky!), они будут ложноположительными в нашем приложении.

Мы проводим ручное тестирование того, что используют 70% наших пользователей, но это медленно и болезненно, а иногда не так полно, как следовало бы. Руководство продолжает настаивать на том, что нам нужно работать лучше, но они продолжают настаивать на проблеме, когда приходит время выпуска (сколько времени займет тестирование? Просто удалите его, и мы выпустим исправление для клиентов, у которых возникнут проблемы!).

Я хотел бы разработать лучшую систему автоматического тестирования с использованием виртуальных машин, но мог бы использовать некоторые идеи о том, как это реализовать, или, если есть продукт COTS, любые предложения были бы замечательными. Я совместно взламываю скрипт на Python, который «запускает» все функции нашего продукта, но я не уверен, как приступить к тестированию, если мы получим сбой Windows (помимо простой проверки, есть ли он все еще в списке процессов), или, что еще хуже, если Comodo пометил его по какой-то глупой причине.

Чтобы наилучшим образом имитировать тестовую среду, я пытаюсь сохранить виртуальную машину как можно более «чистой» и не загружать на нее много дерьма за пределами ОС и антивируса, а также некоторых распространенных приложений (Acrobat Reader, Firefox и т.д.).

Буду признателен за любые идеи!

Комментарии:

1. В общих чертах, вы говорили с этими компаниями, чтобы узнать, можете ли вы получить доступ к каким-либо программам раннего тестирования, которые у них могут быть?

2. Нет. Я полагал, что они искали крупных корпоративных клиентов для бета-тестирования. У нас есть только одна копия их AV для тестирования, поэтому я предположил, что мы «мелкая сошка» и не стоим того.

Ответ №1:

Интересная проблема. Следует избегать использования антивирусных API для проверки, запускает ли их ваше приложение. Вы хотите реальное развертывание вашего приложения в ожидаемой операционной системе с реальным мониторингом установки AV. Таким образом, вы запустите эвристический мониторинг, а также простой вопрос «соответствует ли этот код контрольной сумме», с которым работает API.

Вы не сказали нам, на чем написано ваше приложение, но если ваш набор тестов для вашего приложения на самом деле использует части приложения, а не тестирует отдельные пути кода, это может быть хорошим началом. В идеале, ваш набор интеграционных тестов — это тот же набор тестов, который вы используете для проверки проблем на ваших целевых объектах развертывания. Ваше интеграционное тестирование должно проверять входные И выходные данные для каждого теста в реальной среде, что должно выявлять сбои и тому подобное. Кроме того, не забудьте проверить, не выполняются ли действия, которые занимают намного больше времени, чем следовало бы, к сожалению, это распространенный режим сбоя. Самое главное, ваш набор тестов должен быть достаточно простым в написании, изменении и улучшении, чтобы он действительно синхронизировался с продуктом. Тесты, которые не тестируют все, бесполезны, а тесты, которые не выполняются, еще хуже. Если бы у нас было больше информации о том, как работает ваша программа, мы могли бы дать лучший совет о том, как это автоматизировать.

Вероятно, вам понадобится набор образов виртуальных машин для предполагаемых целей развертывания в различных состояниях исправления (и распаковки). Для некоторых приложений вам понадобится отдельная виртуальная машина для каждого варианта IE, поскольку это изменяет другие аспекты системы. Будьте очень осторожны с тем, какая комбинация элементов у вас есть в каждой виртуальной машине. Не тестируйте более одного AV-файла одновременно. Обновите AVS в своих снимках перед запуском тестов. Если у вас в образах достаточно большая комбинация программного обеспечения, вам может потребоваться автоматизировать создание образа — получить базовую сборку системы, обновить до последнего уровня исправлений, затем выполнить установку AV и других комбинаций приложений.

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

Комментарии:

1. Как вы упомянули, AV-API обычно воняют. Они (по праву) не дают вам доступа ко всем дымам и зеркалам, используемым при эвристическом обнаружении, что мы и отмечаем. Конечно , наш двоичный файл не помечен как плохой, потому что это не так! Приложение написано на C и C . У него есть интерфейс сценариев, который я использую с помощью Python. Он довольно хорош для тестирования всей программы — проблема теперь в том, как измерить, как эти тесты влияют на систему. Некоторые AVS будут только предупреждать, а одно из исправлений X64 в 2010 году привело наш драйвер в нерабочее состояние, которое мы не смогли обнаружить.

2. Развертывание приложения не должно быть большой проблемой (я помещаю его в ISO и загружаю как виртуальный DVD-диск — у него есть MSI, который позволяет крупным корпорациям развертывать его). VMware — это то, что я планировал. Что я хочу сделать, так это найти способ в общем виде выяснить, есть ли у системы проблемы с моим приложением, с минимальным фактическим взаимодействием с моим приложением — т. Е. появилось ли окно, которого не должно быть? Что-то регистрировалось в Windows, что указывает на проблему? Что-то вошло в AV, что указывает на то, что у меня проблемы? Надеюсь, я смогу сделать это, не подключая отладчик к виртуальной машине 🙂

3. Хммм … в общем, выяснить, возникли ли у системы проблемы с вашим приложением, может быть сложно. Многие AV-системы замораживают ваше приложение, если считают, что оно плохо себя ведет (поэтому тайм-ауты могут сигнализировать о проблеме), но я не уверен, что все так делают.