前言
上一篇小W就提到过,测试与人工智能,我很看好的一个方向就是UI相关的智能测试。
具体可以分成两部分来说:
-
各种动作的封装、调度与执行
-
结果的判断
今天想和大家分享的,主要是第二点,就是判断当前软件的情况是否是异常。其实我们这边现在已经在做一些类似的事情,稳定性测试就是随机跑动作,看看有没有崩溃。不过这个判断异常太过于简单,只能根据崩溃来判断,普通的软件异常监测不到。
这里想和大家探索的是利用人工智能来判断软件异常,现在的图像识别技术已经很成熟了,如果能建立合适的模型,借鉴异常检测来判断软件是否异常也不是没有可能。
异常检测简介
先来看什么是异常检测?所谓异常检测就是发现与大部分对象不同的对象,其实就是发现离群点。异常检测有时也称偏差检测。异常对象是相对罕见的。
下面来举一些常见的异常检测的应用:
-
欺诈检测:主要通过检测异常行为来检测是否为盗刷他人信用卡。
-
入侵检测:检测入侵计算机系统的行为
-
医疗领域:检测人的健康是否异常
常见的异常检测算法
有许多的异常检测算法,不过本篇博客只会详细介绍基于模型的技术。主要有以下几种异常检测方法:
-
基于模型的技术:许多异常检测技术首先建立一个数据模型,异常是那些同模型不能完美拟合的对象。例如,数据分布的模型可以通过估计概率分布的参数来创建。如果一个对象不服从该分布,则认为他是一个异常。
-
基于邻近度的技术:通常可以在对象之间定义邻近性度量,异常对象是那些远离大部分其他对象的对象。当数据能够以二维或者三维散布图呈现时,可以从视觉上检测出基于距离的离群点。
-
基于密度的技术:对象的密度估计可以相对直接计算,特别是当对象之间存在邻近性度量。低密度区域中的对象相对远离近邻,可能被看做为异常。
模型的建立
这部分也是最难的,我们需要建立合适的指标去分析当前软件的界面是否异常。这里我也给分了两种:
-
混乱式异常
-
功能性异常
混乱式异常就是说,界面乱了,不用管产品功能逻辑,普通人一看就知道这个界面是异常的,这种模型应该是更多依赖于图像识别。
功能性异常主要就是说,一些常用操作,UI应该有对应的响应。比如我点了个复选框,没有显示勾上,或者点了最小化按钮,界面还在最前端等等。
当然,这些小W都还在探索,哪位大神如果对这方面有研究的话欢迎赐教,不胜感激!
最后
小W认为,无论是测试还是开发,最底层的很多工作以后都可能会渐渐被人工智能所替代。路漫漫其修远兮,吾将上下而求索。
下篇预告:后面小W将会和大家分享各种动作的调度算法,可以利用人工智能尽可能优化调度算法以发现更多的异常,这个目前已经有好多成型的模型了,不过需要有完善的判断异常机制(也就是本文所说的)才能正在运用到实际工作中。