【技术实现步骤摘要】
本专利技术涉及计算机领域,尤其涉及计算机程序测试中一种确定代码覆盖率的方法、测试装置。
技术介绍
在计算机程序的测试过程中,代码覆盖率是评价测试活动覆盖产品代码的指标。代码覆盖率测试的目的是确认产品代码是否按预期工作。代码覆盖率可以看作是产品代码工作方式的说明文档,是产品代码质量的间接指标,其用于确定测试的有效性。代码覆盖率用于评价测试代码是否已经覆盖了产品代码所有的路径。不同的测试案例对代码覆盖率的要求不同,因此,在测试程序过程中一般需要检查程序的代码覆盖率。为了确定代码覆盖率,现有技术主要使用以下两种技术方案:第一种具体是:在程序运行的过程中,高频采样程序的运行状态,在测试结束后,根据采样结果统计代码覆盖率。由于使用该技术方案对程序运行状态的采样会必然会忽略掉相当多的执行细节,采样不能反映程序执行的真实情况,因而采用该技术方案所获取的代码覆盖率只能是一个粗略统计,而不是真实的代码覆盖率。第二种具体是,在测试之前,首先需要获取被测试程序的源代码,并对源代码和工程配置进行修改:在需要进行代码覆盖率统计的源代码上增加调试信息输出设置,在修改后,将经修改后的源代码重新编译生成被测试程序。测试过程中,程序内部根据在源代码内增加的调试信息,记录有哪些代码被执行过,从而在测试结束时根据记录统计被执行过的代码总量,从而获取代码覆盖率。-->然而该技术方案的应用需要测试人员对被测试程序的源代码作修改,因此该技术方案不利于保持被测试程序的稳定性和安全性。
技术实现思路
本专利技术实施例提供了一种确定代码覆盖率的方法,采用该方法能够准确获取被测试程序的代码覆盖率,并且有利于保 ...
【技术保护点】
一种确定代码覆盖率的方法,其特征是,包括: 确定被测试程序的总代码量、所述被测试程序的基础地址、各代码行的相对虚拟地址; 根据所述基础地址、所述各代码行的虚拟地址,在所述各代码行内设置中断; 监测所述被测试程序过程中是否有中断发生,如果是,则标记所述中断所在的代码行; 监测所述测试是否执行完毕,如果否,则返回所述监测是否有中断发生的步骤;如果是,则: 累计已标记的代码行的总代码获取被执行的代码总量,根据所述被执行的代码总量、所述总代码量获取所述被测试程序的代码覆盖率。
【技术特征摘要】
1、一种确定代码覆盖率的方法,其特征是,包括:确定被测试程序的总代码量、所述被测试程序的基础地址、各代码行的相对虚拟地址;根据所述基础地址、所述各代码行的虚拟地址,在所述各代码行内设置中断;监测所述被测试程序过程中是否有中断发生,如果是,则标记所述中断所在的代码行;监测所述测试是否执行完毕,如果否,则返回所述监测是否有中断发生的步骤;如果是,则:累计已标记的代码行的总代码获取被执行的代码总量,根据所述被执行的代码总量、所述总代码量获取所述被测试程序的代码覆盖率。2、根据权利要求1所述的方法,其特征是,确定所述总代码量、所述被测试程序的基础地址、各代码行的相对虚拟地址,具体是:根据所述被测试程序的PE头信息,获取所述被测试程序的基础地址;根据所述被测试程序的程序数据库文件,获取所述被测试程序的总代码量、所述各代码行的相对虚拟地址。3、根据权利要求1所述的方法,其特征是,在所述各代码行内设置中断,具体是:在所述各代码行内写入中断标识。4、根据权利要求1、2或3所述的方法,其特征是,在所述各代码行内设置中断,具体是:在所述各代码行的入口点设置所述中断。5、根据权利要求4所述的方法,其特征是,在所述各代码行的入口点设置所述中断,包括:根据程序数据库文件路径初始化符号句柄,使用所述符号句柄定位所述各代码行的虚拟地址,在所述各代码行的虚拟地址处设置所述各代码行的中断,其中所述各代码行的虚拟地址由所述基础地址、所述代码行的相对虚拟地址确定。6、根据权利要求1、2或3所述的方法,其特征是,标记所述中断所在的代码行...
【专利技术属性】
技术研发人员:张康宗,王钊,戴赞洵,
申请(专利权)人:珠海金山软件有限公司,
类型:发明
国别省市:44[中国|广东]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。