2023年6月21日发(作者:)

Appium⾯试题1、Appium有什么特点?以下是 Appium 的特点:-[图⽚上传失败...(image-7cc230-72)]Appium 不需要使⽤应⽤程序的源代码或库。Appium 拥有⼀个充满活⼒且参与度⾼的开发者社区,因此可以轻松地从社区获得帮助。Appium ⽀持多平台测试,这意味着它可以在 iOS 移动、Android 移动和 Windows 桌⾯应⽤程序等多个平台上执⾏相同的测试⽤例。Appium 允许测试脚本与其他测试脚本并⾏运⾏。Appium 中的⼩修改不需要重新安装应⽤程序。Appium ⽀持使⽤ Selenium 客户端库的多种语⾔,包括 C#、Python、Java、Ruby、PHP、带有 的 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 应⽤程序中不可⽤。、、 和更多⽹站都是 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-71)]在上图中,我们可以看到⼀个移动应⽤测试框架由三个部分组成: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 是⼀个⽤ 编程语⾔实现的 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/ babelGulp create-package -n 在上⾯的代码中,我们使⽤ Gulp(⼀个流式构建系统)和命令“create-package”来创建⼀个新包。-n 表⽰必须创建⼀个新包, 表⽰要创建的包的名称。// For regular es5Gulp 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 服务器 。它⽤于向 Android 设备发送测试命令,然后 UIAutomator 会执⾏该命令。在上图中,我们可以清楚地看到 Appium ⽤于在 Android 设备上运⾏的架构。Appium 在 iOS 上的⼯作:由于 Android 使⽤ UIAutomator,iOS 使⽤ UIAutomation。与 Android 类似,Appium 将命令代理到在 Mac 仪器环境上运⾏的UIAutomation 测试⽤例。Apple 提供了这个应⽤程序“⼯具”,它可以执⾏各种活动,例如构建、分析和控制 iOS 应⽤程序。另⼀⽅⾯,它还有⼀个⾃动化组件,您可以在其中⽤ JavaScript 编写命令。它使⽤ UIAutomation API 与应⽤程序 UI 交互。Appium 使⽤相同的库来⾃动化iOS 应⽤程序。[图⽚上传失败...(image-738926-71)]在上图中,我们可以清楚地看到 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之间的区别:-基本的⽀持的编程语⾔iOS 移动⽹页原⽣ iOS 应⽤程序混合 iOS 应⽤程序AppiumAppium ⽀持 Java、Python、JavaScript、.Net、Ruby 和所有其他主要编程语⾔。它需要创建⽤于⾃动化的⾃定义 Safari 应⽤程序。它只需要 iOS UI Automator。它需要使⽤⾃定义 UI 命令和 iOS UI Automator。蠡Ruby 编程语⾔是 Calabash 唯⼀⽀持的语⾔。Calabash 还不⽀持它。为此,它需要 iOS ⼯具。它需要使⽤⾃定义 UI 命令以及iOS 框架。需要 Android 仪器 - 葫芦android。Calabash 不⽀持它。需要 Android 仪器 - 葫芦android。混合安卓应⽤Android 移动⽹络应⽤程序原⽣安卓应⽤只需要 Selendroid 应⽤程序。它只能⽤于⾃动化 chrome 浏览器。Appium 需要 Android UI Autometer 和 Selendroid。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 等都可以使⽤。如果您将这些⼯具的⽇志提供给开发⼈员,他们将能够快速找出导致问题的原因。

2023年6月21日发(作者:)

Appium⾯试题1、Appium有什么特点?以下是 Appium 的特点:-[图⽚上传失败...(image-7cc230-72)]Appium 不需要使⽤应⽤程序的源代码或库。Appium 拥有⼀个充满活⼒且参与度⾼的开发者社区,因此可以轻松地从社区获得帮助。Appium ⽀持多平台测试,这意味着它可以在 iOS 移动、Android 移动和 Windows 桌⾯应⽤程序等多个平台上执⾏相同的测试⽤例。Appium 允许测试脚本与其他测试脚本并⾏运⾏。Appium 中的⼩修改不需要重新安装应⽤程序。Appium ⽀持使⽤ Selenium 客户端库的多种语⾔,包括 C#、Python、Java、Ruby、PHP、带有 的 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 应⽤程序中不可⽤。、、 和更多⽹站都是 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-71)]在上图中,我们可以看到⼀个移动应⽤测试框架由三个部分组成: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 是⼀个⽤ 编程语⾔实现的 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/ babelGulp create-package -n 在上⾯的代码中,我们使⽤ Gulp(⼀个流式构建系统)和命令“create-package”来创建⼀个新包。-n 表⽰必须创建⼀个新包, 表⽰要创建的包的名称。// For regular es5Gulp 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 服务器 。它⽤于向 Android 设备发送测试命令,然后 UIAutomator 会执⾏该命令。在上图中,我们可以清楚地看到 Appium ⽤于在 Android 设备上运⾏的架构。Appium 在 iOS 上的⼯作:由于 Android 使⽤ UIAutomator,iOS 使⽤ UIAutomation。与 Android 类似,Appium 将命令代理到在 Mac 仪器环境上运⾏的UIAutomation 测试⽤例。Apple 提供了这个应⽤程序“⼯具”,它可以执⾏各种活动,例如构建、分析和控制 iOS 应⽤程序。另⼀⽅⾯,它还有⼀个⾃动化组件,您可以在其中⽤ JavaScript 编写命令。它使⽤ UIAutomation API 与应⽤程序 UI 交互。Appium 使⽤相同的库来⾃动化iOS 应⽤程序。[图⽚上传失败...(image-738926-71)]在上图中,我们可以清楚地看到 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之间的区别:-基本的⽀持的编程语⾔iOS 移动⽹页原⽣ iOS 应⽤程序混合 iOS 应⽤程序AppiumAppium ⽀持 Java、Python、JavaScript、.Net、Ruby 和所有其他主要编程语⾔。它需要创建⽤于⾃动化的⾃定义 Safari 应⽤程序。它只需要 iOS UI Automator。它需要使⽤⾃定义 UI 命令和 iOS UI Automator。蠡Ruby 编程语⾔是 Calabash 唯⼀⽀持的语⾔。Calabash 还不⽀持它。为此,它需要 iOS ⼯具。它需要使⽤⾃定义 UI 命令以及iOS 框架。需要 Android 仪器 - 葫芦android。Calabash 不⽀持它。需要 Android 仪器 - 葫芦android。混合安卓应⽤Android 移动⽹络应⽤程序原⽣安卓应⽤只需要 Selendroid 应⽤程序。它只能⽤于⾃动化 chrome 浏览器。Appium 需要 Android UI Autometer 和 Selendroid。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 等都可以使⽤。如果您将这些⼯具的⽇志提供给开发⼈员,他们将能够快速找出导致问题的原因。