0


Appium面试题

1、Appium有什么特点?

Appium 不需要使⽤应⽤程序的源代码或库。

Appium 拥有⼀个充满活⼒且参与度⾼的开发者社区,因此可以轻松地从社区获得帮助。

Appium ⽀持多平台测试,这意味着它可以在 iOS 移动、Android 移动和 Windows 桌⾯应⽤程序等多个平台上执⾏相同的测试⽤例。

Appium 允许测试脚本与其他测试脚本并⾏运⾏。

Appium 中的⼩修改不需要重新安装应⽤程序。

Appium ⽀持使⽤ Selenium 客户端库的多种语⾔,包括 C#、Python、Java、Ruby、PHP、带有 node.js 的 JavaScript 等等。

2、提⼀下Appium的优缺点?

Appium的优点:

Appium 是⼀个开源应⽤程序,这意味着它可以免费下载并且设置简单。

它可⽤于在混合、本机和 Web 应⽤程序上运⾏⾃动化测试。

为了使 Appium 与⾃动化兼容,您不需要在应⽤程序中集成任何新代理,这与其他测试解决⽅案不同。它在将上传到 App Store 的应⽤程序上进⾏测试。

Appium 现在有⼀个新功能。除了移动应⽤程序测试,它现在还⽀持 Windows 桌⾯应⽤程序测试。

Appium 是⼀个跨平台、开源的移动测试解决⽅案,允许我们进⾏跨平台测试。因此,您将能够跨多种平台进⾏测试(Android 和 IOS 平台的单⼀ API)。

Appium的缺点:

不⽀持⽣成已执⾏测试的详细报告。

测试有点慢,因为它们依赖于远程 Web 驱动程序。

Appium 使⽤ UIAutomator for Android,它只⽀持 Android SDK、API 16 或更⾼版本,这不是限制,⽽是开销。另⼀⽅⾯,Appium本⾝并不⽀持早期的 API。为了⽀持较旧的 API,它使⽤了⼀个名为 Selendroid 的开源库。

在 Mac OS 设备上,⼀次只能运⾏⼀个 iOS 脚本,这意味着⼀次只能运⾏⼀个测试。如果我们希望同时在多个 iOS 设备上运⾏我们的测试,我们将需要相同数量的 Mac 机器。另⼀⽅⾯,组织许多 Mac 机器的成本会很⾼。

3、有哪些不同类型的移动应用程序?

原⽣应⽤程序:原⽣应⽤程序是⽤特定编程语⾔(例如 iOS 的 Objective C 或 Android 的 Java)编写并直接安装在设备上的程序,允许它充分利⽤设备的所有特性。本机应⽤程序可以离线⼯作并利⽤设备的通知系统。应⽤商店(例如 Google Play 或 Apple 的 App Store)⽤于安装本机应⽤程序。本机移动应⽤程序具有⾼⽔平的性能和可靠性。Temple Run、Candy Crush 和其他本地应⽤程序就是⽰例。

Web 应⽤程序:Web 应⽤程序是专门为移动设备创建、调整和托管的移动 Web 门户。使⽤移动设备的 Web 浏览器上的 URL 访问它们。当 HTML5 发布时,⼈们了解到他们可以在浏览器中拥有类似本机的功能,并且 Web 应⽤程序变得⾮常流⾏。设备功能在移动 Web 应⽤程序中不可⽤。Google.com、m.snapdeal.com、m.yahoo.com 和更多⽹站都是 Web 应⽤程序的⽰例。

混合应⽤程序:嵌⼊在设备上运⾏并使⽤ Web 技术创建的本机应⽤程序的 Web 应⽤程序称为混合应⽤程序(HTML5、CSS 和JavaScript)。混合应⽤程序在本机容器内运⾏,并使⽤设备的浏览器引擎(⽽不是浏览器)在本地呈现 HTML 和处理 JavaScript。Web到本机的抽象层使您可以访问移动 Web 应⽤程序中不可⽤的设备功能,例如加速度计、摄像头和本地存储。混合应⽤程序不限于单⼀平台或移动设备。因此,⼀旦构建,它就可以在任何设备上运⾏。Flipkart、Facebook、Twitter 和其他混合应⽤程序就是⽰例。

4、有哪些重要的移动应用程序测试?

可⽤性测试:可⽤性测试是 Web 应⽤程序测试的⼀种,⾮常适合评估应⽤程序如何使⽤户更容易实现其⽬标。在这个测试中,参与者被给予特定的、真实的环境来使⽤应⽤程序。在收集来⾃最终⽤户的直接输⼊的基础上,可⽤性测试也是可靠的。因此,测试过程没有偏见,同时保证突出区域得到改善。可⽤性测试还确保设计直观,并优先考虑可⽤性和客户体验。

性能测试:性能测试是移动应⽤程序测试的⼀个重要⼦集,⽤于检查应⽤程序在各种⼯作负载情况下的性能、稳定性和响应能⼒。性能测试的主要⽬标是确保应⽤程序完全符合性能⽬标。此外,它在启动应⽤程序之前解决了性能限制。瓶颈是系统整体功能内部的进程,会导致系统的整体性能变慢或停滞。负载测试、容量测试、浸泡测试、尖峰测试和压⼒测试都是流⾏的性能评估形式。

安全测试:在当今世界,安全是⼏乎每个移动应⽤程序开发⼈员的主要担忧。据报道,出于安全考虑,80% 的⽤户更有可能删除应⽤程序。因此,专注于移动应⽤安全测试⾄关重要。某些程序(例如旅⾏应⽤程序)需要⽤户的个⼈信息来进⾏各种交易。如果您的应⽤程序需要类似的东西,您必须保证应⽤程序的机密性、完整性和真实性。您应该在您的应⽤程序上运⾏强⼤的测试,以确保没有⼈可以通过不公平的⽅式侵⼊他⼈的帐户。

中断测试:中断测试对于确定应⽤程序在返回之前的状态之前被中断时的⾏为⾮常重要。来电或短信、警报、来⾃移动应⽤程序的推送通知、电池电量不⾜或已满、⽹络连接丢失和恢复以及充电时插⼊或拔出都是中断的⽰例。如果发⽣中断,应⽤程序通常应该在后台运⾏并返回到之前的状态。

⼿动测试:⼿动测试是⼀种经过验证的⽅法,可以彻底解决移动应⽤程序测试的复杂性。⼿动测试可确保成品按照计划的预期以最佳⽅式运⾏。在⽤例不是⽴即显⽽易见的情况下,它特别有⽤。专业的 QA 测试⼈员可以在短时间内评估应⽤程序并确保它产⽣准确的结果。

兼容性测试:兼容性测试是最重要的移动应⽤程序测试类型之⼀。它是⼀种⾮功能测试形式,可确保移动应⽤程序在各种操作系统、应⽤程序、设备、内部硬件规格和⽹络条件下的功能。兼容性测试确定移动应⽤程序是否与各种操作系统和版本兼容。它还测试移动应⽤程序与各种设备、浏览器、⽹络和其他特性的兼容性。向后兼容性测试和前向兼容性测试是兼容性测试的两种类型。

本地化测试:针对特定地理位置的移动应⽤程序必须进⾏本地化测试。测试移动应⽤程序对该地区独特语⾔和⽂化⽅⾯的响应能⼒⾄关重要。当地货币、使⽤合适的时区⽇期和时间格式、众多当地法规需求以及⽂本和⽤户界⾯只是本地化测试评估的⼏个重要领域。

功能测试:功能移动应⽤程序测试确保应⽤程序的功能满⾜指定的要求。这种形式的测试主要关注移动应⽤程序的主要⽬标和流程。功能测试确定应⽤程序是否可以正确启动和安装。它还测试了注册和登录的简单性,以及推送通知的呈现以及⽂本框和按钮的正确操作。

安装测试:安装测试,也称为实现测试,是确保移动应⽤程序正确安装和删除的好⽅法。此外,安装测试对于确保更新⽆缝且⽆错误是必要的。安装测试还检查如果⽤户未能更新移动应⽤程序会发⽣什么。

⾃动化测试:某些移动应⽤程序质量评估过于复杂且耗时。在这种情况下,移动应⽤程序测试⾃动化服务开始发挥作⽤,提供最佳准备和有效执⾏的⾃动化测试以及⼿动测试,这有助于确保质量,同时也允许更快地发布优质产品。因此,在移动应⽤程序测试⽅⾯,⾃动化测试是节省时间和成本的可靠来源。有多种⼯具可以执⾏⾃动化测试。Appium就是其中之⼀。

5、Appium适合哪些类型的测试?

在进⾏测试时,可以测试许多场景,尤其是对于 Web 应⽤程序,具体取决于您要确保的功能覆盖率。Appium 在测试⽤户在使⽤您的应⽤程序时会遇到的场景时很有帮助。

另一方面,如果您需要测试的不仅仅是UI简单交互,那么 Appium 就会成为一种限制。考虑诸如键盘输入之类的功能。当涉及复杂的触摸/键盘混合环境时,错误失败的可能性很⼤。使⽤ Appium 交换数据是另⼀个⼩⿇烦。当您的测试需要与您的应⽤程序交换数据时,您需要使⽤各种策略。所以请记住,发送和接收信息并不总是那么简单。这不是 Appium 的错。WebDriver 规范的创建是为了⾃动化流程,⽽不是数据交换。

6、Appium Inspector是什么意思?

Appium 提供了⼀个“Inspector”来记录和回放,类似于 Selenium IDE 的记录和回放⼯具。它检查⽂档对象模型以记录和播放本机应⽤程序⾏为,并以任何⾸选语⾔提供测试脚本。您可以使⽤ Appium Desktop 中的 Inspector 来查找或定位应⽤程序的元素。

为了定位⼀个元素,Appium 检查器提供了四个选项:

(1)通过 id 查找元素。

(2)按类名查找元素。

(3)通过可访问性 id 查找元素。

(4)通过 xpath 查找元素。

Appium Inspector 不⽀持 Windows,⽽是使⽤ UIAutomator 查看器作为选。

7、解释Appium的架构?

Appium 是⼀个⽤ node.js 编程语⾔实现的 HTTP 服务器。它在设备上创建⼀个服务器并等待来⾃主 Appium 服务器的代理命令。测试脚本由测试⼈员编写并在设备或模拟器上运⾏。Appium 为各种平台(如 Android 和 iOS)创建和管理许多 webdriver 会话。

测试⼈员⽣成的测试脚本作为请求发送到 Appium 服务器,然后在模拟器或设备上执⾏。每个供应商都有⾃⼰的技术和⽅法来在设备上执⾏测试⽤例,例如 IOS 或 Android。因此,测试⽤例在 Appium 服务器接收到命令后运⾏。为了将命令请求传输到 Appium 服务器,Appium 使⽤ JSON(Javascript Object Notation)有线协议。在这⾥,JSON ⽤于在服务器和客户端之间传输数据。

8、您对端到端移动测试自动化了解多少?执行端到端移动测试自动化时应牢记哪些事项?

端到端移动应⽤程序测试⾃动化是⼀种从头到尾测试软件产品以确保应⽤程序流程按计划进⾏的⽅法。它建⽴产品的系统要求并确保所有集成组件按预期运⾏。

端到端 (E2E) 移动应⽤程序测试⾃动化的⽬标是从最终⽤户的⾓度进⾏测试,通过复制⽤户使⽤应⽤程序的真实情况,并确认被测系统及其⽤于数据完整性和集成的组件。

如今,软件系统⾮常复杂,并与众多⼦系统集成在⼀起。如果⼦系统之⼀发⽣故障,则整个软件系统可能会发⽣故障。我们采⽤端到端的移动应⽤程序测试⾃动化来消除这⼀巨⼤风险。

在执⾏端到端移动测试⾃动化时,应牢记以下⼏点:

(1)应⽤程序的安装。

(2)在没有⽹络访问权限的情况下⾸次启动应⽤程序。

(3)应⽤程序的卸载。

(4)如果应⽤程序在⽔平模式下受⽀持,则应⽤程序的⽅向。

(5)在各种设备和⽹络条件下测试应⽤程序的性能。

(6)测试应⽤程序的响应以及在提供⽆效的⽤户凭据时它的反应。

9、什么是移动应用测试,它与移动测试有何不同?

测试为⼿持移动设备制作的应⽤程序软件的功能、可⽤性和⼀致性的做法称为移动应⽤程序测试。移动应⽤程序测试可以通过两种⽅式完成:⾃动或⼿动。

它与移动测试不同,移动测试侧重于移动设备的原⽣应⽤程序功能,例如通话、短信和媒体播放器等。同时,在移动应⽤测试中,我们只关注特定应⽤的操作和端到端的特性。

10、解释Appium使用的JSON Wire协议?

JSON Wire Protocol 是交换客户端和服务器数据的⽅法。它是由 WebDriver 的开发⼈员创建的。根据他们的说法,该协议由⼀组通过RESTful API 提供给客户端的标准化端点组成。这使 webdriver 能够与服务器和客户端通信,以⾃动执⾏任务。在该协议中,JSON ⽤于在服务器和客户端之间传输数据。在将对象交付给服务器之前,客户端(或运⾏ WebDriver API 的计算机)将其转换为 JSON 对象。JSON 对象由服务器解析并转换回 JavaScript 对象。响应对象由服务器转换为 JSON 字符串并返回给客户端。为了使⽤,客户端将 JSON 字符串转换为JavaScript 对象。

客户端和服务器通过 JSON 有线协议相互通信。服务器向 appium 服务器发送请求以运⾏测试,appium 服务器将响应发送回主服务器。

Appium 使⽤移动 JSON Wire 协议,它是 Selenium JSON Wire 协议的扩展。除了建⽴通信流外,它还⽤于规范其他⼿机⾏为。

11、在Appium的上下文中解释Appium Session?

Appium 会话是向特定测试应⽤程序发送命令的媒介。命令总是在会话的上下⽂中执⾏。在执⾏任何命令之前,客户端使⽤会话标识符作为sessionId 参数。客户端库从服务器请求会话。之后,服务器将返回⼀个 sessionId 端点,该端点可⽤于提交其他命令以与正在测试的应⽤程序进⾏交互。

每个“测试”都包含在⼀个会话中。鉴于 Appium 是⼀个简单的基于客户端和服务器的⽅法,这是不⾔⽽喻的。发布请求,也称为会话请求,由客户端发送到服务器。这些查询使⽤ JSON Wire Protocol 以 JSON 对象格式通信和传达信息。

12、测试人员在使用Appium时可以在多线程环境中运行测试吗?

是的,Appium 允许测试⼈员在多线程环境中执⾏测试。他们唯⼀需要担⼼的是不能同时针对同⼀个 Appium 服务器运⾏⼀个测试。

13、是否可以在运行Appium测试时使用JavaScript与应用程序交互?

是的,我们可以在运⾏ Appium 测试时使⽤ javascript 与应⽤程序交互。当我们在 Appium 上执⾏指令时,服务器会将封装在匿名函数中的脚本传输到我们的应⽤程序,然后执⾏。

14、解释Appium是如何工作的?

当我们在 PC 上安装 Appium 时,它还会安装⼀个公开 REST API 的服务器。它接受来⾃客户端的命令和连接请求,并在 iOS 或 Android 设备上执⾏它们。它使⽤ HTTP 响应响应 HTTP 请求。它使⽤移动测试⾃动化框架运⾏应⽤程序的⽤户界⾯来执⾏请求。

举个例⼦:UIAutomator ⽤于 Android API 16 或更⾼版本,⽽ Selendroid ⽤于 Android API 15 或更低版本。Apple Instruments ⽤于 iOS。

Appium 在 Android 上的⼯作:

Appium 将命令发送到在 Android 设备上运⾏的 UIAutomator 脚本。UIAutomator 是⼀个 Android 原⽣ UI ⾃动化框架,允许您直接从设备上的命令⾏运⾏ Junit 测试⽤例。尽管它是⽤ Java 编写的,但 Appium 可以从任何⽀持 WebDriver 的语⾔运⾏。Android 使⽤了⼀个 TCP 服务器 bootstrap.jar。它⽤于向 Android 设备发送测试命令,然后 UIAutomator 会执⾏该命令。

Appium 在 iOS 上的⼯作:

由于 Android 使⽤ UIAutomator,iOS 使⽤ UIAutomation。与 Android 类似,Appium 将命令代理到在 Mac 仪器环境上运⾏的 UIAutomation 测试⽤例。Apple 提供了这个应⽤程序“⼯具”,它可以执⾏各种活动,例如构建、分析和控制 iOS 应⽤程序。另⼀⽅⾯,它还有⼀个⾃动化组件,您可以在其中⽤ JavaScript 编写命令。它使⽤ UIAutomation API 与应⽤程序 UI 交互。Appium 使⽤相同的库来⾃动化iOS 应⽤程序。

15、区分Appium和Selendroid?

Selendroid:Selendroid 是⼀个尖端的测试⾃动化框架,⽤于测试原⽣和混合 Android 移动应⽤程序。该测试是使⽤ Selenium 2 客户端API 创建的,并由移动或 Web 应⽤程序的⽤户界⾯驱动。Selendroid 是⼀个动态移动测试框架,可以在模拟器和真正的 Android 智能⼿机上使⽤,可以选择集成为 Selenium Grip 中的节点以进⾏并⾏测试和扩展。

以下是 Appium 和 Selendroid 之间的区别:

Appium 是⼀个适⽤于 iOS 和 Android 的开源⾃动化解决⽅案,⽽ Selendroid 是⼀个仅限 Android 的测试⾃动化框架。

Appium 中的⼩修改不需要重新安装应⽤程序。但是,Selendroid 需要重新安装应⽤程序,即使在进⾏了较⼩的修改后也是如此。

Appium 拥有⼀个庞⼤⽽活跃的活跃开发者社区,⽽ Selendroid 则没有。

Appium 与⼴泛的框架和语⾔兼容。另⼀⽅⾯,Selendroid 与 Jenkins 和 Selenium ⼀起⼯作。

与 Selendroid 不同,Appium 不需要使⽤应⽤程序源代码或库。

Appium ⽀持所有 Android API。Appium 将 UIAutomator ⽤于在⼤于或等于 17 的 API 上运⾏的测试,⽽将 Selendroid ⽤于在较旧的API 上运⾏的测试。另⼀⽅⾯,Selendroid 对应不同版本的 Android API 有不同的版本。

16、区分Appium和Robotium?

Robotium:Robotium 是⼀个适⽤于 Android 的测试框架,可⾃动执⾏原⽣和混合应⽤程序的测试⽤例。开发⼈员可以使⽤ Robotium 为Android 应⽤程序构建强⼤的⾃动图形⽤户界⾯ (GUI) 测试⽤例。开发⼈员还可以设计功能、系统和可接受性测试场景,涵盖范围⼴泛的Android 活动。

以下是 Appium 和 Robotium 之间的区别:

Appium 是⼀个跨平台的测试⼯具,适⽤于 iOS 和 Android 设备。另⼀⽅⾯,Robotium 仅限于 Android。

Robotium 只⽀持 Java 编程语⾔,但 Appium ⽀持多种语⾔。

Appium ⼯具不需要任何应⽤程序源代码或库,⽽ Robotium ⼯具则需要。

Appium 可以测试原⽣、Web 和混合移动应⽤程序,⽽ Robotium 只能测试原⽣和混合移动应⽤程序。

Appium ⽀持许多框架,例如 Selenium。另⼀⽅⾯,Robotium 与 Selenium 和许多其他框架不兼容。

您不必每次进⾏⼀点修改时都重新安装 Appium。但是,Robotium 代码的简单更改需要完全重建。

17、区分Appium和Selenium?

Selenium:Selenium 是⼀个开源(免费)⾃动化测试框架,⽤于跨多个浏览器和平台验证 Web 应⽤程序。Selenium 测试脚本可以⽤多种编程语⾔编写,包括 Java、C#、Python 等。

以下是 Appium 和 Selenium 之间的区别:

基于使⽤:

Appium - Appium 是⼀种流⾏的⾃动化测试开源软件,尤其是在原⽣应⽤程序(如 Android 和 iOS 应⽤程序)中。它还可以⽤于在Android 和 iOS 环境中运⾏的混合应⽤程序中。这种类型的⾃动化测试可确保⼀旦应⽤程序投⼊⽣产,任何特定补丁安装都不会出现系统性问题。它确保了完整的集成测试,并避免了测试⼈员的⼤量体⼒劳动。通过使⽤ Appium,⽤户可以轻松避免每次⼿动测试整个应⽤程序的每个功能。

Selenium - Selenium 是⼀种通⽤的⾃动化测试⼯具,专为任何类型的 Web 应⽤程序构建。它兼容当前所有流⾏的浏览器和操作系统,如Windows、Linux 和 MACOS。

基于设计:

Appium - Appium 主要⽤作 HTTP 服务器,因为它将处理任何类型的移动应⽤程序。但是,它主要是在 node JS 中遵循或开发相同的,⽽不是使⽤标准的 Java 或 JS 代码。因此,想要在任何类型的移动应⽤程序中使⽤ Appium 进⾏⾃动化测试的开发⼈员必须先在他们的系统上安装 Node JS,然后才能使⽤ Appium ⼯具。

Selenium - Selenium 主要⽤于维护 Web 应⽤程序或⽹页上的⾃动化逻辑。它的创建⽅式使其可以通过使⽤浏览器活动快速轻松地与应⽤程序交互。

18、区分开源工具、供应商工具和内部工具?

开源⼯具:开源⼯具是免费使⽤的框架和应⽤程序。⼯程师构建了这个⼯具,并在互联⽹上免费提供给其他⼯程师、开发⼈员或爱好者开发和使⽤,这对有抱负的开发⼈员来说⾮常有益。

供应商⼯具:供应商⼯具由拥有使⽤其⼯具和代码的许可证的公司创建。可通过互联⽹获得这些⼯具的技术⽀持。

内部⼯具:内部⼯具是公司为⾃⼰使⽤和⾃我开发⽽开发的⼯具。它们永远不会提供给普通民众。

19、您认为自动化测试可以完全替代手动软件测试吗?

不,⾃动化测试不能完全替代⼿动软件测试。这是因为所使⽤的⼯具旨在在设置完成后执⾏测试,并且适当的⾃动化需要尽可能少的⼈⼯参与。尽管它很⽅便,但它不应该⽤来代替⼿动测试;相反,它应该⽤于重复性活动,例如需要数千个虚拟⽤户的负载测试。如果仅打算定期运⾏测试脚本,则⼯程师不应⾃动化测试脚本,也不应为可能需要⼈⼯参与以检测错误的新软件构建⾃动化代码审查或错误测试。总⽽⾔之,我们可以说⼤规模、重复性的⼯作更适合⾃动化。

20、提到你不能用模拟器做但可以用真实设备做的测试?

以下是我们可以在真实设备上进⾏但在模拟器中⽆法进⾏的测试列表:

(1)测试电话和消息期间的中断。

(2)电池电量不⾜时应⽤程序的性能。

(3)应⽤程序对电池使⽤的影响。

(4)从设备安装或卸载存储卡的场景。

(5)测试涉及蓝⽛的使⽤。

21、编写Appium测试的基本要求是什么?

驱动客户端:Appium 的驱动客户端模拟⽤户在移动应⽤程序中的⾏为。Appium 测试可以在客户端库的帮助下构建,它封装了测试的各个阶段并通过 HTTP 将其发送到 Appium。

Appium Session:因为 appium 测试是在⼀个 session 中运⾏的,所以⾸先设置⼀个 appium session 是很重要的。⼀旦会话的⾃动化结束,它将被终⽌,⽤户将不得不等待下⼀个会话。

期望的能⼒:为了启动⼀个 appium 会话,设计⼀些称为期望参数的参数是⾄关重要的。平台版本、平台名称、设备名称和许多其他参数都在这些参数中。这也有助于定义 Appium 服务器预期提供的⾃动化类型。

驱动程序命令:Appium 提供了使⽤⼤量富有表现⼒的命令构建测试的能⼒。

精彩推荐

面试笔试系列

思维导图系列

Linux常用命令壁纸

接口Requests系列

测试框架pytest系列

Jmeter快速上手之接口测试

自动化测试框架结构图

移动安全框架(MobSF)

标签: android 测试工具

本文转载自: https://blog.csdn.net/wangmcn/article/details/125381957
版权归原作者 wangmcn 所有, 如有侵权,请联系我们删除。

“Appium面试题”的评论:

还没有评论