System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别是涉及一种条件分支覆盖率计算方法、装置、计算机设备、存储介质。
技术介绍
1、通常来说,为了保证项目质量,一个项目需要进行几轮测试,除了常见的单元测试、集成测试、功能测试、回归测试,我们还需要代码覆盖率测试来保障代码测试的完整性全面性,如果代码覆盖率测试不达标,这就说明还有一些code没有被测试完全,而这些没有被测试到的code很可能会存在bug,导致项目质量没有办法得到保证,由此可见代码覆盖率测试的重要性。
2、常用的代码覆盖率统计计量标准有函数覆盖率、条件覆盖率、分支覆盖率、语句覆盖率。其中,语句覆盖与函数覆盖是通过覆盖到的语句与函数除以语句和函数的总数来取得的,而条件分支覆盖率也是通过统计覆盖到的条件和分支除以总的条件和分支总数取得的,一般的条件分支覆盖率是通过统计代码覆盖到的条件分支数除以条件分支总数来计算的,但是在有些情况下,有些代码的条件分支是没必要或者不可能覆盖到的,导致覆盖率报告的结果不够精准可靠,无法满足某些高精尖项目的代码测试需求。
3、目前,计算条件分支覆盖率的方式精确程度不高。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够精确的计算条件分支覆盖率的条件分支覆盖率计算方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本申请提供了一种条件分支覆盖率计算方法。所述方法包括:
3、获取目标代码中未被覆盖的条件分支代码行的代码类型,根据代码类型获取未被覆盖
4、根据未被覆盖的条件分支代码行对应的注释信息获取未被覆盖的条件分支代码行对应的覆盖参数;
5、根据未被覆盖的条件分支代码行对应的覆盖参数和目标代码中条件分支代码行的总个数,计算目标代码对应的条件分支覆盖率。
6、在其中一个实施例中,目标代码中未被覆盖的条件分支代码行的获取方式,包括:
7、获取目标代码的基础条件分支覆盖率;
8、根据目标代码的基础条件分支覆盖率获取目标代码中未被覆盖的条件分支代码行。
9、在其中一个实施例中,获取目标代码中未被覆盖的条件分支代码行的代码类型,根据代码类型获取未被覆盖的条件分支代码行对应的注释类型之前,还包括:
10、获取目标代码中每一个条件分支代码行,并识别目标代码中每一个条件分支代码行的代码类型;
11、根据每一个条件分支代码行的代码类型确定每一个条件分支代码行对应的注释类型,并根据目标代码中每一个条件分支代码行对应的注释类型,为每一个条件分支代码行添加注释信息。
12、在其中一个实施例中,根据每一个条件分支代码行的代码类型确定每一个条件分支代码行对应的注释类型,并根据目标代码中每一个条件分支代码行对应的注释类型,为每一个条件分支代码行添加注释信息,包括:
13、若一个条件分支代码行的代码类型为第一代码类型,则确定一个条件分支代码行对应第一注释类型,第一注释类型包括第一注释信息、第二注释信息、第三注释信息和第四注释信息,为一个条件分支代码行添加第一注释信息、第二注释信息、第三注释信息和第四注释信息其中一种注释信息,或者不添加任何注释信息;
14、若一个条件分支代码行的代码类型为第二代码类型,则确定一个条件分支代码行对应第二注释类型,第二注释类型包括第五注释信息,为一个条件分支代码行添加第五注释信息,或者不添加任何注释信息;
15、第一注释信息用于表示排除对应条件分支代码行的第一部分,第二注释信息用于表示排除对应条件分支代码行的第二部分,第三注释信息用于表示排除对应条件分支代码行的第一部分或第二部分,第四注释信息用于表示排除对应条件分支代码行的第一部分和第二部分,第五注释信息用于表示排除对应条件分支代码行。
16、在其中一个实施例中,根据未被覆盖的条件分支代码行对应的注释信息获取未被覆盖的条件分支代码行对应的覆盖参数,包括:
17、若一个条件分支代码行的代码类型为第一代码类型,获取未被覆盖的条件分支代码行对应的未覆盖类型,未覆盖类型分为第一部分覆盖、第二部分覆盖或全未覆盖;
18、若未被覆盖的条件分支代码行对应的未覆盖类型为第一部分覆盖,且未被覆盖的条件分支代码行对应的注释信息为第二注释信息、第三注释信息或第四注释信息,则确定未被覆盖的条件分支代码行对应的覆盖参数为0;
19、若未被覆盖的条件分支代码行对应的未覆盖类型为第一部分覆盖,且未被覆盖的条件分支代码行对应的注释信息不为第二注释信息、第三注释信息或第四注释信息,则确定未被覆盖的条件分支代码行对应的覆盖参数为-1;
20、若未被覆盖的条件分支代码行对应的未覆盖类型为第二部分覆盖,且未被覆盖的条件分支代码行对应的注释信息为第一注释信息、第三注释信息或第四注释信息,则确定未被覆盖的条件分支代码行对应的覆盖参数为0;
21、若未被覆盖的条件分支代码行对应的未覆盖类型为第二部分覆盖,且未被覆盖的条件分支代码行对应的注释信息不为第一注释信息、第三注释信息或第四注释信息,则确定未被覆盖的条件分支代码行对应的覆盖参数为-1;
22、若未被覆盖的条件分支代码行对应的未覆盖类型为全未覆盖,且未被覆盖的条件分支代码行对应的注释信息为第四注释信息,则确定未被覆盖的条件分支代码行对应的覆盖参数为0;
23、若未被覆盖的条件分支代码行对应的未覆盖类型为全未覆盖,且未被覆盖的条件分支代码行对应的注释信息为第一注释信息、第二注释信息或第三注释信息,则确定未被覆盖的条件分支代码行对应的覆盖参数为-1;
24、若未被覆盖的条件分支代码行对应的未覆盖类型为全未覆盖,且未被覆盖的条件分支代码行对应的注释信息不为第一注释信息、第二注释信息、第三注释信息或第四注释信息,则确定未被覆盖的条件分支代码行对应的覆盖参数为-2;
25、若一个条件分支代码行的代码类型为第二代码类型,且未被覆盖的条件分支代码行对应的注释信息为第五注释信息,则确定未被覆盖的条件分支代码行对应的覆盖参数为0;
26、若一个条件分支代码行的代码类型为第二代码类型,且未被覆盖的条件分支代码行对应的注释信息不为第五注释信息,则确定未被覆盖的条件分支代码行对应的覆盖参数为-1。
27、在其中一个实施例中,根据未被覆盖的条件分支代码行对应的覆盖参数和目标代码中条件分支代码行的总个数,计算目标代码对应的条件分支覆盖率,包括:
28、将目标代码中条件分支代码行的总个数和目标代码中每一个未被覆盖的条件分支代码行对应的覆盖参数相加计算目标代码对应的条件分支覆盖数;
29、根据目标代码对应的条件分支覆盖数和目标代码中条件分支代码行的总个数的比值计算目标代码对应的条件分支覆盖率。
30、第二方面,本申请还提供了一种条件分支覆盖率计算装置。所述装置包括:
31、注释识别模块,用本文档来自技高网...
【技术保护点】
1.一种条件分支覆盖率计算方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述目标代码中未被覆盖的条件分支代码行的获取方式,包括:
3.根据权利要求1所述的方法,其特征在于,所述获取目标代码中未被覆盖的条件分支代码行的代码类型,根据所述代码类型获取所述未被覆盖的条件分支代码行对应的注释类型之前,还包括:
4.根据权利要求3所述的方法,其特征在于,所述根据每一个条件分支代码行的代码类型确定每一个条件分支代码行对应的注释类型,并根据所述目标代码中每一个条件分支代码行对应的注释类型,为每一个条件分支代码行添加注释信息,包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述未被覆盖的条件分支代码行对应的注释信息获取所述未被覆盖的条件分支代码行对应的覆盖参数,包括:
6.根据权利要求5所述的方法,其特征在于,所述根据所述未被覆盖的条件分支代码行对应的覆盖参数和所述目标代码中条件分支代码行的总个数,计算所述目标代码对应的条件分支覆盖率,包括:
7.一种条件分支覆盖率计算装置,其特征在于
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种条件分支覆盖率计算方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述目标代码中未被覆盖的条件分支代码行的获取方式,包括:
3.根据权利要求1所述的方法,其特征在于,所述获取目标代码中未被覆盖的条件分支代码行的代码类型,根据所述代码类型获取所述未被覆盖的条件分支代码行对应的注释类型之前,还包括:
4.根据权利要求3所述的方法,其特征在于,所述根据每一个条件分支代码行的代码类型确定每一个条件分支代码行对应的注释类型,并根据所述目标代码中每一个条件分支代码行对应的注释类型,为每一个条件分支代码行添加注释信息,包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述未被覆盖的条件分支代码行对应的注释信息获取所述未被覆盖的条件分支代码行对应的...
【专利技术属性】
技术研发人员:周丽雯,项冠芳,周云峰,张一飞,
申请(专利权)人:格兰菲智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。