Назад | Перейти на главную страницу

Автоматическое тестирование изображений

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

редактировать:

Меня в первую очередь интересуют изображения для клиентских машин. Я имею в виду следующее тестирование:

Возможно, более фундаментально:

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

my TestApp("Address Book")
#my testApp("Aperture") # Aperture doesn't seem to understand activate -- WTF?
#my testApp("Automator") # Automator brings up a sheet when launched -- not sure how to dismiss
my TestApp("Calculator")
my TestApp("Chess")
my TestApp("Dictionary")
# etc...
my reportEvent("OS", "FinishedTest")


on TestApp(appName)
    tell application appName to activate
    delay 1
    tell application "System Events" to count (application processes whose name is appName)
    if result is 0 then
        my reportEvent(appName, "QuitUnexpectedly")
    end if
    tell application appName to quit
    delay 1
    tell application "System Events" to count (application processes whose name is appName)
    if result is not 0 then
        my reportEvent(appName, "FailedToQuit")
    end if
end TestApp

on reportEvent(appName, eventDesc)
    do shell script "curl 'http://server/eventtracker.php?app=" & sanitizeSpaces(appName) & "&event=" & sanitizeSpaces(eventDesc) & "'"
end reportEvent

on sanitizeSpaces(dangerousString)
    set AppleScript's text item delimiters to " "
    set safeString to text items of dangerousString
    set AppleScript's text item delimiters to "_"
    return safeString as Unicode text
end sanitizeSpaces

... сохраните это как приложение из редактора AppleScript (чтобы он запускался при открытии), затем добавьте его в список элементов входа в тестовую учетную запись (Системные настройки -> панель учетных записей -> вкладка Элементы входа).

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

Под «тестом» вы имеете в виду «убедиться, что определенные пакеты и программы существуют и работают должным образом»?

Если это так, я не могу говорить с частями, специфичными для Mac, но мой подход состоял бы в том, чтобы включить небольшую программу XML-RPC как часть изображения. Это не обязательно должен быть XML-RPC, но это подход, который я раньше находил полезным.

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

Как я уже сказал, это не для Mac, но было бы простым и портативным решением.

PS После прохождения тестов пакет мог ответить на финальную команду удалить себя из образа :)

я видел Баклажан много раз предлагал способ автоматизации тестирования, особенно с помощью приложений с графическим интерфейсом.

В качестве альтернативы короткий сценарий оболочки, который запускается при первом запуске и затем удаляется, чтобы убедиться, что настройки конфигурации установлены (например, привязаны к Open Directory, могут получить доступ к серверам, прочитать определенные настройки с помощью PlistBuddy или значений по умолчанию, проверить правильность MCXCache, и т.д.)

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