案例 民生银行基于AI的UI自动化测试实践

来源自:媒体公告    点击数:1   发布时间:2024-08-31 03:03:38

  民生银行2018年起启动云测试平台建设并基于Appium搭建APP自动化测试子系统,WEB自动化方面使用Selenium和RPA流程机器人来测试探索。随着自动化逐步推广,APP自动化和WEB自动化测试在脚本兼容性、脚本维护成本等方面逐渐暴露出一些瓶颈问题。

  APP自动化测试方面,由于机型众多、操作系统版本差异大,浏览器内核不统一,APP控件多种多样,使得现有的基于页面控件识别的APP自动化测试越来越依靠定制化开发才能完成控件操作和脚本编制,脚本维护成本高;APP兼容性测试方面,适配各种机型往往要录制多套脚本,大规模机型的兼容性测试由于脚本的不适配不得不采取人工对各机型逐一操作,测试工作量大,测试效率难以提升。

  WEB自动化测试方面,当前基于页面对象技术的WEB自动化检测系统在兼容性测试、各类页面控件支持、脚本维护成本等方面也出现与APP自动化测试相同的瓶颈问题。尤其是在脚本开发方面,因被测系统页面DOM结构较为复杂、UI框架升级、控件ID不固定等问题造成脚本的开发工作量大、可读性差、复用率低。

  为解决APP自动化和WEB自动化测试的痛点问题,民生银行测试团队经过深入调研分析决定引入AI能力,基于云测试平台打造UI自动化检测系统,涵盖APP、WEB、PC自动化测试。将传统的基于控件的对象识别和操作,转换为基于AI自然语言处理的图像、文字识别与操作。通过AI技术的对象识别可以突破很多页面控件的难题,实现跨操作系统、跨浏览器的自动化测试,大大降低脚本的开发和维护成本。

  1.UI自动化测试介绍。UI自动化测试(User Interface Automation Testing)是对被测软件用户界面(UI)进行自动执行测试的一种方法,使用专门的测试软件来模拟用户与应用程序界面的交互,以验证其功能和性能是不是满足预期。UI自动化测试根据面向的软件大致上可以分为三类:APP自动化、WEB自动化、PC自动化。

  2.UI自动化测试技术的发展历史。以APP、WEB、PC自动化为视角,UI自动化技术上的演进过程大致如图1所示。

  UI自动化测试技术的发展是软件测试领域慢慢的提升和创新的一个重要表现。从早期的基础工具到现代的复杂框架和解决方案,UI自动化测试技术经历了从初期录制回放、脚本化,到跨平台和移动测试、云测试、AI和机器学习,未来的UI自动化测试将更看重智能化和用户体验。

  3.民生银行UI自动化测试技术的发展过程。2018年以前主要使QTP/Selenium等WEB自动化工具进行简单自动化执行和数据准备。2018年民生银行自主研发了云测试平台,同时开发实现了基于控件识别的APP自动化和WEB自动化。2019—2022年APP自动化测试和WEB自动化测试在重要系统来进行推广。2022年中旬启动UI自动化检测系统建设项目,2023年初开始实施,经过一年的时间完成了UI自动化检测系统的建设并与云测试平台对接。

  民生银行提出基于AI的UI自动化测试目标时,重点考虑了五个方面,即安全运维的自动化、效能提升的自动化、实时监测的自动化、对外赋能的自动化、自主可控的自动化。

  安全运维方面,考虑到APP自动化所需的移动电子设备真机运行,手机长时间不断电运转导致的过热、电池鼓包进而引发火情等安全风险隐患一直存在,因此民生银行定制了手机专用屏蔽机柜(如图2所示)。机柜具有屏蔽外界信号(内置AP)、防火防爆、大功率风扇,温度、湿度、烟感等监测手段,并配有监控大屏及告警机制(如图3所示),手机温度也可实时监测(限Android,iOS不提供API),极大提升了运维环境的安全性。

  效能提升方面,为解决脚本开发效率问题,云测试平台引入自然语言、OCR、图像识别等AI能力,AI脚本编写门槛低,业务、开发、测试岗位人员都能够迅速上手。由于无控件识别的兼容性问题,一套脚本即可覆盖Android、iOS或不同浏览器之间的测试,降低了脚本开发周期。

  实时监测方面,当UI自动化大面积推广时,执行机的脚本执行监控与管理特别的重要,例如自动化任务中的脚本分发情况、任一设备的脚本执行进度、实时画面,这些对自动化测试的故障排查、设备资源合理分配起到及其重要的作用。民生银行开发了APP、WEB、PC执行机旁观者模式(如图4所示),任一自动化人员都可远程实时观察设备执行情况,可按机柜及设备层、自动化项目、自动化任务等维度监控,也提供多维度搜索执行机精准监测。

  对外赋能方面,AI自动化任务调度执行的服务除了开放给云测试平台以外,还提供给DevOps流水线,作为版本介质部署后的质量门禁调度执行,承担了上线前投产介质的自动化验证。

  自主可控方面,除了支持英伟达GPU显卡和x86架构AI服务器外,还适配了华为昇腾AI处理器310和海光Z100LGPU显卡,具备了自主可控的能力。

  UI自动化检测系统包括八个核心模块:AI脚本管理、AI数据管理、AI智能服务、UI自动化引擎、UI自动化任务管理、测试报告管理、管理中心、监控大屏等。重点介绍以下几个模块。

  1.AI脚本管理。AI脚本支持自然语言语法,支持联想输入,支持语法合规检查、相对定位、关键词转义、参数传递、密码键盘、手势密码、短信验证、数据库JDBC查询、接口调用等,支持for、if嵌套、正则表达式、断言,此外还支持自然语言脚本和基于控件识别的脚本混合语法。支持手写脚本和页面录制自然语言脚本。在自定义操作方面,支持局部OCR和图像识别、支持操作力度设置等。

  2.AI数据管理。包括自动化数据准备,数据集、图像标注等。自动化数据准备已涵盖民生银行零售、对公、直销银行、信用卡、海外核心以及众多产品系统快速造数,UI自动化任务可添加自动化数据集,数据集支持反复使用和消耗型使用两种模式,并可根据使用情况自动触发数据补足。图像标注支持在UI自动化脚本录制时框选页面图片并命名,通过自然语言语法操作。此外,系统支持图标训练,将APP和WEB系统的各系统化图标通过深度学习训练,无需每次图像标注即可默认识别。

  3.AI智能服务。提供OCR、图像识别等AI能力,部署在民生银行大数据AI中台,是UI自动化的核心能力。

  4.UI自动化引擎。针对APP、WEB、PC自动化提供多种执行调度模式,例如:APP执行可按设备型号、操作系统类型、操作系统版本、页面尺寸等设备信息调度,也可按照空闲程度、串行/并行和执行次数调度。WEB执行可按浏览器类型、版本号调度。PC机可按操作系统类型调度。

  5.UI自动化任务管理。包括APP、WEB、PC自动化任务、APP兼容性测试任务,APP群控混控任务的管理,可实时查看任务执行状态、脚本执行状态、脚本执行步骤完成情况等。

  民生银行UI自动化测试(如图5所示)主要使用了OCR和图像识别的AI能力来代替原有控件识别,通过约定的自然语言语法使得脚本编写更规范,语义识别更加准确,AI脚本执行设计过程如下。

  以自然语言脚本【点击确定】步骤为例:①上位机/执行机先进行分词,分为【点击】和【确定】。其中【点击】为关键字,被判断定动作,而【确定】是目标文本。②确定UI自动化检测系统中是不是真的存在【确定】的同名标注,如果有,将相应的标注样图取出。③截取设备屏幕,将设备截图、目标文本【确定】、图片标注样图(如果有),发给AI服务。④AI服务对截图上的全部文本进行识别,定位到目标文本【确定】,如果找不到相应的文本,则使用【标注】进行识别,定位到目标图片,将文本位置坐标或图片位置坐标返回给上位机/执行机。⑤上位机/执行机将坐标和前面分词得到的动作【点击】转化为针对设备的操作命令,发送到设备,完成执行【点击确定】的操作。

  1.自然语言(NLP)。自然语言脚本主要实现思路是:定义语法规则文件,编写语法分析器功能,进行关键词的提取,将行为关键词和对象关键词转化为页面操作指令。

  自然语言语法库中包含了常用的前端操作行为和视觉逻辑判断,结合APP、WEB、PC被测系统的真实的情况,在页面对象的选择上不但支持方位、还支持顺序判断,详细情况如下。

  支持的具体操作类型包括:点击、双击、长按、等待、滑动、拖拽、输入、手势密码、安全键盘、变量赋值。

  支持的具体的语义逻辑包括:如果目标对象存在,则点击目标对象;如果目标对象不存在,则点击目标对象。操作对象支持:文字、图标、图片,并支持以变量作为参数。

  操作支持关联的方位词和顺序:上/下/左/右,表示实际操作的是对象关联的方位词方向上的对象,并支持指定操作方位词方向上的第几个对象。

  对象查找策略:按照指定的类型查找,如未指定类型则按照文本/图片/图标的优先级顺序进行查找。超时时间:支持在任意操作后面添加超时时间选项。

  除支持上述语法外,还支持自定义滑动,可调整滑动位置和力度(长短)、自定义操作区域(可调整对目标对象的查找范围)、映射屏操作模式(点击即录制,自动生成脚本)。

  2.OCR。OCR是AI赋能UI自动化底层最重要的控件定位识别技术。它采用深度学习和传统CV技术,UI自动化检测系统中的OCR大致上可以分为文本检测和文本识别两个步骤。经过检验,OCR在手机APP端的识别精度为99%以上;在WEB和PC桌面应用中识别精度98.79%。

  在APP自动化方面,OCR技术实现了任意类型(例如九宫格、全键盘、数字键盘、密码键盘等)的有序和无序键盘识别,在WEB自动化方面,OCR技术实现了密集小字体识别、密集表单识别、多层次表单识别。

  3.图像识别。在UI自动化测试中,有文字的控件定位,可以用OCR识别解决。对于没有文字的控件则需要用以图找图来解决。以图找图是保存一个控件的样图,在脚本执行时用样图定位控件的位置,接着进行相应的操作。

  以图找图的难点在于:不同设备上同一个图标的大小不同,而且与设备尺寸变化比例不一定一致;图标大部分是简约的线条设计,特征点很少;图标背景随场景变化而变化。

  为解决以上问题,图像识别使用了模板匹配算法,将源图缩放形成与目标图匹配的模板图,减少匹配的次数;同时为解决多模板图搜索效率问题,结合源图所在位置做局部搜索,提高匹配速度。为了尽最大可能避免误识别,由模板匹配算法识别到的结果与模板进行相似度计算。相似度计算由CNN模型实现,目前正例精度为98.35%,反例精度为99.15%。

  (1)通用图标识别。每个APP应用和WEB应用都会设计专属的图标,有些图标样式具有通用性和相似性,例如“齿轮”代表设置、“电话”代表联系方式、“放大镜”代表搜索、“垃圾桶”代表删除等,这些图标已经是约定俗成的,人们在操作程序时,不需要有文字说明,就能很自然地理解它们的意义。

  通过深度学习,建立图标识别模型,可以定位并识别程序界面上的常见图标,并把它们语义化,配合自然语言,完成更流畅的自动化脚本编写。通用图标无需再进行图片标注和以图找图,目前图标识别模型支持80类常见图标的识别,识别精度为96.08%。

  (2)UI智能识别。UI智能识别主要应用于真机群控和混控上,即操作一个设备,别的设备跟着一起操作,可通过群控混控实现快速的多设备兼容性验证。它的底层实现是利用孪生网络,使用纯图像的特征判断控件的相似性,达到定位控件目的。

  UI自动化检测系统自2023年初建设以来,在民生手机银行、个人网银、企业网银、柜面系统、移动运营系统、零售风控系统、非零售风控系统等对客系统来进行了一期推广。重点覆盖TOP100场景的主交易,不间断地积累自动化案例库。经过实践,在以下几个方面取得了一些成果。

  1.测试效能提升。脚本开发方面,由于自然语言学习门槛低、能够迅速上手,加速实现了全员UI自动化。AI脚本解决了APP自动化、WEB自动化脚本兼容性问题,录制一套脚本即可在iOS、Android、鸿蒙系统手机执行,也可以在Chrome、IE、Firefox等浏览器上执行,维护成本减少了2/3,且不存在定制化开发的工作,解放了测试研发人员生产力。脚本录制从每天5—10条提升到每天15—30条,编写效率提升200%。由于基于AI的脚本依赖图像和文字识别,界面元素识别不受限,测试场景覆盖率提升了近40%。

  人效分析方面,以手机银行为例,每2周进行一次全量回归测试,全年累计进行25次左右。每次使用10—14台Android+iOS设备,通过AI赋能UI自动化能够在一定程度上帮助手机银行测试组减少8.86人年人员投入。与手工测试相比,人效提升2.36倍左右。

  2.质量保证。自动化执行方面,UI自动化实现了端到端的测试,覆盖全链路的系统;对前端页面、前后端调用、页面兼容性、客户端兼容性、浏览器兼容性等方面的测试提供了有效补充;常态化回归执行APP自动化脚本和WEB自动化脚本,有效发现影响性分析不足导致的开发测试遗漏。

  以手机银行为例,针对不同测试专题执行基于AI的UI自动化测试任务,包括:机型适配性测试、安全工具测试、场景入口测试、客户端版本迭代测试、版本部署验证测试,以及首次安装/覆盖安装等兼容性测试等。不同专题制定不同执行计划、调度不同数量机型,确保执行的时效性。

  3.自主可控。在自主可控方面,基于AI的UI自动化测试已适配信创GPU显卡及AI服务器,PC自动化支持信创操作系统,做到完全自主掌控,执行效率高于控件识别。

  4.对外赋能。UI自动化测试与Devops流水线集成,实现了投产前每次部署介质的自动化验证,确保投产介质对重要场景交易无影响。

  云真机服务通过将手机放置专用机柜中集中管理,远程操作,提升了测试资源的复用率,目前在线台,日均在线万次自动化任务执行。

  未来,民生银行将继续利用UI自动化测试工具,大力推广端到端的自动化回归测试,重点提升APP自动化、WEB自动化测试场景覆盖率、交易覆盖率,保障系统快速迭代的交付质量。