苹果开发者福音:iOS自动化测试方案Galileo

简介:

Galileo 确实是个科学革命的伟人!
也因为这样,我们给它起了这个智慧饱满的名字Galileo。Galileo是天猫技术-手机天猫架构&体验团队历时8个月倾情打造的,业界全新的iOS自动化测试方案。它与业界现有各种iOS自动化测试方案有着本质的区别,基于苹果的各种黑科技,Galileo研发团队着力打造了真正意义上的无线化、插件化、自动化的iOS测试工具链。


听起来很强大

先通过几个简单的视频向大家展示一下Galileo的强大功能。

  • 支持Instrument Javascript脚本

image

Galileo支持苹果Instrument Javascript脚本
开发者可以通过Native代码灵活扩展脚本接口,实现更加复杂的功能

  • 真正无线的自动化运行工具

image

  1. 支持iOS8.0及iOS8.0以上系统的真机和模拟器
  2. 支持通过app内部入口触发执行自动化
  3. 无需USB连接电脑
  4. 内置Monkey业务,通过配置灵活控制Monkey逻辑
  5. 对接扫码,扫一扫即可运行UI自动化自测试
  • Galileo多屏互动-多机测试神器
  1. 使用自主研发的全链路唯一标示技术同步定位元素
  2. 支持多台真机同步测试
  3. 支持同步点击、同步滚动
  4. 支持同步输入
  5. 支持WebView
  • 全新打造的脚本调试工具

image

  1. 支持真机和模拟器
  2. 可实时查看app运行日志
  3. 实时执行自动化脚本,无需重新编译
  4. 实时查看App元素树,高亮显示选中元素,方便调试


Galileo强大在哪里

  • 无线化
  1. 通过Framework集成到app内部
  2. 无需USB连接
  3. 支持通过扫码运行自动化测试
  4. 支持通过GalileoPCTool调试工具运行自动化测试
  5. 支持通过服务端推送运行自动化测试
  6. 支持通过App内部入口运行自动化测试
  • 插件化
  1. 内存泄露监控插件
  2. CPU监控插件
  3. 卡顿监控插件
  4. 用户自定义插件
  • 自动化
  1. 崩溃自动恢复执行
  2. 服务端定时推送执行
  3. 数据自动收集和上报


深入解读Galileo

一. Galileo的设计原理:

  • Galileo整体系统设计

image

  • Galileo客户端SDK设计

image

二. Galileo客户端SDK:

Galileo客户端SDK主要包含两个库GalileoCore和GalileoUltility,开发人员可以通过pod引入Galileo的客户端SDK

  • GalileoCore

GalileoCore是Galileo的核心客户端SDK,主要包含以下3部分功能:

  1. 模拟硬件级的屏幕触摸事件,并提供相应的接口可以进行方便的调用
  2. 基于Accessibility对iOS的所有Native和web UI进行抽象,并进行了封装,方便编写自动化脚本时进行调用
  3. 基于JavascriptCore事项了Galileo的Javascript执行引擎,用于执行js自动化测试脚本

下面js代码是可以被GalileoCore执行的示例脚本代码:

amkTest('[UIAAlert]同步处理alert和actionsheet',function(target, app){
        UIALogger.logMessage('返回首页');
        UIAPage.currentPage().backToRoot();
        target.delay(2.0);

        target.onAlert(undefined);

        UIALogger.logMessage('进入Alert Controller页面');

        var currentPageElement = UIAPage.currentPageElement();
        var tableView = currentPageElement.withName('UITableView');
        var ele = tableView.scrollToElementWithName('Alert Controller');
        target.delay(2.0);
        ele.tap();
        target.delay(2.0);

        currentPageElement = UIAPage.currentPageElement();
        var eles = currentPageElement.arrayWithName('UITableViewCell');
        for(var index = 0; index < eles.length(); index++){
            var e = eles[index];
            e.tap();
            target.delay(2.0);
            app.alert().dismissWithButtonAtIndex(0);
            target.delay(2.0);
        }
        UIALogger.logMessage('返回首页');
        UIAPage.currentPage().backToRoot();
        target.delay(2.0);
});
  • GalileoUltility

GalileoUltility是Galileo的工具库,主要包含以下3部分功能:

  1. 与GalileoRobot守护程序进行通信,接受来自守护程序下发的指令,并执行对应的自动化操作
  2. 监控自动化执行过程中的内存、CPU、线程、卡顿等信息,并进行收集,开发和测试人员可以通过GalileoUltility提供的顶级浮窗在应用内直接查看这些信息
  3. 与Galileo PC端调试工具进行通信,执行调试工具传输的脚本,并将统计信息传输给调试工具

三. Galileo守护程序:

GalileoRobot守护程序是一个独立的iOS客户端程序,它可以接收voip推送消息,并会将推送的消息传输给被测试的集成了Galileo客户端SDK的应用,我们提供了功能强大的web服务,便于使用者编辑需要推送给GalileoRobot的推送消息,另外也提供了自动定时推送的功能,可以让开发者实现无人值守的自动化服务。

四. Galileo调试工具

Galileo调试工具是可以运行在Mac OSX和windows PC上的脚本调试开发工具,开发人员无需将手机连接电脑,只需要保证手机和电脑在同一个局域网,即可进行自动化脚本的调试,另外使用Galileo调试工具也可以使用模拟器进行脚本调试,脚本开发人员可以使用任何工具进行脚本开发,然后只需要在调试工具中点击运行,即可立即将脚本传输到手机上执行,调试工具具有以下功能:

  1. 在手机或者模拟器上实时执行js自动化脚本,无需使用xcode或者instrument,也无需重新编译
  2. 实时查看脚本执行日志,了解脚本的执行情况
  3. 调试工具提供了实时查看手机界面元素的功能,极大的方便了开发人员编写自动化脚本

五. Galileo服务端

为了达到真正的全自动化执行自动化测试和数据收集分析,我们为Galileo开发了对应的服务端和web界面,该web服务主要有以下两个功能:

  1. 管理用户的自动化任务,并根据用户的配置自动推送给对应的手机执行指定的脚本
  2. 自动从客户端收集自动化执行过程中产生的性能和体验数据,并进行聚类和分析,方便开发人员定位问题

下图是使用Galileo的服务端对猫客进行内存泄露分析得到的数据:

image


通过Galileo服务端,开发和测试人员只需要进行简单的配置,其他的交由Galileo系统,应用的性能和体验问题就可以在不断地自动重复执行过程中暴露出来,开发人员不需要再盯着Instrument的数据流,喝杯咖啡的时间,也许困扰已久的性能问题就会浮出水面。


Galileo与现有iOS自动化测试方案比较

在双十一期间,Galileo自动化运行了3000多次,发现上百处崩溃问题,80多处严重的内存泄露问题,为天猫双十一的客户端稳定保驾护航。

同时,Galileo已经与手淘共同打造的Galileo多屏互动功能,技术的输出极大提高了回归测试的效率。阿里旅行、UC也已经开始接入Galileo。

目前Galileo的服务端正在对接MTL的mcip系统,期望打造从开发提交代码-> 触发自动化测试-> 收集测试结果的一整条测试链路的持续集成系统。预计2017的年中,Galileo客户端SDK将开源,回馈各位挚爱和开源社区。

原文链接

相关文章
|
2月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
8天前
|
监控 测试技术 定位技术
HTTP代理IP响应速度测试方案设计与指标体系
随着数字化发展,网络安全、隐私保护及内容访问自由成为核心需求。HTTP代理因其技术优势成为热门选择。本文介绍HTTP代理IP响应速度测试方案,包括基础性能、稳定性、地理位置、实际应用、安全性测试及监控指标,推荐测试工具,并提供测试结果评估标准。
22 2
|
24天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
29 6
|
1月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
64 1
|
2月前
|
机器学习/深度学习 存储 测试技术
从0到1:如何规划一套流量回放自动化测试方案
本文介绍了流量回放自动化测试的完整方法,从企业战略到交付的四个关键环节:Discovery(深度挖掘)、Define(定义目标)、Design(详细设计)和Delivery(交付与反馈)。通过这些步骤,帮助企业优化系统性能和稳定性,确保产品的高质量。
67 4
|
2月前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
41 3
|
4月前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
184 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
4月前
|
测试技术 数据安全/隐私保护 iOS开发
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
iOS自动化测试方案的第四部分,涵盖了基础环境准备、iPhone虚拟机设置、MacOS虚拟机与iPhone真机的连接,以及扩展问题和代码示例,确保读者能够顺利完成环境搭建并进行iOS自动化测试。
399 0
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
|
4月前
|
测试技术 Swift iOS开发
探索iOS自动化测试:使用Swift编写UI测试
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是保证船只不偏离航线的灯塔。本文将带领读者启航,深入探索iOS应用的自动化UI测试。我们将通过Swift语言,点亮代码的灯塔,照亮测试的道路。文章不仅会展示如何搭建测试环境,还会提供实用的代码示例,让理论知识在实践中生根发芽。无论你是新手还是有经验的开发者,这篇文章都将是你技能提升之旅的宝贵指南。
|
2月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
下一篇
DataWorks