Краткая версия. Каков наилучший способ автоматизации тестирования совместимости против большого количества сторонних программ?Автоматизация тестирования совместимости с множеством программ
Детали:
Я разработать program, основной особенностью взаимодействует с различными различных частей музыкального проигрывателя программного обеспечения с помощью их соответствующих RPC интерфейсов. Сам RPC обычно происходит либо через D-Bus, либо через некоторую клиентскую библиотеку , специфичную для конкретного игрока. Поскольку у каждого музыкального плеера есть свой собственный уникальный RPC-интерфейс, моя программа требует специального кода для .
Тестирование всего этого кода становится для меня проблемой. Наконец, у есть пятнадцать (!) Разных музыкальных плееров, моя программа знает, как разговаривать , а информация о интерфейсе может варьироваться от одной версии проигрывателя до . Вручную тестирование моей программы против последней версии каждого из игроков, которых я пытаюсь поддержать, а также несколько более старых версий, является скучным и подверженным ошибкам, поэтому я ищу способ автоматизировать это как можно больше как возможно.
Испытательные случаи сами по себе не являются проблемой; это всего лишь вопрос , вызывающий последовательность функций на интерфейсе RPC игрока и проверку значений возврата и/или асинхронных обратных вызовов для ожидаемого результата. Нет, проблема в том, что у вас есть каркас для автоматического запуска тестов.
Вот проблемы, которые я вижу:
Каждый игрок поддерживает постоянное состояние, как правило, под домашний составляют скрытые директории пользователя. Государство состоит из таких вещей, как музыка , плейлисты и т. Д. Эти файлы должны быть возвращены к известному начальному состоянию перед каждым тестом. (Удаление его целиком не всегда вариант, с тех пор на основе графического интерфейса игроки будут представлены работы мастера установки в следующий раз они вместо запуска нормально.)
Эти начальные состояния могут быть частично динамическим. Например, музыкальная библиотека будет содержать полные пути к музыкальным файлам внутри нее, но пути к фактическим «музыкальным» файлам, которые используются для тестирования, будут варьироваться от к машине и не будут известны до времени исполнения.
игроков, чтобы проверить против, вероятно, будет установлены под нестандартными местами, которые будут меняться от системы к системе, чтобы иметь несколько версий каждый установленные параллельно. Рамке , вероятно, необходимо будет узнать, какой плеер и версия он тестирует против , прежде чем начать игру, чтобы он мог инициализировать состояние игрока файлов.
Поскольку у меня нет никакого контроля над развитием музыкальных плеерах моя программа взаимодействует с, я не могу изменить свое поведение, чтобы сделать его проще для меня, чтобы проверить против них.
То, что я хотел бы сделать, это создать виртуальную машину с кучей разных игроков (и целой охапкой различных версий каждого игрока), установленных, а затем иметь возможность проверить свою программу на каждый из них в свою очередь автоматически. В идеале, было бы возможно, чтобы кто-то другой создал свою собственную виртуальную машину для запуска тестов сам по себе, предположительно, только нужно было рассказать тестовой структуре, в которой установлены игроки .
Итак, Каков наилучший способ автоматизации тестирования совместимости с большим числом (несколько десятков) сторонних программ?
В случае, если это влияет на рекомендации, моя программа написана на Python, , и я использую GNU autotools в качестве рамки сборки.
Это Linux, поэтому Hyper-V не является вариантом. Я закончил настройку виртуальной машины (используя kvm) с моими различными объектами, установленными параллельно, с настраиваемой тестовой жгутом для сброса их конфигураций для каждого теста. Я надеялся, что для этого будет какой-то существующий инструмент, так как упряжь была нетривиальной задачей для создания. –