1. 程式人生 > >自動化測試解決方案之框架的選擇

自動化測試解決方案之框架的選擇

子曰“工欲善其事,必先利其器”,有一把順手的“兵器”,能讓我們的學習和工作達到事半功倍的效果
一、技術解決方案要求說明

不管選擇什麼技術解決方案,總得來說,應該要滿足下面幾個條件:

1、支援目前主流的指令碼語言,如ruby,python,java,C#等;

2、易於編寫、維護測試用例;

3、測試資料應與指令碼分離;

4、易於收集執行情況,執行錯誤,以及生成可視的測試結果報告;

5、能進行視覺化操作,儘可能做到讓沒有程式設計經驗的人員也能上手;

6、處於國內主流技術方案,相關技術社群活躍,遇到問題能夠快速得到解決;

自動化測試技術解決方案

二、自動化測試技術選型說明

1、選擇自動化測試框架

根據自動化框架的演進,目前主流為關鍵字驅動的自動化測試框架。用關鍵字的形式將測試邏輯封裝在資料檔案中,測試工具只要能夠解釋這些關鍵字即可對其應用自動化,它的核心思想可以概括為三個分離。

1)介面元素名與測試內部物件名的分離

在被測應用程式和錄製生成的測試指令碼之間增加一個抽象層,它可以將介面上的所有元素對映成相對應的一個邏輯物件,測試針對這些邏輯物件進行,介面元素的改變只會影響對映表,而不會影響測試。

2)測試描述與具體實現細節的分離

測試描述只說明軟體測試要做什麼以及期待什麼樣的結果,而不管怎樣執行測試或怎樣證實結果。這樣做是因為測試的實現細節通常與特定的平臺以及特定的測試執行工具有著密切的聯絡。這種分離使得測試描述對於應用實現細節是不敏感的,而且有利於測試在工具和平臺間的移植。

3)指令碼與資料的分離

最後,可以把測試執行過程中所需的測試資料從指令碼中提取出來,在執行時測試指令碼再從資料存放處讀取預先定製好的資料,這樣指令碼和資料可以獨立維護。

根據這樣的框架選型,最終選定目前主流的自動化框架Robotframework+RIDE:

Robotframework是一個通用的驗收測試和驗收測試驅動開發的自動化測試框架(ATDD)。它具有易於使用的表格來組織測試過程和測試資料。

RIDE,即robotframework的IDE環境,即Robot framework-ride,方便視覺化操作,執行結果變得容易管理,生成HTML報告,方便共享和查閱。

自動化測試技術解決方案

圖 自動化測試框架

並且Robotframework+RIDE可以套用在絕大多數的自動化測試上,例如WEB自動化測試,APP自動化測試,介面自動化測試等,只需要相應的關鍵字型檔支援(官方網站也提供了一些目前主要的庫檔案),同時也很容易讓使用者擴充套件自定義關鍵字型檔。

2、選擇WEB自動化測試工具Selenium2

Selenium2 是用於測試 Web 應用程式使用者介面 (UI) 的成熟框架。它是一款用於執行端到端功能測試的工具。擁有簡潔的API,WebDriver和WebElement物件,更好的抽象。且支援多中作業系統,多語言,多瀏覽器。

3、選擇APP自動化測試工具APPIUM

Appium是目前國內主流的APP自動化測試框架,功能非常強大,相對技術支援較多,所以採用此作為APP的自動化測試工具:

1)優點:

開源;支援Native App、Hybird App、Web App;支援Android、iOS、Firefox OS;

Server也是跨平臺的,可以使用Mac OS X、Windows或者Linux;

2)它的思想是:

Appium自動化測試不需要重新編譯App;

支援多種語言來編寫測試指令碼,Java、Javascript、PHP、Python、C#、Ruby等主流語言;

不需要為了自動化測試來重造輪子,因為擴充套件了WebDriver。(WebDriver是測試WebApps的一種簡單、快速的自動化測試框架,所以有Web自動化測試經驗的測試人員可以直接上手);

移動端自動化測試應該是開源的;

3)它的設計理念:

Client/Server架構,執行的時候Server端會監聽Client端發過來的命令,翻譯這些命令傳送給移動裝置或模擬器,然後移動裝置或模擬器做出響應的反應。正是因為這種架構,所以Client可以使用Appium client libraries多種語言的測試指令碼,而且Server端完全可以部署在伺服器上,甚至雲伺服器。

Session,每個Client連線到Server以後都會有一個Session ID,而且Client傳送命令到Server端都需要這個Session ID,因為這個seesion id代表了你所開啟的瀏覽器或者是移動裝置的模擬器。所以你甚至可以開啟N個Session,同時測試不同的裝置或模擬器。

Desired Capabilities,其實就是一個鍵值對,設定一些測試的相關資訊來告訴Server端,我們需要測試iOS、還是Android,或者換是WebApp等資訊。

Appium Server是Node.js寫的,所以可以直接用NPM來進行安裝。

Appium Clients,Mac OS和Win下提供GUI,不需要裝Node.js,方便測試人員操作。

4)相關限制:

如果你在Windows使用Appium,你沒法使用預編譯專用於OS X的.app檔案,因為Appium依賴OS X專用的庫來支援iOS測試,所以在Windows平臺你不能測試iOS Apps。這意味著你只能通過在Mac上來執行iOS測試。

5)總結:

在iOS部分是封裝了UIAutomation;Android 4.2以上是用UiAutomator,Android 2.3 ~ 4.1用的是 Instrumentation,也就說Appium同時封裝了UiAutomator和Instrumentation。所以Appium擁有了以上幾大框架的所有優點:跨App,支援Native App、Hybird App、Web App,還支援N種語言來編寫你的測試指令碼。

4、選擇指令碼語言Python

基於易於上手,國內相關資料支援等考慮,指令碼語言採用Python。

三、技術解決方案說明

1、WEB自動化測試

自動化測試技術解決方案

各種webdriver的工作原理圖:

自動化測試技術解決方案

方案說明

RobotFramewok+RIDE+Selenium2+python:該自動化解決方案,能很好的編寫用例和檢視分析測試結果,並且Selenium2Library已經提供了常用的web操作關鍵字型檔,能滿足我們大部分的用例編寫需要。當然,也能利用python非常方便的擴充套件關鍵字型檔,滿足我們的特殊需要。

適用範圍

適用於基於WEB開發應用的自動化測試。

要求說明

頁面控制元件主要通過id,name來定位識別,所以在前端開發時需要引入這方面的規範要求。

2、APP自動化測試

自動化測試技術解決方案

方案說明

RobotFramewok+RIDE+Appium+python:該自動化解決方案,能很好的編寫用例和檢視分析測試結果,同樣AppiumLibrary已經提供了常用的手機操作關鍵字型檔,能滿足我們大部分的用例編寫需要。也能利用python非常方便的擴充套件關鍵字型檔,滿足我們的特殊需要。同時,只要有相應庫的支援,可以對andriod和IOS應用實現自動化,並且可以在對應虛擬機器和真機上執行。