2012-10-03 119 views
31

我們需要在iOS升級的環境中測試我們的應用程序(例如,5.1 - > 6.0)。不幸的是,蘋果不允許降級設備。我們想到在模擬器中做它,但模擬器的不同版本本身是不同的環境。我認爲我們可以從一個模擬器複製捆綁到另一個,但不會遷移鑰匙串(是否?)。如何模擬iOS版本升級?

謝謝!

+1

你想用這個測試什麼?在5.1和6.0上分別測試應用程序應該足夠了。系統升級時,應用程序無法運行。 – Sulthan

+3

實際上有辦法降低您的操作系統 - 尋找小傘 - 例如http://www.idownloadblog.com/2012/05/25/save-your-shsh-blobs-5-1-1/ – Till

+1

蘇丹啊,理論與實踐的區別......我們認爲有一些邏輯我們的應用程序在轉換過程中突然中斷,部分應用程序數據處於不一致的狀態。直到,謝謝,我們會嘗試的,如果我們發現任何我們還沒有升級到iOS 6.0的設備。不過,通過模擬器這將是最簡單的。 –

回答

5

現在,您仍然可以安裝iOS 8.2。當新版本發佈時,Apple會在短時間內將兩個版本都打開以供安裝。當「簽名窗口」打開時,您可以升級設備,進行測試,然後從舊版本的映像中恢復。所以你可以在窗口打開時進行一些密集的測試,但顯然這不是一個長期的解決方案(通常只能持續幾天)。

如果你有它的預算,你可以在設備上安裝8.2,在它上面貼上一個大的標籤,說「不要升級」,並且只要它有相關性就保持在8.2。在該設備上安裝應用程序並進行備份(啓用備份加密功能,以便包含鑰匙串條目),然後將該備份恢復到位於8.3上的其他設備 - 這與升級時執行的操作基本相同/通過iTunes恢復,因此它應該非常接近。它當然不會與OTA更新在設備上完全一樣,但爲此,請參閱上面的選項1(並儘快查看)。

11

要測試從一個狀態(之前)到另一個狀態(之後)的轉換,您需要一種將應用程序置於before狀態的方法。

您的應用程序肯定不會運行操作系統正在更新,所以你真的只需要擔心應用程序啓動並發現該操作系統已經更新。有幾個選項:

  • 從設備(根據您的問題5.1)上運行的「老」的IOS版本的所有應用程序數據文件複製到運行新的(6.0)版本的設備。 Xcode中的管理器可讓您輕鬆地將應用程序的「容器」從設備複製到Mac,反之亦然。

  • 讓您的應用程序以「舊」格式寫入數據。根據環境,應用程序具有以不同格式讀取和寫入數據的方法並不少見,因此,讓應用程序以舊格式寫入數據比從舊設備複製數據要容易得多。

你選擇哪條道路,想想在那裏你會做OS版本相關的修改和設置這些回對應於以前的OS值的任何其他地方(如用戶的默認值)。這尤其適用於未存儲在應用沙箱中的鑰匙串項目。

單元測試框架(如蘋果公司XCTest框架)一般都有,你可以使用你的應用程序重置爲狀態,包括複製文件,添加和刪除鑰匙串項,設置默認項等的建立機制,你然後可以添加運行更新中可能涉及的任何代碼的單元測試並測試結果。通過一組易於重複的測試,您可以更輕鬆地調試任何問題。

但是,您接近它的目標是將應用程序置於與發生OS更新後第一次運行時相同的狀態。您不必擔心模擬實際的操作系統更新,只需要讓應用程序認爲更新剛剛發生即可。

+1

這是否涵蓋了鑰匙串條目(我認爲問題的主要觀點)? – CupawnTae

+0

@CupawnTae *將應用程序置於之前的狀態*想法肯定適用於鑰匙串項目,但由於鑰匙串是應用程序沙箱之外的一件東西,因此您需要編寫代碼來完成此操作。感謝您指出 - 我將特意編輯以解決鑰匙串問題。 – Caleb