先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
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 ⼀起⼯作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-8qBRQKYg-1713704135994)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!