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

news2024/12/23 21:04:20

自动化测试在国内主要以单元测试、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.coloradmin.cn/o/964455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32C3 LuatOS RC522②写入字符串

编写了字符串转16进制表函数 -- 将字符串转换为十六进制表 local function stringToHexTable(str)local hexTable {}local maxLength 16 -- 最大长度为16个元素-- 将字符串转换为十六进制for i 1, #str doif i > maxLength thenbreakendlocal hex string.format("…

解密Spring事务生效的内部机制

声明式事务和编程式事务对比: 声明式事务: 使用注解或XML配置的方式,在代码中声明事务的属性和行为。通过AOP和代理模式实现,将事务管理与业务逻辑代码解耦。适用于大多数情况,简化了代码,提高了可维护性和…

9.2作业

QT实现闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTimerEvent> #include<QDateTime> #include<QLineEdit> #include<QLabel> #include<QPushButton> #include <QTextToSpeech> QT_BEGIN_NAMES…

sqlserver 自定义函数汉字转拼音或首字母

作用&#xff1a; 将汉字生成为全拼音或者首字母&#xff0c;示例 执行自定义函数&#xff0c;将汉字转成对应的首字母 执行自定义函数&#xff0c;将汉字转成全拼音 自定义教程&#xff1a; 一&#xff0c;只取汉字的首字母 代码如下&#xff1a; 执行下面sql 就自定义函数了…

骨传导耳机对人有伤害吗?骨传导耳机和入耳式耳机的区别是什么?

如果是正确的使用骨传导耳机&#xff0c;是不会对人体造成伤害的&#xff0c;在人的耳蜗内有一种细胞很重要&#xff0c;叫做内毛细胞&#xff0c;主要的工作就是负责识别声音&#xff0c;我们能听到声音跟它密不可分&#xff0c;并且内毛细胞在收到损害后是不会自我修复的&…

go Session的实现(一)

〇、前言 众所周知&#xff0c;http协议是无状态的&#xff0c;这对于服务器确认是哪一个客户端在发请求是不可能的&#xff0c;因此为了能确认到&#xff0c;通常方法是让客户端发送请求时带上身份信息。容易想到的方法就是客户端在提交信息时&#xff0c;带上自己的账户和密…

论文阅读_扩散模型_DM

英文名称: Deep Unsupervised Learning using Nonequilibrium Thermodynamics 中文名称: 使用非平衡热力学原理的深度无监督学习 论文地址: http://arxiv.org/abs/1503.03585 代码地址: https://github.com/Sohl-Dickstein/Diffusion-Probabilistic-Models 时间: 2015-11-18 作…

Mqtt学习笔记--交叉编译移植(1)

简述 Mqtt目前在物联网行业的应用比较多&#xff0c;mqtt属于应用层的一个中间件&#xff0c;这个中间件实现消息的订阅发布机制。网上介绍Mqtt的实现原来的比较多&#xff0c;这里不细介绍。 其实在我们之前的产品中&#xff0c;自己也开发的有类似的中间件&#xff0c;除了具…

第 3 章 栈和队列 (算法 3.5,汉诺塔问题递归解法)

1. 背景说明 假设有 3 个分别命名为 X、Y 和 Z 的塔座&#xff0c;在塔座 X 上插有 n 个直径大小各不相同、依小到大编号为 1, 2&#xff0c;…&#xff0c;n 的圆盘。现要求将 X 轴上的 n 个圆 盘移至塔座 Z 上并仍按同样顺序叠排&#xff0c;圆盘移动时必须遵循下列规则&…

面试官问我MySQL和MariaDB的联系和区别,这我能不知道?

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

重装Windows10系统

以前清理电脑我一般是重置电脑的&#xff0c;但是重置电脑会清理C盘&#xff0c;新系统又遗留有以前的系统文件&#xff0c;导致后面配置环境遇到了棘手的问题&#xff0c;所以我打算重装系统。 第一次重装windows10系统&#xff0c;踩了很多坑&#xff0c;搞了两天才配回原来的…

Intel 80386运行模式

Intel 80386运行模式 一般CPU只有一种运行模式&#xff0c;能够支持多个程序在各自独立的内存空间中并发执行&#xff0c; 且有用户特权级和内核特权级的区分&#xff0c;让一般应用不能破坏操作系统内核和执行特权指令。 80386处理器有四种运行模式&#xff1a;实模式、保护模…

Day53|动态规划part14: 1143.最长公共子序列、1035. 不相交的线、53. 最大子序和

1143. 最长公共子序列 leetcode链接&#xff1a;力扣题目链接 视频链接&#xff1a;动态规划子序列问题经典题目 | LeetCode&#xff1a;1143.最长公共子序列 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。 如果不存在 公共子序列 …

在工具提示中使用自绘修改字体

在上一篇文章中&#xff0c;我们学习了如何在应用程序中添加工具提示。在之前的例子代码中&#xff0c;我们通过简单地为创建的工具提示设置了目标字体&#xff0c;这种方法很简单&#xff0c;因为自始至终&#xff0c;我们都只创建了一个工具提示。 但是&#xff0c;如果在应…

【数据结构】2015统考真题 6

题目描述 【2015统考真题】求下面的带权图的最小&#xff08;代价&#xff09;生成树时&#xff0c;可能是Kruskal算法第2次选中但不是Prim算法&#xff08;从v4开始&#xff09;第2次选中的边是&#xff08;C&#xff09; A. (V1, V3) B. (V1, V4) C. (V2, V3) D. (V3, V4) …

亚马逊,eBay,速卖通买家账号是如何实现高权重,高存活率的

现在测评&#xff0c;补单机构越来越多&#xff0c;看似寻常的便捷渠道也潜藏着很大的风险&#xff0c;尤其是当大量机器代替人工、各种质量参差不齐的测评机构被曝光&#xff0c;跨境卖家“踩坑遇骗”的情况也就屡屡出现。很多卖家都选择自己注册买家账号&#xff0c;自己做测…

YOKOGAWA CP461-50处理器模块

数据处理能力&#xff1a; CP461-50 处理器模块具有强大的数据处理能力&#xff0c;用于执行各种控制和数据处理任务。 多通道支持&#xff1a; 该模块通常支持多通道输入和输出&#xff0c;允许与多个传感器和执行器进行通信。 通信接口&#xff1a; CP461-50 处理器模块通常…

一文了解气象站是什么,作用有哪些?

气象站被广泛应用于气象、农业、交通、能源、水利、环保等领域&#xff0c;是一种用于收集、分析和处理气象数据的设备&#xff0c;能够为人们提供及时、准确的气象数据和决策支持。 气象站一般由传感器、环境监控主机和监控平台组成。传感器能够测量各种气象要素&#xff0c;…

【leetcode 力扣刷题】数学题之数的开根号:二分查找

用二分查找牛顿迭代解决开根号 69. x的平方根367. 有效的完全平方数 69. x的平方根 题目链接&#xff1a;69. x的平方根 题目内容&#xff1a; 题意是要我们求一个数的算数平方根&#xff0c;但是不能使用内置函数&#xff0c;那么我们就暴力枚举。我们知道如果y>2的话&am…

2023-9-2 Kruskal算法求最小生成树

题目链接&#xff1a;Kruskal算法求最小生成树 #include <iostream> #include <algorithm>using namespace std;const int N 200010;// 与并查集中的p含义相同 int p[N];struct Edge {int a, b, w;bool operator< (const Edge & W)const{return w < W.w…