谈谈测试与AI

前言

很早之前小W给大家分享过一片文章,用搜索算法来搜索流程图的全路径从而设计单元测试用例(详细可以看搜索算法在搜狗浏览器单元测试中的应用)。这两天,小W就在思考,业界内较前沿的一些公司以及科研机构对这部分又是怎么做的呢?没有用到AI呢?

下面就来看看路径覆盖测试的现状吧。

流程介绍

据国内外的一些高校以及公司所发的论文来看,现在比较前沿的一些做法已经把代码分析与路径寻找做到一起,有的甚至连用例生成都集成在其中。下面就根据我看的一些论文给大家讲讲这个流程:

先做代码的分析(和我之前做的代码覆盖率类似,做一些语义分析,不过需要分析到代码分支),根据分析的结果生成流程图,不一定要画出来,计算机知道每个分支之间的连接关系存在一个数据结构里即可;

根据流程图,结合路径覆盖的算法,计算出所有需要的测试路径(上次我分享的是全路径,现在主流的是用一些人工智能算法分析,得到一些重要的路径);

根据路径,自动设计测试用例(或者是检查当前用例对路径的覆盖度)。

这个是目前业界内一些较前沿的做法。我们这边对于这个流程的主要难点就在于代码的语义分析和路径覆盖的算法。

代码的语义分析

语义分析是编译过程的一个逻辑阶段,语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查。——百度百科

我们这里要做的没有这么复杂,由于我们需要会知道代码的流程,所以我们只需要分析出代码各个部分之间的逻辑关系,根据DAG图来搜索路径。

路径的搜索

这个部分是重中之重,也是目前软件测试测试学发论文的大热领域,上次我分享过的是基于人工智能基础的A*算法的全路径搜索,不过这种这做法虽然搜索出来的路径全,但是也会产生很多冗余的路径。所以目前业界内比较热门的做法有下面几种:

遗传算法

爬山算法

模拟退火

目前的论文有好多做法,但大部分都是基于这些基础上来做些改进的,比如将BP神经网络与GA算法(遗传算法)相结合。

最后

除了路径覆盖测试外,现在研究比较热门的还有就是一些基于UI的人工智能,小W是比较看好这部分的,下次有空可以再给大家分享下。

论文很多,但目前还没听说有大范围投入到实际项目中的,也许未来某一天会。所以这里小W鼓励大家去探索,但也提醒要脚踏实地,把眼下的砖先搬好再说。









































白癜风会治疗好吗
白癜风医院怎么样


转载请注明地址:http://www.yujinxiangqiangzhi.com/rjdz/4540.html


  • 上一篇文章:
  • 下一篇文章:
  • 公司简介 广告合作 发布优势 服务条款 隐私保护 网站地图 版权声明