书签 分享 收藏 举报 版权申诉 / 7

一种源代码的比对方法.pdf

  • 上传人:bo****18
  • 文档编号:6228782
  • 上传时间:2019-05-23
  • 格式:PDF
  • 页数:7
  • 大小:1.38MB
  • 摘要
    申请专利号:

    CN201310682487.1

    申请日:

    2013.12.12

    公开号:

    CN103617122A

    公开日:

    2014.03.05

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||著录事项变更IPC(主分类):G06F 11/36变更事项:申请人变更前:用友软件股份有限公司变更后:用友网络科技股份有限公司变更事项:地址变更前:100094 北京市海淀区北清路68号用友软件园变更后:100094 北京市海淀区北清路68号用友软件园|||实质审查的生效IPC(主分类):G06F 11/36申请日:20131212|||公开

    IPC分类号:

    G06F11/36

    主分类号:

    G06F11/36

    申请人:

    用友软件股份有限公司

    发明人:

    曹峰

    地址:

    100094 北京市海淀区北清路68号用友软件园

    优先权:

    专利代理机构:

    北京中恒高博知识产权代理有限公司 11249

    代理人:

    刘洪京

    PDF完整版下载: PDF下载
    内容摘要

    本发明适用软件领域,提供了一种代码的比对方法,所述方法包括:获取待比对的新旧源代码文件,提取新旧源代码文件的修改日期和文件大小;如日期和文件大小中有一个不相同,将旧源代码文件读入OldString,将新源代码文件读入NewString;如OldString与NewString不相同,解析出旧源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组OldClass()中,解析出新源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组NewClass()中;取OldClass()中的每个元素与NewString比对;根据比对结果判断是否记录到变更清单。本发明提供的技术方案具有准确定义源代码修改的优点。

    权利要求书

    权利要求书
    1.  一种代码的比对方法,其特征在于,所述方法包括:
    获取待比对的新旧源代码文件,提取新旧源代码文件的修改日期和文件大小;
    如日期和文件大小中有一个不相同,将旧源代码文件读入OldString,将新源代码文件读入NewString;所述OldString为旧源代码文件的字符串变量,所述NewString为新源代码文件的字符串变量;如OldString与NewString相同,则对比结束,认为新旧源代码文件一样;
    如OldString与NewString不相同,解析出旧源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组OldClass()中,解析出新源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组NewClass()中;
    取OldClass()中的每个元素与NewString比对;
    如OldClass()中的元素包含于NewString中,取NewClass()中的每个元素与OldString比对,如NewClass()中的元素包含于NewString中且OldClass()与NewClass()中的元素的类名称不同,则记变更,该OldClass()的元素被修改,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;如NewClass()中的元素不包含于NewString,则该元素为新增,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;
    如OldClass()中的元素不包含于NewString中且类名称不存在于NewString,则记录变更,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;
    将该变更清单发送给黑盒测试人员及相关功能开发人员;
    所述新源代码文件和所述旧源代码文件中的源代码的每个分支和循环语句中均插入有分支ID以及注释信息。

    2.  根据权利要求1所述的方法,其特征在于,所述方法在将该变更清单发送给黑盒测试人员及相关功能开发人员之前还包括:
    如OldClass()中的元素不包含于NewString中且类名称存在于NewString时,则取OldClass()中该类代码与NewClass()中同名的类元素对比,具体的比对方式为:
    将OldClass()中该类代码的所有类成员解析为OldMember(),将NewClass()中同名的类元素的所有类成员解析为NewMember();取OldMember()中的每个元素与NewString对比,若OldMember()元素包含于NewString 字符串中,则该元素存在且无变更;从NewString 中删除该元素;若发现 OldMember()中某元素不在NewString中且该元素的名称包含在NewString 中,那么认为该元素被修改,取OldMember()中该元素代码与NewMember()中同名的元素对比;若发现 OldMember()中某元素不在NewString中且该元素的名称不包含在NewString 中则认为该元素被删除,分析元素的分支和循环语句提取分支ID和注释信息记录到变更清单。

    3.  根据权利要求1或2所述的方法,其特征在于,所述将该变更清单发送给黑盒测试人员及相关功能开发人员具体包括:
    通过邮件发送该变更清单给黑盒测试人员及相关功能开发人员。

    说明书

    说明书一种源代码的比对方法
    技术领域
    本发明属于软件领域,尤其涉及一种源代码的比对方法。
    背景技术
    黑盒测试是基于软件产品需求和设计规格说明的测试方法。着重于确认和验证软件产品是否满足规格说明。
    黑盒测试方法的过程是围绕需求文档设计测试用例,使用方法包括等价类,因果图,错误推测等。评价测试用例设计的方法完全来自对需求文档,业务知识和软件设计说明书的理解程度和使用上述黑盒测试方法设计测试用例的能力。
    因为大部分黑盒测试人员很少懂编码,因此开发人员在实现开发活动过程中,很少与黑盒测试人员沟通业务逻辑和代码逻辑,只是按照需求和设计说明书编写代码,由于理解错误产生的问题只能在源代码做成安装盘后由黑盒测试人员在测试时发现。
    传统的黑盒测试活动都是按照测试计划执行的,一般开发人员修改代码后,很少会通知黑盒测试人员重点测试修改的地方,甚至修改者本人也不十分清楚自己修改的代码会影响哪些业务逻辑?变更影响范围有多大?此时,黑盒测试人员的测试活动具有很大盲目性。花费大量精力进行回归测试也不一定能够排除风险,如果黑盒测试人员在测试产品前能够获得准确信息,了解到本次开发人员修改代码涉及哪些业务逻辑和测试要点,就可以据此更新测试用例,安排测试资源,有的放矢地解决问题。让黑盒测试人员从代码变更中获取上述情报就是本文的立足点和待解决问题。
    目前对于文件内容的比较的研究相对较少,按照其目标不同可以将文件监控分为两种:一种是定量的比较,既能判断文件是否被改变,又能定位到不同之处,往往针对的是文本文件。另一种是定性比较,只能判断文档是否被改变,但不能直观地知道文件的具体差异,这种比较对所有文件都适用,主要利用文件的特征值、签名文件或者加密算法判断。而对于二进制文件一般采用指令相似性、结构化比较、特征提取等来实现。
    文件比较主要讨论的是定量比较,目前已有的算法有两种:一种是简易的文本内容比较算法,另一种是基于图的文本比算法。对于字数比较少的文本文件可以采用前者,将源文件(被监测文件)和目标文件(监测时用来与源文件内容进行比较的文件)的内容从头到尾一对一地进行比较,如果发现内容不相同,即为出现了异常,利用循环来判断异常的位置。
    当文件中变化的内容比较多时,该方法速度会比较慢。而后者使用逆序循环,需要缓存计算信息,因此增加了系统开销,并且由于基于图论,所以过程比较复杂。
    在实现现有技术的技术方案中,发现现有技术存在如下问题:
    现有的源代码的比对无法在黑盒测试时将源代码的变更提交给黑盒测试员。
     
    发明内容
    本发明实施例的目的在于提供一种源代码的比对方法,其解决现有技术中源代码的比对无法在黑盒测试时将源代码的变更提交给黑盒测试员的问题。
    本发明实施例是这样实现的,一方面,提供一种代码的比对方法,所述方法包括:
    获取待比对的新旧源代码文件,提取新旧源代码文件的修改日期和文件大小;
    如日期和文件大小中有一个不相同,将旧源代码文件读入OldString,将新源代码文件读入NewString;所述OldString为旧源代码文件的字符串变量,所述NewString为新源代码文件的字符串变量;如OldString与NewString相同,则对比结束,认为新旧源代码文件一样;
    如OldString与NewString不相同,解析出旧源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组OldClass()中,解析出新源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组NewClass()中;
    取OldClass()中的每个元素与NewString比对;
    如OldClass()中的元素包含于NewString中,取NewClass()中的每个元素与OldString比对,如NewClass()中的元素包含于NewString中且OldClass()与NewClass()中的元素的类名称不同,则记变更,该OldClass()的元素被修改,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;如NewClass()中的元素不包含于NewString,则该元素为新增,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;
    如OldClass()中的元素不包含于NewString中且类名称不存在于NewString,则记录变更,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;
    将该变更清单发送给黑盒测试人员及相关功能开发人员;
    所述新源代码文件和所述旧源代码文件中的源代码的每个分支和循环语句中均插入有分支ID以及注释信息。
    可选的,所述方法在将该变更清单发送给黑盒测试人员及相关功能开发人员之前还包括:
    如OldClass()中的元素不包含于NewString中且类名称存在于NewString时,则取OldClass()中该类代码与NewClass()中同名的类元素对比,具体的比对方式为:
    将OldClass()中该类代码的所有类成员解析为OldMember(),将NewClass()中同名的类元素的所有类成员解析为NewMember();取OldMember()中的每个元素与NewString对比,若OldMember()元素包含于NewString 字符串中,则该元素存在且无变更;从NewString 中删除该元素;若发现 OldMember()中某元素不在NewString中且该元素的名称包含在NewString 中,那么认为该元素被修改,取OldMember()中该元素代码与NewMember()中同名的元素对比;若发现 OldMember()中某元素不在NewString中且该元素的名称不包含在NewString 中则认为该元素被删除,分析元素的分支和循环语句提取分支ID和注释信息记录到变更清单。
    可选的,所述将该变更清单发送给黑盒测试人员及相关功能开发人员具体包括:
    通过邮件发送该变更清单给黑盒测试人员及相关功能开发人员。
    在本发明实施例中,本发明提供的技术方案自动搜集源代码变更信息后提示给黑盒测试人员及相关功能开发人员,大大降低了黑盒回归测试的盲目性,提高了黑盒测试效率,增加了开发人员与测试人员之间的信息沟通,对于控制研发过程中由于开发人员和测试人员信息不对称导致的开发风险具有明显的抑制作用,将开发信息和测试信息以注释形式与源代码绑定在一起,保证了开发人员之间和开发人员与测试人员之间的知识转移。
     
    附图说明
    图1是本发明提供的一种代码的比对方法的流程图。
     
    具体实施方式
    为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
    本发明最核心区别是,通过提取源代码中的分支ID和注释实现通过对比代码逻辑变更,过滤源代码中用自然语言描述的注释信息,据此识别出软件业务逻辑的变更,而不仅仅象其他对比工具一样,只对比类,成员和代码行。本发明在实现之前,需要配置标记分支工具,标记分支工具可以参见其他文件的描述。
    本发明具体实施方式提供一种代码的比对方法,该方法如图1所示,包括:
    101、获取待比对的新旧源代码文件,提取新旧源代码文件的修改日期和文件大小,如日期和文件大小都相同,则比对结束,认为新旧源代码文件一样;如日期和文件大小中有一个不相同,则执行102以及102的后续步骤;
    102、将旧源代码文件读入OldString,将新源代码文件读入NewString;该OldString为旧源代码文件的字符串变量,该NewString为新源代码文件的字符串变量;如OldString与NewString相同,则对比结束,认为新旧源代码文件一样;如不相同,执行103及其后续步骤;
    103、解析出旧源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组OldClass()中,解析出新源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组NewClass()中;
    104、取OldClass()中的每个元素与NewString比对,如OldClass()中的元素包含于NewString中,执行105;如OldClass()中的元素不包含于NewString中且类名称不存在于NewString,则记录变更,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;
    105、取NewClass()中的每个元素与OldString比对,如NewClass()中的元素包含于NewString中且OldClass()与NewClass()中的元素的类名称不同,则记变更,该OldClass()的元素被修改,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;如NewClass()中的元素不包含于NewString,则该元素为新增,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单。
    106、将该变更清单发送给黑盒测试人员及相关功能开发人员。
    需要说明的是,上述新源代码文件和旧源代码文件中的源代码的每个分支和循环语句中均插入有分支ID以及注释信息。
    上述发送方式可以为多种形式,例如邮件等形式发送。
    可选的,上述方法还包括:
    如OldClass()中的元素不包含于NewString中且类名称存在于NewString,则取OldClass()中该类代码与NewClass()中同名的类元素对比,具体的比对方式可以为:
    201、将OldClass()中该类代码的所有类成员解析为OldMember(),将NewClass()中同名的类元素的所有类成员解析为NewMember();
    202、取OldMember()中的每个元素与NewString对比,若OldMember()元素包含于NewString 字符串中,则该元素存在且无变更;从NewString 中删除该元素;若发现 OldMember()中某元素不在NewString中且该元素的名称包含在NewString 中,那么认为该元素被修改,取OldMember()中该元素代码与NewMember()中同名的元素对比;若发现 OldMember()中某元素不在NewString中且该元素的名称不包含在NewString 中则认为该元素被删除,分析元素的分支和循环语句提取分支ID和注释信息记录到变更清单。本发明提供的技术方案具有准确定义源代码修改的优点。
    本发明的技术方案在自动搜集源代码变更信息后提示给黑盒测试人员及相关功能开发人员。首先,大大降低了黑盒回归测试的盲目性,提高了黑盒测试效率。其次,增加了开发人员与测试人员之间的信息沟通,对于控制研发过程中由于开发人员和测试人员信息不对称导致的开发风险具有明显的抑制作用。第三,将开发信息和测试信息以注释形式与源代码绑定在一起,保证了开发人员之间和开发人员与测试人员之间的知识转移。
    值得注意的是,上述实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
    另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
    以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

    关 键  词:
    一种 源代码 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种源代码的比对方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6228782.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1