[发明专利]一种基于测试代码片段相似性的测试程序抄袭检测方法有效
申请号: | 201810561223.3 | 申请日: | 2018-05-29 |
公开(公告)号: | CN110543331B | 公开(公告)日: | 2021-07-06 |
发明(设计)人: | 陈振宇;孙伟松;王兴亚;段定;巫浩然;赵源;孙泽嵩 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210093 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 测试 代码 片段 相似性 程序 抄袭 检测 方法 | ||
本发明涉及一种基于测试代码片段相似性的测试程序抄袭检测方法。该方法针对待测试程序中各个待测方法,首先,基于类名、方法名、参数序列计算出唯一方法标识;其次,从测试程序中提取所有测试代码片段集合,每个测试片段与一个待测方法相对应;然后,分析测试片段间相似性得到相似性分析报告,由此计算出片段之间的相似度值;最后,利用测试片段相似度值计算测试程序整体相似程度值,利用测试程序整体相似程度值即可更加精确的判断测试程序之间抄袭情况。本发明目的在于填补针对测试代码相似性检测技术的空白,解决目前测试代码相似性分析的低精度和测试代码抄袭检测主要靠人工操作的低效率问题,从而提高测试代码相似性检测的效率和精度。
技术领域
本发明属于软件测试与代码相似度检测领域,尤其适用于软件测试代码抄袭检测领域,解决了软件测试竞赛中开发者测试选手提交的测试代码之间存在抄袭难以检测的问题。通过更加精准地检测出测试代码片段的相似程度,以判断测试程序之间整体抄袭成程度,免去耗时耗力的人工检测操作,提高测试代码抄袭检测的效率与精度。
背景技术
拷贝和粘贴源代码是软件工程中常见的活动。代码的拷贝和粘贴既存在有益的地方,也存在有害的地方。一方面,软件复用可以快速的提高编码效率,这是大多数软件开发者认同的观点。因此,在软件开发过程中也就会使用代码的拷贝和粘贴,然后做适当的修改即可。另一方面,代码的拷贝和粘贴、以及随后的或多或少的修改,增加了软件抄袭检测的难度。因此,给软件版权的保护也带来了巨大的难度。代码相似性度量是检测代码抄袭的常用方法,在诸如程序理解、代码克隆、抄袭检测、代码复用领域具有广泛的应用。通常情况下研发人员不会按原样直接复制粘贴代码,而是会出于不同的目的进行修改,例如重构、Bug修复,甚至软件抄袭。这些修改在一定程度上会影响代码相似度分析器的性能,影响代码克隆、抄袭检查器工具的分析准确率。
在软件开发过程中,软件质量主要通过单元测试、集成测试、系统测试等软件测试阶段保障。众所周知,错误发现越晚软件的修复成本越高。因此,作为测试早期的单元测试对软件测试以及软件研发的整体成本有着重要的影响。不同于其他阶段的测试,单元测试属于编程的一部分,通常由软件测试人员、开发人员以及产品经理三方协作完成,这显著增加了单元测试的难度。编写单元测试用例代码是一个乏味、耗时的工作。因此,开发人员在编写单元测试用例代码的过程中也会大量的拷贝和粘贴代码,并进行简单的修改,以提高编写效率。如果能提高测试用例代码相似度的检测能力,既可以帮助一些自动化测试用例生成工具快速生成相似测试用例,也可以帮助测试代码抄袭检测工具更高效、更精准的判断抄袭,减少了测试代码抄袭检测的人力、物力投入。
目前,针对源代码相似性度量方法,学术界和工业界已有了较为成熟的研究和应用,有大量的克隆检测器、抄袭检测器和代码相似度检测器(如,NiCad、CoP、Simian)被许多企业、高校广泛采用。然而,这些方法和工具都是针对源代码进行相似度检测,并没有专门的方法或工具用于测试用例代码相似性检测。单元测试用例之间是没有依赖的,而源码中的方法之间是有依赖的,这是最明显的区别之一。测试用例之间的独立性,使得测试用例代码抄袭比源码抄袭更难检测。这个问题显著增加了测试代码相似性检测的难度。
对此,本发明提出一种基于测试代码片段相似性的测试程序抄袭检测方法。本发明的基本思想为:以待测方法为核心,最小化与待测方法相对应的测试代码片段,通过分析每个待测方法对应的测试代码片段的相似性,来判断不同参赛者提交的测试代码的相似性,提升测试代码相似性检测的精度,从而提高抄袭检测判断的准确率。对此,针对待测试程序源码中的每一个待测方法MUT,首先,计算出待测方法的唯一标识MID,通过MID找出每位选手提交的测试代码中与MUT相关的测试代码片段;然后,使用Text-based、Token-based或是String matching based相似性分析技术度量测试代码片段的相似性,并给出相似性分析报告;最后,通过分析相似性分析报告计选手测试程序之间的相似度来判断抄袭,从而提高抄袭检测的准确率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810561223.3/2.html,转载请声明来源钻瓜专利网。