用于软件测试的Diff分析方法及装置的制造方法

文档序号:9750702阅读:666来源:国知局
用于软件测试的Diff分析方法及装置的制造方法
【技术领域】
[0001]本申请涉及软件测试领域,具体涉及一种用于软件测试的DifT分析方法。本申请同时提供一种用于软件测试的DifT分析装置。
【背景技术】
[0002]软件测试是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快、尽早地发现在软件产品中所存在的各种问题,即:与预先定义的用户需求的不一致性。
[0003]作为贯穿整个软件开发过程中的一个重要组成部分,软件测试方法本身也是多种多样的,从是否执行程序的角度可以分为:静态测试和动态测试;从是否针对软件内部结构与算法的角度可以分为:白盒测试和黑盒测试;从测试的不同阶段进可以分为:单元测试、集成测试、系统测试、验收测试、回归测试等。
[0004]其中,回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误的一种测试技术。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试,也称为多轮迭代,在每次迭代中,都需要通过测试确认修改没有导致新的错误。
[0005]为了实现上述目的,通常的方法是在相同输入的情况下,运行两个版本(修改前和修改后,也称为新旧版本)的代码,并对输出结果进行分析比对。考虑到被测代码通常在各种不同的业务场景下运行,在代码修改未影响到的业务场景下进行回归测试时,新旧版本代码的运行结果从理论上说应该是相同的(没有Diff发生,Diff是different的英文简写),因此现有技术通常针对业务场景进行回归测试。在具体操作时,一般是随机输入各种业务场景的测试数据,分析新旧版本输出的结果,查看输出结果不同(发生Diff)的情况是否发生在受代码修改影响的业务场景中,如果不是,则说明出现了不符合预期的Diff结果,此时要对该DifT进行分析,定位引发该DifT的代码片段。
[0006]上述方法不仅原理通俗、简便易行,而且其最大的好处是回归测试成本低,能够比较快速地发现由于代码修改、而在不应受影响的业务场景中引入的错误。但是这种方法也存在一定的缺陷:如果在回归测试中出现不符合预期的结果,通常只能依靠测试人员或者开发人员对代码的了解、以及个人经验,对该Diff进行分析,确定引发该Diff的代码片段的具体位置,在待测试软件比较复杂、代码量比较大的情况下,该定位过程通常比较耗时、耗力,从而可能影响软件测试的进度。

【发明内容】

[0007]本申请提供一种用于软件测试的DifT分析方法,以解决现有技术无法针对不符合预期的DifT结果快速定位对应的代码片段的问题。本申请另外提供一种用于软件测试的Diff分析装置。
[0008]本申请提供一种用于软件测试的Diff分析方法,包括:
[0009]获取在特定测试数据下运行原始代码的代码覆盖信息,作为原始覆盖信息;所述特定测试数据是指,使所述原始代码和修改后代码在运行时产生不符合预期的不同运行结果的测试数据;
[0010]获取在所述特定测试数据下运行所述修改后代码的代码覆盖信息,作为修改后覆盖/[目息;
[0011]解析并比对所述原始覆盖信息和所述修改后覆盖信息,以查找覆盖情况不同的代码片段。
[0012]可选的,所述代码覆盖包括:语句覆盖、分支覆盖、条件覆盖、路径覆盖、或函数覆至
JHL O
[0013]可选的,所述代码覆盖为分支覆盖时,所述获取在特定测试数据下运行原始代码的代码覆盖信息具体是使用代码分支分析-标记器获取所述信息,包括:
[0014]设置在编译代码的过程中保存代码分支信息的编译选项;
[0015]编译所述原始代码,并获取所述代码分支分析-标记器生成的、与所述原始代码对应的代码分支覆盖文件;
[0016]以所述特定测试数据为输入,运行所述原始代码对应的可执行程序,所述代码分支分析-标记器在所述代码分支覆盖文件或者与其相关的文件中标记的本次运行覆盖过的代码分支信息,即为所述原始覆盖信息。
[0017]可选的,获取在特定测试数据下运行所述修改后代码的代码覆盖信息是指:使用与上述获取原始覆盖信息相同的代码分支分析-标记器获取所述信息,包括:
[0018]设置在编译代码的过程中保存代码分支信息的编译选项;
[0019]编译所述修改后代码,并获取所述代码分支分析-标记器生成的、与所述修改后代码对应的代码分支覆盖文件;
[0020]以所述特定测试数据为输入,运行所述修改后代码对应的可执行程序,所述代码分支分析-标记器在所述代码分支覆盖文件或者与其相关的文件中标记的本次运行覆盖过的代码分支信息,即为所述修改后覆盖信息。
[0021]可选的,所述代码分支分析-标记器包括:BullseyeCoverage工具软件、或者gcov工具软件。
[0022]可选的,所述代码分支分析-标记器为BullseyeCoverage工具软件时,所述解析并比对所述原始覆盖信息和所述修改后覆盖信息是指,使用BullseyeCoverage工具软件分别解析所述原始覆盖信息和所述修改后覆盖信息,并将该工具软件解析后的输出结果进行比对。
[0023]可选的,所述覆盖情况不同的代码片段是指,在上述进行比对的两个输出结果中,如果针对相同的分支判定代码标记的分支执行情况不一致,则所述分支判定代码及对应的代码分支即为所述覆盖情况不同的代码片段。
[0024]可选的,所述代码分支分析-标记器为gcov工具软件时,所述解析并比对所述原始覆盖信息和所述修改后覆盖信息包括:
[0025]采用gcov工具软件的扩展工具软件Icov,分别解析所述原始覆盖信息和所述修改后覆盖信息;
[0026]采用Icov工具软件自带的genhtml工具软件对上述解析结果分别进行处理,生成相应的网页格式的报告;
[0027]对上述网页格式的报告中标记的代码分支执行情况进行比对。
[0028]可选的,所述覆盖情况不同的代码片段是指,在上述进行比对的两个网页格式的报告中,如果针对相同的分支判定代码标记的分支执行情况不一致,则所述分支判定代码及对应的代码分支即为所述覆盖情况不同的代码片段。
[0029]相应的,本申请还提供一种用于软件测试的DifT分析装置,包括:
[0030]原始覆盖信息获取单元,用于获取在特定测试数据下运行原始代码的代码覆盖信息,作为原始覆盖信息;
[0031]修改后覆盖信息获取单元,用于获取在所述特定测试数据下运行修改后代码的代码覆盖信息,作为修改后覆盖信息;
[0032]覆盖信息解析比对单元,用于解析并比对所述原始覆盖信息和所述修改后覆盖信息,以查找覆盖情况不同的代码片段。
[0033]可选的,所述代码覆盖为分支覆盖时,所述原始覆盖信息获取单元具体用于,使用代码分支分析-标记器获取在特定测试数据下运行原始代码的代码覆盖信息;
[0034]所述原始覆盖信息获取单元包括:
[0035]编译选项设置子单元,用于设置在编译代码的过程中保存代码分支信息的编译选项;
[0036]第一分支覆盖文件生成子单元,用于编译所述原始代码,并获取所述代码分支分析-标记器生成的、与所述原始代码对应的代码分支覆盖文件;
[0037]原始覆盖信息获取子单元,用于以所述特定测试数据为输入,运行所述原始代码对应的可执行程序,所述代码分支分析-标记器在所述代码分支覆盖文件或者与其相关的文件中标记的本次运行覆盖过的代码分支信息,即为所述原始覆盖信息。
[0038]可选的,所述修改后覆盖信息获取单元具体用于,使用所述原始覆盖信息获取单元所采用的代码分支分析-标记器获取在特定测试数据下运行修改后代码的代码覆盖信息;
[0039]所述修改后覆盖信息获取单元包括:
[0040]编译选项设置子单元,用于设置在编译代码的过程中保存代码分支信息的编译选项;
[0041]第二分支覆盖文件生成子单元,用于编译所述修改后代码,并获取所述代码分支分析-标记器生成的、与所述修改后代码对应的代码分支覆盖文件;
[0042]修改后覆盖信息获取子单元,用于以所述特定测试数据为输入,运行所述修改后代码对应的可执行程序,所述代码分支分析-标记器在所述代码分支覆盖文件或者与其相关的文件中标记的本次运行覆盖过的代码分支信息,即为所述修改后覆盖信息。
[0043]可选的,所述原始覆盖信息获取单元和所述修改后覆盖信息获取单元所使用的所述代码分支分析-标记器包括=BullseyeCoverage工具软件、或者gcov工具软件。
[0044]可选的,所述原始覆盖信息获取单元和所述修改后覆盖信息获取单元使用的代码分支分析-标记器为BullseyeCoverage工具软件时,所述覆盖信息解析比对单元具体用于,使用BullseyeCoverage工具软件分别解析所述原始覆盖信息和所述修改后覆盖信息,并将该工具软件解析后的输出结果进行比对。
[0045]可选的,所述覆盖信息解析比对单元通过比对查
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1