国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于 Appium 的 Android UI 自動化測試!

這篇具有很好參考價值的文章主要介紹了基于 Appium 的 Android UI 自動化測試!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

基于 Appium 的 Android UI 自動化測試!,自動化測試,軟件測試,安全測試,appium,android,ui,功能測試,測試工程師,測試工具,自動化測試

自動化測試是研發(fā)人員進(jìn)行質(zhì)量保障的重要一環(huán),良好的自動化測試機(jī)制能夠讓開發(fā)者及早發(fā)現(xiàn)編碼中的邏輯缺陷,將風(fēng)險前置。日常研發(fā)中,由于快速迭代的原因,我們經(jīng)常需要在各個業(yè)務(wù)線上進(jìn)行主流程回歸測試,目前這種測試大部分由人工進(jìn)行,費(fèi)時費(fèi)力,重復(fù)勞動多。如果能將UI自動化測試與主流程回歸結(jié)合到一起,一方面保證了代碼質(zhì)量,另一方面大大節(jié)約人力成本,可謂一舉兩得。

為什么需要UI自動化測試

原因主要是以下三點:

  • 保證質(zhì)量——及早發(fā)現(xiàn)代碼缺陷,風(fēng)險前置。

  • 減少重復(fù)勞動,節(jié)約人力——快速迭代中經(jīng)常需要進(jìn)行主流程回歸,測試完整個主流程,需要耗費(fèi)相當(dāng)大的人力成本。

  • 統(tǒng)一標(biāo)準(zhǔn)——每個人對測試用例以及業(yè)務(wù)理解程度不同,標(biāo)準(zhǔn)可能存在不一致。

進(jìn)行UI自動化測試面臨的問題

  • 工具選擇。

  • 降低對后端的依賴,避免因為測試環(huán)境后端不穩(wěn)定導(dǎo)致的測試失敗。

  • 整合測試用例,增加復(fù)用,降低用例維護(hù)成本。

自動化測試工具對比

業(yè)界UI測試工具發(fā)展迅速,目前有Robotium、Appium、Espresso、UIAutomator、Calabash等等,其中在Android中應(yīng)用最廣泛的當(dāng)屬UIAutomator、Robotium、Appium。

下面列表比較說明:

UIAutomator Robotium Appium
支持平臺 Android Android,H5 Android,iOS,H5
腳本語言 Java Java Almost any
是否支持無源碼測試 Yes Yes Yes
支持API級別 16+ All All

除了Android、Hybrid類型的App,Appium還可以在iOS設(shè)備上運(yùn)行。加上之前組內(nèi)有同事做過Appium方面的分享,在這方面有一定的基礎(chǔ),所以最終我們選擇了Appium。

接口穩(wěn)定性與數(shù)據(jù)可變性

業(yè)務(wù)特性決定我們的case在運(yùn)行過程中會經(jīng)常向后端請求數(shù)據(jù),然后根據(jù)后端接口返回的數(shù)據(jù)決定頁面元素展示。因此,有兩個難點是必須克服的:

  1. 后端接口穩(wěn)定性
    測試環(huán)境并不像線上,能在7x24內(nèi)保持穩(wěn)定。業(yè)務(wù)接口經(jīng)常出現(xiàn)因所依賴的外部環(huán)境異常而請求失敗的情況,以往處理這種情形,我們能做的事情往往很有限,最糟糕的就是必須要等待第三方修改完成后,才能繼續(xù)我們的測試。因此,如何保持接口穩(wěn)定,將成為UI自動化測試不得不面對的問題。

  2. 測試數(shù)據(jù)配置與保存
    克服了1中提到的接口穩(wěn)定難點后,仍然要面對第二個難點——頻繁修改配置以適應(yīng)測試用例的條件。舉個例子,對于閃惠業(yè)務(wù),用例里面會對于商戶配置的多種情況進(jìn)行測試(無優(yōu)惠、有優(yōu)惠未開始、僅有閃惠優(yōu)惠、有閃惠和團(tuán)購、閃惠打折、閃惠贈品等),這里面的條件是復(fù)雜多變的。如果每一次進(jìn)行測試前,都由執(zhí)行測試人在商戶后臺登錄后手動修改配置,將耗費(fèi)巨大的人力成本。因此我們勢必找出一條途徑,將這種繁瑣的配置過程自動化。

接入Appmock

注:使用Appmock,需建立在App底層網(wǎng)絡(luò)請求模塊已經(jīng)具備切換mock地址的功能的基礎(chǔ)上。

Appmock是美團(tuán)點評平臺組制作的非常優(yōu)秀的mock工具,其前身是美團(tuán)點評同事張文東所編寫的wendong.dp(僅供美團(tuán)點評內(nèi)部使用)。在Appmock上可以進(jìn)行網(wǎng)絡(luò)請求的查看與mock。那么,是否可以讓我們的自動化測試用例在運(yùn)行時訪問Appmock,獲取預(yù)設(shè)的mock數(shù)據(jù)呢?做過相關(guān)App開發(fā)的同事都知道,在App中這是很容易實現(xiàn)的,只要訪問某個特定HTTP鏈接進(jìn)行注冊即可。

現(xiàn)在我也找了很多測試的朋友,做了一個分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗自學(xué)時找不到資源,沒人解答問題,堅持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動化,性能,安全,測試開發(fā)等等方面有一定建樹的技術(shù)大牛
分享他們的經(jīng)驗,還會分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點!開源的!??!
qq群號:110685036

基于 Appium 的 Android UI 自動化測試!,自動化測試,軟件測試,安全測試,appium,android,ui,功能測試,測試工程師,測試工具,自動化測試

Appmock使用界面

基于 Appium 的 Android UI 自動化測試!,自動化測試,軟件測試,安全測試,appium,android,ui,功能測試,測試工程師,測試工具,自動化測試

由此,“后端接口穩(wěn)定性”的問題,在Appmock的幫助下就解決了,如果把后端數(shù)據(jù)直接配置在Appmock上,請求失敗的概率就微乎其微。即便如此,仍然要面臨頻繁修改配置的需求,只不過是把修改的操作從商家后臺頁面轉(zhuǎn)移到了mock系統(tǒng)。有沒有什么方法,可以讓修改配置的操作自動化進(jìn)行呢?

在研讀過Appmock的源碼后,我們想到,可以自己搭建一個mock-server,把不同階段的mock數(shù)據(jù)保存在數(shù)據(jù)庫中,并且開放出網(wǎng)絡(luò)接口,用來切換各個測試用例所需的mock數(shù)據(jù)。具體的系統(tǒng)結(jié)構(gòu)如下圖所示。

基于 Appium 的 Android UI 自動化測試!,自動化測試,軟件測試,安全測試,appium,android,ui,功能測試,測試工程師,測試工具,自動化測試

上圖描述了一次用例運(yùn)行的簡要過程,事前需要在數(shù)據(jù)庫中準(zhǔn)備好測試數(shù)據(jù),mock-server基于Appmock,使用NodeJS進(jìn)行二次開發(fā)完成。

編寫測試用例

為了簡化用例編寫,減少開發(fā)與維護(hù)的工作量,使用Page Object模式進(jìn)行用例開發(fā)。

Page Object定義為抽象頁面的對象,通過對頁面功能的封裝,進(jìn)行相應(yīng)操作。它的優(yōu)點是:

  • 減少重復(fù)代碼,增加復(fù)用性。

  • 提高代碼可讀性、穩(wěn)定性。

  • 易于維護(hù)。

基于 Appium 的 Android UI 自動化測試!,自動化測試,軟件測試,安全測試,appium,android,ui,功能測試,測試工程師,測試工具,自動化測試

UI自動化測試框架的編寫方式類似于MVC架構(gòu),我們將測試用例中的業(yè)務(wù)邏輯、各個頁面間的元素以及測試數(shù)據(jù)相分離后獨立編寫,以下均用排隊業(yè)務(wù)的主流程舉例。

測試類組成

測試類的組成包括setUp(),tearDown()方法以及各個測試用例testXXXX(),所有的測試用例必須以小寫test開頭,如正常排號下的testQueueNormalQueue():

@Beforepublic void setUp() throws Exception {
 ? ?File apk = new File(APK_NOVA);
 ? ?DesiredCapabilities capabilities = DesiredCapabilities.android();
 ? ?capabilities.setCapability("device", Platform.ANDROID);
 ? ?capabilities.setCapability(CapabilityType.VERSION, "5.1");
 ? ?…… ? ? ? // capabilities各個常量字段
 ? ?driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
 ? ?splashScreen = new SplashScreen(driver);
 ? ?mainPage = new MainPage(driver);
 ? ?…… ? ? ? // Page Object初始化}@Afterpublic void tearDown() throws Exception {
 ? ?driver.quit();
}@Testpublic void testQueueNormalQueue() { ? ?// 略}

測試用例中不用直接對頁面元素進(jìn)行操作,我們所要做的事情僅僅是業(yè)務(wù)層面的邏輯,包括表單數(shù)據(jù)的提交、頁面按鈕的點擊跳轉(zhuǎn)等等。

頁面類編寫

頁面類的編寫采用Page Object模式,包括頁面中會使用到的元素、頁面元素的操作方法集以及頁面元素的檢驗方法集。

所有的Page子類均繼承BasePage父類,它要做的事情很簡單,無非就是1個driver,2個driverWait用于延時加載的等待時間,以及頁面元素的初始化:

public class BasePage { ? ?private static final int TIMEOUT = 1; ? ? ? ? ? ? // short timeout for web-element
 ? ?private static final int TIMEOUT_LONG = 10; ? ? ? // long timeout for web-element
 ? ?public AndroidDriver<AndroidElement> driver; ? ?public WebDriverWait driverWait; ? ?public WebDriverWait driverLongWait; ? ?public BasePage(AndroidDriver<AndroidElement> driver) { ? ? ? ?this.driver = driver; ? ? ? ?this.driverWait = new WebDriverWait(this.driver, TIMEOUT); ? ? ? ?this.driverLongWait = new WebDriverWait(this.driver, TIMEOUT_LONG);
 ? ? ? ?PageFactory.initElements(this.driver, this); ?// 這句非常重要,如果不寫的話盡管編譯不會報錯,但是后面要說的頁面元素在運(yùn)行時一個都找不到
 ? ?}
}

然后是各個Page子類的實現(xiàn)方法:

public class ShopInfoPage extends BasePage { ? ?public ShopInfoPage(AndroidDriver<AndroidElement> driver) { ? ? ? ?super(driver);
 ? ?}
 ? ?…… // 頁面元素 @FindBy
 ? ?…… // 操作方法,比如login()、clickXXXXXXButton()、gotoXXXXXXPage()
 ? ?…… // 檢驗方法,比如checkLoaded()、checkLoginSuccess()、checkQueue_LoginReadyQueue()}

Page子類的元素定位我們使用@FindBy注解方式進(jìn)行統(tǒng)一的管理。

元素定位最基本的方法就是使用id/name/class等,如果不行的話就用相對復(fù)雜卻無所不能的xpath,如:

// 點擊登錄按鈕@FindBy(id = "login_tip")private WebElement clickLoginButton;// MAPI域名輸入框@FindBy(xpath = "http://*[contains(@resource-id, 'id/mapi_item')]//*[contains(@resource-id, 'id/debug_domain')]")private WebElement mapiDomainText;

Page中的操作和檢驗方法調(diào)用已經(jīng)封裝好的BaseUtils中的方法,如:

BaseUtils.waitForElement(driverWait, loginButton).click(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 等待元素出現(xiàn)并點擊Assert.assertTrue(BaseUtils.waitForElementVisibility(driverLongWait, usernameText)); ? ?// 檢驗元素應(yīng)該展示在頁面上

BaseUtils方法

BaseUtils中封裝好了一些通用的方法,還需要不斷完善并擴(kuò)展。下面介紹其中一些常用及重要的方法:

  1. openDebugPanel():每次直接調(diào)用該方法來打開Debug面板,由于Debug面板是一個系統(tǒng)層面的懸浮窗,它不屬于任何頁面中的元素(你完全沒辦法通過ID甚至XPath獲得)。

  2. clickPoint():點擊某個坐標(biāo)+持續(xù)時間,坐標(biāo)采用相對屏幕位移的方式(左上為0,0),這里只實現(xiàn)了簡單的單指的點擊操作,實際上driver.tap可以模擬多指的共同操作。

  3. swipeToUp() & swipeToDown():上拉 & 下拉頁面操作,需要傳的是次數(shù)和每次持續(xù)時間,模擬手指在屏幕上的滑屏操作,主要用于刷新頁面以及繞過某些有坑的scrollTo。

  4. prepareMockData():這里要做的就是,在關(guān)鍵步驟操作前傳入mock_data_id,我們會將數(shù)據(jù)請求發(fā)送給服務(wù)器,然后服務(wù)器從數(shù)據(jù)庫拉到對應(yīng)的mock data并更新。

  5. saveScreenshot():顧名思義,截圖。在每個重要的頁面操作方法中加入即可,需要傳入的是case_id以及操作或檢查時的keyword,方便在用例執(zhí)行完以后看截圖分析和Bug復(fù)現(xiàn)。

  6. waitForElementXXX():在預(yù)設(shè)等待時間內(nèi)等待元素出現(xiàn)并定位元素。

UI自動化測試運(yùn)行效果

在排隊與閃惠兩條業(yè)務(wù)線進(jìn)行了UI自動化測試實踐,它們執(zhí)行完成全套用例的耗時均不超過20min。相比于之前人工進(jìn)行主流程測試動輒花費(fèi)半天的工作量的情況,大大降低了人力成本,將工程師寶貴的時間節(jié)約給了更有價值的研發(fā)工作。

當(dāng)然,自動化測試前期的環(huán)境搭建、數(shù)據(jù)準(zhǔn)備、用例編寫等任務(wù)是必不可少的,這些準(zhǔn)備工作很多都是一次性投入,一勞永逸,也正是自動化測試的價值所在。

今天的分享就到此結(jié)束了, 如果文章對你有幫助,記得點贊,收藏,加關(guān)注。會不定期分享一些干貨哦....文章來源地址http://www.zghlxwxcb.cn/news/detail-719242.html

到了這里,關(guān)于基于 Appium 的 Android UI 自動化測試!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【UI自動化測試】appium+python+unittest+HTMLRunner

    【UI自動化測試】appium+python+unittest+HTMLRunner

    進(jìn)階Python接口自動化測試必備教程(2023全網(wǎng)最詳細(xì)) 簡介 ?獲取AppPackage和AppActivity ?定位UI控件的工具 ?腳本結(jié)構(gòu) ?PageObject分層管理 ?HTMLTestRunner生成測試報告 ?啟動appium server服務(wù) ?以python文件模式執(zhí)行腳本生成測試報告 下載與安裝 下載需要自動化測試的App并安裝到手機(jī)

    2024年02月16日
    瀏覽(21)
  • #軟件測試###淺談幾個UI自動化測試工具

    #軟件測試###淺談幾個UI自動化測試工具

    一個web的自動化測試工具,相比QTP而言支持多種語言,QTP只支持VBS,支持多平臺,支持分布式測試用例的執(zhí)行。selenium主要使用的工具是WebDriver。 WebDriver 有三個角色: 工程師寫的自動化測試代碼;瀏覽器的驅(qū)動;瀏覽器。 從技術(shù)層面解釋: WebDriver API (基于Java、Python、C#)

    2024年02月13日
    瀏覽(28)
  • 【編寫UI自動化測試集】Appium+Python+Unittest+HTMLRunner?

    【編寫UI自動化測試集】Appium+Python+Unittest+HTMLRunner?

    簡介 ?獲取AppPackage和AppActivity ?定位UI控件的工具 ?腳本結(jié)構(gòu) ?PageObject分層管理 ?HTMLTestRunner生成測試報告 ?啟動appium server服務(wù) ?以python文件模式執(zhí)行腳本生成測試報告 下載與安裝 下載需要自動化測試的App并安裝到手機(jī) 獲取AppPackage和AppActivity 方法一 有源碼的情況直接打開

    2024年02月11日
    瀏覽(26)
  • 軟件測試/測試開發(fā)丨UI自動化測試用例結(jié)構(gòu)分析

    本文為霍格沃茲測試開發(fā)學(xué)社學(xué)員學(xué)習(xí)筆記分享 原文鏈接:https://ceshiren.com/t/topic/26899 用例標(biāo)題 搜狗搜索功能 前提條件 進(jìn)入搜狗首頁 用例步驟 1、輸入;2、點擊搜索 預(yù)期結(jié)果 1、搜索成功;2、搜索結(jié)果中包含 實際結(jié)果 自動化測試用例 作用 用例標(biāo)題 測試包、

    2024年02月10日
    瀏覽(28)
  • Android+Appium自動化測試環(huán)境搭建及實操

    Android+Appium自動化測試環(huán)境搭建及實操

    ?Appium是一個開源的移動端自動化測試工具,適用于 移動端原生APP、移動Web APP或混合APP 的自動化測試; ?Appium繼承了Selenium(Web端自動化測試工具),應(yīng)用 WebDriver (JSON wire protocol)技術(shù),借助操作系統(tǒng)自帶的測試框架來驅(qū)動Android和IOS應(yīng)用。 特點 :Appium是一個開源、跨平臺、多

    2024年02月08日
    瀏覽(41)
  • Python之Appium 2自動化測試(Android篇)

    Python之Appium 2自動化測試(Android篇)

    1、Appium 2 環(huán)境搭建 請參考另一篇文章: Windows系統(tǒng)搭建Appium 2 和 Appium Inspector 環(huán)境 2、安裝 Appium-Python-Client, 版本要求3.0及以上 和 Selenium 版本要求4.0及以上 3、手機(jī)連接電腦,并在dos窗口啟動 Appium Server 4、演示環(huán)境APP軟件:ES文件瀏覽器、隨手記 5、查看元素唯一方法 復(fù)制

    2024年02月04日
    瀏覽(22)
  • appium腳本執(zhí)行Android_UI自動化,app總是閃退回桌面

    appium腳本執(zhí)行Android_UI自動化,app總是閃退回桌面

    1. 使用工具 appium python pycharm 2. 被測對象及設(shè)備 測試真機(jī)上的app 3. 遇到的問題 批量執(zhí)行測試用例,執(zhí)行到部分用例某一步驟時,app會自動退回手機(jī)桌面,并開始執(zhí)行下一條用例,因上一條故障導(dǎo)致下一條用例找不到頁面元素而執(zhí)行失?。看问∥恢檬请S機(jī)的)。所有用例

    2024年02月16日
    瀏覽(22)
  • Android常用9種自動化測試框架對比,Appium有哪些優(yōu)勢?

    Android常用9種自動化測試框架對比,Appium有哪些優(yōu)勢?

    隨著移動終端的普及,手機(jī)應(yīng)用越來越多,也越來越重要。 App的回歸測試用例數(shù)量也越來越多,全量回歸也越來越消耗時間。 移動 APP自動化測試 的難點 移動 APP的UI自動化測試長久以來一直是一個難點,難點在于UI的”變”, 變化導(dǎo)致自動化用例的大量維護(hù)。 從分層測試的角

    2024年01月21日
    瀏覽(25)
  • Appium 2安裝與使用java對Android進(jìn)行自動化測試

    Appium 2安裝與使用java對Android進(jìn)行自動化測試

    1.1、系統(tǒng)要求 當(dāng)前Appium2.1服務(wù)器的要求: 支持macOS、Linux或Windows操作系統(tǒng) Node.js版本要求^14.17.0 || ^16.13.0 | =18.0.0 NPM版本= 8 (NPM通常與Node.js捆綁在一起,但可以獨立升級) 系統(tǒng)要求:http://appium.io/docs/en/2.1/intro/requirements/ 1.2、安裝Appium2.1服務(wù) 下載nodejs:https://nodejs.org/zh-cn/download

    2024年02月12日
    瀏覽(50)
  • 【軟件測試】基于博客系統(tǒng)的自動化測試

    【軟件測試】基于博客系統(tǒng)的自動化測試

    目錄 1.我的博客系統(tǒng)鏈接 2.使用selenium對博客系統(tǒng)進(jìn)行自動化測試 1.引入依賴 2.創(chuàng)建公共類 3.創(chuàng)建測試套件類 4.測試登陸界面 5. 測試博客列表頁 6.測試寫博客頁面 7.測試刪除博客 8.最終運(yùn)行結(jié)果 用戶登錄 創(chuàng)建一個maven項目,在pop.xml中引入以下依賴 因為對每一個頁面進(jìn)行測試

    2024年02月15日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包