基于本体的并发错误测试工具推荐方法与流程

文档序号:11250800阅读:550来源:国知局
基于本体的并发错误测试工具推荐方法与流程
本发明涉及一种基于本体的推荐方法,特别涉及一种基于本体的并发错误测试工具推荐方法。
背景技术
:文献基于“乔冬春,刘晓燕,付晓东,等.一种基于本体的推荐系统模型[j].计算机工程,2014,40(11):282-287”中提出的一种基于本体的推荐方法。该方法提出一种基于本体的推荐系统模型。将本体引入到推荐系统中,使用owl语言对用户和项目信息进行描述,使用户和项目具有语义信息的同时,提高信息的结构化描述水平。在推荐过程中,通过规则分析用户行为信息并综合考虑以提高模型的推荐质量。实验结果证明,与传统推荐模型相比,该模型在信息结构化水平、语义描述等方面具有优势。采用该模型为用户推荐项目能够有效提高推荐的召回率和准确率。但是该文献中提出的推荐方法没有给出推理机的支撑,当用户给定的信息不直接与推理结果关联时会并不能给出推理结果,同时,该方法也没有在并发错误测试工具推荐方面的应用。技术实现要素:为了克服现有基于本体的推荐方法实用性差的不足,本发明提供一种基于本体的并发错误测试工具推荐方法。该方法通过对现存并发错误进行研究,提取不同类型并发错误的典型特点,再对现存部分并发错误测试工具进行调研,研究不同测试工具的侧重点和特点,构建并发错误测试工具本体,同时,根据并发错误特点和并发错误类型之间的联系关系、测试工具侧重点和并发程序之间的联系关系,基于jena推理机建立规则文件对本体进行完善,当用户给定的信息不直接与推理结果关联时也能够给出推理结果,最终实现基于本体的并发错误测试工具推荐,实用性好。本发明解决其技术问题所采用的技术方案:一种基于本体的并发错误测试工具推荐方法,其特点是包括以下步骤:步骤一、将并发错误分为死锁、数据竞争、原子性违背以及顺序违背四个大类,将数据竞争进一步分为写-写竞争和读-写竞争,将原子性违背进一步被分为单变量的原子性违背和多变量的原子性违背。使用protégé进行本体构建。步骤二、对现有的并发错误测试工具进行调研,找出不同的并发错误测试工具的侧重点和特点。步骤三、进行本体构建。构建本体分成三个模块,某些用户清楚地知道待测程序可能存在的并发错误类型或是要对待测程序进行针对某种特定类型的并发错误,使用模块一,根据用户给出的并发错误类型进行推荐,模块一包括有bug实体、tool实体和problem实体。对于那些并不知道具体可能出现哪些类型的并发错误的用户使用模块二或模块三进行推荐,模块二给出了一些可能含有并发错误程序的特征,模块二根据程序含有的特征进行推荐,模块二包括有bug实体、tool实体、property实体和problem实体。如果用户并不了解程序则使用模块三进行推荐,模块三根据用户的实际需求进行推荐,模块三包括有benefit实体、tool实体和problem实体。步骤四、使用jena推理机机制定义推理关系:在模块一中,如果某工具a可对并发错误b进行检测,而用户给出的待测程序c又恰好需要针对并发错误b的检测,则为用户推荐测试工具a。在模块二中,如果某工具a可对并发错误b进行检测,而用户给出的待测程序c又恰好需要针对并发错误b的检测,则为用户推荐测试工具a。在模块三中,如果若用户需要满足性质b、c、d的测试工具,而测试工具e恰好可满足这些性质,则系统推荐使用工具e。根据上述的三条规则编写生成规则文件后,将规则文件与protégé中的本体相关联,实现推荐。本发明的有益效果是:该方法通过对现存并发错误进行研究,提取不同类型并发错误的典型特点,再对现存部分并发错误测试工具进行调研,研究不同测试工具的侧重点和特点,构建并发错误测试工具本体,同时,根据并发错误特点和并发错误类型之间的联系关系、测试工具侧重点和并发程序之间的联系关系,基于jena推理机建立规则文件对本体进行完善,当用户给定的信息不直接与推理结果关联时也能够给出推理结果,最终实现基于本体的并发错误测试工具推荐,实用性好。本发明采用了来自卡耐基梅隆大学的一组包含有并发错误的测试实例。首先是使用所有的测试工具对每个实例进行测试,记录所有成功找出错误的工具耗时,并计算平均耗时。判断成功的标准就是使用推荐方法给出的工具进行测试,若能成功找出错误且耗时小于平均耗时,则认为推荐是成功的。由于加入了jena推理机的规则对本体进行完善,当用户给定的信息不直接与推理结果关联时也能够给出推理结果。部分实验结果参考表1,计算可知,基于特定错误类型进行工具推荐模块成功率达到88.71%,基于程序特征进行工具推荐模块成功率达到71.07%,基于用户需求进行工具推荐模块成功率达到74.82%,平均成功率为78.2%。表1部分实验结果基于特定错误类型基于程序特征类型基于用户需求163.6%54.5%75%281.8%72.7%57.8%3100%62.5%66.3%483.3%66.7%89.3%5100%66.7%67.2%687.5%62.5%70%7100%63.3%67.5%880%100%88.4%9100%80%76.7%1090.9%81.8%90%下面结合附图和具体实施方式对本发明作详细说明。附图说明图1是本发明基于本体的并发错误测试工具推荐方法的流程图。图2是本发明方法中并发错误进行分类之后的结构图。图3是本发明方法中根据用户对并发程序以及被测程序了解程度不同,把构建的本体进行划分的构架图。图4是本发明方法中模块一本体的实体类关系图。图5是本发明方法中模块二本体的实体类关系图。图6是本发明方法中模块三本体的实体类关系图。具体实施方式参照图1-6。本发明基于本体的并发错误测试工具推荐方法具体步骤如下:首先通过对现存并发错误进行研究,提取不同类型并发错误的典型特点;然后对现存的并发错误测试工具进行调研,提取不同类型错误的典型错误;根据以上研究构建根据用户给出的并发错误类型进行推荐的模块、根据程序含有的特征进行推荐模块、根据用户需求进行推荐的模块共三个模块的本体;并且基于jena推理机建立规则文件对本体进行完善。对并行错误进行研究,通过对现有研究成果进行分析和总结,将并发错误分为死锁、数据竞争、原子性违背以及顺序违背四个大类,更进一步还可以对数据竞争进一步分为写-写竞争和读-写竞争,原子性违背可以进一步被分类为单变量的原子性违背和多变量的原子性违背。使用protégé进行本体的构建,建立bug实体及其分支下的死锁、数据竞争、原子性违背、顺序违背四个实例。参照表2和表3,对这些类型的并发错误进行进一步研究,分析其特点,通过对存在并发错误的程序特点进行研究,可以整理出一些与并发错误有关的属性,而这些属性和并发错误的类型存在着一对多的关系,属性包括至少有一个线程处于等待状态、至少有一个线程处于执行状态、至少有一个线程处于就绪状态、所有线程都在等待一个被其它线程占用的锁、至少有一个线程处于等待状态超过一定可接受时间、所有线程都处于执行状态、没有线程可以继续执行、线程数量大于空闲处理器内核数量、有不正确或者非预期的结果出现、所有线程占用一个锁、至少有线程占用一个锁、对共享内存访问来自多个线程、对共享内存的访问中至少有一个是“写”操作、对共享内存的访问目标内存位置相同、共享内存访问未受同步机制保护、共享内存访问的目标内存地址只有一个、共享内存访问的目标内存地址存在多个、对某一共享内存的访问至少有两个,一个“读”,一个“写”,“读”访问早于“写”访问、对同一共享内存至少有两个“写”访问,中间没有任何“读”访问发生、对共享内存的访问次序中至少有一个执行次序是正确的、语句执行具有原子性要求。使用protégé进行本体的构建,建立property实体及其分支下每个属性的实例。表2并发错误特征属性整理表3完成了对并发错误的研究之后本发明还对一些典型的并发错误检测工具(包括findbugs、jest、intelthreadchecker、atomfinder、keshmesh、relay、threadanalyzer、mtrat、doctorwatson、coverityprevent、pmd、valgrind、parallelinspector、unicon)进行了研究,这些工具因为算法、设计思想以及针对用户群体不同有着不同的侧重点和各自的特点,结果参照表4。使用protégé进行本体的构建,建立tool实体及其分支下每个工具的实例,建立benefit实体以及每个侧重点的实例。在进行具体推理时,建立problem实体以及相应的实例。表4部分工具侧重点整理完成了前期的准备工作之后,本发明开始进行本体的构建,由于使用的用户对并发错误了解程度不一,将构建的本体分成了三个模块,某些用户清楚地知道待测程序可能存在的并发错误类型或是要对待测程序进行针对某种特定类型的并发错误,对于这类用户使用模块一,根据用户给出的并发错误类型进行推荐,此模块中包括有bug实体、tool实体和problem实体。对于那些并不知道具体可能出现哪些类型的并发错误的用户可以使用模块二或模块三进行推荐,模块二给出了一些可能含有并发错误程序的特征,模块二可以根据程序含有的特征进行推荐,此模块包括此模块中包括有bug实体、tool实体、property实体和problem实体。如果用户并不了解程序即可使用模块三进行推荐,模块三根据用户的实际需求(可视化的报告、对java程序进行检测、对c语言程序进行检测、开源)进行推荐,模块包括此模块中包括有benefit实体、tool实体和problem实体。为了实现根据已知信息进行推理,需要使用jena推理机机制,在模块一中,定义推理关系:如果某工具a可对并发错误b进行检测,而用户给出的待测程序c又恰好需要针对并发错误b的检测,则为用户推荐测试工具a。在模块二中,定义推理关系:如果某工具a可对并发错误b进行检测,而用户给出的待测程序c又恰好需要针对并发错误b的检测,则为用户推荐测试工具a。在模块三中,定义推理关系:如果若用户需要满足性质b,c,d的测试工具,而测试工具e恰好可以满足这些性质,则系统将推荐使用工具e。根据上述的三条规则编写生成规则文件后,将规则文件与protégé中的本体相关联,就可以实现推荐。另外,还可以同时使用多个模块进行推荐,使推荐的结果更加可靠。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1