干货 | 携程APP/Web功能和视觉测试平台-Watcher

Android原生App爬虫-实现原理 爬虫常见两种情况:第一种情况,爬虫伪装成浏览器,向服务器要数据;第二种情况,在服务器往浏览器发送数据时,爬虫从中拦截,获取信息。 这两种情况,无论是暗号(参数)不对还是行为不对,都会被服务器识别。​那么有没有什么办法可以做到几乎毫无痕迹地爬取数据呢?答案是有的。 阅读详情

 作者简介

 

Felix,携程高级测试经理,关注无线测试、DevOps、测试框架方面的技术和动态。

从自动化测试诞生以来,始终阻碍其成功落地实施的重要因素之一是频繁变更的业务需求,导致自动化测试维护成本极其高昂。尤其是随着近些年敏捷开发,DevOps开发模式的流行,一方面迫切地希望在开发生命周期内提高自动化测试的占比,从而缩短测试时间,增加开发迭代次数来加快开发进度和保证开发质量。而另一方面,随着迭代开发频率加快,需求的频繁变更却进一步加剧了维护自动化测试稳定性的难度。这两者不可调和的矛盾往往导致了自动化测试实施的难以为继,很多时候自动化测试成为了鸡肋,食之无味,弃之可惜。

那么如何减少需求变更对UI自动化测试的影响,如何另辟蹊径顺利地进行UI自动化测试?本文后续一一为你解答。


一、自动化测试不是银弹

 “自动化测试不是银弹” 这个观点已经得到业界的普遍认同,那么为何业界还是如此推崇自动化测试呢?测试完全的自动化固然不太可能,但在合适场景使用合理的自动化测试,却依然可以发挥出巨大的作用,得到较高的收益。

对于UI自动化测试而言,业务频繁变更导致的UI变化是UI自动化测试失败的主要原因。如果我们能尽可能地消除UI变化对自动化测试的影响,则势必会极大地提高自动化测试的稳定性。

梳理下一条UI自动化测试用例的结构,我们可以简单地归纳出如下图所示的关系:

 

自动化测试用例结构简化图

 

UI界面中控件的变化无疑是很频繁的,给自动化测试的实施带来很大的障碍。如果能切断业务操作和结果断言对于控件的依赖,则可以很大程度地提高自动化测试的稳定性。而随着图像识别技术的进步,通过图像识别技术摆脱对控件的依赖正逐渐成为可能。


二、视觉测试

  

UI自动化测试在验证预期结果是否正确时,通常是通过验证预期结果某些关键信息来实现的,比如是否出现某个关键字,是否标题正确等等。这种验证方式固然简单,却也存在不少的不足,其中最大的不足就是无法验证UI的样式。

UI是最终呈现在用户面前直观的东西,UI交互和样式的好坏直接决定了用户对一款产品的直观印象。视觉测试是验证UI是否正确展示给用户的测试手段之一,通过视觉测试可以找出产品在可视化中存在哪些缺陷,比如字体,布局等问题。那么如何实施视觉测试呢,业界最普遍的做法就是图像比对,具体实施步骤网上相关的资料不少,这里就不赘述了。


三、Watcher

Watcher是一个基于图像比对的App和Web视觉测试平台, 主要分为三个部分:SDK,图像比对服务,Watcher比对平台。

Watcher SDK主要用于与自动化测试框架(如Selenium,Appnium , Airtest)结合来实现与Watcher比对平台的交互(比如图片上传,客户端信息收集,验证结果返回等等)。Watcher比对平台则主要进行图像管理,测试配置管理,测试结果查看,人工确认等工作。图像比对服务则提供了图像比对,AI识别等服务。

Watcher部署架构图

 

Watcher作为视觉测试平台,其实现原理也遵循视觉测试的基本步骤,大致可以分为以下几个步骤:

1)在UI自动化测试框架引入Watcher SDK,编写测试用例并在测试用例合适的位置调用Watcher的Check方法进行图像比对;

2)Watcher平台在接收到截图后,会首先进行判断是否有对应的基线图,如果有基线图,则会与基线图像进行比对;如果没有基线图,则会将此次截图自动作为基线图。

3)查看图像比对的结果

a. 如果比对差异是由功能变更引起的,则审查通过并以最新截图作为新基准图;

b. 如果比对差异确定是缺陷,则记录缺陷,基准图保持不变;

视觉测试流程示意图


3.1 Watcher SDK

进行视觉测试的第一步就是收集被测系统的信息和截图。为此,我们编写了支持目前主流自动化测试框架的SDK,分别为Appnium SDK,Airtest SDK,Selenium SDK。

Wathcer SDK的主要作用包括:

  • 收集被测系统的环境信息(分辨率,机器信息等)

  • 定义用例信息

  • 截屏并上传到服务器进行比对

使用Watcher SDK非常的简单,将SDK引入到自己的自动化项目后,在测试用例中编写如下语句就可以使用,实现无缝接入。

watcher = Watcher_util()
watcher.watcher_open("测试用例名称")
watcher.watcher_check("验证点1")
....测试代码
watcher.watcher_check("验证点2")

Airtest SDK编写测试用例代码示例


3.2 Watcher图像比对服务

  

图像比对服务是一个RESTFUL的服务站点,对外提供了一系列的服务用于进行图像对比,并返回对比结果。该服务是一个微服务的站点,如果图片比对压力较大,可以通过横向扩展的方式来扩展图像对比的服务能力。


3.3 Watcher比对平台

Watcher比对平台是一个Web站点,主要负责图像比对,比对测试结果展示,测试配置等工作。在Watcher比对平台中,我们可以很直观的查看比对的最终结果,测试用例的简短信息,并对成功/失败/新增的用例用颜色和图标加以区分。

比对平台结果列表页

 

对于对比失败的测试用例,仍然需要测试或开发人员进行人工审查确认,相关人员可以在比较结果详情页中查看对比的详细结果。如果测试用例实际为通过,则将结果标记为通过,如需替换基准图,则亦可以选择将最新截图替换为基准图。如果测试结果实际为失败,则将结果标记为失败并记录缺陷。

 

对比结果详情页

 

在对测试结果进行审查的过程中,也可以对测试用例的对比设置进行修改,比如设置忽略区域,设置阈值等。

四、实时比对

传统的图像比对测试是最新的截图与基线图进行比对,通过与基线图的差异来识别是否存在缺陷,我们称之为基线比对。通过实践,我们发现在有些场景下,基线比对的效果并不理想,比如查询结果页。该页面具有较强的时效性,也许时隔一天,查询的结果就截然不同,自然就对比对的结果造成了很大的干扰。所以我们在Watcher中加入了实时比对。

实时比对跟基线比对并没有本质的区别,区别只在于跟谁比的问题。开启实时比对后,我们可以在新旧版本上同时执行自动化用例,Watcher会将收集到的截图进行比对,从而消除时效性带来的干扰,提高比对的准确性。

基线比对和实时比对示意图

 

五、图像比对算法

   

视觉测试的关键在于图像比对,那么图像比对算法的优劣就成为了视觉测试是否成功的关键所在。Watcher提供了多种图像对比的模式,分别为精准比对(像素),内容比对以及AI比对。

  

5.1 精准比对

 

精准比对是通过像素比对来实现的,也是Watcher默认和最常用的比对方式。这里我们使用OpenCV中的算法来实现。大致算法流程如下:

 

精准比对的算法流程

 

5.2 模板比对

  

模板比对是先在基线截图中圈出需要比对的区域截图,然后在最新截图中根据该区域截图进行图像模板匹配的一种对比方式,也是通过OpenCV的算法实现。

模板比对算法流程图


5.3 内容比对

  

精确比对的优势在于比较全面,页面的样式,内容都在比较范围之内,但有时过于灵敏,稍微有些样式的变动就会影响比对的结果。所以对于有些页面或区域,也可以选择内容比对的方式。内容比对主要通过图像的文字识别实现。

 

内容比对算法流程图

 

5.4 AI比对

  

AI比对是Watcher中的一种尚在探索试用阶段的比对方式,通过AI图像识别技术,我们即可以智能的忽略正常差异的部分(比如日期,控件大小变化等),也可以识别出存在异常的部分(比如图像缺失,文字堆叠等),使用YOLOv3实现。

AI比对算法流程以及部分识别的效果

 

六、结束语

  

在本文中,我们介绍了Watcher如何结合UI自动化测试框架实现视觉测试以及在实施视觉测试过程中的一些实践所得。Watcher提供了从SDK,图像对比,结果展示到人工确认的一整套的功能和视觉测试解决方案。目前在团队使用过程中得到了积极的反馈:

  • UI自动化测试用例数量缩减50%以上,部分模块缩减80%;

  • UI自动化测试执行较之前更加稳定,执行时间缩短30%以上;

  • 提高测试人员排查和分析问题效率;

当然在使用过程中也发现了很多的不足,比如在有些场景下比对误报率偏高,不支持跨平台比对等,这些都是我们需要改进的地方。我们还会在AI比对中挖掘更多的适用场景,比如随着AI算法的优化,也可以将AI图像识别扩展到控件查找上,从而更便利的编写自动化测试用例。

【推荐阅读】


京东5折优惠+满减活动ing

《携程架构实践》

京东

当当

《携程人工智能实践》

京东

当当

 “携程技术”公众号

  分享,交流,成长

Fiddler插件Watcher Watcher作为一个fiddler下的插件,可帮助漏洞扫描,可满足安全测试的轻量扫描需求 立即下载

相关推荐

AirtestIDE(UI自动化测试工具)v1.2.0官方免费版64位

Airtest IDE是一款跨平台多端的UI自动化测试工具,由网易游戏内部工具团队开发并开源,适用于游戏和App,能够使用它快速简单地编写脚本!欢迎需要此款工具的朋友们前来下载使用。 软件特色   自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程,自有编辑器一站式解决   支持基于图像识别的 Airtest 框架,适用于所有Android和Windows游戏,会截图就能写脚本

干货 | 携程Mock本地化实践

作者简介Peter Sun,携程高级测试经理。一、引言这里说的Mock指的是系统测试或者接口测试场景下,模拟被依赖的其他服务接口进行响应返回的工具。测...

携程技术 528

web前端携程首页

基于html5 css javascript jquery写的这个携程首页代码,还有登录和注册界面的代码。

9.ElasticSearch预警服务-Watcher详解-监控时间线数据

来看个小例子:固定周期采集数据,并设置数据预警机制采集数据配置,拉取RSS数据并存储到ElasticSearch中.1.下载并安装最新的logstash1.5版本 地址:https://www.elastic.co/products/logstash   2.安装rss插件 cd logstash-1.5.0 bin/plugin install logstash-input-rss ...

宇智波带土 1191

伸缩布局之携程旅游

伸缩布局 自适应 可以适配电脑 平板 手机

仿携程网手机端

仿携程网手机端页面,有需要的朋友可以下载使用,谢谢

Watcher详解 工作机制, Watcher客户端注册、Watcher 服务端注册

Watcher详解、接口 在 ZooKeeper 中, 接口类 Watcher 用于表示一个标注你的事件处理器,其定义了事件通知相关的逻辑,包含 KeeperState 和 EventType 两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:process(WatchedEvent event)如果WatcherWatcher 触发条件: 增、删、改 ( ...

weixin_30672019的博客 364

WebUI自动化测试平台

这是一款无需编码即可实现WebUI自动化测试的平台。为了方便新手尽快熟悉平台,每一页都有帮助向导!

AI+自动化测试:如何让测试编写效率提升10倍?

软件开发中,自动化测试是保障质量的重要环节,但编写测试用例不仅费时费力,还很难确保覆盖到所有关键场景。AI 的加入正在改变这一现状,让测试用例的生成更加智能化,帮助开发者更高效地完成测试工作。本文将结合实际开发中的痛点,探讨如何利用 AI 进行单元测试、集成测试和 UI 测试,并提供可运行的示例代码,帮助团队提升测试效率和覆盖率。以前,写测试是个费时费力的工作,现在 AI 可以自动生成代码,大幅提高效率。过去,测试覆盖率难以保证,现在 AI 能自动补全边界测试,减少遗漏。

记录从移动端、鸿蒙到物联网与AI的完整实战与思考。专注于分享可复用的工程方案与产品思维,尤其深入鸿蒙生态与全栈开发。以十年工程与管理沉淀,为你提供清晰的技术纵深路径。坚信技术的价值在于“贯通”与“落地”。 4000

自动驾驶入门到进阶完整指南:感知、预测、规划、端到端、仿真测评与场景挖掘全解析

对小白来说,不建议一开始直接冲端到端大模型。先学数据和坐标系:否则所有结果都看不懂。再学 LiDAR 3D 检测:最容易建立空间感。再学 BEV/多相机感知:这是当前主流。再学轨迹预测:理解交互和多模态。再学规划控制:理解车为什么这样开。再学仿真和闭环评测:理解 open-loop 和 closed-loop 差异。最后学端到端/VLM/VLA:这时候你才知道它到底替代了哪些模块。贯穿始终学习场景挖掘和安全测评:这是工业界最核心的能力之一。

u013250861的博客 394

关于SVPWM七段式五段式调制后的相电压和线电压波形——大疆DJI技术笔试

1.SVPWM七段式/五段式调制的相电压和线电压波形 脉宽调制(PWM)在并网变流技术中得到了广泛的应用。与正弦脉宽调制(SPWM)的控制方法相比,SVPWM方法具有直流侧电压利用率高,电压谐波小,易于数字化实现等显著的优点,从而使SVPWM在实际的应用中越来越普遍。TMS320F28335是32位浮点的DSP控制器,具有150MHz的高速处理能力,18路PWM输出,与前几代数字信号控制器相比,性能平均提高了50%。其中具体的SVPWM理论实现的原理,请参考我的博客永磁同步电机的矢量控制策略(七)一一一SV

昔时扬尘处 2万+

想让AI 驱动 UI 测试?大佬推荐这个自动化工具!

视觉测试是一种软件测试方法,用于评估用户界面 (UI) 或图形用户界面 (GUI) 的视觉保真度。视觉测试可以解决应用程序的外观问题,并帮助您捕获其他类型的测试可能遗漏的缺陷。

nhb687096的博客 1553

基于MATLAB的奇异谱分析(SSA)算法详解

本文详细介绍了基于MATLAB的奇异谱分析(SSA)算法。文章首先阐述了SSA的基本概念、历史发展及其与传统信号分析方法的对比优势,指出SSA作为一种非参数、非线性时间序列分析方法,特别适合处理非平稳信号。随后详细解析了SSA算法的核心原理与数学模型,包括轨迹矩阵构建、奇异值分解、分组与重构四个关键步骤。文章还提供了完整的MATLAB实现框架和代码解析,涵盖参数检查、轨迹矩阵构建、SVD分解、分组策略和重构过程。最后,通过信号分解、去噪和预测三个应用案例展示了SSA的实际效果。

qq_42212808的博客 168

企业级UI自动化测试落地痛点与AI提供的解决方案

1.元素定位机制的先天缺陷传统 UI 自动化高度依赖 Selector API 体系(包括 ID 选择器、类选择器、XPath 等),这种基于 DOM 结构的定位方式造成了测试代码与前端业务代码的深度耦合,即当界面发生细微调整或浏览器环境切换时,测试脚本往往需要同步更新。

software_test010的博客 1247

从被秒封到稳过Cloudflare!Canvas/WebGL/WebRTC多维度浏览器指纹隐身全实战

反爬和反反爬,本质上是一场持续的博弈,没有100%的隐身,只有不断升级的伪装。网上很多教程只给了个基础的噪声代码,却没讲透反爬的检测逻辑,导致你用了还是被封。这套方案的核心,不是简单的API重写,而是站在反爬的角度,模拟真实用户的所有特征,保证所有指纹的一致性、合理性、完整性。目前这套方案我用了半年,跑了上千万次请求,稳过国内国外99%的主流反爬平台,没有出现过一次因为指纹关联导致的批量封禁。大家有什么更狠的反爬场景,或者更好的伪装技巧,欢迎评论区一起交流。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1195

CH7034B显示模块原理图设计,已量产

显示桥接板的价值,不在于简单把 RGB 排线换成另一种接口,而在于能否把并行视频、时钟、显示控制、模拟输出和辅助配置同时组织成稳定系统。当前这张 CH7034B 原理图就是这种思路:U3 CH7034B 作为核心桥接芯片,输入侧是 LCD_R0~R7、LCD_G0~G7、LCD_B0~B7、LCD_DE、LCD_HSYNC、LCD_VSYNC、LCD_CLK 与 LCD_BL,输出侧则通过 DAC0~DAC2 和 DDC_SC/DDC_SD 形成模拟显示接口边界。

不脱发的程序猿 165

从2024到2026:一个测试开发的AI自动化测试的探索之路

本文分享了UI自动化测试从传统元素定位到AI智能决策的技术演进历程。从最初面临XPath定位脆弱、跨平台兼容性差等问题,逐步引入Pytest框架、Airtest图像识别和OCR技术构建测试体系。重点突破在于通过OpenAutoGLM启发,研发了基于多模态大模型的AIPopupHandler智能弹窗处理工具,使测试脚本失败率降低70%。

旦莫的博客 2138

Logstash安装部署

1. 部署及安装所用的用户不能是root。

lmj3732018的博客 4295

携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX

官网文档这篇文章稍稍水一下,主要讲下部署过程里踩的坑,因为部署的过程主要是运维同学去处理了,我只说下踩到的坑,官方的教程是可行的。目前该项目对zuul项目的录制回放会有点问题(录制的样例会出现路由匹配符/order/**,而不是URI,批量回放会出问题),已联系携程AREX开源团队,正在处理,有进度会更新该博客。

HumorChen的博客 1903

抖音小程序:解决获取手机号报错 getPhoneNumber:fail auth deny,登录注册时需要获取用户手机号,getPhoneNumber一直提示错误(Uniapp抖音小程序报错也能解决)

抖音字节小程序获取手机号报错getPhoneNumber:fail auth deny,抖音 小程序 获取手机号 报错 getPhoneNumber:fail auth ,抖音小程序获取手机号始终返回拒绝,抖音小程序获取手机号,已经过了试运营期但依旧报错如何解决,调用 tt.getPhoneNumber 接口报错,登录注册时需要获取用户手机号,getPhoneNumber一直提示getPhoneNumber:fail auth deny,此能力仅支持小程序通过试运营期后可用,默认获取权限,无需申请;unia

✅ 精选推荐文章 4305

S7-200 SMART PLC 数字量阀门控制功能块(FB)汇总

S7-200 SMART PLC功能块的各种写法可以查看专栏的其它文章,链接地址如下:S7-200 SMART PLC 子程序功能块(阀门控制)_RXXW_Dor的博客-优快云博客_plc控制阀门开关程序由于S7-200 SMARTPLC的子程序种种功能、容量限制,有时想实现多次调用的子程序可能并不是太容易,这篇博客还是给出一些推荐写法,供大家参看。

RXXW_Dor的博客 4002

基于AI实现能“自愈”的UI自动化测试

之前的文章中,我分享了用Midscene.js + Qwen-VL实现视觉大模型驱动的UI自动化测试,文章受到了很多小伙伴的点赞和关注,可见AI在UI自动化测试方面的应用算是测试行业一个普遍需求。

人生不怕起点低,就怕没追求 2960

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Web Apps视觉测试简介

Visual testing (sometimes called visual regression testing or UI testing) is the process of reviewing software for purely visual integrity. Unlike the tools you use to make sure your app is behaving a...

409

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

干货 | 质量保障新手段,携程回归测试平台实践

作者简介Sedro,携程资深测试工程师,专注于测试技术探索及测试工具研发。一、系统回归问题回归测试是软件生命周期一个十分重要的环节,但项目在随着版本的逐步迭代,功能日益增多,系统愈加复...

携程技术 575

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

干货 | 每天上百万通话,携程电话系统性能测试实践

作者简介Mario ,携程资深测试工程师,负责携程呼叫中心测试。一、背景作为全球领先的在线旅游企业,携程注重服务质量,并拥有全球最大的旅游呼叫中心,分别部署在国内自建系统、国内和国外第...

携程技术 1382

airtest自动化测试_AirTestselenium基于Web实现UI自动化测试

一、简介:1、AirtestIDE:跨平台的UI自动化测试编辑器,适用于游戏和App;2、对于自动化测试新手而言,AirTest是一款可快速上手的UI自动化测试框架;3、在阅读本文章之前,希望大家可以先去看下官方文档,对于airTest是什么,能做什么,以及怎么使用都有非常清晰的介绍;4、官方文档链接地址为:http://airtest.netease.com/docs/cn/index...

weixin_39971138的博客 1331
上一篇: 干货 | 用户画像在携程商旅的实践
下一篇: 干货 | 五大实例详解,携程 Redis 跨机房双向同步实践
携程技术
博客等级 码龄10年 3716粉丝 324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值