• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Appium的手機應用程序自動化測試研究

      2017-03-06 00:25:06姚炯
      軟件導刊 2017年1期

      姚炯

      摘要摘要:隨著智能手機應用的深入,智能手機應用程序也逐步從輕量級應用向更復雜的應用演化,應用端的自動化測試顯得日益重要?,F(xiàn)階段手機應用測試都會遇到平臺兼容性不佳和測試效率較低等問題,選擇和搭建一個基于手機應用測試的自動化測試框架十分必要。選用時下兼容性和穩(wěn)定性都較強的自動化測試框架Appium,通過研究其主要特性和工作原理,搭建了一個跨平臺的手機自動化測試框架,解決了一些手機自動化測試難點,實現(xiàn)了一個具有高兼容性和易用性的跨平臺自動化測試項目,通過比較評估了實際測試效果。

      關鍵詞關鍵詞:Appium;手機自動化測試;測試框架

      DOIDOI:10.11907/rjdk.162237

      中圖分類號:TP319文獻標識碼:A文章編號文章編號:16727800(2017)001012904

      引言

      自動化測試是隨軟件開發(fā)技術一并發(fā)展的一種測試技術。軟件測試包括白盒測試與黑盒測試,而自動化測試最早使用白盒測試中的單元測試。這種測試方式較為高效,易于實現(xiàn)。黑盒自動化測試興起稍晚,但目前應用也非常廣泛。黑盒自動化測試原理是用程序和腳本模擬用戶的操作行為,通過智能方式驗證軟件的關鍵檢查點。在桌面軟件和Web技術興盛時代,涌現(xiàn)出大量優(yōu)秀的自動化測試工具如QTP和webdriver[1],這些工具經(jīng)過不斷完善已經(jīng)逐步成熟,能夠較好地滿足傳統(tǒng)應用的自動化測試需求。

      智能手機的應用帶來軟件測試技術新的革命,相比于傳統(tǒng)測試,手機測試在硬件上脫離了PC的傳統(tǒng)架構(gòu),和用戶的交互方式存在很大區(qū)別。手機軟件在使用上具有獨特的操作方式,比如用戶的滑動、觸摸和點擊等操作,如何實現(xiàn)手機客戶端上的自動化腳本執(zhí)行[2]成為這類測試的難點。又由于IOS和Android兩大平臺的市場格局,大部分手機應用都需要支持多個平臺,它們的基礎架構(gòu)不盡相同,使得手機自動化測試框架對兼容性有了更高要求。要做好手機客戶端的自動化測試,首先要解決測試腳本的健壯性和平臺的兼容性問題。

      近幾年手機客戶端自動化工具發(fā)展較快,出現(xiàn)了不少自動化框架,比如基于Android平臺的UiAutomator和Robotium,IOS自帶的Instrument等,但是這些工具都沒有有效解決平臺兼容性問題,無法用一個統(tǒng)一的框架驅(qū)動不同平臺測試,而且在識別客戶端內(nèi)容和元素時也存在偏差,測試腳本不夠穩(wěn)定健壯。目前具有良好兼容性且框架成熟穩(wěn)定的工具是Appium。Appium是一個開源的、跨多平臺多語言的測試框架,相比于其它框架,它編寫測試腳本和運行測試時不需要對源碼重新編譯,在腳本的編寫和實現(xiàn)上也對編程語言沒有太多要求,測試更輕量靈活。此外,Appium采用了C/S架構(gòu),提供了一個統(tǒng)一的對外服務接口,使得客戶端或模擬器的交互和控制透明化。本文對Appium的主要特點和功能進行了分析和介紹,闡述了在手機測試過程中如何應用Appium提高手機測試工作效率問題[3]。

      1手機自動化測試工具

      1.1Appium簡介

      Appium主要包含:Appium Server、Appium GUI和Appium Client。

      (1)Appium Server。Appium Server是用Node.js 實現(xiàn)的一套遵循restful框架的服務,可以直接通過NPM安裝,它是面向Appium腳本開發(fā)人員的統(tǒng)一服務接口,是客戶端控制與測試腳本之間的橋梁。

      (2)Appium GUI。它是基于MAC和Windows環(huán)境的一個Appium控制臺,整合了Appium的所有核心功能,具有強大的跨平臺驅(qū)動能力,可應用于IOS和Android的基礎驅(qū)動,檢測和定位客戶端元素,對當前運行環(huán)境進行診斷。

      (3)Appium Client。Appium Client是一個包含多種編程語言實現(xiàn)的Appium API,其中包括Ruby、Java等。它實現(xiàn)了Mobile JSON Wire 的標準化協(xié)議,為測試腳本開發(fā)者提供了靈活多變同時又非常強大的程序接口。1.2Appium基本工作原理

      Appium框架其實是IOS和Android系統(tǒng)自動化庫的封裝,采用C/S架構(gòu),Appium Server在運行時會時刻監(jiān)聽Client端發(fā)送的操作請求,服務端和客戶端的交互遵循JSON Wire協(xié)議,并通過它所實現(xiàn)的翻譯器將任何編程語言所實現(xiàn)的測試腳本請求發(fā)送給模擬器或者移動終端,通過這種機制實現(xiàn)手機模擬器和真機的自動化操作[4],見圖1。

      圖1Appium工作原理

      1.3Appium特性

      (1)跨平臺。平臺兼容性是Appium最為強大的特性,Appium用一種統(tǒng)一的協(xié)議實現(xiàn)了自動化測試平臺的兼容。操作IOS設備時它會調(diào)用IOS的instrument框架,而在Android平臺中則封裝了UIautomator框架。另外,Appium不單單支持客戶端兼容,在Appium的Server端,同樣支持包括OSX、Windows和Linux平臺,這就使得Appium的環(huán)境搭建更具擴展性。根據(jù)測試需求,Appium甚至可以搭建在云端服務器。另外在實現(xiàn)語言方面,Appium提供了Java、Ruby、Python等多語言接口,給測試程序設計者帶來極大的選擇空間。

      (2)無源代碼依賴。手機客戶端測試框架運行一般都需要在客戶端的源碼環(huán)境下進行,而且在自動化腳本的執(zhí)行之前都需要對手機App源碼重新編譯,這種機制導致自動化執(zhí)行效率較低。Appium隔離了手機開發(fā)的源碼環(huán)境和自動化腳本開發(fā)環(huán)境,使自動化測試從手機開發(fā)流程中獨立出來,單獨運行,自動化測試更輕量,提高了測試效率。2手機測試框架搭建

      Appium的設計理念和幾大組件可統(tǒng)一Android和IOS的自動化測試,下面通過部署和搭建一個跨平臺的Appium測試框架來介紹其特點。2.1系統(tǒng)環(huán)境準備

      跨平臺的手機測試首先需要在PC平臺上建立不同的模擬器。由于IOS平臺的封閉性,不能搭建于Windows平臺,因此本文的框架需要OSX操作系統(tǒng)支持。OSX系統(tǒng)自帶IOS開發(fā)環(huán)境和IOS模擬器,因此Appium可以直接關聯(lián)并啟動相應的IOS模擬器。而對于Android則首先需要下載和安裝Android的SDK開發(fā)環(huán)境,并手工創(chuàng)建相應版本的模擬器。2.2Appium環(huán)境搭建

      Appium主要組件由Appium Server和Appium Client 組成,而Appium GUI包括了Appium Server的全部功能,因此搭建Appium 環(huán)境僅需要搭建Appium GUI 和Appium Cient即可。

      (1)Appium GUI。由于Appium GUI提供了Windows和OSX雙平臺支持,因此僅需要在其官方網(wǎng)站上下載指定版本并安裝即可。

      (2)Appium Client。客戶端的搭建也非常簡單,本文使用Ruby開發(fā)語言實現(xiàn)自動化測試,因此需要下載Appium 的Ruby API,并將這些API導入RubyMine項目。

      2.3Cucumber測試框架搭建

      Cucumber是運行Appium測試的一種上層驅(qū)動框架,是一種基于行為的測試編寫和管理平臺。Cucumber通過一種類似自然語言的編寫接口,讓不熟悉軟件開發(fā)語言的測試者可以用直觀易懂的接口去組織和運行自動化測試。Cucumber還能與RubyMine開發(fā)環(huán)境完美集成。

      3項目測試實現(xiàn)

      通過一系列相關組件的安裝和搭建,完成了Appium跨平臺集成開發(fā)和測試環(huán)境。本文通過實現(xiàn)一個跨平臺自動化測試項目來展現(xiàn)本文自動化測試框架的特點和優(yōu)勢。

      自動化測試項目實現(xiàn)過程:①底層操作行為封裝;②用戶操作抽象;③檢查點邏輯封裝;④Cucumber測試用例的實現(xiàn)和運行。

      3.1底層操作行為封裝

      4測試難點解決方案

      智能手機和傳統(tǒng)PC平臺操作方式有很大區(qū)別,大部分用戶輸入都是通過各種手勢操作實現(xiàn)的,比如滑動、長按和點擊等操作。在一條相對復雜的測試用例編寫中,需要完整而穩(wěn)定地模擬出一系列用戶的操作組合。而基于不同的架構(gòu)平臺,用戶的操作方式也會不同。本文針對手機測試中的一些難點,提出結(jié)合Appium框架的解決方案。4.1系統(tǒng)級控件操作

      目前手機操作系統(tǒng)都有許多系統(tǒng)級別的控件,比如系統(tǒng)提示和系統(tǒng)信息,這些組件原本不屬于手機的應用程序,但是很多情況下都會與系統(tǒng)消息或系統(tǒng)提示交互[5],影響手機自動化測試的流暢性。由于這些控件并不屬于應用程序本身,因此難以定位也難以抽象成操作對象。要讓自動化腳本流暢運行,首先需要解決系統(tǒng)控件交互的問題。圖2是一個系統(tǒng)級別通知消息的例子。

      圖2系統(tǒng)級操作控件

      對于這些系統(tǒng)級別操作,Appium框架通過一些通用的平臺驅(qū)動予以解決,比如在IOS平臺中,Appium首先通過檢查和定位系統(tǒng)級別的通知欄目,然后使用相應的接口,用獨立于測試目標應用之外的動作去點擊和關閉這些系統(tǒng)級提示,示例代碼如下:

      當下的自動化測試框架都有平臺的局限性,一般來說都是一個工具對應一個平臺,因而要實現(xiàn)不同平臺的自動化測試,就需要對IOS和Android系統(tǒng)開發(fā)不同的測試應用,而由于測試對于框架和項目源碼的依賴性很高[7],不同平臺之間的測試腳本基本沒有關聯(lián)性,也不能重復利用,因此要實現(xiàn)不同平臺的自動化測試成本會較高。本文實現(xiàn)的框架一大特點是基于不同的平臺,可以利用同一套測試腳本測試,對測試編寫人員來說,平臺的兼容性變得透明,只需要編寫出一個統(tǒng)一的測試腳本就可以運行在不同的平臺上。這種方式將極大提高自動化測試腳本的使用率,節(jié)省編寫和調(diào)試測試腳本的時間。5.2近似于自然語言的測試用例

      自動化測試腳本一般來說都由高級語言編寫,其語法和開發(fā)代碼是相同的。由高級語言組織成的測試用例不太容易讓閱讀者理解。要理解一個測試腳本的測試邏輯,首先要能讀懂測試代碼,而有時候測試人員可能不太精通高級語言,編寫自動化腳本較困難。為了解決這個問題,本文使用了Cucumber框架與Appium結(jié)合,通過層級封裝方式,實現(xiàn)了近似于自然語言的、能夠自動化運行的測試用例。這種測試用例易于理解,易于編寫,測試人員可快速熟悉。5.3解決了系統(tǒng)級彈出框?qū)y試運行的影響

      當下大部分自動化測試都會與項目源碼綁定,在腳本運行前一般都需要項目的整體編譯,較耗費時間[8]。另外,測試在運行過程中會受到不少系統(tǒng)彈出框的干擾。由于測試項目與源碼綁定,導致要識別和處理系統(tǒng)級彈出框十分困難。本文通過實現(xiàn)Appium提供的平臺驅(qū)動,將測試項目與開發(fā)項目相隔離,使自動化測試獨立運行。同時,通過特定的程序接口,識別并處理系統(tǒng)級的彈出窗和系統(tǒng)消息,使得測試腳本更健壯,運行更流暢。6結(jié)語

      本文介紹了手機測試的基本情況,分析了跨平臺手機測試難點,通過對當下一些手機測試工具調(diào)研,選擇成熟的Appium作為跨平臺測試工具。結(jié)合自動化測試框架組件和要素,設計和實現(xiàn)了接近自然語言、易于理解且能夠跨平臺運行的手機自動化測試腳本。參考文獻:

      [1]PAREEK,PEEYUSH,RAJNEESH. A comparative study of mobile application testing frameworks[J].Expansion, Impact and Challenges of IT & CS,2015(2): 8384.

      [2]王益芝. 淺析智能手機的自動化測試[J].現(xiàn)代電信科技,2012(12):2325.

      [3]SHAH, GAURANG, PRAYAG SHAH, et al. Software testing automation using appium[J]. International Journal of Current Engineering and Technology,2014(3):152156.

      [4]SINGH, SHIWANGI, RUCHA GADGIL,et al. Automated testing of mobile applications using scripting technique: a study on appium[J]. International Journal of Current Engineering and Technology,2014(5):1116.

      [5]徐騁. Android應用軟件自動化測試框架的研究[D].大連:大連海事大學,2015.

      [6]鄭婷婷,黃英持. Android應用的多設備自動化測試實現(xiàn)[J].軟件導刊,2016,15(4):9697.

      [7]牛璐. 手機軟件自動化測試方法研究與應用[D].鄭州:中國人民解放軍信息工程大學,2012.

      [8]張舜堯. 手機自動化測試系統(tǒng)設計淺析[J].開發(fā)研究與設計技術,2007(20):412413.

      責任編輯(責任編輯:杜能鋼)

      第1期 周甄珍,王浩宇:基于GJB5000A三級過程域的軟件開發(fā)管理探討軟 件 導 刊2017年標題

      平塘县| 边坝县| 禄丰县| 宁城县| 绥阳县| 五莲县| 德令哈市| 景德镇市| 泸定县| 永登县| 平潭县| 天峨县| 赤水市| 沭阳县| 新晃| 青海省| 沅陵县| 石泉县| 广宗县| 临汾市| 积石山| 万源市| 武胜县| 武城县| 即墨市| 台南市| 文成县| 巩留县| 海阳市| 金华市| 屏东县| 微山县| 宽甸| 新津县| 宜州市| 鄢陵县| 邵东县| 会昌县| 泸定县| 宽城| 牡丹江市|