您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 菏泽分类信息网,免费分类信息发布

Testin云测CTO陈冠诚:AI在自动化测试中的创新机会点

2020/1/7 3:25:07发布146次查看

近日,主题为“测思未来”的tica 2019阿里巴巴质量创新大会于杭州举办,作为云测试领域的开创者及下一代测试的引领者,testin云测公司受邀出席会议,cto陈冠诚做《ai在自动化测试领域的应用——ai引领下一代测试新航向》主题分享,介绍ai技术与自动化测试的结合方式,以及如何借助融合自然语言处理、文本识别、图标识别等技术的下一代ai测试产品itestin,提升测试的易用性和工作效率。
以下为演讲实录
一、ai技术的成熟使智能化测试成为可能
最近一两年随着深度学习技术浪潮的诞生,图像识别和自然语言处理领域技术的发展使得智能化测试成为可能。今天,我想和大家分享ai如何引领下一代测试的新航向。希望通过我的分享抛砖引玉,我相信不管是阿里,还是业界的同行,在整个测试开发领域里,大家都做了很多的实践,所以我今天希望跟大家分享一下我的观点。
二、测试框架的痛点
软件自动化诞生了非常多的软件,不管是qtp,还是基于图形化的自动化测试框架,它们都有非常多的痛点。
第一,学习成本高,需要一个具备测试开发能力的人写测试代码。我们知道测试分层,代码级的测试,服务级的测试,还有ui级的测试,我们把单元测试做得足够好,很多工作不用在接口层和ui层做,但是测试行业,因为人员结构的问题,不是所有公司都可以招聘很多有开发能力的测试工程师,作为初级或者说不太具备开发能力的从业人员,能否用一个简单的方法把自动化跑起来是一个问题。
第二,维护成本高,业务逻辑更新之后,修改脚本花费的时间比较长,如何不用改脚本,把维护成本尽可能降低到最低是第二个挑战。
第三,跨平台,让测试脚本尽可能复用。我们看很多的app,包括现在的小程序,它们的业务逻辑有共通的地方。从技术角度上去看,未来,能不能实现跨平台和应用的复用,是我们看到的典型问题。
三、ai测试方向
可喜的是,随着深度学习的这一波浪潮,我们确实看到一些问题可以在我们的量变基础上,开始产生一定的质变。目前能够看到是,在自动化测试领域,深度学习在视觉相关的处理方面,比如图像的处理、文字的处理,包括整个测试的自然语言的交互上面,确实有可取之处,能够把整个自动化的水平往上提升一个台阶。
实践方向分为四个部分,第一部分,是机器像人一样看懂人话,比如,你告诉它,你帮我测试我的登录功能,它帮助你测试,你告诉它,测试我的转账功能,你告诉它逻辑之后,它可以帮你生成各种各样的用例,当然今天我们还没有完全做到这点,但我觉得这是未来大的方向,就是机器像人一样看懂人话。
第二,是机器怎么样像人一样理解图形。随着多媒体、短视频和长视频出现在应用里,不管你是搜索图标,一个图片,还是一个app里的导航栏、文字、图文等典型场景,人可以识别哪些是图,哪些是文,有没有可能让机械像人一样知道哪些是图,哪些是文,哪些是导航放眼未来,随着自动化程度的越来越高,机器应该可以像人一样理解整个图形,包括整个版面的逻辑关系。
第三,是自定义图标,人不可能穷举各种各样的图标,因为图标是带灵感和创造性的。机器有没有可能比较好的理解自定义的图标,这是我们想要解决的第三个问题。
第四,是机器有没有可能像人一样执行测试用例,核心点是有没有可能在执行过程中对图片、文字或者是业务逻辑进行很好的识别。
四、取得的进展
跟大家分享我们取得的一些进展,第一个是自然语言的脚本,第二个是ocr文字识别,第三个是以图找图和通用图标的识别。
第一,自然语言脚本。在整个测试中有非常多的工作,我们核心目标是降低测试工程师编写脚本的难度,实现一个目标——会说中文,就能够写自动化测试。
如图所示,右边是我们可以做到的效果,左边这个大家都是熟悉的,写一段自动化测试代码,右边是我们itestin实现的能力:比如向下滑动的操作,只要写“向下滑动”这四个字,就可以做向下滑动的操作。我们希望用纯中文的方式实现跨平台,无视控件变动,降低脚本维护成本,利用自然语言的优势,提升编写效率,让其易理解,易维护。大家阅读别人阅读的自然语言的脚本,理解比较容易,维护难度也降低了。这是我们目前的语法规则,核心是会中文就会写测试程序,会用手机就理解别人写的测试程序。
第二是在ocr方面的实践。传统的ocr文字识别方法有很大的局限性,识别率不够高。我们面临的场景是应用的文字识别,首先是印刷字体。做测试的时候,基于业务功能做逻辑的回归,需要识别准确的对象,往往是核心功能的按纽,把这些按钮进行特征分析,会发现它们典型的特征是印刷字体。其次,很多时候都是水平排列,或者是垂直排列,或者是带角度排列。这导致我们在做识别的时候,要做的任务存在哪个象限,就是在学界和工业界大家比较公认的ocr或者是文字识别的象限。最难的就是右下角,通用手写体的识别,你用手机拍的海报是毛笔字,怎么识别它我们的手机截屏是属于右上角,属于第二个难度,不是属于最困难的一类。今年有一个专门的文字识别竞赛,目前来讲,最高识别精度在70%左右。比较容易是左下角,基于定制化的表格,有很强的规则,比如,身份证的文字有多少个字都是固定的。
首先讲文字识别,现在做深度学习是讲端到端,端到端可以分为两个环节,第一个环节文字检测,标注出应用的截屏哪些是文字块,哪些不是文字块,这就是文字的检测,第二个阶段是把检测出来的文字块进行识别,识别出文字块由哪些单词,以及标点符号组成。
文字识别在深度学习浪潮起来之前,有基于传统机器学习的方法,有两种是典型的,基于非常多的规则,包括精巧算法的设计,相对不是这么通用,但是垂直领域的使用下,精度还好。但是,一旦遇到自然场景,带角度、旋转、光线,因为它们不是靠训练数据驱动的,识别效果不如cptn或者是east算法这么好。
但是,我们识别的时候需要做精度和性能之间的平衡,后面两种方案最大的问题是必须要求gpu才能支撑一个比较好的性能,有好的gpu才能有500毫秒的性能。我们这个产品可以云端部署和私有化部署,私有化部署如果要求客户配置一个gpu才能跑起来,对于有的客户来讲不能承受,我们内部实现多个版本,cpu和gpu方案都支持,可以根据用户的场景和预算灵活配置。
下面讲讲识别。文字识别是基于crnn的模型做的。这是业界里面相对通行的方法。基于crnn的思想,最核心点就是使用crnn的方法提取图像的特征,通过循环神经网络,利用ocr典型的特征去识别,不是一个一个的字符去识别,而是识别一个词,词有上下文的关联关系,登录是有上下文,循环神经网络可以实现。
在深度学习和机器学习里有算法和数据,还有算力。这里面又牵扯到另外一个问题,数据怎么来的问题。我们知道最简单的方法,或者是最容易想到的方法是做大量app界面截屏或者是人工做标注,但是你想要拿到千万级别的训练数据,用人工的方式效率非常低。
我们的考虑是,从手机app的角度上面来讲,用自动化测试的引擎,做大量app的测试执行。比如,有5万台手机可以做大量的手机的截屏,先做第一步的筛选,用控件树的信息,把文字的内容和控件的内容进行关联。再用机器做校验,然后用人工做校验。用ocr做检测,主要是对位置的框定。把自己的传统的ocr识别匹配上面的信息给对应起来做框定,可以拿到很多数据。其实靠数据做检测不一定准,我们还有人工复核,我们请testin云测的ai数据标注部门来做,机器生成之后,机器做二次校验,人工再做校验,得到源源不断的数据。
还有一个有意思的点是数据的泛化,有很多场景数据模拟显示不全,不同的背景,模拟分辨率低,模拟立体可以通用机器的方法实现,通过数据的变形之后拿到大量训练的数据样本。
这些都和数据训练相关,还有一个部分是性能。很多客户不具备用gpu部署的能力,我们在想有没有办法在cpu上面跑,openvino是英特尔基于自身现有的硬件平台开发的一个框架。这是我们跟某一家云厂商的付费ocr高精度版本在app上的测试结果,我们比他们在app和web场景下精度更高。
第三,以图找图和图标识别。我们想要实现三个目标,看左边第一个图,这是一个典型的图文场景,我们看到手机的截屏,不管任何一个图片在屏幕上面的位置会发生变化,甚至背景颜色也会不一样,我们希望实现在不同的背景颜色下面找到同一个图。
第二是常见的系统按纽,典型安卓三个按纽,返回,主页,还有系统功能,有很多图标是通用的,比如,主页加一个搜索图标,通用图标能不能做更好的识别。
在这个图标里有一个问题,不同的设备上,分辨率不同,识别图标的大小不一样,第二个很多的图标是非常简约的设计,特征点非常小,不像做猫或者是狗,目标和整个轮廓性比较丰富,我们很多图标只有一个线,非常的抽象,这个特征非常少的情况下,怎样进行识别,给我们带来非常多的挑战。
第三是场景或者是背景会发生变化,比如,暂停按纽在不同播放音乐过程当中背景发生变化,但是人眼可以看出来是同一个图标,但是机器怎样进行识别我们用的算法很简单,我们不认为深度学习就是唯一的方法,特征工程+深度学习结合更好,因为传统算法很轻量,这是我们不为深度学习论的最核心的原因,因为它需要gpu才能跑起来。第二点我们在整个全屏搜索上做了大量优化,优化全屏搜索效率。第三是相似度的判别器。我们和行业大厂的以图找图的工具做过对比,他们的精度在68-70%,我们的以图找图精度可以达到97%。
还有一类是通用图标,这里使用100w+图标标注数据做训练。国外有学者做开源的数据集,他们也是用机器控件进行识别和人工标注的方式结合。这里回到另外一个问题,我们讲深度学习或者是ai,有多少人工才有多少智能。我们人工标100万的图标级,比如,典型的前进,搜索,收藏等等典型的图标。举一个应用的例子,自动在整个应用里面找出哪些是“个人中心”的图标,“更多”这样的图标,包括“主页”这样的图标,还有“返回”的相关图标。
举一个真实qq音乐app的应用场景。你点击搜索,它直接点击搜索,通过ocr直接找点击搜索音乐这四个字,这时我们输入周杰伦,它就会输入周杰伦在输入框里面。点击周杰伦《说好不哭》,就会通过ocr里面输入周杰伦《说好不哭》,点击第三个《说好不哭》,第三个是我们的关键字,他会被点击到,这里有一个相对位置,我们在移动目标的下侧找另外一个目标,这是点击下侧,输入画像向右滑动,点击暂停按钮。这个时候,暂停按纽是人工标注好,点击分享按纽,分享按纽是我们识别过的这是一个分享按纽。
数据在这个行业里面是最大的壁垒,为什么这么说呢,因为在算法、算力、数据这三个要素中,我认为今天来讲,算法可以通过招到优秀的人才解决,很多算法大家分阶段可以学习学界发表的相关论文,但是数据相对来说壁垒更高。我们有大量的真机,做了各种各样的自动化测试,通过这些测试,确实有可能让整个门槛变得更高。
比如,ocr,前几天遇到识别错误的bug,用户用非常艺术化的字体进行识别,我们训练的字库里没有这个字体。因为我们见到了这个字体,所以想到要把这个字体拿到训练数据里来,加入到ocr文字识别里,让整个文字识别的精度更高,这是我发现数据在ai应用里面最核心的一个场景,或者是最核心的一个壁垒。
五、总结
ai对于自动化测试,我觉得今天能够在三大环节进行赋能,测试用例的生成,测试的执行,测试结果的生成。整个测试的执行环节,通过文字的识别,图像的识别,图标的识别,让整个测试的执行变得更加稳定,兼容性更好,而不用基于传统机械控件的方式,因为ocr可以通过自动检测,哪怕文字,包括控件在页面上换了位置,只要还在这个页面上,算法都可以自动进行检测,原来用控件的方式,你要告诉整个脚本控件变成了什么。所以整个识别变得更加智能,包括在整个测试结果的解析上,不管是自动进行ui异常的识别,兼容性的识别,崩溃的识别,还有各种数据的分享,把整个测试的结果变得更智能。
深度学习核心的价值就是处理重复性的工作,比如,文字的识别,图标的识别,这些都是重复性的工作。我们对技术有深刻的信仰,相信技术能推动整个行业发展,不管是深度学习的突破或者是强化学习的突破,会在整个自动化测试行业上有更多的进展。我相信testin云测也好,阿里也好,还是在座的各位同仁,大家都需要做更多的尝试,期待下一次有机会跟大家一起交流,向大家学习和分享ai怎样把云测试变得更好。
关于testin云测
testin云测创立于2011年,是一家人工智能技术驱动的企业服务平台,为全球超过百万的企业及开发者提供云测试服务、ai数据标注服务、安全服务及推广服务。testin云测的使命是助力产业智能化,即在全球产业化升级浪潮中,testin云测通过工具、技术、人才、服务四位一体的共享,加速企业智能化、数字化、科技化的进程,为企业在各行业中的智能化升级与商业化落地保驾护航,释放创新力量,赋能企业改变世界。

菏泽分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录