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

    xiaoxiao2023-06-08  167

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

    听起来很强大

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

    支持Instrument Javascript脚本

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

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

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

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

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

    深入解读Galileo

    一. Galileo的设计原理:

    Galileo整体系统设计

    Galileo客户端SDK设计

    二. Galileo客户端SDK:

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

    GalileoCore

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

    模拟硬件级的屏幕触摸事件,并提供相应的接口可以进行方便的调用基于Accessibility对iOS的所有Native和web UI进行抽象,并进行了封装,方便编写自动化脚本时进行调用基于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部分功能:

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

    三. Galileo守护程序:

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

    四. Galileo调试工具

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

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

    五. Galileo服务端

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

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

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

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

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

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

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

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

    原文链接

    相关资源:RFID技术中的双频带GPS/Galileo射频前端接收系统的设计方案
    最新回复(0)