找回密码
 会员注册
查看: 12|回复: 0

基于CV的通用自动注册登录方案

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
74111
发表于 2024-9-30 20:08:58 | 显示全部楼层 |阅读模式
基本介绍App的GUI测试,是App测试的重要组成部分。是否使用账号登录App,对于App测试场景的覆盖有着相当重要的作用。大量经验和事实证明,大多数App在未登录状态下能访问的场景和深度都相当有限。此外,测试过程中也会经常需要账号登录登出,切换账号等等操作。因此,更便捷高效的账号登录,对App测试有着重要意义。一般而言,我们可以使用UIAutomator框架编写自动化用例的方式来定制自动登录,但是这种方式的维护成本较高,且每个App都需要维护单独的登录步骤和逻辑。为了更优雅且通用的支持众多App的账号登录,我们推出了这套基于CV的智能注册/登录方案,可支持一键登录、微信登录和手机验证码登录三种登录方式,可登录各种非游戏竖屏App,并已在字节内部投入使用。能力展示示例1:一键登录携程 已关注 关注 重播 分享 赞 关闭观看更多更多字节跳动SE Lab已关注分享点赞在看已同步到看一看写下你的评论分享视频,时长00:570/000:00/00:57 切换到横屏模式 继续播放进度条,百分之0播放00:00/00:5700:57 倍速播放中 0.5倍 0.75倍 1.0倍 1.5倍 2.0倍 超清 流畅 您的浏览器不支持 video 标签 继续观看 基于CV的通用自动注册/登录方案 观看更多转载,基于CV的通用自动注册/登录方案字节跳动SE Lab已关注分享点赞在看已同步到看一看写下你的评论 视频详情 示例2:通过微信登录手机百度步骤截图+操作信息可视化 已关注 关注 重播 分享 赞 关闭观看更多更多字节跳动SE Lab已关注分享点赞在看已同步到看一看写下你的评论分享视频,时长01:090/000:00/01:09 切换到横屏模式 继续播放进度条,百分之0播放00:00/01:0901:09 倍速播放中 0.5倍 0.75倍 1.0倍 1.5倍 2.0倍 超清 流畅 您的浏览器不支持 video 标签 继续观看 基于CV的通用自动注册/登录方案 观看更多转载,基于CV的通用自动注册/登录方案字节跳动SE Lab已关注分享点赞在看已同步到看一看写下你的评论 视频详情 视频展示示例3:通过短信验证码登录抖音步骤截图+操作信息可视化整体架构这套自动登录方案的整体系统由三个部分组成:PhoneDataHelper:一个安装在安卓测试机上的辅助App,在测试机安插sim卡的状态下,可获取手机号和验证码;Shoots:字节自研的自动化测试框架,用于自动化执行每一步操作;TCE:核心算法服务,在收到动作请求后判断下一步应执行的操作和其坐标;核心算法定义动作请求输入/输出登录状态在实践中我们发现,登录的过程可以划分成不同的状态;而上一步的状态会影响到下一步的决策。因此,我们定义了一些典型的登录状态,如:未登录(not_logged_in)、开始尝试微信登录(attempting_wechat)、开始尝试短信登录(attempting_sms)、已登录(logged_in)和卡住(stuck)等。动作请求输入/输出输入:测试机的当前截图和上一状态;输出:当前应执行的操作类型及位置,及当前状态。流程与逻辑整体流程自动登录方案的整体流程如下图所示:1.任务判断在收到请求后,算法服务首先需要判断这是一个正在进行的任务还是一个全新的任务。如果是正在进行的任务就需要对任务是否陷入stuck状态进行判断,从而决定是否要继续这个任务还是放弃。如果要继续推理正在进行的任务,则还需要获取该任务的上一状态,作为当前推理的参考之一。2.分类处理使用预先训练的图像分类模型,当前页面的截图会被标记为“登录页”、“弹窗页”和“内容页”三种页面之一。以下从左到右分别为登录页、弹窗页和内容页的例子:之所以对页面进行分类是因为针对不同页面类型,处理的逻辑也不同,下面会具体讲解。登录页逻辑登录页是整个流程中最重要的页面类型,因此涉及到的状态变化也最多。首先需要决定使用微信登录还是短信验证码登录(若使用一键登录,则一般不会触发登录页)。对于第三方App,优先选择微信登录,同时也支持短信验证码登录;而对于内测App,由于测试使用机架上的设备,数量巨大,无法给在每台设备上保证微信登录状态,因此使用内测账号和固定验证码登录。在选择了某种登录方式之后,还需要完成与之对应的全套登录逻辑。微信登录需要首先点击登录入口,再同意授权;短信登录则需要输入手机号、(点击下一步)、获取验证码、输入验证码,有的时候还需要勾选同意用户协议。微信登录步骤示意图短信验证码登录步骤示意图弹窗页逻辑弹窗页的逻辑比较直白,就是处理各种弹窗。这里除了升级相关的弹窗,全部都是选择“同意”、“允许”等积极含义的选项的。内容页逻辑不是登录页和弹窗页的页面都算作内容页。在内容页上,主要需要寻找的是登录入口。有些情况下能发现直接的登录入口,如下左一图所示。而有些时候则需要两步操作,先点击二级入口才能发现直接的登录入口,如下右二图所示:防卡顿与兜底逻辑如果经过上面三类页面的处理逻辑后没有得出应执行的操作,则会视情况触发兜底逻辑和操作,其中包括上滑、点击“跳过”、点击“”图标、右滑等操作。设置兜底逻辑是为了尽可能提高登录的成功率,防止登录流程卡在某一步进行不下去了。检测相关页面上会有很多控件,推理应该点击哪一个的时候就需要使用到检测的支持。图标检测图标检测应用在以下这些地方:登录页上可能会出现的同意用户协议的勾选框、点“”关闭无法处理的弹窗和点击微信图标触发微信登录的流程。图标检测全部使用了传统CV方法,均由opencv实现。对于登录页的勾选框,进行了两种检测手段:模版匹配+霍夫圆检测。这里首先会对全页文字OCR结果进行关键字筛选,从而确定是否存在勾选框。若存在勾选框, 则可以根据附近的文字大小,判断出勾选框的大致大小,从而将模版调整至合适大小,或是将霍夫圆检测设置合理半径值。在裁切掉干扰部分的图像内容,只留下小部分后,再使用模板匹配/霍夫圆并设定阈值即可。例子如下(左1为通过模版匹配找到方形勾选框,右1中黑色的圆圈为右2的霍夫圆检测结果)对于,由于不确定的大小,在实际实现的时候准备了很多不同尺度的模板,全部去匹配一次以后综合所有匹配结果来整体判断是否能匹配到,并计算具体匹配到的位置。例子如下(紫色框框)对于微信图标这种有明显特征的图标使用了特征匹配,specifically加速鲁棒特征(Speed Up Robust Feature,SURF)。在匹配完所有特征点后需要确定最终的操作位置。这里是做了一个小范围的特征点聚合,从而剔除掉一些“异类”,找出整个匹配的“聚类中心”,从而获得正确的点击位置,如下图所示 (左图里分散的特征点被聚合为右图中标明的点击位置)文本检测文本检测我们使用了字节跳动AI-Lab提供的自研OCR服务,准确率和精确率都较高,且支持多语言OCR。控件特征检测在知晓了页面上的文本后,我们可以通过关键字的设置来确定一些备选的点击位置。但是这样还不足以准确判断正确的点击位置,需要进一步提取特征。1.校验文本是否属于高亮区域 a.例子: b.实现方法:模式一(standalone):计算小范围dominant背景色三通道std,大于0表示是彩色的而不是某一种色度的灰;模式二(by comparison):基于小范围dominant背景色与全页均值的差(三通道),cut-off为全页std(三通道);确定小范围dominant背景色的方法为expand文本区域by50%,记录每个像素点的rgb值,选出出现频次最高的rgb值为小范围dominant背景色;2.校验文本是否高亮 a.例子:(左False,右True) b.实现方法:模式一(standalone):计算文本颜色rgb三通道的std,hard cut-off为15;模式二(by comparison):计算整行每一个词相较于整个页面有多突出(计算和整页mean的差值的std和norm),用来决定哪一个词是最突出的,适用于二级入口页面低端,如下图所示3.校验文本是否为全页焦点字符(字特别大) a.例子:(“点击登录”:True) b.基于文本字体大小与整页全部字体大小均值的差,cut-off为全部字体大小std;4.校验文本是否有外框 a.例子: b.实现方法:使用上面图像检测中的模板匹配方法,抹去文字后和椭圆模板匹配;结语本方案的落地是由包括QualityLab在内的多团队协作完成,特别感谢移动OS自动化团队和质量工程自动化团队的支持。目前,这套基于CV的通用自动注册/登录方案已在字节跳动内部投入使用;实验结果表明,在完全零人工维护的情况下,仍可保证多App跨版本超过50%的登录成功率,每个App/版本可节约人力成本~0.5人天。字节跳动 Quality Lab,是致力于面向互联网行业的软件工程理论研究与技术预研的创新团队,我们的使命是成为全球顶尖的智能工具团队。我们致力于将前沿的 AI 技术应用到质量与工程效能领域,面向行业提供智能化测试工具,例如 Fastbot、ByQI、SmartEye、SmartUnit 等测试服务。在成为全球顶尖的智能工具团队道路上,希冀为质量领域带来更多智能化手段。在这里,你可以用机器视觉与强学,创造具有超强能力的测试机器人,并在数以千计的设备上验证你的算法;还可以实践各种教科书上的测试理论,去帮助业务提升测试效率,组合测试、程序分析,还有精准测试,自动生成单测,缺陷自动修复,都等着你来探索;更可以与国内外顶尖机构进行交流合作,与世界各地的学者一起探索更多软件工程领域的可能性。欢迎各位有识之士加入我们。简历投递邮箱:qualitylab@bytedance.com;邮件:姓名 - 工作年限 - Quality Lab - Fastbot。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-14 04:22 , Processed in 0.530384 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表