Appium面試題

1、Appium有什么特點(diǎn)?

https://www.interviewbit.com/appium-interview-questions/

以下是 Appium 的特點(diǎn):-

[圖片上傳失敗...(image-7cc230-1646447398872)]

  • Appium 不需要使用應(yīng)用程序的源代碼或庫(kù)。
  • Appium 擁有一個(gè)充滿活力且參與度高的開(kāi)發(fā)者社區(qū),因此可以輕松地從社區(qū)獲得幫助。
  • Appium 支持多平臺(tái)測(cè)試,這意味著它可以在 iOS 移動(dòng)、Android 移動(dòng)和 Windows 桌面應(yīng)用程序等多個(gè)平臺(tái)上執(zhí)行相同的測(cè)試用例。
  • Appium 允許測(cè)試腳本與其他測(cè)試腳本并行運(yùn)行。
  • Appium 中的小修改不需要重新安裝應(yīng)用程序。
  • Appium 支持使用 Selenium 客戶端庫(kù)的多種語(yǔ)言,包括 C#、Python、Java、Ruby、PHP、帶有 node.js 的 JavaScript 等等。

2. 提一下Appium的優(yōu)缺點(diǎn)。

以下是Appium的優(yōu)點(diǎn):-

  • Appium 是一個(gè)開(kāi)源應(yīng)用程序,這意味著它可以免費(fèi)下載并且設(shè)置簡(jiǎn)單。
  • 它可用于在混合、本機(jī)和 Web 應(yīng)用程序上運(yùn)行自動(dòng)化測(cè)試。
  • 為了使 Appium 與自動(dòng)化兼容,您不需要在應(yīng)用程序中集成任何新代理,這與其他測(cè)試解決方案不同。它在將上傳到 App Store 的應(yīng)用程序上進(jìn)行測(cè)試。
  • Appium 現(xiàn)在有一個(gè)新功能。除了移動(dòng)應(yīng)用程序測(cè)試,它現(xiàn)在還支持 Windows 桌面應(yīng)用程序測(cè)試。
  • Appium 是一個(gè)跨平臺(tái)、開(kāi)源的移動(dòng)測(cè)試解決方案,允許我們進(jìn)行跨平臺(tái)測(cè)試。因此,您將能夠跨多種平臺(tái)進(jìn)行測(cè)試(Android 和 IOS 平臺(tái)的單一 API)。

以下是Appium的缺點(diǎn):-

  • 不支持生成已執(zhí)行測(cè)試的詳細(xì)報(bào)告。
  • 測(cè)試有點(diǎn)慢,因?yàn)樗鼈円蕾囉谶h(yuǎn)程 Web 驅(qū)動(dòng)程序。
  • Appium 使用 UIAutomator for Android,它只支持 Android SDK、API 16 或更高版本,這不是限制,而是開(kāi)銷(xiāo)。另一方面,Appium 本身并不支持早期的 API。為了支持較舊的 API,它使用了一個(gè)名為 Selendroid 的開(kāi)源庫(kù)。
  • 在 Mac OS 設(shè)備上,一次只能運(yùn)行一個(gè) iOS 腳本,這意味著一次只能運(yùn)行一個(gè)測(cè)試。如果我們希望同時(shí)在多個(gè) iOS 設(shè)備上運(yùn)行我們的測(cè)試,我們將需要相同數(shù)量的 Mac 機(jī)器。另一方面,組織許多 Mac 機(jī)器的成本會(huì)很高。

3.模擬器和模擬器的區(qū)別。

模擬器:模擬器用于模擬環(huán)境,其中包含將出現(xiàn)在應(yīng)用程序的實(shí)際生產(chǎn)環(huán)境中的所有軟件變量和配置。模擬器不會(huì)嘗試復(fù)制將在生產(chǎn)中運(yùn)行應(yīng)用程序的實(shí)際硬件。模擬器可以用高級(jí)編程語(yǔ)言編寫(xiě),因?yàn)樗鼈冎皇菢?gòu)建軟件環(huán)境。例如,可以將賽車(chē)游戲應(yīng)用程序視為模擬器,因?yàn)樗M了真實(shí)的賽車(chē)。

模擬器:模擬器確實(shí)會(huì)嘗試復(fù)制真實(shí)世界環(huán)境的所有硬件和軟件方面。在大多數(shù)情況下,您需要用匯編語(yǔ)言開(kāi)發(fā)一個(gè)模擬器來(lái)完成此操作。因此,模擬器可能被認(rèn)為占據(jù)了模擬器和現(xiàn)實(shí)世界小工具之間的中間地帶。例如,可以將汽車(chē)模擬器賽車(chē)游戲視為模擬器。它還借助模擬器提供賽車(chē)的硬件方面。

  • 模擬器復(fù)制硬件和軟件功能,而模擬器僅模擬可以使用軟件調(diào)整或創(chuàng)建的環(huán)境功能。仿真器不能替代真實(shí)設(shè)備測(cè)試,因?yàn)樗鼈儾⒉豢偸悄芎芎玫啬M生產(chǎn)系統(tǒng)的硬件和軟件。它們只是允許您創(chuàng)建一個(gè)更類(lèi)似于真實(shí)設(shè)備的環(huán)境。
  • 與模擬器相比,模擬器要慢一些,因?yàn)槟M器需要感知硬件設(shè)備的運(yùn)動(dòng),將其轉(zhuǎn)換為數(shù)字信號(hào),然后對(duì)其進(jìn)行處理。

4. 什么時(shí)候應(yīng)該使用模擬器,什么時(shí)候應(yīng)該使用模擬器?

  • 我們應(yīng)該使用模擬器的情況:模擬器通常用于軟件測(cè)試情況,其目標(biāo)是確保應(yīng)用程序在與外部應(yīng)用程序或環(huán)境交互時(shí)按預(yù)期運(yùn)行。
    例如,您可能希望查看一個(gè)應(yīng)用程序是否可以將數(shù)據(jù)傳遞給另一個(gè)應(yīng)用程序。因?yàn)閷?shí)際的硬件配置不太可能對(duì)程序的數(shù)據(jù)傳輸產(chǎn)生太大影響,所以模擬環(huán)境通常就足夠了。模擬測(cè)試環(huán)境對(duì)于確保應(yīng)用程序的界面在一系列屏幕分辨率下正確顯示也很有用。
  • 我們應(yīng)該使用模擬器的情況:當(dāng)您需要測(cè)試軟件如何與底層硬件或硬件和軟件的組合交互時(shí),模擬器會(huì)派上用場(chǎng)。
    例如,如果我們想發(fā)現(xiàn)固件更新是否會(huì)導(dǎo)致我們的軟件出現(xiàn)問(wèn)題,我們可以在模擬器的幫助下找出答案。或者,我們可能想知道我們的程序在多個(gè) CPU 上運(yùn)行或使用不同的內(nèi)存分配時(shí)的執(zhí)行情況。模擬器在這些情況下也能派上用場(chǎng)。

5. 有哪些不同類(lèi)型的移動(dòng)應(yīng)用程序?

以下是不同類(lèi)型的移動(dòng)應(yīng)用程序:

  • 原生應(yīng)用程序:原生應(yīng)用程序是用特定編程語(yǔ)言(例如 iOS 的 Objective C 或 Android 的 Java)編寫(xiě)并直接安裝在設(shè)備上的程序,允許它充分利用設(shè)備的所有特性。本機(jī)應(yīng)用程序可以離線工作并利用設(shè)備的通知系統(tǒng)。應(yīng)用商店(例如 Google Play 或 Apple 的 App Store)用于安裝本機(jī)應(yīng)用程序。本機(jī)移動(dòng)應(yīng)用程序具有高水平的性能和可靠性。Temple Run、Candy Crush 和其他本地應(yīng)用程序就是示例。
  • Web 應(yīng)用程序: Web 應(yīng)用程序是專(zhuān)門(mén)為移動(dòng)設(shè)備創(chuàng)建、調(diào)整和托管的移動(dòng) Web 門(mén)戶。使用移動(dòng)設(shè)備的 Web 瀏覽器上的 URL 訪問(wèn)它們。當(dāng) HTML5 發(fā)布時(shí),人們了解到他們可以在瀏覽器中擁有類(lèi)似本機(jī)的功能,并且 Web 應(yīng)用程序變得非常流行。設(shè)備功能在移動(dòng) Web 應(yīng)用程序中不可用。Google.com、m.snapdeal.com、m.yahoo.com 和更多網(wǎng)站都是 Web 應(yīng)用程序的示例。
  • 混合應(yīng)用程序:嵌入在設(shè)備上運(yùn)行并使用 Web 技術(shù)創(chuàng)建的本機(jī)應(yīng)用程序的 Web 應(yīng)用程序稱為混合應(yīng)用程序(HTML5、CSS 和 JavaScript)?;旌蠎?yīng)用程序在本機(jī)容器內(nèi)運(yùn)行,并使用設(shè)備的瀏覽器引擎(而不是瀏覽器)在本地呈現(xiàn) HTML 和處理 JavaScript。Web 到本機(jī)的抽象層使您可以訪問(wèn)移動(dòng) Web 應(yīng)用程序中不可用的設(shè)備功能,例如加速度計(jì)、攝像頭和本地存儲(chǔ)?;旌蠎?yīng)用程序不限于單一平臺(tái)或移動(dòng)設(shè)備。因此,一旦構(gòu)建,它就可以在任何設(shè)備上運(yùn)行。Flipkart、Facebook、Twitter 和其他混合應(yīng)用程序就是示例。

6. 有哪些重要的移動(dòng)應(yīng)用程序測(cè)試?

以下是一些重要的移動(dòng)應(yīng)用程序測(cè)試:

  • 可用性測(cè)試:可用性測(cè)試是 Web 應(yīng)用程序測(cè)試的一種,非常適合評(píng)估應(yīng)用程序如何使用戶更容易實(shí)現(xiàn)其目標(biāo)。在這個(gè)測(cè)試中,參與者被給予特定的、真實(shí)的環(huán)境來(lái)使用應(yīng)用程序。在收集來(lái)自最終用戶的直接輸入的基礎(chǔ)上,可用性測(cè)試也是可靠的。
    因此,測(cè)試過(guò)程沒(méi)有偏見(jiàn),同時(shí)保證突出區(qū)域得到改善??捎眯詼y(cè)試還確保設(shè)計(jì)直觀,并優(yōu)先考慮可用性和客戶體驗(yàn)。
  • 性能測(cè)試:性能測(cè)試是移動(dòng)應(yīng)用程序測(cè)試的一個(gè)重要子集,用于檢查應(yīng)用程序在各種工作負(fù)載情況下的性能、穩(wěn)定性和響應(yīng)能力。性能測(cè)試的主要目標(biāo)是確保應(yīng)用程序完全符合性能目標(biāo)。
    此外,它在啟動(dòng)應(yīng)用程序之前解決了性能限制。瓶頸是系統(tǒng)整體功能內(nèi)部的進(jìn)程,會(huì)導(dǎo)致系統(tǒng)的整體性能變慢或停滯。負(fù)載測(cè)試、容量測(cè)試、浸泡測(cè)試、尖峰測(cè)試和壓力測(cè)試都是流行的性能評(píng)估形式。
  • 安全測(cè)試:在當(dāng)今世界,安全是幾乎每個(gè)移動(dòng)應(yīng)用程序開(kāi)發(fā)人員的主要擔(dān)憂。據(jù)報(bào)道,出于安全考慮,80% 的用戶更有可能刪除應(yīng)用程序。因此,專(zhuān)注于移動(dòng)應(yīng)用安全測(cè)試至關(guān)重要。
    某些程序(例如旅行應(yīng)用程序)需要用戶的個(gè)人信息來(lái)進(jìn)行各種交易。如果您的應(yīng)用程序需要類(lèi)似的東西,您必須保證應(yīng)用程序的機(jī)密性、完整性和真實(shí)性。您應(yīng)該在您的應(yīng)用程序上運(yùn)行強(qiáng)大的測(cè)試,以確保沒(méi)有人可以通過(guò)不公平的方式侵入他人的帳戶。
  • 中斷測(cè)試:中斷測(cè)試對(duì)于確定應(yīng)用程序在返回之前的狀態(tài)之前被中斷時(shí)的行為非常重要。來(lái)電或短信、警報(bào)、來(lái)自移動(dòng)應(yīng)用程序的推送通知、電池電量不足或已滿、網(wǎng)絡(luò)連接丟失和恢復(fù)以及充電時(shí)插入或拔出都是中斷的示例。如果發(fā)生中斷,應(yīng)用程序通常應(yīng)該在后臺(tái)運(yùn)行并返回到之前的狀態(tài)。
  • 手動(dòng)測(cè)試:手動(dòng)測(cè)試是一種經(jīng)過(guò)驗(yàn)證的方法,可以徹底解決移動(dòng)應(yīng)用程序測(cè)試的復(fù)雜性。手動(dòng)測(cè)試可確保成品按照計(jì)劃的預(yù)期以最佳方式運(yùn)行。在用例不是立即顯而易見(jiàn)的情況下,它特別有用。專(zhuān)業(yè)的 QA 測(cè)試人員可以在短時(shí)間內(nèi)評(píng)估應(yīng)用程序并確保它產(chǎn)生準(zhǔn)確的結(jié)果。
  • 兼容性測(cè)試:兼容性測(cè)試是最重要的移動(dòng)應(yīng)用程序測(cè)試類(lèi)型之一。它是一種非功能測(cè)試形式,可確保移動(dòng)應(yīng)用程序在各種操作系統(tǒng)、應(yīng)用程序、設(shè)備、內(nèi)部硬件規(guī)格和網(wǎng)絡(luò)條件下的功能。兼容性測(cè)試確定移動(dòng)應(yīng)用程序是否與各種操作系統(tǒng)和版本兼容。
    它還測(cè)試移動(dòng)應(yīng)用程序與各種設(shè)備、瀏覽器、網(wǎng)絡(luò)和其他特性的兼容性。向后兼容性測(cè)試和前向兼容性測(cè)試是兼容性測(cè)試的兩種類(lèi)型。
  • 本地化測(cè)試:針對(duì)特定地理位置的移動(dòng)應(yīng)用程序必須進(jìn)行本地化測(cè)試。測(cè)試移動(dòng)應(yīng)用程序?qū)υ摰貐^(qū)獨(dú)特語(yǔ)言和文化方面的響應(yīng)能力至關(guān)重要。當(dāng)?shù)刎泿拧⑹褂煤线m的時(shí)區(qū)日期和時(shí)間格式、眾多當(dāng)?shù)胤ㄒ?guī)需求以及文本和用戶界面只是本地化測(cè)試評(píng)估的幾個(gè)重要領(lǐng)域。
  • 功能測(cè)試:功能移動(dòng)應(yīng)用程序測(cè)試確保應(yīng)用程序的功能滿足指定的要求。這種形式的測(cè)試主要關(guān)注移動(dòng)應(yīng)用程序的主要目標(biāo)和流程。功能測(cè)試確定應(yīng)用程序是否可以正確啟動(dòng)和安裝。它還測(cè)試了注冊(cè)和登錄的簡(jiǎn)單性,以及推送通知的呈現(xiàn)以及文本框和按鈕的正確操作。
  • 安裝測(cè)試:安裝測(cè)試,也稱為實(shí)現(xiàn)測(cè)試,是確保移動(dòng)應(yīng)用程序正確安裝和刪除的好方法。此外,安裝測(cè)試對(duì)于確保更新無(wú)縫且無(wú)錯(cuò)誤是必要的。安裝測(cè)試還檢查如果用戶未能更新移動(dòng)應(yīng)用程序會(huì)發(fā)生什么。
  • 自動(dòng)化測(cè)試:某些移動(dòng)應(yīng)用程序質(zhì)量評(píng)估過(guò)于復(fù)雜且耗時(shí)。在這種情況下,移動(dòng)應(yīng)用程序測(cè)試自動(dòng)化服務(wù)開(kāi)始發(fā)揮作用,提供最佳準(zhǔn)備和有效執(zhí)行的自動(dòng)化測(cè)試以及手動(dòng)測(cè)試,這有助于確保質(zhì)量,同時(shí)也允許更快地發(fā)布優(yōu)質(zhì)產(chǎn)品。因此,在移動(dòng)應(yīng)用程序測(cè)試方面,自動(dòng)化測(cè)試是節(jié)省時(shí)間和成本的可靠來(lái)源。有多種工具可以執(zhí)行自動(dòng)化測(cè)試。Appium就是其中之一。

7. 你需要一臺(tái)服務(wù)器機(jī)器來(lái)在 Appium 上運(yùn)行測(cè)試嗎?

不,我們不需要服務(wù)器機(jī)器來(lái)在 Appium 上運(yùn)行測(cè)試。Appium 鼓勵(lì)兩層架構(gòu),其中一臺(tái)測(cè)試機(jī)器連接到運(yùn)行 Appium 的測(cè)試服務(wù)器,使整個(gè)過(guò)程自動(dòng)化。此設(shè)置是可選的;您可以在與測(cè)試相同的系統(tǒng)上運(yùn)行 Appium。您的測(cè)試將使用環(huán)回地址連接到 Appium,而不是連接到遠(yuǎn)程主機(jī)。

8. Appium 適合哪些類(lèi)型的測(cè)試?

在進(jìn)行測(cè)試時(shí),可以測(cè)試許多場(chǎng)景,尤其是對(duì)于 Web 應(yīng)用程序,具體取決于您要確保的功能覆蓋率。Appium 在測(cè)試用戶在使用您的應(yīng)用程序時(shí)會(huì)遇到的場(chǎng)景時(shí)很有幫助。

另一方面,如果您需要測(cè)試的不僅僅是 UX 簡(jiǎn)單交互,那么 Appium 就會(huì)成為一種限制。考慮諸如鍵盤(pán)輸入之類(lèi)的功能。當(dāng)涉及復(fù)雜的觸摸/鍵盤(pán)混合環(huán)境時(shí),錯(cuò)誤失敗的可能性很大。使用 Appium 交換數(shù)據(jù)是另一個(gè)小麻煩。當(dāng)您的測(cè)試需要與您的應(yīng)用程序交換數(shù)據(jù)時(shí),您需要使用各種策略。所以請(qǐng)記住,發(fā)送和接收信息并不總是那么簡(jiǎn)單。這不是 Appium 的錯(cuò)。WebDriver 規(guī)范的創(chuàng)建是為了自動(dòng)化流程,而不是數(shù)據(jù)交換。

9. 在 Sauce Labs 上使用 Appium 而不是在本地使用 Appium 的主要優(yōu)勢(shì)是什么?

以下是在 Sauce Labs 上使用 Appium 而不是在本地使用 Appium 的優(yōu)勢(shì):

  • 它節(jié)省了我們?cè)诒镜卦O(shè)置 Appium 服務(wù)器所需的時(shí)間。
  • 我們不需要在我們的系統(tǒng)中離線安裝移動(dòng)模擬器和模擬器。我們可以直接在 Sauce Labs(一家位于加利福尼亞州舊金山的美國(guó)云托管 Web 和移動(dòng)應(yīng)用程序自動(dòng)化測(cè)試平臺(tái)公司)上使用它。
  • 它讓我們可以立即擴(kuò)展我們的應(yīng)用程序。
  • 我們不需要像在本地使用 Appium 那樣對(duì)應(yīng)用程序的源代碼進(jìn)行任何修改。

10. 解釋移動(dòng)應(yīng)用測(cè)試框架的一般職責(zé)。還解釋了移動(dòng)應(yīng)用程序測(cè)試框架的一般結(jié)構(gòu)。

以下是移動(dòng)應(yīng)用程序測(cè)試框架的一般職責(zé):

  • 選擇表達(dá)期望的格式
  • 開(kāi)發(fā)連接或控制測(cè)試應(yīng)用程序的方法
  • 執(zhí)行測(cè)試并報(bào)告結(jié)果

移動(dòng)應(yīng)用程序測(cè)試框架的一般結(jié)構(gòu)由以下部分組成:

  • 應(yīng)用程序包:這是指需要運(yùn)行和測(cè)試的目標(biāo)應(yīng)用程序。
  • Instrumentation TestRunner:針對(duì)目標(biāo)應(yīng)用程序執(zhí)行測(cè)試用例的測(cè)試用例運(yùn)行器。它包括一個(gè)用于創(chuàng)建測(cè)試的 SDK 工具以及一個(gè) API 工具,例如 MonkeyRunner,它提供了用于設(shè)計(jì)控制 Android 設(shè)備的程序的 API。
  • 測(cè)試包:測(cè)試包中包含兩個(gè)類(lèi),測(cè)試用例類(lèi)和 Mock 對(duì)象。模擬對(duì)象包含將用作測(cè)試用例的樣本輸入的模擬數(shù)據(jù),而測(cè)試用例類(lèi)包含要在目標(biāo)應(yīng)用程序上運(yùn)行的測(cè)試方法。

[圖片上傳失敗...(image-da5da5-1646447398871)]

在上圖中,我們可以看到一個(gè)移動(dòng)應(yīng)用測(cè)試框架由三個(gè)部分組成:Application package、InstrumentationTestRunner、Test package。測(cè)試包由模擬對(duì)象、測(cè)試用例類(lèi)以及 Instrumentation 和 JUnit 類(lèi)組成。

11. 列出在 Appium 本地運(yùn)行 Android 應(yīng)用程序測(cè)試所需的先決條件。

必須安裝以下先決條件才能在 Appium 本地成功地在 Android 應(yīng)用程序上運(yùn)行測(cè)試:

  • Java 開(kāi)發(fā)工具包 (JDK)。
  • 安卓工作室。
  • Android SDK 工具。
  • Eclipse IDE。
  • Appium 桌面客戶端。
  • 測(cè)試NG。
  • 硒服務(wù)器 JAR。
  • Webdriver 語(yǔ)言綁定庫(kù)。

12. Appium Inspector 是什么意思?

Appium 提供了一個(gè)“Inspector”來(lái)記錄和回放,類(lèi)似于 Selenium IDE 的記錄和回放工具。它檢查文檔對(duì)象模型以記錄和播放本機(jī)應(yīng)用程序行為,并以任何首選語(yǔ)言提供測(cè)試腳本。您可以使用 Appium Desktop 中的 Inspector 來(lái)查找或定位應(yīng)用程序的元素。

為了定位一個(gè)元素,Appium 檢查器提供了四個(gè)選項(xiàng):

  • 通過(guò) id 查找元素
  • 按類(lèi)名查找元素
  • 通過(guò)可訪問(wèn)性 id 查找元素
  • 通過(guò) xpath 查找元素。

Appium Inspector 不支持 Windows,而是使用 UIAutomator 查看器作為選項(xiàng)。

13.解釋Appium的架構(gòu)。

Appium 是一個(gè)用 node.js 編程語(yǔ)言實(shí)現(xiàn)的 HTTP 服務(wù)器。它在設(shè)備上創(chuàng)建一個(gè)服務(wù)器并等待來(lái)自主 Appium 服務(wù)器的代理命令。測(cè)試腳本由測(cè)試人員編寫(xiě)并在設(shè)備或模擬器上運(yùn)行。Appium 為各種平臺(tái)(如 Android 和 iOS)創(chuàng)建和管理許多 webdriver 會(huì)話。

測(cè)試人員生成的測(cè)試腳本作為請(qǐng)求發(fā)送到 Appium 服務(wù)器,然后在模擬器或設(shè)備上執(zhí)行。每個(gè)供應(yīng)商都有自己的技術(shù)和方法來(lái)在設(shè)備上執(zhí)行測(cè)試用例,例如 IOS 或 Android。因此,測(cè)試用例在 Appium 服務(wù)器接收到命令后運(yùn)行。為了將命令請(qǐng)求傳輸?shù)?Appium 服務(wù)器,Appium 使用 JSON(Javascript Object Notation)有線協(xié)議。在這里,JSON 用于在服務(wù)器和客戶端之間傳輸數(shù)據(jù)。

14.您對(duì)端到端移動(dòng)測(cè)試自動(dòng)化了解多少?執(zhí)行端到端移動(dòng)測(cè)試自動(dòng)化時(shí)應(yīng)牢記哪些事項(xiàng)?

端到端移動(dòng)應(yīng)用程序測(cè)試自動(dòng)化是一種從頭到尾測(cè)試軟件產(chǎn)品以確保應(yīng)用程序流程按計(jì)劃進(jìn)行的方法。它建立產(chǎn)品的系統(tǒng)要求并確保所有集成組件按預(yù)期運(yùn)行。

端到端 (E2E) 移動(dòng)應(yīng)用程序測(cè)試自動(dòng)化的目標(biāo)是從最終用戶的角度進(jìn)行測(cè)試,通過(guò)復(fù)制用戶使用應(yīng)用程序的真實(shí)情況,并確認(rèn)被測(cè)系統(tǒng)及其用于數(shù)據(jù)完整性和集成的組件。

如今,軟件系統(tǒng)非常復(fù)雜,并與眾多子系統(tǒng)集成在一起。如果子系統(tǒng)之一發(fā)生故障,則整個(gè)軟件系統(tǒng)可能會(huì)發(fā)生故障。我們采用端到端的移動(dòng)應(yīng)用程序測(cè)試自動(dòng)化來(lái)消除這一巨大風(fēng)險(xiǎn)。

在執(zhí)行端到端移動(dòng)測(cè)試自動(dòng)化時(shí),應(yīng)牢記以下幾點(diǎn):

  • 應(yīng)用程序的安裝
  • 在沒(méi)有網(wǎng)絡(luò)訪問(wèn)權(quán)限的情況下首次啟動(dòng)應(yīng)用程序。
  • 應(yīng)用程序的卸載。
  • 如果應(yīng)用程序在水平模式下受支持,則應(yīng)用程序的方向。
  • 在各種設(shè)備和網(wǎng)絡(luò)條件下測(cè)試應(yīng)用程序的性能。
  • 測(cè)試應(yīng)用程序的響應(yīng)以及在提供無(wú)效的用戶憑據(jù)時(shí)它的反應(yīng)。

15. 什么是移動(dòng)應(yīng)用測(cè)試,它與移動(dòng)測(cè)試有何不同?

測(cè)試為手持移動(dòng)設(shè)備制作的應(yīng)用程序軟件的功能、可用性和一致性的做法稱為移動(dòng)應(yīng)用程序測(cè)試。移動(dòng)應(yīng)用程序測(cè)試可以通過(guò)兩種方式完成:自動(dòng)或手動(dòng)。

它與移動(dòng)測(cè)試不同,移動(dòng)測(cè)試側(cè)重于移動(dòng)設(shè)備的原生應(yīng)用程序功能,例如通話、短信和媒體播放器等。同時(shí),在移動(dòng)應(yīng)用測(cè)試中,我們只關(guān)注特定應(yīng)用的操作和端到端的特性。

16.解釋Appium使用的JSON Wire協(xié)議。

JSON Wire Protocol 是交換客戶端和服務(wù)器數(shù)據(jù)的方法。它是由 WebDriver 的開(kāi)發(fā)人員創(chuàng)建的。根據(jù)他們的說(shuō)法,該協(xié)議由一組通過(guò) RESTful API 提供給客戶端的標(biāo)準(zhǔn)化端點(diǎn)組成。這使 webdriver 能夠與服務(wù)器和客戶端通信,以自動(dòng)執(zhí)行任務(wù)。在該協(xié)議中,JSON 用于在服務(wù)器和客戶端之間傳輸數(shù)據(jù)。在將對(duì)象交付給服務(wù)器之前,客戶端(或運(yùn)行 WebDriver API 的計(jì)算機(jī))將其轉(zhuǎn)換為 JSON 對(duì)象。JSON 對(duì)象由服務(wù)器解析并轉(zhuǎn)換回 JavaScript 對(duì)象。響應(yīng)對(duì)象由服務(wù)器轉(zhuǎn)換為 JSON 字符串并返回給客戶端。為了使用,客戶端將 JSON 字符串轉(zhuǎn)換為 JavaScript 對(duì)象。

在上圖中,我們可以看到客戶端和服務(wù)器通過(guò) JSON 有線協(xié)議相互通信。服務(wù)器向 appium 服務(wù)器發(fā)送請(qǐng)求以運(yùn)行測(cè)試,appium 服務(wù)器將響應(yīng)發(fā)送回主服務(wù)器。

Appium 使用移動(dòng) JSON Wire 協(xié)議,它是 Selenium JSON Wire 協(xié)議的擴(kuò)展。除了建立通信流外,它還用于規(guī)范其他手機(jī)行為。

17.在Appium的上下文中解釋Appium Session。

Appium 會(huì)話是向特定測(cè)試應(yīng)用程序發(fā)送命令的媒介。命令總是在會(huì)話的上下文中執(zhí)行。在執(zhí)行任何命令之前,客戶端使用會(huì)話標(biāo)識(shí)符作為 sessionId 參數(shù)。客戶端庫(kù)從服務(wù)器請(qǐng)求會(huì)話。之后,服務(wù)器將返回一個(gè) sessionId 端點(diǎn),該端點(diǎn)可用于提交其他命令以與正在測(cè)試的應(yīng)用程序進(jìn)行交互。

每個(gè)“測(cè)試”都包含在一個(gè)會(huì)話中。鑒于 Appium 是一個(gè)簡(jiǎn)單的基于客戶端和服務(wù)器的方法,這是不言而喻的。發(fā)布請(qǐng)求,也稱為會(huì)話請(qǐng)求,由客戶端發(fā)送到服務(wù)器。這些查詢使用 JSON Wire Protocol 以 JSON 對(duì)象格式通信和傳達(dá)信息。

18. 在 Appium 的上下文中解釋所需的能力。

在 iOS 和 Android 上,Appium 的行為不同。因?yàn)樗且粋€(gè)“跨平臺(tái)”的工具,所以必須有一種方法來(lái)區(qū)分兩個(gè)操作系統(tǒng)的會(huì)話請(qǐng)求。JSON 對(duì)象,稱為 Desired Capabilities,被引入來(lái)解決這個(gè)特定的問(wèn)題陳述。

所需功能是鍵值對(duì)數(shù)據(jù),將 Android 應(yīng)用程序測(cè)試會(huì)話的建立與 iOS 應(yīng)用程序測(cè)試會(huì)話的建立區(qū)分開(kāi)來(lái)。使用 platformName、deviceName、appPackage 和 appActivity 等參數(shù),服務(wù)器將能夠非??焖俚胤直娉鰞蓚€(gè)操作系統(tǒng)之間的區(qū)別。

19. 測(cè)試人員在使用 Appium 時(shí)可以在多線程環(huán)境中運(yùn)行測(cè)試嗎?

是的,Appium 允許測(cè)試人員在多線程環(huán)境中執(zhí)行測(cè)試。他們唯一需要擔(dān)心的是不能同時(shí)針對(duì)同一個(gè) Appium 服務(wù)器運(yùn)行一個(gè)測(cè)試。

20. 是否可以在運(yùn)行 Appium 測(cè)試時(shí)使用 JavaScript 與應(yīng)用程序交互?

是的,我們可以在運(yùn)行 Appium 測(cè)試時(shí)使用 javascript 與應(yīng)用程序交互。當(dāng)我們?cè)?Appium 上執(zhí)行指令時(shí),服務(wù)器會(huì)將封裝在匿名函數(shù)中的腳本傳輸?shù)轿覀兊膽?yīng)用程序,然后執(zhí)行。

21. Appium Package master是什么意思?你將如何創(chuàng)建一個(gè)包?

Appium Package master 是指一組用于創(chuàng)建和管理 Appium 包的工具。

要?jiǎng)?chuàng)建一個(gè)新的 Appium 包,我們可以使用以下代碼行:

//For es7/ babel
Gulp create-package -n <package-name>

在上面的代碼中,我們使用 Gulp(一個(gè)流式構(gòu)建系統(tǒng))和命令“create-package”來(lái)創(chuàng)建一個(gè)新包。-n 表示必須創(chuàng)建一個(gè)新包,<package-name> 表示要?jiǎng)?chuàng)建的包的名稱。

// For regular es5
Gulp create-package ---nobabe1 -n <package-name>

在上面的代碼中,我們提到了 --nobabel 以指定該命令是針對(duì)常規(guī) es5 的。

Appium 面試問(wèn)題

22. 解釋 Appium 是如何工作的。

當(dāng)我們?cè)?PC 上安裝 Appium 時(shí),它還會(huì)安裝一個(gè)公開(kāi) REST API 的服務(wù)器。它接受來(lái)自客戶端的命令和連接請(qǐng)求,并在 iOS 或 Android 設(shè)備上執(zhí)行它們。它使用 HTTP 響應(yīng)響應(yīng) HTTP 請(qǐng)求。它使用移動(dòng)測(cè)試自動(dòng)化框架運(yùn)行應(yīng)用程序的用戶界面來(lái)執(zhí)行請(qǐng)求。舉個(gè)例子 -

UIAutomator 用于 Android API 16 或更高版本,而 Selendroid 用于 Android API 15 或更低版本。Apple Instruments 用于 iOS。

Appium 在 Android 上的工作:

Appium 將命令發(fā)送到在 Android 設(shè)備上運(yùn)行的 UIAutomator 腳本。UIAutomator 是一個(gè) Android 原生 UI 自動(dòng)化框架,允許您直接從設(shè)備上的命令行運(yùn)行 Junit 測(cè)試用例。盡管它是用 Java 編寫(xiě)的,但 Appium 可以從任何支持 WebDriver 的語(yǔ)言運(yùn)行。

Android 使用了一個(gè) TCP 服務(wù)器 bootstrap.jar。它用于向 Android 設(shè)備發(fā)送測(cè)試命令,然后 UIAutomator 會(huì)執(zhí)行該命令。

在上圖中,我們可以清楚地看到 Appium 用于在 Android 設(shè)備上運(yùn)行的架構(gòu)。

Appium 在 iOS 上的工作:

由于 Android 使用 UIAutomator,iOS 使用 UIAutomation。與 Android 類(lèi)似,Appium 將命令代理到在 Mac 儀器環(huán)境上運(yùn)行的 UIAutomation 測(cè)試用例。Apple 提供了這個(gè)應(yīng)用程序“工具”,它可以執(zhí)行各種活動(dòng),例如構(gòu)建、分析和控制 iOS 應(yīng)用程序。另一方面,它還有一個(gè)自動(dòng)化組件,您可以在其中用 JavaScript 編寫(xiě)命令。它使用 UIAutomation API 與應(yīng)用程序 UI 交互。Appium 使用相同的庫(kù)來(lái)自動(dòng)化 iOS 應(yīng)用程序。

[圖片上傳失敗...(image-738926-1646447398871)]

在上圖中,我們可以清楚地看到 Appium 用于在 iOS 設(shè)備上運(yùn)行的架構(gòu)。

23.區(qū)分Appium和Selendroid。

Selendroid: Selendroid 是一個(gè)尖端的測(cè)試自動(dòng)化框架,用于測(cè)試原生和混合 Android 移動(dòng)應(yīng)用程序。該測(cè)試是使用 Selenium 2 客戶端 API 創(chuàng)建的,并由移動(dòng)或 Web 應(yīng)用程序的用戶界面驅(qū)動(dòng)。Selendroid 是一個(gè)動(dòng)態(tài)移動(dòng)測(cè)試框架,可以在模擬器和真正的 Android 智能手機(jī)上使用,可以選擇集成為 Selenium Grip 中的節(jié)點(diǎn)以進(jìn)行并行測(cè)試和擴(kuò)展。

以下是 Appium 和 Selendroid 之間的區(qū)別:

  • Appium 是一個(gè)適用于 iOS 和 Android 的開(kāi)源自動(dòng)化解決方案,而 Selendroid 是一個(gè)僅限 Android 的測(cè)試自動(dòng)化框架。
  • Appium 中的小修改不需要重新安裝應(yīng)用程序。但是,Selendroid 需要重新安裝應(yīng)用程序,即使在進(jìn)行了較小的修改后也是如此。
  • Appium 擁有一個(gè)龐大而活躍的活躍開(kāi)發(fā)者社區(qū),而 Selendroid 則沒(méi)有。
  • Appium 與廣泛的框架和語(yǔ)言兼容。另一方面,Selendroid 與 Jenkins 和 Selenium 一起工作。
  • 與 Selendroid 不同,Appium 不需要使用應(yīng)用程序源代碼或庫(kù)。
  • Appium 支持所有 Android API。Appium 將 UIAutomator 用于在大于或等于 17 的 API 上運(yùn)行的測(cè)試,而將 Selendroid 用于在較舊的 API 上運(yùn)行的測(cè)試。另一方面,Selendroid 對(duì)應(yīng)不同版本的 Android API 有不同的版本。

24.區(qū)分Appium和Robotium。

Robotium: Robotium 是一個(gè)適用于 Android 的測(cè)試框架,可自動(dòng)執(zhí)行原生和混合應(yīng)用程序的測(cè)試用例。開(kāi)發(fā)人員可以使用 Robotium 為 Android 應(yīng)用程序構(gòu)建強(qiáng)大的自動(dòng)圖形用戶界面 (GUI) 測(cè)試用例。開(kāi)發(fā)人員還可以設(shè)計(jì)功能、系統(tǒng)和可接受性測(cè)試場(chǎng)景,涵蓋范圍廣泛的 Android 活動(dòng)。

以下是 Appium 和 Robotium 之間的區(qū)別:-

  • Appium 是一個(gè)跨平臺(tái)的測(cè)試工具,適用于 iOS 和 Android 設(shè)備。另一方面,Robotium 僅限于 Android。
  • Robotium 只支持 Java 編程語(yǔ)言,但 Appium 支持多種語(yǔ)言。
  • Appium 工具不需要任何應(yīng)用程序源代碼或庫(kù),而 Robotium 工具則需要。
  • Appium 可以測(cè)試原生、Web 和混合移動(dòng)應(yīng)用程序,而 Robotium 只能測(cè)試原生和混合移動(dòng)應(yīng)用程序。
  • Appium 支持許多框架,例如 Selenium。另一方面,Robotium 與 Selenium 和許多其他框架不兼容。
  • 您不必每次進(jìn)行一點(diǎn)修改時(shí)都重新安裝 Appium。但是,Robotium 代碼的簡(jiǎn)單更改需要完全重建。

25. 區(qū)分開(kāi)源工具、供應(yīng)商工具和內(nèi)部工具。

  • 開(kāi)源工具:開(kāi)源工具是免費(fèi)使用的框架和應(yīng)用程序。工程師構(gòu)建了這個(gè)工具,并在互聯(lián)網(wǎng)上免費(fèi)提供給其他工程師、開(kāi)發(fā)人員或愛(ài)好者開(kāi)發(fā)和使用,這對(duì)有抱負(fù)的開(kāi)發(fā)人員來(lái)說(shuō)非常有益。
  • 供應(yīng)商工具:供應(yīng)商工具由擁有使用其工具和代碼的許可證的公司創(chuàng)建??赏ㄟ^(guò)互聯(lián)網(wǎng)獲得這些工具的技術(shù)支持。
  • 內(nèi)部工具:內(nèi)部工具是公司為自己使用和自我開(kāi)發(fā)而開(kāi)發(fā)的工具。它們永遠(yuǎn)不會(huì)提供給普通民眾。

26.區(qū)分Appium和Calabash。

Calabash : Calabash 是一個(gè)用于自動(dòng)化用戶界面驗(yàn)收測(cè)試的自動(dòng)化框架。它適用于各種移動(dòng)系統(tǒng),包括 iOS 和 Android。這可用于自動(dòng)化各種移動(dòng)應(yīng)用程序,包括本機(jī)、移動(dòng) Web 和混合應(yīng)用程序。

以下是Appium和Calabash之間的區(qū)別:-

基本的 Appium
支持的編程語(yǔ)言 Appium 支持 Java、Python、JavaScript、.Net、Ruby 和所有其他主要編程語(yǔ)言。 Ruby 編程語(yǔ)言是 Calabash 唯一支持的語(yǔ)言。
iOS 移動(dòng)網(wǎng)頁(yè) 它需要?jiǎng)?chuàng)建用于自動(dòng)化的自定義 Safari 應(yīng)用程序。 Calabash 還不支持它。
原生 iOS 應(yīng)用程序 它只需要 iOS UI Automator。 為此,它需要 iOS 工具。
混合 iOS 應(yīng)用程序 它需要使用自定義 UI 命令和 iOS UI Automator。 它需要使用自定義 UI 命令以及 iOS 框架。
混合安卓應(yīng)用 只需要 Selendroid 應(yīng)用程序。 需要 Android 儀器 - 葫蘆 android。
Android 移動(dòng)網(wǎng)絡(luò)應(yīng)用程序 它只能用于自動(dòng)化 chrome 瀏覽器。 Calabash 不支持它。
原生安卓應(yīng)用 Appium 需要 Android UI Autometer 和 Selendroid。 需要 Android 儀器 - 葫蘆 android。

27.區(qū)分Appium和Selenium。

Selenium: Selenium 是一個(gè)開(kāi)源(免費(fèi))自動(dòng)化測(cè)試框架,用于跨多個(gè)瀏覽器和平臺(tái)驗(yàn)證 Web 應(yīng)用程序。Selenium 測(cè)試腳本可以用多種編程語(yǔ)言編寫(xiě),包括 Java、C#、Python 等。

以下是 Appium 和 Selenium 之間的區(qū)別:-

基于使用:

  • Appium - Appium 是一種流行的自動(dòng)化測(cè)試開(kāi)源軟件,尤其是在原生應(yīng)用程序(如 Android 和 iOS 應(yīng)用程序)中。它還可以用于在 Android 和 iOS 環(huán)境中運(yùn)行的混合應(yīng)用程序中。這種類(lèi)型的自動(dòng)化測(cè)試可確保一旦應(yīng)用程序投入生產(chǎn),任何特定補(bǔ)丁安裝都不會(huì)出現(xiàn)系統(tǒng)性問(wèn)題。它確保了完整的集成測(cè)試,并避免了測(cè)試人員的大量體力勞動(dòng)。通過(guò)使用 Appium,用戶可以輕松避免每次手動(dòng)測(cè)試整個(gè)應(yīng)用程序的每個(gè)功能。
  • Selenium - Selenium 是一種通用的自動(dòng)化測(cè)試工具,專(zhuān)為任何類(lèi)型的 Web 應(yīng)用程序構(gòu)建。它兼容當(dāng)前所有流行的瀏覽器和操作系統(tǒng),如 Windows、Linux 和 MACOS。

基于設(shè)計(jì):

  • Appium - Appium 主要用作 HTTP 服務(wù)器,因?yàn)樗鼘⑻幚砣魏晤?lèi)型的移動(dòng)應(yīng)用程序。但是,它主要是在 node JS 中遵循或開(kāi)發(fā)相同的,而不是使用標(biāo)準(zhǔn)的 Java 或 JS 代碼。因此,想要在任何類(lèi)型的移動(dòng)應(yīng)用程序中使用 Appium 進(jìn)行自動(dòng)化測(cè)試的開(kāi)發(fā)人員必須先在他們的系統(tǒng)上安裝 Node JS,然后才能使用 Appium 工具。
  • Selenium - Selenium 主要用于維護(hù) Web 應(yīng)用程序或網(wǎng)頁(yè)上的自動(dòng)化邏輯。它的創(chuàng)建方式使其可以通過(guò)使用瀏覽器活動(dòng)快速輕松地與應(yīng)用程序交互。

28.您認(rèn)為自動(dòng)化測(cè)試可以完全替代手動(dòng)軟件測(cè)試嗎?

不,自動(dòng)化測(cè)試不能完全替代手動(dòng)軟件測(cè)試。這是因?yàn)樗褂玫墓ぞ咧荚谠谠O(shè)置完成后執(zhí)行測(cè)試,并且適當(dāng)?shù)淖詣?dòng)化需要盡可能少的人工參與。盡管它很方便,但它不應(yīng)該用來(lái)代替手動(dòng)測(cè)試;相反,它應(yīng)該用于重復(fù)性活動(dòng),例如需要數(shù)千個(gè)虛擬用戶的負(fù)載測(cè)試。如果僅打算定期運(yùn)行測(cè)試腳本,則工程師不應(yīng)自動(dòng)化測(cè)試腳本,也不應(yīng)為可能需要人工參與以檢測(cè)錯(cuò)誤的新軟件構(gòu)建自動(dòng)化代碼審查或錯(cuò)誤測(cè)試??偠灾?,我們可以說(shuō)大規(guī)模、重復(fù)性的工作更適合自動(dòng)化。

29. 提到你不能用模擬器做但可以用真實(shí)設(shè)備做的測(cè)試。

以下是我們可以在真實(shí)設(shè)備上進(jìn)行但在模擬器中無(wú)法進(jìn)行的測(cè)試列表:-

  • 測(cè)試電話和消息期間的中斷。
  • 電池電量不足時(shí)應(yīng)用程序的性能。
  • 應(yīng)用程序?qū)﹄姵厥褂玫挠绊憽?/li>
  • 從設(shè)備安裝或卸載存儲(chǔ)卡的場(chǎng)景。
  • 測(cè)試涉及藍(lán)牙的使用。

30、編寫(xiě)Appium測(cè)試的基本要求是什么?

以下是編寫(xiě) Appium 測(cè)試的基本要求:-

  • 驅(qū)動(dòng)客戶端: Appium 的驅(qū)動(dòng)客戶端模擬用戶在移動(dòng)應(yīng)用程序中的行為。Appium 測(cè)試可以在客戶端庫(kù)的幫助下構(gòu)建,它封裝了測(cè)試的各個(gè)階段并通過(guò) HTTP 將其發(fā)送到 Appium。
  • Appium Session:因?yàn)?appium 測(cè)試是在一個(gè) session 中運(yùn)行的,所以首先設(shè)置一個(gè) appium session 是很重要的。一旦會(huì)話的自動(dòng)化結(jié)束,它將被終止,用戶將不得不等待下一個(gè)會(huì)話。
  • 期望的能力:為了啟動(dòng)一個(gè) appium 會(huì)話,設(shè)計(jì)一些稱為期望參數(shù)的參數(shù)是至關(guān)重要的。平臺(tái)版本、平臺(tái)名稱、設(shè)備名稱和許多其他參數(shù)都在這些參數(shù)中。這也有助于定義 Appium 服務(wù)器預(yù)期提供的自動(dòng)化類(lèi)型。
  • 驅(qū)動(dòng)程序命令: Appium 提供了使用大量富有表現(xiàn)力的命令構(gòu)建測(cè)試的能力。

31、Appium中調(diào)試用的工具有哪些?

我們通常使用日志數(shù)據(jù)(維護(hù)一個(gè)日志文件,其中無(wú)論何時(shí)發(fā)生錯(cuò)誤,都會(huì)將其記錄到該文件中)來(lái)查看問(wèn)題的原因,即故障發(fā)生的位置。因此對(duì)于 iOS – iPhone 配置實(shí)用程序和 Android Monitor.bat 等都可以使用。如果您將這些工具的日志提供給開(kāi)發(fā)人員,他們將能夠快速找出導(dǎo)致問(wèn)題的原因。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容