1、Appium有什么特点?
https://www.interviewbit.com/appium-interview-questions/
以下是 Appium 的特点:-
[图片上传失败...(image-7cc230-1646447398872)]
- 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.模拟器和模拟器的区别。
模拟器:模拟器用于模拟环境,其中包含将出现在应用程序的实际生产环境中的所有软件变量和配置。模拟器不会尝试复制将在生产中运行应用程序的实际硬件。模拟器可以用高级编程语言编写,因为它们只是构建软件环境。例如,可以将赛车游戏应用程序视为模拟器,因为它模拟了真实的赛车。
模拟器:模拟器确实会尝试复制真实世界环境的所有硬件和软件方面。在大多数情况下,您需要用汇编语言开发一个模拟器来完成此操作。因此,模拟器可能被认为占据了模拟器和现实世界小工具之间的中间地带。例如,可以将汽车模拟器赛车游戏视为模拟器。它还借助模拟器提供赛车的硬件方面。
- 模拟器复制硬件和软件功能,而模拟器仅模拟可以使用软件调整或创建的环境功能。仿真器不能替代真实设备测试,因为它们并不总是能很好地模拟生产系统的硬件和软件。它们只是允许您创建一个更类似于真实设备的环境。
- 与模拟器相比,模拟器要慢一些,因为模拟器需要感知硬件设备的运动,将其转换为数字信号,然后对其进行处理。
4. 什么时候应该使用模拟器,什么时候应该使用模拟器?
- 我们应该使用模拟器的情况:模拟器通常用于软件测试情况,其目标是确保应用程序在与外部应用程序或环境交互时按预期运行。
例如,您可能希望查看一个应用程序是否可以将数据传递给另一个应用程序。因为实际的硬件配置不太可能对程序的数据传输产生太大影响,所以模拟环境通常就足够了。模拟测试环境对于确保应用程序的界面在一系列屏幕分辨率下正确显示也很有用。 - 我们应该使用模拟器的情况:当您需要测试软件如何与底层硬件或硬件和软件的组合交互时,模拟器会派上用场。
例如,如果我们想发现固件更新是否会导致我们的软件出现问题,我们可以在模拟器的帮助下找出答案。或者,我们可能想知道我们的程序在多个 CPU 上运行或使用不同的内存分配时的执行情况。模拟器在这些情况下也能派上用场。
5. 有哪些不同类型的移动应用程序?
以下是不同类型的移动应用程序:
- 原生应用程序:原生应用程序是用特定编程语言(例如 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 和其他混合应用程序就是示例。
6. 有哪些重要的移动应用程序测试?
以下是一些重要的移动应用程序测试:
- 可用性测试:可用性测试是 Web 应用程序测试的一种,非常适合评估应用程序如何使用户更容易实现其目标。在这个测试中,参与者被给予特定的、真实的环境来使用应用程序。在收集来自最终用户的直接输入的基础上,可用性测试也是可靠的。
因此,测试过程没有偏见,同时保证突出区域得到改善。可用性测试还确保设计直观,并优先考虑可用性和客户体验。 - 性能测试:性能测试是移动应用程序测试的一个重要子集,用于检查应用程序在各种工作负载情况下的性能、稳定性和响应能力。性能测试的主要目标是确保应用程序完全符合性能目标。
此外,它在启动应用程序之前解决了性能限制。瓶颈是系统整体功能内部的进程,会导致系统的整体性能变慢或停滞。负载测试、容量测试、浸泡测试、尖峰测试和压力测试都是流行的性能评估形式。 - 安全测试:在当今世界,安全是几乎每个移动应用程序开发人员的主要担忧。据报道,出于安全考虑,80% 的用户更有可能删除应用程序。因此,专注于移动应用安全测试至关重要。
某些程序(例如旅行应用程序)需要用户的个人信息来进行各种交易。如果您的应用程序需要类似的东西,您必须保证应用程序的机密性、完整性和真实性。您应该在您的应用程序上运行强大的测试,以确保没有人可以通过不公平的方式侵入他人的帐户。 - 中断测试:中断测试对于确定应用程序在返回之前的状态之前被中断时的行为非常重要。来电或短信、警报、来自移动应用程序的推送通知、电池电量不足或已满、网络连接丢失和恢复以及充电时插入或拔出都是中断的示例。如果发生中断,应用程序通常应该在后台运行并返回到之前的状态。
- 手动测试:手动测试是一种经过验证的方法,可以彻底解决移动应用程序测试的复杂性。手动测试可确保成品按照计划的预期以最佳方式运行。在用例不是立即显而易见的情况下,它特别有用。专业的 QA 测试人员可以在短时间内评估应用程序并确保它产生准确的结果。
- 兼容性测试:兼容性测试是最重要的移动应用程序测试类型之一。它是一种非功能测试形式,可确保移动应用程序在各种操作系统、应用程序、设备、内部硬件规格和网络条件下的功能。兼容性测试确定移动应用程序是否与各种操作系统和版本兼容。
它还测试移动应用程序与各种设备、浏览器、网络和其他特性的兼容性。向后兼容性测试和前向兼容性测试是兼容性测试的两种类型。 - 本地化测试:针对特定地理位置的移动应用程序必须进行本地化测试。测试移动应用程序对该地区独特语言和文化方面的响应能力至关重要。当地货币、使用合适的时区日期和时间格式、众多当地法规需求以及文本和用户界面只是本地化测试评估的几个重要领域。
- 功能测试:功能移动应用程序测试确保应用程序的功能满足指定的要求。这种形式的测试主要关注移动应用程序的主要目标和流程。功能测试确定应用程序是否可以正确启动和安装。它还测试了注册和登录的简单性,以及推送通知的呈现以及文本框和按钮的正确操作。
- 安装测试:安装测试,也称为实现测试,是确保移动应用程序正确安装和删除的好方法。此外,安装测试对于确保更新无缝且无错误是必要的。安装测试还检查如果用户未能更新移动应用程序会发生什么。
- 自动化测试:某些移动应用程序质量评估过于复杂且耗时。在这种情况下,移动应用程序测试自动化服务开始发挥作用,提供最佳准备和有效执行的自动化测试以及手动测试,这有助于确保质量,同时也允许更快地发布优质产品。因此,在移动应用程序测试方面,自动化测试是节省时间和成本的可靠来源。有多种工具可以执行自动化测试。Appium就是其中之一。
7. 你需要一台服务器机器来在 Appium 上运行测试吗?
不,我们不需要服务器机器来在 Appium 上运行测试。Appium 鼓励两层架构,其中一台测试机器连接到运行 Appium 的测试服务器,使整个过程自动化。此设置是可选的;您可以在与测试相同的系统上运行 Appium。您的测试将使用环回地址连接到 Appium,而不是连接到远程主机。
8. Appium 适合哪些类型的测试?
在进行测试时,可以测试许多场景,尤其是对于 Web 应用程序,具体取决于您要确保的功能覆盖率。Appium 在测试用户在使用您的应用程序时会遇到的场景时很有帮助。
另一方面,如果您需要测试的不仅仅是 UX 简单交互,那么 Appium 就会成为一种限制。考虑诸如键盘输入之类的功能。当涉及复杂的触摸/键盘混合环境时,错误失败的可能性很大。使用 Appium 交换数据是另一个小麻烦。当您的测试需要与您的应用程序交换数据时,您需要使用各种策略。所以请记住,发送和接收信息并不总是那么简单。这不是 Appium 的错。WebDriver 规范的创建是为了自动化流程,而不是数据交换。
9. 在 Sauce Labs 上使用 Appium 而不是在本地使用 Appium 的主要优势是什么?
以下是在 Sauce Labs 上使用 Appium 而不是在本地使用 Appium 的优势:
- 它节省了我们在本地设置 Appium 服务器所需的时间。
- 我们不需要在我们的系统中离线安装移动模拟器和模拟器。我们可以直接在 Sauce Labs(一家位于加利福尼亚州旧金山的美国云托管 Web 和移动应用程序自动化测试平台公司)上使用它。
- 它让我们可以立即扩展我们的应用程序。
- 我们不需要像在本地使用 Appium 那样对应用程序的源代码进行任何修改。
10. 解释移动应用测试框架的一般职责。还解释了移动应用程序测试框架的一般结构。
以下是移动应用程序测试框架的一般职责:
- 选择表达期望的格式
- 开发连接或控制测试应用程序的方法
- 执行测试并报告结果
移动应用程序测试框架的一般结构由以下部分组成:
- 应用程序包:这是指需要运行和测试的目标应用程序。
- Instrumentation TestRunner:针对目标应用程序执行测试用例的测试用例运行器。它包括一个用于创建测试的 SDK 工具以及一个 API 工具,例如 MonkeyRunner,它提供了用于设计控制 Android 设备的程序的 API。
- 测试包:测试包中包含两个类,测试用例类和 Mock 对象。模拟对象包含将用作测试用例的样本输入的模拟数据,而测试用例类包含要在目标应用程序上运行的测试方法。
[图片上传失败...(image-da5da5-1646447398871)]
在上图中,我们可以看到一个移动应用测试框架由三个部分组成:Application package、InstrumentationTestRunner、Test package。测试包由模拟对象、测试用例类以及 Instrumentation 和 JUnit 类组成。
11. 列出在 Appium 本地运行 Android 应用程序测试所需的先决条件。
必须安装以下先决条件才能在 Appium 本地成功地在 Android 应用程序上运行测试:
- Java 开发工具包 (JDK)。
- 安卓工作室。
- Android SDK 工具。
- Eclipse IDE。
- Appium 桌面客户端。
- 测试NG。
- 硒服务器 JAR。
- Webdriver 语言绑定库。
12. Appium Inspector 是什么意思?
Appium 提供了一个“Inspector”来记录和回放,类似于 Selenium IDE 的记录和回放工具。它检查文档对象模型以记录和播放本机应用程序行为,并以任何首选语言提供测试脚本。您可以使用 Appium Desktop 中的 Inspector 来查找或定位应用程序的元素。
为了定位一个元素,Appium 检查器提供了四个选项:
- 通过 id 查找元素
- 按类名查找元素
- 通过可访问性 id 查找元素
- 通过 xpath 查找元素。
Appium Inspector 不支持 Windows,而是使用 UIAutomator 查看器作为选项。
13.解释Appium的架构。
Appium 是一个用 node.js 编程语言实现的 HTTP 服务器。它在设备上创建一个服务器并等待来自主 Appium 服务器的代理命令。测试脚本由测试人员编写并在设备或模拟器上运行。Appium 为各种平台(如 Android 和 iOS)创建和管理许多 webdriver 会话。
测试人员生成的测试脚本作为请求发送到 Appium 服务器,然后在模拟器或设备上执行。每个供应商都有自己的技术和方法来在设备上执行测试用例,例如 IOS 或 Android。因此,测试用例在 Appium 服务器接收到命令后运行。为了将命令请求传输到 Appium 服务器,Appium 使用 JSON(Javascript Object Notation)有线协议。在这里,JSON 用于在服务器和客户端之间传输数据。
14.您对端到端移动测试自动化了解多少?执行端到端移动测试自动化时应牢记哪些事项?
端到端移动应用程序测试自动化是一种从头到尾测试软件产品以确保应用程序流程按计划进行的方法。它建立产品的系统要求并确保所有集成组件按预期运行。
端到端 (E2E) 移动应用程序测试自动化的目标是从最终用户的角度进行测试,通过复制用户使用应用程序的真实情况,并确认被测系统及其用于数据完整性和集成的组件。
如今,软件系统非常复杂,并与众多子系统集成在一起。如果子系统之一发生故障,则整个软件系统可能会发生故障。我们采用端到端的移动应用程序测试自动化来消除这一巨大风险。
在执行端到端移动测试自动化时,应牢记以下几点:
- 应用程序的安装
- 在没有网络访问权限的情况下首次启动应用程序。
- 应用程序的卸载。
- 如果应用程序在水平模式下受支持,则应用程序的方向。
- 在各种设备和网络条件下测试应用程序的性能。
- 测试应用程序的响应以及在提供无效的用户凭据时它的反应。
15. 什么是移动应用测试,它与移动测试有何不同?
测试为手持移动设备制作的应用程序软件的功能、可用性和一致性的做法称为移动应用程序测试。移动应用程序测试可以通过两种方式完成:自动或手动。
它与移动测试不同,移动测试侧重于移动设备的原生应用程序功能,例如通话、短信和媒体播放器等。同时,在移动应用测试中,我们只关注特定应用的操作和端到端的特性。
16.解释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 协议的扩展。除了建立通信流外,它还用于规范其他手机行为。
17.在Appium的上下文中解释Appium Session。
Appium 会话是向特定测试应用程序发送命令的媒介。命令总是在会话的上下文中执行。在执行任何命令之前,客户端使用会话标识符作为 sessionId 参数。客户端库从服务器请求会话。之后,服务器将返回一个 sessionId 端点,该端点可用于提交其他命令以与正在测试的应用程序进行交互。
每个“测试”都包含在一个会话中。鉴于 Appium 是一个简单的基于客户端和服务器的方法,这是不言而喻的。发布请求,也称为会话请求,由客户端发送到服务器。这些查询使用 JSON Wire Protocol 以 JSON 对象格式通信和传达信息。
18. 在 Appium 的上下文中解释所需的能力。
在 iOS 和 Android 上,Appium 的行为不同。因为它是一个“跨平台”的工具,所以必须有一种方法来区分两个操作系统的会话请求。JSON 对象,称为 Desired Capabilities,被引入来解决这个特定的问题陈述。
所需功能是键值对数据,将 Android 应用程序测试会话的建立与 iOS 应用程序测试会话的建立区分开来。使用 platformName、deviceName、appPackage 和 appActivity 等参数,服务器将能够非常快速地分辨出两个操作系统之间的区别。
19. 测试人员在使用 Appium 时可以在多线程环境中运行测试吗?
是的,Appium 允许测试人员在多线程环境中执行测试。他们唯一需要担心的是不能同时针对同一个 Appium 服务器运行一个测试。
20. 是否可以在运行 Appium 测试时使用 JavaScript 与应用程序交互?
是的,我们可以在运行 Appium 测试时使用 javascript 与应用程序交互。当我们在 Appium 上执行指令时,服务器会将封装在匿名函数中的脚本传输到我们的应用程序,然后执行。
21. Appium Package master是什么意思?你将如何创建一个包?
Appium Package master 是指一组用于创建和管理 Appium 包的工具。
要创建一个新的 Appium 包,我们可以使用以下代码行:
//For es7/ babel
Gulp create-package -n
在上面的代码中,我们使用 Gulp(一个流式构建系统)和命令“create-package”来创建一个新包。-n 表示必须创建一个新包,
// For regular es5
Gulp create-package ---nobabe1 -n
在上面的代码中,我们提到了 --nobabel 以指定该命令是针对常规 es5 的。
Appium 面试问题
22. 解释 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 用于在 Android 设备上运行的架构。
Appium 在 iOS 上的工作:
由于 Android 使用 UIAutomator,iOS 使用 UIAutomation。与 Android 类似,Appium 将命令代理到在 Mac 仪器环境上运行的 UIAutomation 测试用例。Apple 提供了这个应用程序“工具”,它可以执行各种活动,例如构建、分析和控制 iOS 应用程序。另一方面,它还有一个自动化组件,您可以在其中用 JavaScript 编写命令。它使用 UIAutomation API 与应用程序 UI 交互。Appium 使用相同的库来自动化 iOS 应用程序。
[图片上传失败...(image-738926-1646447398871)]
在上图中,我们可以清楚地看到 Appium 用于在 iOS 设备上运行的架构。
23.区分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 有不同的版本。
24.区分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 代码的简单更改需要完全重建。
25. 区分开源工具、供应商工具和内部工具。
- 开源工具:开源工具是免费使用的框架和应用程序。工程师构建了这个工具,并在互联网上免费提供给其他工程师、开发人员或爱好者开发和使用,这对有抱负的开发人员来说非常有益。
- 供应商工具:供应商工具由拥有使用其工具和代码的许可证的公司创建。可通过互联网获得这些工具的技术支持。
- 内部工具:内部工具是公司为自己使用和自我开发而开发的工具。它们永远不会提供给普通民众。
26.区分Appium和Calabash。
Calabash : Calabash 是一个用于自动化用户界面验收测试的自动化框架。它适用于各种移动系统,包括 iOS 和 Android。这可用于自动化各种移动应用程序,包括本机、移动 Web 和混合应用程序。
以下是Appium和Calabash之间的区别:-
基本的 | Appium | 蠡 |
---|---|---|
支持的编程语言 | Appium 支持 Java、Python、JavaScript、.Net、Ruby 和所有其他主要编程语言。 | Ruby 编程语言是 Calabash 唯一支持的语言。 |
iOS 移动网页 | 它需要创建用于自动化的自定义 Safari 应用程序。 | Calabash 还不支持它。 |
原生 iOS 应用程序 | 它只需要 iOS UI Automator。 | 为此,它需要 iOS 工具。 |
混合 iOS 应用程序 | 它需要使用自定义 UI 命令和 iOS UI Automator。 | 它需要使用自定义 UI 命令以及 iOS 框架。 |
混合安卓应用 | 只需要 Selendroid 应用程序。 | 需要 Android 仪器 - 葫芦 android。 |
Android 移动网络应用程序 | 它只能用于自动化 chrome 浏览器。 | Calabash 不支持它。 |
原生安卓应用 | Appium 需要 Android UI Autometer 和 Selendroid。 | 需要 Android 仪器 - 葫芦 android。 |
27.区分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 应用程序或网页上的自动化逻辑。它的创建方式使其可以通过使用浏览器活动快速轻松地与应用程序交互。
28.您认为自动化测试可以完全替代手动软件测试吗?
不,自动化测试不能完全替代手动软件测试。这是因为所使用的工具旨在在设置完成后执行测试,并且适当的自动化需要尽可能少的人工参与。尽管它很方便,但它不应该用来代替手动测试;相反,它应该用于重复性活动,例如需要数千个虚拟用户的负载测试。如果仅打算定期运行测试脚本,则工程师不应自动化测试脚本,也不应为可能需要人工参与以检测错误的新软件构建自动化代码审查或错误测试。总而言之,我们可以说大规模、重复性的工作更适合自动化。
29. 提到你不能用模拟器做但可以用真实设备做的测试。
以下是我们可以在真实设备上进行但在模拟器中无法进行的测试列表:-
- 测试电话和消息期间的中断。
- 电池电量不足时应用程序的性能。
- 应用程序对电池使用的影响。
- 从设备安装或卸载存储卡的场景。
- 测试涉及蓝牙的使用。
30、编写Appium测试的基本要求是什么?
以下是编写 Appium 测试的基本要求:-
- 驱动客户端: Appium 的驱动客户端模拟用户在移动应用程序中的行为。Appium 测试可以在客户端库的帮助下构建,它封装了测试的各个阶段并通过 HTTP 将其发送到 Appium。
- Appium Session:因为 appium 测试是在一个 session 中运行的,所以首先设置一个 appium session 是很重要的。一旦会话的自动化结束,它将被终止,用户将不得不等待下一个会话。
- 期望的能力:为了启动一个 appium 会话,设计一些称为期望参数的参数是至关重要的。平台版本、平台名称、设备名称和许多其他参数都在这些参数中。这也有助于定义 Appium 服务器预期提供的自动化类型。
- 驱动程序命令: Appium 提供了使用大量富有表现力的命令构建测试的能力。
31、Appium中调试用的工具有哪些?
我们通常使用日志数据(维护一个日志文件,其中无论何时发生错误,都会将其记录到该文件中)来查看问题的原因,即故障发生的位置。因此对于 iOS – iPhone 配置实用程序和 Android Monitor.bat 等都可以使用。如果您将这些工具的日志提供给开发人员,他们将能够快速找出导致问题的原因。