[发明专利]基于机器学习的编译器测试加速方法有效
申请号: | 201710292927.0 | 申请日: | 2017-04-28 |
公开(公告)号: | CN107203469B | 公开(公告)日: | 2020-04-03 |
发明(设计)人: | 陈俊洁;白彦威;郝丹;熊英飞;张洪宇;张路;谢冰 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京万象新悦知识产权代理有限公司 11360 | 代理人: | 黄凤茹 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 机器 学习 编译器 测试 加速 方法 | ||
本发明公布了一种编译器测试加速方法,采用机器学习方法构造用于预测测试程序触发缺陷的概率的能力模型和用于预测每个测试程序的执行时间的时间模型,通过计算每个测试程序单位时间内触发缺陷的概率,实现对测试程序的排序,从而实现编译器测试加速;包括学习阶段和调度阶段;学习阶段包括识别特征过程、训练能力模型过程和训练时间模型过程;调度阶段,基于所述学习阶段得到的能力模型和时间模型,得到新的测试程序的执行顺序。通过本发明,测试人员可在执行测试程序之前,事先对测试程序进行排序,使得更有可能触发缺陷的测试程序被优先执行,从而实现编译器测试加速。
技术领域
本发明属于软件测试技术领域,涉及编译器测试方法,尤其涉及一种基于机器学习的编译器测试加速方法(LET:learning-to-test),能够使编译器在测试过程中更早地检测出缺陷。
背景技术
编译器作为高级编程语言和机器字节码之间转换的纽带,具有十分关键且不可替代的作用,几乎所有的软件系统都依赖于它。然而,和所有其他软件一样,编译器也不可避免地存在着缺陷。由于编译器的复杂特性,其缺陷是很难被人们所发现的。在编译器发展的几十年中,许多有效的编译器测试技术已经被提出,如随机差异测试、等价取模测试等。但是,无论采用哪种测试技术,编译器测试都是一个十分耗时的过程,常常需要数月甚至数年的测试时间,才能够发现少量的缺陷。
针对编译器测试时间长的问题,目前没有任何有效的针对性方法来解决它。在编译器测试中,由于只有一小部分的测试程序会触发编译器的缺陷,那么,倘若可以先执行这些能触发编译器缺陷的测试程序,那么编译器测试即可被加速。因此,测试用例排序可以用来加速编译器测试。然而,大多数已有的测试用例排序方法都是依赖于覆盖信息的,而编译器的测试程序往往都是随机生成的,不可能提前获得它们的覆盖信息。也就是说,这些基于覆盖信息的测试用例排序方法无法用于编译器测试加速。最近,一些基于测试输入的测试用例排序方法被提出,然而通过实验表明,这些已有的基于测试输入的方法由于效率和效果的不足,仍然不能用于加速编译器。因此,目前还没有可以用来有效加速编译器测试的测试用例排序方法。
发明内容
针对现有技术的不足,本发明提出了一种基于机器学习的编译器测试加速方法。通过本发明,测试人员可以在执行测试程序之前,事先对测试程序进行排序,使得更有可能触发缺陷的测试程序被优先执行,从而达到编译器测试的加速。
本发明的原理是:通过机器学习的方法构造两个模型:能力模型与时间模型。前者可以预测每个测试程序触发缺陷的概率,后者可以预测每个测试程序的执行时间。通过计算每个测试程序单位时间内触发缺陷的概率,实现对测试程序的排序。具体步骤可以分为两个阶段:学习阶段与调度阶段。学习阶段包括识别特征、训练能力模型、训练时间模型;在调度阶段,基于已经训练好的能力模型和时间模型,调度得到测试程序新的执行顺序;由此加速编译器测试。
本发明的技术方案是:
一种基于机器学习的编译器测试加速方法,通过机器学习的方法构造能力模型与时间模型,能力模型用于预测每个测试程序触发缺陷的概率,时间模型用于预测每个测试程序的执行时间;该加速方法通过计算每个测试程序单位时间内触发缺陷的概率,实现对测试程序的排序;包括学习阶段与调度阶段;分别包括如下步骤:
1)学习阶段
11)识别特征,包括存在特征和使用特征;
通过手工研究大量编译器缺陷之后,识别出的特征可以被分为两类。第一类特征称为存在特征,指的是在测试程序中是否存在某种类型的语言元素。直观地讲,有一些缺陷的发生仅仅依赖于某种特定的语言元素,因此这些元素是否存在一定程序上可以帮助预测测试程序是否能够触发编译器缺陷。比如,循环优化相关缺陷的检测,必须使用具有循环元素的测试程序,否则无法触发到循环优化。如果测试程序存在该语言元素,那么该特征值为1,否则为0。更加具体地说,存在特征分为下列四类:
●STMT:一组C语言中的所有语句类型
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710292927.0/2.html,转载请声明来源钻瓜专利网。