Как я могу автоматизировать антивирусное / WSUS-тестирование моего драйвера Windows и двоичного файла? - PullRequest
5 голосов
/ 02 июня 2011

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

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

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

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

Любые идеи будут наиболее ценными!

1 Ответ

1 голос
/ 02 июня 2011

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

Вы не сказали нам, для чего написано ваше приложение, но если ваш набор тестов для вашего приложения фактически использует части приложения, а не тестирует отдельные пути кода, это может быть хорошим началом. В идеале, ваш набор интеграционных тестов - это тот же набор тестов, который вы используете для проверки проблем в ваших целях развертывания. Ваше интеграционное тестирование должно проверять ввод и вывод для каждого теста в реальной среде, которая ДОЛЖНА отлавливать сбои и тому подобное. Кроме того, не забывайте проверять вещи, которые занимают намного больше времени, чем нужно, это, к сожалению, распространенный режим отказа. Самое главное, чтобы ваш набор тестов был достаточно простым для написания, изменения и улучшения, чтобы он действительно синхронизировался с продуктом. Тесты, которые не проверяют все, бесполезны, а тесты, которые не выполняются, еще хуже. Если бы у нас было больше информации о том, как работает ваша программа, мы могли бы дать лучший совет о том, как это автоматизировать.

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

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

...