[发明专利]基于启发式规则的并发式自适应随机测试方法有效
申请号: | 202110674680.5 | 申请日: | 2021-06-17 |
公开(公告)号: | CN113468047B | 公开(公告)日: | 2022-05-17 |
发明(设计)人: | 沐燕舟;王赞;刘爽 | 申请(专利权)人: | 天津大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 天津市北洋有限责任专利代理事务所 12201 | 代理人: | 李素兰 |
地址: | 300072*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 启发式 规则 发式 自适应 随机 测试 方法 | ||
1.一种基于启发式规则的自适应随机并发测试方法,其特征在于,该方法包括以下步骤:
步骤1、随机执行待测试并发程序,作为本流程的输入:首先随机执行一次待测程序,得到结果;如果本次执行已经触发了程序中包含的错误,则直接将检测到的错误信息输出,退出运行;否则,将本次随机运行成功的程序调度路径的信息且包含的内存访问模式记录下来存储在集合T中,作为积累信息,为之后的搜索检测提供指导来矫正之后的检测方向;
步骤2、从初始状态开始探索程序状态空间,具体处理包括:随机执行完待测程序没有遇到错误后,重新回到程序状态空间的最初始状态,从上往下重新探索程序的状态空间;每次探索首先获取到待测试并发程序当前状态下所有可行的直接子状态,将其全部存入队列Q中,然后计算队列Q中所有子状态和目前探索过的并行程序状态组成的调度路径与队列T中已经探索过的程序调度路径的距离度量;接下来,将队列Q按降序排序,选出队首元素即与集合T相比距离最大的子状态出队列,然后继续执行;如果排序之后的队列Q中的队首元素的距离度量和第二个元素取值一样,则认为此次排序无效,进入启发式规则排序阶段;
计算基于内存访问模式的距离度量,表达式如下:
其中,dtst(tracea,traceb)表示它们对应的内存访问模式集合之间包含的内存访问模式个数,tracea,traceb分别表示两条不同的程序调度路径,分别表示两条程序调度路径包含的内存访问模式集合,两条程序调度路径之间的距离;
步骤3、进行启发式规则排序选择,具体包括:计算队列Q中距离度量最大的子状态和目前探索过的程序状态组成的调度路径对应的三种启发式规则的取值,如果根据三种启发式规则中有任意一种规则能够从队列Q中区分出一个取值最大的子状态,则排序结束,将该子状态出队列;否则,从所有距离最大的子状态中随机选择出队列;
三种启发规则分别为线程切换频率、写操作占比和共享变量个数;
步骤4、继续再执行,具体包括:在基于距离度量以及启发式规则排序之后,控制存储所有可行子状态的队列Q的长度,在选择完子状态继续执行后,如果队列Q的长度超过超参数N,则将队尾多余的元素删去,然后执行新的子状态,重复探索程序状态空间的过程直至到达程序的终止状态;
步骤5、进行错误报告,具体包括:如果此时程序正常执行完毕没有报告错误,则将本次从初始状态探索直到当前终止状态的探索过的程序调度路径的信息记录到集合T中,然后回到程序初始状态,重新开始探索;否则,表明检测到了程序的错误,直接退出运行,并且报告错误信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津大学,未经天津大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110674680.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种无运放带隙基准源
- 下一篇:电池健康状态测算方法以及相关设备