[发明专利]一种并发程序噪声注入方法有效
| 申请号: | 201910347672.2 | 申请日: | 2019-04-28 |
| 公开(公告)号: | CN110083538B | 公开(公告)日: | 2022-09-30 |
| 发明(设计)人: | 孙家泽;王丹;阳伽伟 | 申请(专利权)人: | 西安邮电大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 710121 陕西*** | 国省代码: | 陕西;61 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 并发 程序 噪声 注入 方法 | ||
本发明针对并发程序测试中交织覆盖难问题,公开了一种并发程序噪声注入方法,属于并发程序测试领域。首先对被测并发程序运行时各共享变量被访问次数进行统计,根据访问次数由高到低对共享变量进行排序;然后按照次序由高到低依次对每一个共享变量相关的事件计算出插入噪声的概率;最后在每个事件上以不同概率插入噪声,用测试用例执行程序,直到不再出现新的并发交织。本发明提供了一种并发程序噪声注入方法,能够有效地增加并发程序测试中并发交织数量,提高测试效率。
技术领域
本发明属于并发程序测试领域,具体涉及到并发程序测试中交织覆盖问题,提供了一种并发程序噪声注入方法,主要解决并发程序运行过程中出现的线程交织过少,测试难以覆盖更多交织的问题。
背景技术
多核处理器进入普通计算机加速了多线程设计软件的开发,互联网以及服务器端并发编程的日益普及使得并发缺陷分析成为一个很重要的问题。然而,多线程编程的要求非常高,并且错误空间更大。
并发测试的困难:并发程序的调度机制为并发程序的执行引入了非确定性。可能的交织集是巨大的(每种可能的执行称为一个交织),遍历它们是不实际的。这些交织中只有少数实际产生并发错误,因此,产生并发错误的可能性非常低。无意的数据竞争和死锁等缺陷很难发现和分析且代价高昂,而且经常逃逸;具体平台下调度程序通常是确定性的,多次执行相同的测试无济于事,因为将创建相同的交织集,多次执行并不能发现新的错误。此外,即使程序已经使用给定的输入多次执行而没有发现任何错误,将来仍然可能使用相同的输入执行产生不正确的结果。检测并发错误通常耗时很长并且在不同的环境条件下运行。因此,这些测试不一定是可重复的,并且当检测到并发错误时,必须投入很多努力来重建其发生的条件。这种情况刺激了致力于各种测试、分析和验证方法的研究工作。
本发明通过使用噪声注入技术,在适当的程序位置插入噪声改变线程调度,以出现更多的并发程序交织,从而增加并发错误产生的可能性。由于可能的状态空间是巨大的,通过计算被测程序中各事件增加并发交织的可能性,将噪声插入到更有可能增加并发交织的事件上,进而提高不同交织发生的可能,提高并发程序测试中并发交织的数量,解决并发程序测试中并发交织难覆盖的问题。
发明内容
噪声注入技术是指在并发程序中插入噪声语句,干扰并发程序调度,增强程序执行上下文切换的可能,即CPU从一个线程切换到另一个线程,以产生更多可能的并发交织,增加并发错误出现的概率,提高并发程序测试的效率。
本发明的技术方案为:一种并发程序噪声注入方法。如图1所示,该方法的特征主要包括以下步骤:
步骤一:针对一个待测的并发程序P,假设程序P中有m个共享变量,运行待测程序P,统计程序P运行过程中各个共享变量被访问的次数,根据各共享变量被访问的次数由高到低对共享变量进行排序:v1,v2,...,vm,其中v1为被访问次数最多的共享变量,vm为被访问次数最少的共享变量,i为1到m之间的任意一个整数值,vi表示程序P运行过程中各共享变量根据被访问次数由高到低排序后排名第i的共享变量;
步骤二:访问共享变量的每个程序位置称作一个事件,假设被测程序P中与共享变量vi(1=i=m)相关的事件有n个:li1,li2,...,lij,...,lin,其中li1为与共享变量vi相关的第1个事件,lij为与共享变量vi相关的第j个事件,lin为与共享变量vi相关的第n个事件,j为1到n之间的任意一个整数值,令i=1,令j=1;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910347672.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:手机APP端口测试的方法及系统
- 下一篇:一种数据竞争检测方法及装置





