自动化测试在国内主要以单元测试、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所示。
8-1 选择文稿类型
需要我们选择一个文稿类型,随便选择一个即可进入到Automator主界面,如图8-2所示。整个界面可以分为四部分,分别是执行菜单、资源库区域、工作流创建区域和日志区域。
8-2 Automator主界面
下面对Automator主界面各区域做以下介绍:
执行菜单区域有六个按钮,分别是资源库、媒体、录制、步进、停止、运行。
-
资源库:点击资源库按钮后可显示或隐藏左边的资源库内容。
-
媒体:打开媒体库,可查看计算机存储的音频、图片、视频文件。
-
录制:点击录制后,计算机进入录制状态,会将用户的操作录制成工作流程。
-
步进:每点一次,运行工作流程中的一步操作。
-
停止:当工作流程处于运行状态时,点击停止按钮可停止运行。
-
运行:运行工作流程,如果当前处于运行状态则按钮转换成暂停。
资源库区域展示各种行为动作和变量,行为动作即操作内容,例如访问网页;变量为我们会使用到的一些数据,例如电脑主机名、IP。资源库区域可分三部分,左边资源库分类、右边具体的操作、下面操作介绍。
-
左边资源库分类:对资源库中的操作做了互联网、开发者、日历等分类,便于快速找到需要的操作。
-
右边具体的操作:每一个项都表示一个具体的操作步骤。
-
下面操作介绍:是右边选中具体操作的描述,也可以说是概要信息。
在资源库区域最上面还有操作、变量、搜索三个内容。操作与变量用于切换资源区域显示的内容,如果是操作被选中则资源区域显示操作内容,如果是变量被选中则资源区域显示各种数据。搜索用于快速查找具体的操作或某个变量。
-
工作流创建区域:工作流创建区域是重点区域,将左边资源库下的操作根据需要一个一个拖进该区域便形成一条工作流,运行时将会从上至下依次执行工作流中的操作。
-
日志区域:展示工作流的操作执行结果。日志区域左下方有两个按钮,左边是显示日志,右边是显示变量,两个可以相互切换。
使用Automator创建自动化用例时几乎都是在主界面完成的。