人工智能结合自动化测试在智能电网系统中的未来应用

2018-12-20 08:31健,王
软件 2018年11期
关键词:测试用例图像识别决策树

郭 健,王 勇



人工智能结合自动化测试在智能电网系统中的未来应用

郭 健,王 勇

(国网汇通金财(北京)信息科技有限公司,北京 100053)

人工智能技术在当今许多领域都有广泛应用,自动化测试技术在软件研发领域也倡导和实践了许多年,但如何将二者相结合并在实际系统研发中落地实现,目前还是测试领域中的蓝海。本文通过人工智能领域中的三个点(图像识别、自然语言处理、决策树)入手,讨论在智能电网业务系统中的自动化最佳实践方式。

人工智能;自动化测试;智能电网

0 引言

人工智能[1-2]技术是目前最热门的科技话题之一,并且在人们的日常生活中的方方面面都有人工智能技术的应用,如人脸识别手机解锁,语音文字相互转换,智能家居,无人驾驶等等。越来越多的企业都希望将人工智能技术引入到自身的产品中并通过其智能和便捷性带来企业收益。

另一方面,自动化测试技术[3-6]是各个企业进行系统研发过程中必不可少的一个环节,而且随着敏捷开发的应用越来越广,自动化测试技术在整个研发周期以及各个迭代过程中的比重也越来越大,但传统意义上的某些自动化测试技术也不断面临新的挑战,如自动化测试脚本维护时间过长,控件元素定位不准确,上手使用难度较大等等。如何有效的解决这些问题也是很多企业在实际研发过程中提高软件质量的痛点。

企业在自己的产品和系统中进行测试和质量验收,其期望值已经从原有的软件功能验证逐步转移到从实际业务操作出发的业务流程验证,即所谓的“端到端”测试,这就给测试人员提出了更高的要求。因为在“端到端”测试过程中,一个业务流程通常会涉及到多个系统,而每个系统本身又有其独特的点,例如一个业务系统在执行某个业务操作过程中需要对上传的文件进行图像识别[7]后根据识别结果才能判断如何继续,这就要求自动化测试在测到该步骤时对被测对象进行图像识别处理(OCR)。

在国家电网系统中,各个子系统类目繁多,数据交互频繁,各个省之间的同类业务操作还有差异化需求,同时,数据量庞大,业务渠道也是多种多样,又有很多与第三方平台进行操作的要求。在这种情况下,如何有效的利用AI技术与现有成熟的自动化测试技术相结合,从而达到满足各种“端到端”业务需求的自动化测试,就成了当前需要思考和解决的问题。

由于AI领域涉及到的分支众多,而且业内尚无成熟的体系结构与方法论,因此本文仅讨论AI领域中的三个分支:(图像识别、自然语言处理、决策 树[8])在自动化测试中的可行性和收益。从而起到抛砖引玉的作用。

1 理论介绍

1.1 图像识别理论

计算机的图像识别技术和人类的图像识别在原理上并没有本质的区别,只是机器缺少人类在感觉与视觉差上的影响罢了[9]。人类在进行图像识别过程时,是利用大脑将图像的特征值跟进自身的需求提取出来,并和记忆中的图片进行搜索对比,从而得出结论。

计算机视觉技术也是如此,只是计算机在进行图像识别时分为两个部分,一是通过算法将图像的特征值提取出来,二是将提取出来的特征值信息进行逻辑判断并与已有参考图片进行对比。因此,图像识别的准确性和效率取决于1)参考样本的数量;

图1 原始图片(左)与计算机处理后的图片边缘(右)

2)算法的适用性和速度。

1.2 自然语音处理理论

自然语言处理(NLP, Natural Language Processing)是实现人类与计算机之间通过自然语言进行通信的技术。

自然语言处理体系还是相对很复杂的,包括词库、词法分析、语义分析、短串分析、舆情分析等多个分支。

自然语言处理技术的难点在于消除语言中的歧义性和多义性。同一个语句的表达,联系上下文的语境不同,所要表达的意思也会有所区别;而且不同的语种之间的语法结构不同,这也对计算机的理解带来挑战。

图2 自然语言处理技术体系

当前比较主流的6种自然语言处理库有[10]:

Ÿ ● NLTK(自然语言工具包)用于分词、词形还原、词干提取、解析、句法分析、词性标注等任务。该库具备可用于几乎所有 NLP 任务的工具。

Ÿ ● spaCy是NLTK的主要竞争者。这两个库可用于同样的任务。

Ÿ ● scikit-learn 提供一个用于机器学习的大型库,包含用于文本预处理的工具。

Ÿ ● gensim 是用于话题空间建模、向量空间建模和文档相似度的工具包。

Ÿ ● Pattern库是作为web挖掘模块提供服务的,因此,它也支持NLP任务。

Ÿ ● polyglot是另一个用于NLP的Python包。它不是很流行,但也可以用于大量NLP任务。

除了上述库之外,近年来云服务(如百度云、阿里元等)中也逐步接入了自然语言处理相关的接口,这使得人们使用既有NLP技术更为方便和准确。但各个云服务提供商所提供的NLP接口略有不同,方法、付费原则、结果呈现也有差别。因此需要根据实际需求合理选择和使用云端的自然语言处理服务。

1.3 决策树技术原理

决策树(decision tree)是一类常见的机器学习方法,目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树[11]。

从上述描述中可以看出决策树有以下一些特点:

(1)决策树的出现是为了满足机器辅助人类进行判断这个目的的;

(2)决策树是机器学习的一种。既然是机器学习,则它的原理就一目了然了,即通过大量的学习数据进行分析建模,产生逻辑决策树,再将新的数据应用于该决策模型,从而拿到决策结果;

(3)决策模型是动态产生的,根据学习数据的多少和具体数值的不同,即使是同一逻辑,其产生的决策模型也可能不同。

目前常见的决策树算法有:lD3决策树、C4.5决策树、CART以及决策森林等。不同的决策树算法适用于不同的场景,有些对离散数据有较好的建模作用,而有些对连续数据更为有效。具体每种算法的计算方法不在此一一列举,感兴趣的朋友可以参考附录[11]。

图3 决策树示例

2 实现方式

从上述理论介绍不难看出,每一种AI技术所涵盖的理论知识和技术体系都很丰富,这么庞大的技术体系如何实际落地就是当下企业需要思考的问题。

我们可以换个角度思考这个问题,既然技术点很多,不如我们真正从企业业务流程出发,在梳理业务分支和相互关系的过程中,就可以发现哪些业务用传统的自动化测试技术就可以测试到,而哪些是传统的自动化测试技术无法做到的。这些做不到的难点的特征是什么,现有的AI技术是否可以解决这个问题,等等。这样我们就做到了有的放矢,具体问题具体分析,从而更快速的解决我们的痛点。

2.1 图像识别在自动化测试中的应用

智能电网系统是一套非常复杂的系统,从渠道平台的角度来讲,PC和移动端APP都有应用;从业务对象的角度来看,国家电网的内部系统,各省公司的子系统,第三方系统(如支付宝、银行等)相互交互;从技术栈角度来讲,各种前端应用、中间件集群的调度、后端各种服务以及数据库的协作, 都会带来大量数据的处理。对于含有大量数据的报表的自动化测试验证,传统意义上的方法是先用代理驱动(WebDriver)定位到页面上的单元格控件元素,然后根据元素属性取出具体业务数值,最后再将业务数值与期望结果数值进行对比校验。但如果采用图像识别技术,则可以操作为先对期望结果页面进行截屏,再对被测页面进行截屏,最后只需对比两个截屏图片的相似度即可。

此外,有许多的业务环节是需要验证用户的身份信息的,比如注册、登录、付费、清分、结算等等。传统的自动化测试中对于文本类的鉴权信息是可以做验证的,比如登录名、账号、密码等,但对于图形类的信息,如身份证照片、图形验证码、人脸识别等,如何高效准确的进行鉴权测试呢?这也需要图像识别技术的支持。将待测图片进行特征值提取处理后得到待验证数据,然后将该数据与校验库中的值进行对比,找到最相近的值作为识别的最终值。这个过程中并不进行实际结果和期望结果的对比,只是得到图中的数据以便保证端到端的自动化测试流程不会中断。

图4 自动化测试中传统方法(左)与图像识别方法(右)对比

图5 决策树技术在自动化测试中的应用

2.2 决策树在自动化测试中的应用

在智能电网的系统中,还有一类应用是授权类服务,如签约过程中的资格审核。这类服务的特点是要按照一定的风控规则对用户信息进行评审,并根据评审结果授权用户相对于的资质。

这类服务的自动化测试,如果采用传统方式是不容易做到的,因为规则有可能经常变化,而这些变化对于自动化测试又是不透明的。但决策树技术可以解决这个问题。

我们可以根据风控的维度,对已有的风控处理后的数据进行机器学习,然后动态建立决策树模型。当新的数据进入到模型时,采用精度和性能最合适的算法对该对象进行授权判断,从而在不打断整个端到端测试流程的情况下完成授权部分的逻辑判断。

2.3 自然语言处理在自动化测试中的应用

测试用例是自动化测试不可缺少的一个组成部分。测试脚本的执行都是依赖于测试用例步骤和顺序的。但自动化测试的测试用例往往有很多格式和数据方面的特殊要求才能让脚本顺利执行下去。这就导致了自动化测试的使用门槛太高,只有极少比例的人能掌握和使用这项技术。

将自然语言处理技术融入测试用例的编写当中,使得不论是中文还是英语,用户只需要按人类自然的表达方式进行用例内容的填写,而后台用自然语言处理服务(注:这种服务可以直接采用第三方提供的服务接口,也可以自己编写脚本加入特定的逻辑判断)将使用者的用例描述内容转换成自动化测试脚本能够识别的测试数据和边界值等。如此一来就降低了自动化测试的使用门槛,使得专业测试人员以外的用户(如产品设计人员,开发人员,运营人员等)都可以很快上手自动化测试,这样就提高了测试的执行率和覆盖程度,从而使得系统质量有所提升。

图6 自然语言处理技术在测试用例设计中的应用

3 实践及成果

3.1 图像识别在大数据自动化测试性能提升方面的实践

在智能电网的一个测试案例中,需要对移动端APP的一个页面中的表格数据进行校验,该表格还具有分页功能,每页的待测数据量在300个左右,总页数约30页,因此待测数据总数约9000个。如果采用传统的自动化测试技术,需要对每个页面的每个单元格控件进行定位,然后再获取里面的数值。由于移动端传统WebDriver方式定位控件很慢,导致整体测试完这个节点需要约2~3个小时,这是“端到端”测试中不能接受的。采用了如2.1章节中的截图技术后,每页的截图时间为1秒以下,而且期望结果可以预先准备,实际结果与期望结果的对比校验时间也为1秒左右,考虑分页的前后端网络交互时间,因此图像识别技术采用后,该测试点的整体用时在20分钟以内。明显的提高了自动化测试的效率。

3.2 决策树在风控方面的实践

在智能电网的业务中,有很多地方都需要进行用户的信息鉴权,比如与银行进行贷款业务之前,要审核用户基本信息并给出相应的贷款额度。对于不同的用户,风控规则和考察维度在一定时间内是固定的,基于此,自动化脚本采用C4.5算法,先通过数据库中的已有数据进行机器学习和决策树模型建立,然后根据被测数据的值和决策树规则给出了相应的贷款额度值。

在这个过程的实践中,笔者比较了ID3算法和C4.5算法的准确度,由于这两种算法都适用于离散型数据维度,刚好符合业务场景,但C4.5算法采用了信息增益率来矫正每次决策树的权重,较之ID3算法的信息增益矫正法更为合理,因此最终采用了C4.5算法。

3.3 自然语言处理在测试用例编写方面的实践

在进行测试用例设计的阶段,有一些考察点是要进行边界值划分的。例如小于1;大于等于1且小于5;大于等于5。笔者采用自然语音处理的服务对数值划分进行了解析,使得不论是用例设计者采用以下哪种方式填充测试用例,自动化测试脚本都能准确的识别区间边界值并顺利执行自动化测试。

表1 自然语言处理在边界值划分中的应用示例

Table.1 NLP usage example in boundary design for test cases

这样,测试用例的编写人员就不用再受到各种边界值格式的束缚了。从而提高了测试用例设计的速度。

4 结语

人工智能技术与自动化测试技术的结合,还有很多种可能性。上述的应用实例也不仅仅是在智能电网这一个领域具有可行性,相信在其他工业或者商务领域也能发挥相似的价值。

但不论两者的组合多么千变万化,我们的出发点都是一致的,那就是从企业业务真正需要的地方去思考如何落地自动化测试。这样我们才能做到有的放矢,才能将人工智能技术和自动化测试技术都发挥其最大的应用价值。

[1] 汪子尧, 贾娟. 人工智能的前生、今世与未来[J]. 软件, 2018, 39(2): 223-226.

[2] 梁子鑫. 探讨新时代背景下新兴技术在人工智能中的应用[J]. 软件, 2018, 39(7): 166-169.

[3] 侯桂波, 王喜伟, 于春玲, 佟雪松. 持续集成与自动化测试在国家电网电力营销系统开发中的应用[J]. 电网技术, 2009, 33(20): 164-167.

[4] 王如迅. 基于SWTBot 技术的软件自动化测试的研究与实现[J]. 软件, 2016, 37(02): 121-128.

[5] 钱汉伟. GAT: Windows 平台下 GUI 软件自动化测试框架研究[J]. 软件, 2018, 39(3): 72-76.

[6] 李沫. 视觉检测系统在汽车仪表自动化测试方面的应用[J]. 软件, 2018, 39(5): 126-128.

[7] 侯贵洋, 赵桂杰, 王璐瑶. 草莓采摘机器人图像识别系统研究[J]. 软件, 2018, 39(6): 184-188.

[8] 赵力衡. 基于决策树的手写数字识别的应用研究[J]. 软件, 2018, 39(3): 90-94.

[9] Imagination Tech. 图像识别的原理、过程、应用前景, 精华篇![OL]. (2017-12-16)[2018-11-12]. https://www.sohu. com/a/210831666_468626.

[10] 机器之心. 6大最流行、最有用的自然语言处理库对比[OL]. (2018-08-05)[2018-11-12]. https://36kr.com/p/5146684.html.

[11] 刘建平, Pinard. 决策树算法原理[OL]. (2016-11-10). [2018- 11-12]. https://www.cnblogs.com/pinard/p/6050306.html.

AI Combined with Automation Testing and Its Future Application in Smart Grid

GUO Jian, WANG Yong

(State Grid huitong jincai (Beijing) information technology co., LTD, Beijing, 10053, China)

AI (Artificial Intelligent) is one of the hottest technology in many industries nowadays, and automation testing is being used in software development life-cycle and become more and more important, but how to combine both of them and implement them in reality systems’ development is still blue ocean. This article aims to narrate the best practise of 3 points of AI technology (OCR, NLP and Decision Tree) in automation testing in smart grid systems.

AI (Artificial Intelligent); Automation testing; Smart grid

TP393. 06

A

10.3969/j.issn.1003-6970.2018.11.047

郭健(1980-),男,测试总监,多年从事自动化测试以及测试管理工作;王勇(1982-),男,研究方向:互联网+电力营销服务、互联网技术。

郭健,王勇. 人工智能结合自动化测试在智能电网系统中的未来应用[J]. 软件,2018,39(11):224-229

猜你喜欢
测试用例图像识别决策树
基于SmartUnit的安全通信系统单元测试用例自动生成
基于Resnet-50的猫狗图像识别
一种针对不均衡数据集的SVM决策树算法
高速公路图像识别技术应用探讨
图像识别在物联网上的应用
决策树和随机森林方法在管理决策中的应用
基于混合遗传算法的回归测试用例集最小化研究
图像识别在水质检测中的应用
基于决策树的出租车乘客出行目的识别
基于依赖结构的测试用例优先级技术