iOS 系統UI自動化測試介紹

發表于:2016-11-15來源:簡書作者:孢子菌點擊數: 標簽:自動化測試
關于UI自動化的定義,我想要的是自動地按照流程去點擊頁面、輸入數據,不需要人去參與,節省人工時間。比如登錄,能夠自己去填寫用戶名&密碼,然后點擊按鈕跳轉到下一個頁面等

0.小目標

關于UI自動化的定義,我想要的是自動地按照流程去點擊頁面、輸入數據,不需要人去參與,節省人工時間。比如登錄,能夠自己去填寫用戶名&密碼,然后點擊按鈕跳轉到下一個頁面等。在能夠保證業務的足夠穩定性的條件下,UI自動化測試能夠節省很多回歸功能的人力。這就是我的一個小目標。

測試需要全面,需要對結果去做判斷。如果熟悉單元測試或接口自動化的朋友,應該知道這些其實就是功能覆蓋、用例設計、斷言……這些概念。于是小目標就升級成了,一個可以重復執行,多場景的,結果可預測的UI自動化測試。

1.測試基礎

簡介

軟件測試是為了發現錯誤而執行程序的過程?;蛘哒f,是根據軟件開發各階段的規格說明和程序內部結構而精心設計的一批測試用例(即輸入數據及預期的輸出結果),并利用這些測試用例去運行程序,以發現程序錯誤的過程。

白盒測試(White Box Testing) 又稱結構測試、邏輯驅動測試,完全了解程序的結構和處理過程,按照程序的內部邏輯測試程序,檢驗程序中的每條通路是否都能按預定要求準確工作;對應到實際工作中,代碼diff就是白盒測試。

黑盒測試(Black Box Testing) 又稱功能測試,在程序接口進行的測試,已知產品的功能設計規格,可以進行測試證明每個實現了的功能是否符合要求。對應到工作中,Checklist&Case就是功能測試。UI自動化測試,是將功能測試中大量的重復性操作(例如線上回歸)提取出來,用腳本的形式驅動設備進行測試,有著可重復運行,執行效率高的特點。

測試用例

測試用例是為特定的目的而設計的一組測試輸入、 執行條件和預期的結果。

1.測試用例需要能夠覆蓋被測試的功能。
2.測試的結果的正確性是可判定的,每一個測試用例都應該有相應的期望結果。
3.即對同樣的測試用例,系統的執行結果應當是相同的。

如何覆蓋被測試功能,我們需要對輸入進行分類劃分:等價類劃分方法,邊界值分析方法。

等價類劃分方法,將程序的輸入域劃分為若干個等價類(子集),然后從每一個子集中選取少數具有代表性的數據作為測試用例??梢杂行p少輸入類型。例如用戶名輸入,可以劃分為允許的字符類型:數字、字母,不允許的字符類型:特殊字符,漢字,空格等。

邊界值分析方法,邊界值分析法就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法。通常邊界值分析法是作為對等價類劃分法的補充,這種情況下,其測試用例來自等價類的邊界。例如用戶名長度是4-10位,我們依據邊界值,就需要對3、4、10、11這四個邊界值分別做測試。

相對的,輸出類劃分后,對每一種輸入都有唯一對應的輸出,這個輸出和功能無關,不管是正常流還是異常流,都需給出唯一結果。我們稱之為斷言,斷言一般分為這這幾類:等于、不等于、包括、不包括 或復雜的組合邏輯。

UI自動化測試用例

UI自動化在用例設計上也需滿足上述性質,此外在輸入中需要過程中需要定義UI的操作,同時在結果的判定上,會依賴UI元素的展示和頁面的狀態。比如某種異常狀態下會彈窗提示,我們則需要去獲取這個彈窗,然后對彈窗上UI元素進行比對和判斷,而無法去做返回碼的比較判斷。關于頁面狀態的斷言,相對于直接數據的比較判斷不夠直接、難度較大,當前還有很多難點。

2.UIAutomation

iOS4時代,Apple發布了一個名為UIAutomation的測試框架,它可以用來在真實設備和iPhone模擬器上執行自動化測試。UIAutomation的功能測試代碼是用Javascript編寫的。UIAutomation和Accessibility有著直接的關系,你將用到通過標簽和值的訪問性來獲得UI元素,同時完成相應的交互操作。

UIAutomation的js測試腳本,需要在Instrument的Automation控件上測試。但是在Xcode8.0之后,Instrument已經不再有這個模塊了。而Apple也不再對它維護了,推廣使用UITest來替代它。

Accessibility

UIAutomation的實現原理依賴于UI控件的Accessibility,這項技術是為了輔助身體不便的人士使用 app。VoiceOver 是 Apple 的屏幕閱讀技術,UI Accessibility 的基本原則就是對屏幕上的 UI 元素進行分類和標記,兩者配合,通過閱讀或者聆聽這些元素,用戶就可以在不接觸屏幕的情況下通過聲音來使用 app。

如果一個控件的Accessibility是可以被訪問的,你就可以設置和讀取它的值,作相關的操作,而當一個控件的Accessibility不可見時,你就沒有辦法通過automation訪問它。每一個可以被訪問(Accessibility enable)的UIKit控件都可以用一個Javascript對象來描述,它就是一個UIAElement。UIAElement有幾個屬性:name, value, elements, parent。UIKit層次樹結構,可以直接映射到UIAElement的層次樹。有了基本屬性和層次樹結構,我們就可以方便的使用JS對App中的空間進行操作了。

原文轉自:http://www.jianshu.com/p/aae160cb9cc4

...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97