MacApp自动化测试之常用工具简介

自动化测试在国内主要以单元测试、API测试、WebUI测试为主,对于MacApp测试却鲜有涉及。但2021年统计MacBook市场占有率接近10%,相比前一年市场占有率提升了26%,可见发展势头非常不错。

与此MacBook上的应用程序MacApp也在有序地发展着,测试人员要时刻做好对其测试。本章从自动化测试方向出发,介绍MacApp自动化测试的实现。

MacApp测试简介

MacApp指的是运行在MacOS系统上的应用程序,其安装包多以dmg程序为主。在程序测试上,无论是手工测试还是自动化测试,和WinApp测试类似,从程序本身和与系统交换两方面入手。具体着手点可参考7.1WinApp测试简介。

MacApp作为一个独立的应用程序运行在MacBook计算机上的Mac OS/Mac OS X系统上。通常具有图形化界面、业务功能、数据接收和展示、访问速度快等特点。

Mac OS相比Windows是一个较封闭的圈子,运行在其上的应用程序相对来说数据比较安全,受到黑客攻击的概率较低,因此MacApp也具有相对安全的运行环境。

MacApp作为一种单机或Client-Server架构的应用程序,测试时可以将重点放在功能测试、用户界面测试、兼容性测试、配置测试、交互测试上,交互测试着重考虑与MacOS系统、MacBook硬件设备上的交互。

由于需要本地设备上安装客户端,故而需要关注安装/卸载及资源的占用,安装/卸载主要是了解安装/卸载过程可能出现的各种各样的问题,并尝试不同的方法验证可能出现的各种异常情况及程序自身处理的能力,保证安装/卸载的正确运行。资源占用测试两部分,第一部分是安装程序本身的大小及安装后占所占磁盘的大小,第二部分是客户端在运行时CPU、内存、磁盘、GPU、网络等开销。

MacApp的测试和其他App测试类似,都是保证自身健康和与第三方工具或设备交互的健康。

MacApp自动化测试工具

由于 Mac 生态系统相对 Windows 生态系统来说相对封闭,因此 MacApp 开发技术相对 WinApp 开发技术就显的寥若晨星,随之自动化测试相关工具也屈指可数。但随着 Mac 系统的发展,软件开发技术和测试技术的进步,MacApp 自动化测试工具会越来越壮大。

截至当前,MacApp 自动化测试工具主要有以下几款:

AppleScript

AppleScript是macOS提供的一个脚本语言,也是一种面向对象(Object-Oriented)的脚本语言,语法查询方便,简单,并接近自然语言。使用该语言可以轻松模拟鼠标和键盘操作,完成一系列软件操作。因此使用AppleScript可轻松完成软件自动化测试脚本的开发。

ATOMac

ATOMac是一个基于Python语言,通过Apple Accessibility API实现的Mac端应用UI自动化控制库。在ATOMac出生之前,已有的工具都是通过AppleScript发送消息的,运行起来很慢。而ATOMac则是直接调用Apple Accessibility API发送消息,因此使用起来会非常快,编写用例也简单了。

Automator

Automator是苹果公司为Mac OS X系统开发的一款程序。通过简单的点击、拖拽等操作就可以将一系列动作组合成一个工作流(Workflow),用以完成一些重复的任务。软件测试工程师可以借助其完成软件的自动化测试。

Automator有一个非常亮丽的优点就是可以横跨不同的程序,比如在一个工作流中操作Safari浏览器、被测程序、Office等。Automator不需要写代码,只需要简单的鼠标操作就可以完成简单工作流的创建,也支持用户编写AppleScripts脚本创建工作流。

Sikuli

Sikuli是由MIT(麻省理工学院)研究团队设计的一种图形化编程技术。计算机用户只须有最基本的编程技能(比如会写print"hello world"),不需要去写出一行行代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序。工作模式与人眼一样,直接识别图像,而不是底层代码。

Sikuli主要的优点有:与平台无关,可以实现任意类型的UI测试,轻松实现跨平台测试;可读性强,用图形表示逻辑关系更生动、形象,容易理解,便于维护;提供.jar包,便于构建大型的测试框架,实现各类测试工具之间的互补;用例设计与程序实施可分离,用例设计人员可以只关注图型逻辑关系和测试检查点,不需要懂得具体开发与程序语言基础;程序实施人员可以只进行编程而不过多参与设计。

Appium

Appium相信大家已经很熟悉了,在APP自动化测试和WinApp自动化测试章节中,编写脚本时都使用到了AppiumpPython-Client。在Appium官方文档中有描述到Appium提供了beta版,支持OS X系统上桌面应用程序的自动化测试,驱动程序是在appium-mac-driver中开发的,但是它依赖本地的AppiumForMac二进制文件。

开发的驱动程序不附带AppiumForMac二进制文件,因此在使用时需要手动安装AppiumForMac应用程序,并赋予权限。

Automator工具

Automator是Mac系统上自带的一个原生小程序,图标是一个小机器人,打开便可以使用。使用Automator工具我们可以轻松创建出一系列工作流(工作流可以认为是测试用例),用来执行一些简单或者复杂的任务。

界面介绍

点击小机器人图标启动自动操作Automator程序,启动后进入文稿类型选择界面,截图如图8-1所示。

需要我们选择一个文稿类型,随便选择一个即可进入到Automator主界面,如图8-2所示。整个界面可以分为四部分,分别是执行菜单、资源库区域、工作流创建区域和日志区域。

 

下面对Automator主界面各区域做以下介绍:

执行菜单区域有六个按钮,分别是资源库、媒体、录制、步进、停止、运行。

资源库:点击资源库按钮后可显示或隐藏左边的资源库内容。

媒体:打开媒体库,可查看计算机存储的音频、图片、视频文件。

录制:点击录制后,计算机进入录制状态,会将用户的操作录制成工作流程。

步进:每点一次,运行工作流程中的一步操作。

停止:当工作流程处于运行状态时,点击停止按钮可停止运行。

运行:运行工作流程,如果当前处于运行状态则按钮转换成暂停。

资源库区域展示各种行为动作和变量,行为动作即操作内容,例如访问网页;变量为我们会使用到的一些数据,例如电脑主机名、IP。资源库区域可分三部分,左边资源库分类、右边具体的操作、下面操作介绍。

左边资源库分类:对资源库中的操作做了互联网、开发者、日历等分类,便于快速找到需要的操作。

右边具体的操作:每一个项都表示一个具体的操作步骤。

下面操作介绍:是右边选中具体操作的描述,也可以说是概要信息。

在资源库区域最上面还有操作、变量、搜索三个内容。操作与变量用于切换资源区域显示的内容,如果是操作被选中则资源区域显示操作内容,如果是变量被选中则资源区域显示各种数据。搜索用于快速查找具体的操作或某个变量。

工作流创建区域:工作流创建区域是重点区域,将左边资源库下的操作根据需要一个一个拖进该区域便形成一条工作流,运行时将会从上至下依次执行工作流中的操作。

日志区域:展示工作流的操作执行结果。日志区域左下方有两个按钮,左边是显示日志,右边是显示变量,两个可以相互切换。

使用Automator创建自动化用例时几乎都是在主界面完成的。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

文档获取方式:

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/116879.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 语法积累

参考博文: c语言中int默认是有符号还是无符号,C语言迷题:有符号数与无符号数的问题_旋斡勃人的博客-CSDN博客前些天偶然看到了一个收集C语言迷题的网站,很是感兴趣。本人对C/C语言本身很是感兴趣,曾经做过几年相应的开发&#xf…

FBX SDK 开发环境配置 visual studio 2022

FBX | Adaptable File Formats for 3D Animation Software | Autodesk. 下载windows的sdk并安装. 创建一个c console 工程 设置include目录 添加预处理宏 FBX_SHARED1 添加fbx sdk lib 目录 添加依赖lib : libfbxsdk-md.lib libxml2-md.lib zlib-md.lib 配置完毕.

JavaScript Web APIs - 05 Window对象 、本地存储

Web APIs - 05 文章目录 Web APIs - 05js组成window对象定时器-延迟函数location对象navigator对象histroy对象本地存储(今日重点)localStorage(重点)sessionStorage(了解)localStorage 存储复杂数据类型 综…

【校招VIP】算法考点之堆排

考点介绍: 排序算法属于数据结构和算法的基础内容,并且也是大厂笔试中的高频考点。 堆排序是使用一棵树存储序列这个课树只保证跟节点是这棵树中的最小值,但并不保证其他节点是按顺序的。因此他的排序是每次从堆中取得堆顶,取得 n…

transformer源码

1.传统RNN网络 每一层都需要上一层执行完才能执行 1.1 自注意力 在一句话中找到it_指代的是什么,它的上下文语境是什么? self-attetion计算 1.2 multi-header机制 1.3 堆叠多层self-attention,相当于再一次卷积 1.4 位置信息编码 1.5 残…

性能测试有哪些常见的测试指标?

一、什么是性能测试 先看下百度百科对它的定义 <font size"3">性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。</font> 我们可以认为性能测试是&#xff1a;通过在测试环境下对系统或构件的性能进…

CSS中如何实现文字阴影效果(text-shadow)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现思路⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前…

NFT Insider#105:The Sandbox即将参加韩国区块链周,YGG的声誉和进步(RAP)将引领玩家晋升到下一层级

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto&#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…

【Go 基础篇】Go语言中的defer和recover:优雅处理错误

Go语言以其简洁、高效和强大的特性受到了开发者的热烈欢迎。在错误处理方面&#xff0c;Go语言提供了一种优雅的机制&#xff0c;即通过defer和recover组合来处理恐慌&#xff08;panic&#xff09;错误。本文将详细介绍Go语言中的defer和recover机制&#xff0c;探讨其工作原理…

单元测试及其工具Junit

1.单元测试是什么 单元测试是开发者编写的一小段代码&#xff0c;用于检验被测代码的一个很小的、很明确的功能是否正确&#xff0c;通常而言&#xff0c;一个单元测试是用于判断某个特定条件&#xff08;或者场景&#xff09;下某个特定函数的行为。 单元测试是软件测试的一种…

Unity插件---Dotween

1.什么是DOTween DoTween 是由 Demigiant 开发的&#xff0c;被广泛应用于 Unity 游戏开发中。它是一个流行的动画插件&#xff0c;被许多开发者用于创建流畅、高效的动画效果&#xff0c;提升游戏体验。 2.DOTween的初始配置 ①set up 首先找到DOTween Unity Panel 的面板 点…

BananaPi BPI-6202工业控制板全志科技A40i、24V DC输入、RS485接口

Banana Pi BPI-6202“嵌入式单板计算机”采用工业级全志A40i四核Cortex-A7处理器&#xff0c;工业温度范围和长生命周期&#xff0c;2GB DDR3&#xff0c;8GB eMMC闪存&#xff0c;M.2 SATA插槽等。 这是自 Banana Pi去年推出Banana Pi BPI-M2 Ultra SBC 和BPI-M2 Berry以来&am…

Skip Connection——提高深度神经网络性能的利器

可以参考一下这篇知乎所讲 https://zhuanlan.zhihu.com/p/457590578 长跳跃连接用于将信息从编码器传播到解码器&#xff0c;以恢复在下采样期间丢失的信息

对于uts namespace共享的测试

前言 单单以下列命令运行虽然是root&#xff0c;还不行&#xff0c;我们需要加--privileged&#xff0c;不然会报 hostname: you must be root to change the host name docker run -it --utshost ubuntu:latest /bin/bash 如果加上--privileged后 docker run -it --priv…

视频动态壁纸 Dynamic Wallpaper for Mac中文

Dynamic Wallpaper是一款Mac平台上的动态壁纸应用程序&#xff0c;它可以根据时间等因素动态切换壁纸&#xff0c;提供更加生动和多样化的桌面体验。 Dynamic Wallpaper包含了多个动态壁纸&#xff0c;用户可以根据自己的喜好选择和切换。这些动态壁纸可以根据时间等因素进行自…

【LeetCode-中等题】200. 岛屿数量

文章目录 题目方法一&#xff1a;深度优先搜索 dfs方法二&#xff1a;广度优先搜索 bfs方法三&#xff1a;&#xff08;重点掌握&#xff09;并查集 题目 方法一&#xff1a;深度优先搜索 dfs 思路&#xff1a;让一个扫描指针扫描每一个格子&#xff0c;然后每扫到一个为1的格…

3D路径,控件

主要分3大块&#xff1a; 1控制面板 vc:VisuStruct3DControl; // 用于绑定3d轨迹控件的按钮2轨迹图&#xff1a;【整体图】 SM3_CNC_Visu.SMC_PathCopierCompleteQueue; //坐标流轨迹图 SM3_CNC_Visu.SMC_PathCopierFile; //文本轨迹图 SMC_PositionTracker (FB) /…

NetSuite海鲜书 - 知识会汇编 用户篇 2023

NetSuite2021年初夏&#xff0c;NetSuite知识会成立。它由本人&#xff0c;上海德之匠信息技术有限公司的毛岩喆&#xff08;江湖人称Rick&#xff09;发起建立。建立的初衷秉承Rick个人博客“学问思辨&#xff0c;企业信息化路上的行者”的理念&#xff0c;期望能够在NetSuite…

c++(8.29)auto关键字,lambda表达式,数据类型转换,标准模板库,list,文件操作+Xmind

作业&#xff1a; 封装一个学生的类&#xff0c;定义一个学生这样类的vector容器, 里面存放学生对象&#xff08;至少3个&#xff09; 再把该容器中的对象&#xff0c;保存到文件中。 再把这些学生从文件中读取出来&#xff0c;放入另一个容器中并且遍历输出该容器里的学生。…

Apifox(1)比postman更优秀的接口自动化测试平台

Apifox介绍 Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台&#xff0c;定位 Postman Swagger Mock JMeter。通过一套系统、一份数据&#xff0c;解决多个系统之间的数据同步问题。只要定义好 API 文档&#xff0c;API 调试、API 数据 Mock、API 自…