李思佳 王茜 高筱竹
【摘 要】通過編寫自動化測試腳本,利用搭建好的自動化測試框架,對應用進行自動化測試,并將測試結果反饋給測試人員。研究被測應用程序的UI測試點,進行測試用例的編寫,使得測試用例能夠完全覆蓋被測應用,通過腳本和用例對一款應用進行自動化UI測試。
【關鍵詞】Appium;UI自動化測試;Maven;TestNG;數據驅動測試;Jenkins
中圖分類號: TP311.52 文獻標識碼: A 文章編號: 2095-2457(2018)06-0141-002
【Abstract】Through the preparation of programming automated test scripts,and make use of built automated test framework, make automated testing of the application,and give the test results to the testers. Study the UI test points of the tested APP,and write the test cases,making the test cases can completely cover the application under test,through an example of scripts and use cases for automated UI testing.
【Key words】Appium;UI Automation Testing;Maven;TestNG;Data Driven Testing;Jenkins
0 引言
如今移動應用是一個很熱的話題,一個移動應用離不開好的用戶體驗,所以UI測試已經成為移動應用測試的重中之重。 自動化 UI測試創建測試代碼來執行測試任務,各種測試任務覆蓋不同的使用場景,然后測試框架來運行測試任務。
Android基于UI層面的自動化測試工具,其主流測試方法主要有以下兩種。其一是Instrumentation,通過把測試代碼和應用代碼 ,運行在同一個進程中,通過Java反射機制,來獲取當前窗口所有視圖,并查找到目標控件的屬性信息,計算出目標控件中心點坐標;再利用Instrument內部接口,實現點擊操作;其代表有Robotium。另一種則是通過Android提供的各種服務,來獲取當前窗口的視圖信息;其主要特點是:測試代碼和被測應用各自運行在各自的進程內,相互獨立;其代表有 Ui Automator、Appium。
通過Appium搭建的UI自動化測試框架測試應用的范圍更加廣泛,節約測試時間,提高測試效率。Appium是一款基于UIAutomator和UIAutomation兩者的UI自動化測試框架,能夠實現針對不同平臺使用同一套API,帶來極大的便利。
1 總體技術方案
1.1 技術方案
針對各種測試框架工具的整合以達到構建完整測試框架的目的。進一步研究被測APP的UI測試點,進行測試用例的編寫,使得測試用例能夠完全覆蓋被測應用。達到只通過腳本和用例便能夠對一款應用進行自動化UI測試的目的。用到的工具除了Appium,還有maven、TestNG、Git、Jenkins。
maven項目對象模型(POM),通過一小段描述信息來管理項目的構建、報告和文檔的軟件項目管理工具。由于maven的缺省構建規則有較高的可重用性,所以常常用兩三行 maven 構建腳本構建簡單的項目。在自動化項目中的使用maven的主要目的是幫助構建自動化項目(jar包管理,編譯,執行測試等),非常方便。
TestNG,即Testing Next Generation,下一代測試技術,是一套根據JUnit和NUnit思想而構建的利用注釋來強化測試功能的一個測試框架,即可以用來做單元測試,也可以用來做集成測試。
Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理,并且具有代碼托管的功能。
Jenkins是基于Java開發的一種持續集成工具,用于監控持續重復的工作。
具體的設計思路如下圖圖1所示
1.2 技術路線
(1)搭建測試腳本的代碼框架
(2)在服務器上搭建git倉庫,并將測試代碼提交到服務器。
(3)在服務器上進行相應的環境配置,安裝Jenkins,安裝郵件通知插件。
(4)整合git和Jenkins,使其能夠形成一個整體。
(5)進行被測APP的篩選,編寫測試腳本,利用測試框架進行測試。
2 關鍵技術
2.1 環境配置
Java環境
Maven環境配置:將已經下載的maven完整jar包版的壓縮包進行解壓縮操作,同樣放入到Dev目錄下。將已經下載好的maven壓縮包解壓縮并將解壓出來的文件夾放如d盤dev目錄下。接下來需要配置下MAVEN_HOME以及 bin目錄,找到Path變量;%MAVEN_HOME%\bin
保存之后,打開CMD,輸入mvn -v,如果返回以下內容,證明maven的環境變量配置好了:
Appium: 將已經下載的maven完整jar包版的壓縮包進行解壓縮操作,同樣放入到Dev目錄下。
·Android SDK
配置ANDROID_HOME
;%ANDROID_HOME%\tools
; %ANDROID_HOME%\platform-tools
保存之后,打開CMD,輸入adb 返回以下內容表示環境變量配置完成
2.2 測試應用程序
maven項目的根目錄下新建res/app目錄,將安卓測試APP放入此目錄:
啟動Appium Server
啟動Appium Server,用于接收和處理來自client的請求。雙擊已經安裝好的Appium
如果出現:
> info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457
bd285c0cc62430d)
> info: Appium REST http interface listener started on 127.0.0.1:4723
>info:[debug] Non-default server args: {"address":"127.0.0.1","logNoColors":true,"platformName":
Android","platformVersion":"19","automationName":"Appium"}
> info: Console LogLevel: debug
表明服務啟動成功。
鼠標右鍵執行run as TestNG test,用例就開始執行了
2.3 Appium實現思路框架
Appium 遵循著一種哲學,重點體現于以下4個需求:
·你無需為了自動化,而重新編譯或者修改你的應用。
·你不必局限于某種語言或者框架或者平臺來書寫和運行測試代碼。
·一個移動自動化的框架不應該在接口上重復造輪子。(移動自動化的接口應該統一)。
源代碼必須開源
第三方框架封裝成一套API,WebDriver API.WebDriver(也就是"Selenium WebDriver")指定了客戶端到服務端的協議(JSON Wire Protocol)。使用這種客戶端-服務端的架構,我們可以使用任何語言來編寫客戶端,向服務端發送恰當的HTTP請求。目前已經實現了大多數流行語言版本的客戶端,這意味著你可以使用任何測試套件或者測試框架??蛻舳藥炀褪呛唵蔚腍TTP客戶,可以以任何你喜歡的方式潛入你的代碼。換句話說,Appium和WebDriver 客戶端不是技術意義上的“測試框架”,而是“自動化庫”。你可以在你的測試環境中隨意使用這些自動化庫!
2.5 數據驅動測試簡介
數據驅動測試將測試腳本與測試數據放在同一個測試架構中,該測試架構提供可重用的測試邏輯,目的是減少測試維護工作量和改善測試覆蓋率。測試輸入數據和測試結果數據都會被存儲在一個或者 多個數據源、數據庫中,數據存儲格式和數據組織方式依賴于具體實現。測試數據與測試邏輯分離,當測試數據發生改變時,不會影響測試邏輯。同一個測試邏輯可以針對不同數據來進行測試,提高了測試邏輯的使用效率和可維護性。
3 總結
3.1 項目成果
本項目的主要目標是通過編寫自動化測試腳本,利用搭建好的自動化測試框架,對應用進行自動化測試,并將測試結果反饋給測試人員。由此減少測試工作人員對UI測試的工作量,提高測試人員的工作效率。
在本項目中的一個重要思想是實現持續集成。UI自動化測試是自動化測試中的一個重點,也是一個難點,因為一款應用的UI在項目開發階段時時刻刻都在進行變化。利用持續集成思想不僅可以很好的應對UI變化,而且有利于團隊的分工合作,提高團隊的工作效率。
3.2 后期改進
基于Appium的UI自動化測試框架在實現過程中電腦運行測試代碼所需要的環境問題有待進一步解決,能夠成功運行測試框架的電腦只實現了一臺,其它會出現意想不到的問題。目前僅僅實現在控制臺輸出測試過程以及結果的日志信息,在數據驅動方面存在的困難是利用excel表格進行存儲數據來讀取以及將測試結果等信息輸出保存為excel表格或者輸出html網頁結果,這些還需要進一步研究實現。
3.3 未來期望
希望后續研究人員能實現如何將數據存儲于excel表格中被調用實現數據與測試分離,以及如何將結果存儲在excel表格中實現結果清晰明朗化的反饋。
【參考文獻】
[1]余盈寬、高守瑋、崔徐佳.基于關鍵字的安卓UI自動化測試的設計[D].工業控制計算機2015.
[2]徐凱田.UI自動化測試驅動的軟件開發方法研究[J].科技視界2015.
[3]陳昊.Android手機自動化測試系統的設計與實現[D].西安電子科技大學2014.
[4]呂茜.基于WebDriver和TestNG的網頁自動化測試方法[J]. 軟件2016.
[5]陳學亮.基于云的Andriod應用自動化測試框架研究[J].中國電信股份有限公司廣東研究院2017.
[6]Ashwaq A.Alotaibi、Rizwan J. Qureshi.Novel Framework for Automation Testing of Mobile Applications using Appium[J].MECS Press 2017
[7]Pressman E、Huberman M.Pithiness in plants:I.The effect of mechanical perturbation and the involvement of ethylene in petiole pithiness in celery.Biology DepartmentWake Forest UniversityWinston-SalemNorth Carolina 1984.