Автоматизация тестирования совместимости со многими программами - PullRequest
3 голосов
/ 20 июля 2010

Короткая версия: Какой лучший способ автоматизировать тестирование совместимости с большим количеством сторонних программ?

Подробности:

Я разрабатываю программу , чьяОсновная особенность - взаимодействие с различными программами музыкального проигрывателя через соответствующие интерфейсы RPC.Сам RPC обычно происходит либо через D-Bus, либо через некоторую клиентскую библиотеку, специфичную для конкретного игрока.Поскольку у каждого музыкального плеера есть свой уникальный интерфейс RPC, моей программе требуется специальный код для обработки каждого из них.

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

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

Вот проблемы, которые я вижу:

  • Каждый игрок поддерживает постоянное состояние, обычно в виде точечных файлов поддомашний каталог пользователя.Состояние состоит из таких вещей, как музыкальная библиотека, списки воспроизведения и т. Д. Эти файлы необходимо возвращать в известное исходное состояние перед каждым тестом.(Полное удаление не всегда возможно, так как тогда игроки на основе графического интерфейса представят мастера установки при следующем запуске вместо нормального запуска.)

  • Эти начальные состояния могутбыть частично динамичным.Например, музыкальная библиотека будет содержать полные пути к музыкальным файлам внутри нее, но пути к фактическим «музыкальным» файлам, используемым для тестирования, будут различаться в зависимости от компьютера и не будут известны до времени выполнения.

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

  • Поскольку у меня нет никакого контроляИз-за развития музыкальных проигрывателей, с которыми взаимодействует моя программа, я не могу изменить их поведение, чтобы мне было легче тестировать их.

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

Итак, , как лучшеавтоматизировать тестирование совместимости с большим количеством (несколько десятков) сторонних программ?

Если это повлияет на рекомендации, моя программа написана на Python, и я использую автоинструменты GNU в качествепостроить каркас.

1 Ответ

0 голосов
/ 10 сентября 2010

Если это только среда Windows, есть один путь - это MS Hyper-V.

Ссылка (http://www.microsoft.com/virtualization/en/us/solution-application-development.aspx)

Они поддерживают создание образа, например установки Vista, и создание сценариев для создания новой его копии, а также вставку установки в новый образ ибазовая установка + добавленное программное обеспечение в течение нескольких минут.

Команда MS Office использует это, и инженеры-тестировщики могут заказать любую версию, языковую версию Windows в сочетании с любым выпуском офиса в течение нескольких минут.

Большая проблема в том, что это стоит немалых денег, а Hyper-V - довольно сложный в настройке продукт.

В качестве альтернативы может быть использование Virtual Box (Open Source) инаписать свой собственный сценарий для автоматизации установки образа с новыми версиями программного обеспечения для тестирования.Я сделал это с помощью стандартного сценария чтения изображений при запуске из сетевой папки для установки любого программного обеспечения для тестирования .. Это не полностью автоматизированное решение, но сохраненомоя команда много времени.

...