[发明专利]一种基于自适应随机测试的并发缺陷检测方法有效
申请号: | 201811184521.1 | 申请日: | 2018-10-11 |
公开(公告)号: | CN109522097B | 公开(公告)日: | 2023-03-07 |
发明(设计)人: | 杨杨;王赞 | 申请(专利权)人: | 天津大学 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F11/14 |
代理公司: | 天津市北洋有限责任专利代理事务所 12201 | 代理人: | 李林娟 |
地址: | 300072*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 自适应 随机 测试 并发 缺陷 检测 方法 | ||
1.一种基于自适应随机测试的并发缺陷检测方法,其特征在于,所述方法包括以下步骤:
获取一条结果为正确的完整序列C0,对每个执行过程中的状态si,展开它的可执行集合记为Enabled(si),表示在程序状态为si时,下一步能够触发执行的所有语句集合;
计算完整序列C0和每一个已执行子序列之间的距离dist,选择最远的N个子序列继续展开,执行其状态下对应Enabled(si)集合中的某一个语句,其他的子序列会被删除,不再继续执行后续程序语句;N是一个阈值它代表每次搜索最多有N个子序列能够被保留;
当程序执行结束时,会搜索得到一个resultSeqs集合,该集合存储了程序执行中的所有结果,另一个集合correctSeqs存储执行结果为正确的完整序列,用于在搜索的过程中计算距离;
执行下一次的迭代搜索,直到找出错误序列,检测出了并发缺陷,然后记下P-度量的值或程序全部执行完没有检查到缺陷;P-度量表示在同一个输入的情况下,检测到第一个并发缺陷时程序运行的次数;
所述距离dist具体为:
dist(A,B)=|PA-PB|
其中,两个序列A和B,它们的内存读写模式集合分别为PA和PB;
所述方法满足两个假设条件:
(1)程序的输入是给定的,只需要找出该输入条件下产生错误的调度;
(2)至少知道一个执行结果为正确的完整序列,这个序列能够通过随机执行程序来获得。
2.根据权利要求1所述的一种基于自适应随机测试的并发缺陷检测方法,其特征在于,所述方法还包括:
如果在搜索过程中程序报错了,则为检测到程序缺陷,记下P-度量的值;
如果resultSeqs集合中有结果为正确的序列,则把它加入到correctSeqs集合中。
3.根据权利要求1-2中任一权利要求所述的一种基于自适应随机测试的并发缺陷检测方法,其特征在于,
所述方法在简单随机算法的基础上,加入自适应对线程调度进行控制,利用已执行序列的内存读写模式信息对之后的线程调度进行指导,使多线程执行空间得到更广范围的遍历。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津大学,未经天津大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811184521.1/1.html,转载请声明来源钻瓜专利网。