Ответ 1
Чтобы протестировать переход из одного состояния (до) в другое (после), вам необходимо установить приложение в состояние до.
Ваше приложение, конечно же, не будет работать во время обновления ОС, поэтому вам действительно нужно только беспокоиться о запуске приложения и обнаружении того, что ОС обновлена. Есть несколько вариантов:
-
Скопируйте все файлы данных приложений с устройства, на котором установлена "старая" версия iOS (5.1 в соответствии с вашим вопросом), на устройство, работающее с новой версией (6.0). Организатор в Xcode позволит вам легко скопировать приложение "контейнер" с устройства на ваш Mac или наоборот.
-
Сделать приложение записывать данные в "старый" формат.. Непригодно для приложения иметь методы для чтения и записи данных в разных форматах в зависимости от среды, поэтому часто проще заставить ваше приложение записывать данные в старом формате, чем на самом деле копировать с старого устройства.
Какой бы путь вы ни выбрали, подумайте о других местах (например, по умолчанию для пользователей), где вы можете сделать изменения, зависящие от ОС, и вернуть их к значениям, которые соответствуют предыдущей ОС. Это особенно относится к элементам связки ключей, которые не хранятся в изолированной программной среде вашего приложения.
Структуры тестирования модулей (например, инфраструктура Apple XCTest) обычно имеют механизм настройки, который вы могли бы использовать для reset вашего приложения для состояния до состояния, включая копирование файлов, добавление и удаление элементов связки ключей, настройку элементов по умолчанию и т.д. Вы можете затем добавьте модульные тесты, которые запускают любой код, который может быть задействован в обновлении, и проверяйте результаты. С помощью набора легко повторяемых тестов вы сможете легче отлаживать любые проблемы.
Однако вы подходите к нему, цель заключается в том, чтобы приложение было в том же состоянии, в котором оно было бы, если оно было запущено в первый раз после обновления ОС. Вам не нужно беспокоиться о симуляции фактического обновления ОС, вам нужно только обмануть приложение, думая, что обновление только что произошло.