本发明专利技术提供了一种代码覆盖率确定方法及装置,其中,该方法包括:根据被测软件的需求查询关联的多个代码版本;确定该需求涉及代码的代码影响范围;对该多个代码版本的覆盖率进行累加,得到该需求的累计覆盖率;根据该代码影响范围与该累计覆盖率确定该被测代码的覆盖率,可以解决相关技术中在软件测试领域中,现有的覆盖率计算存在局限性且测试价值低的问题,支持需要进行多轮、中途更换版本的测试场景,且提高了代码覆盖率的测试价值。且提高了代码覆盖率的测试价值。且提高了代码覆盖率的测试价值。
【技术实现步骤摘要】
一种代码覆盖率确定方法及装置
[0001]本专利技术涉及数据处理领域,具体而言,涉及一种代码覆盖率确定方法及装置。
技术介绍
[0002]随着软件技术的快速发展,软件测试工作也在不断自我进化,行业测试标准逐步形成,新的测试工具手段纷纷落地,测试作为软件提质增效和防控风险的基础保障作用日益显现。面对国家信创战略的新要求以及开放银行等新型商业模式的新需求,银行软件测试工作要把握趋势,加强能力建设,不断延伸领域、创新方法、形成标准,成为金融科技创新的支持者、守护者和引领者,在银行数字化转型过程中体现出更大的自身价值。
[0003]软件测试的代码覆盖率,指的是测试时,代码被执行到的比例或程度,通过代码覆盖率,可以一定程度上度量代码的质量。
[0004]现有技术方案或开源方案,对于测试覆盖率的支持,仅止于全量代码的覆盖率或增量覆盖率,应用场景较为简单。
[0005]在软件测试领域中,现有的覆盖率计算技术存在以下缺点:
[0006]测试局限性,现有的覆盖率技术仅支持对同一个版本的软件覆盖率指标进行度量。而无法支持需要进行多轮、中途更换版本的测试场景,如系统测试。
[0007]测试低价值,现有覆盖率技术的度量结果,与软件的功能、需求无关,只是简单、无差别的对所有代码进行覆盖率计算,测试人员无从知晓目标功能的真实覆盖情况。
[0008]针对相关技术中在软件测试领域中,现有的覆盖率计算存在局限性且测试价值低的问题,尚未提出解决方案。
技术实现思路
[0009]本专利技术实施例提供了一种代码覆盖率确定方法及装置,以至少解决相关技术中在软件测试领域中,现有的覆盖率计算存在局限性且测试价值低的问题。
[0010]根据本专利技术的一个实施例,提供了一种代码覆盖率确定方法,包括:
[0011]根据被测软件的需求查询关联的多个代码版本;
[0012]确定所述需求涉及代码的代码影响范围;
[0013]对所述多个代码版本的覆盖率进行累加,得到所述需求的累计覆盖率;
[0014]根据所述代码影响范围与所述累计覆盖率确定所述被测代码的覆盖率。
[0015]可选地,在根据所述代码影响范围与所述累计覆盖率确定所述被测代码的覆盖率之后,所述方法还包括:
[0016]根据所述需求的代码影响范围,对所述被测软件覆盖到的代码进行染色。
[0017]可选地,确定所述需求涉及代码的代码影响范围包括:
[0018]利用版本比对工具对需求关联的所述多个代码版本中的起始版本、当前版本的java代码进行对比,得到代码的变更行号集合DL[line],将之保存到存储介质中;
[0019]利用抽象语法树AST对所述当前版本的java代码进行解析,识别出函数集合F
[function];
[0020]根据所述变更行号集合DL[line],对所述函数集合F[function]进行筛选,得到所述需求的变更函数集合DF[function],其中,所述代码影响范围为所述变更函数集合DF[function]。
[0021]可选地,根据所述代码影响范围与所述累计覆盖率确定所述被测代码的覆盖率包括:
[0022]利用所变更函数集合DF[function]对所述累计覆盖率进行筛选,得到所述需求覆盖率。
[0023]可选地,对所述多个代码版本的覆盖率进行累加,得到所述需求的累计覆盖率包括:
[0024]利用代码覆盖率工具jacoco,对所述被测软件的单个应用程序进行插桩,定频采集所述多个代码版本的覆盖率信息,以xml文件格式保存于存储介质中;
[0025]从存储介质中获取多个XML文件;
[0026]按照时间先后顺序对所述多个XML文件进行排序,得到File 1、File 2、File 3、...、File n;
[0027]将最新的所述Filen作为基准,依次将File 1、File 2、File 3、...、File n
‑
1合并到所述File n中,得到合并结果;
[0028]根据所述合并结果确定所述累计覆盖率。
[0029]可选地,将最新的所述File n作为基准,依次将File 1、File 2、File 3、...、File n
‑
1合并到所述File n中,得到合并结果包括:
[0030]对所述File 1、File 2、File 3、...、File n
‑
1中的每一个执行以下步骤,直到完成将File 1、File 2、File 3、...、File n
‑
1合并到所述File n中,得到所述合并结果,其中,正在执行的称为当前File:
[0031]将所述当前File,得到函数的唯一性签名KEYa的覆盖明细COVa;
[0032]解析所述Filen中,得到函数的唯一性签名KEYan的覆盖明细COVan;
[0033]如果所述当前File对应的KEYa等于所述KEYan,将所述当前File对应的覆盖明细COVa和所述Filen对应的覆盖明细COVan进行合并;
[0034]如果所述当前File对应的KEYa不等于所述KEYan,舍弃所述当前File对应的覆盖明细COVa,只保留所述Filen对应的覆盖明细COVan。
[0035]根据本专利技术的另一个实施例,还提供了一种代码覆盖率确定装置,包括:
[0036]查询模块,用于根据被测软件的需求查询关联的多个代码版本;
[0037]第一确定模块,用于确定所述需求涉及代码的代码影响范围;
[0038]累加模块,用于对所述多个代码版本的覆盖率进行累加,得到所述需求的累计覆盖率;
[0039]第二确定模块,用于根据所述代码影响范围与所述累计覆盖率确定所述被测代码的覆盖率。
[0040]可选地,所述装置还包括:
[0041]染色模块,用于根据所述需求的代码影响范围,对所述被测软件覆盖到的代码进行染色。
[0042]可选地,所述第一确定模块包括:
[0043]对比子模块,用于利用版本比对工具对需求关联的所述多个代码版本中的起始版本、当前版本的java代码进行对比,得到代码的变更行号集合DL[line],将之保存到存储介质中;
[0044]解析子模块,用于利用抽象语法树AST对所述当前版本的java代码进行解析,识别出函数集合F[function];
[0045]筛选子模块,用于根据所述变更行号集合DL[line],对所述函数集合F[function]进行筛选,得到所述需求的变更函数集合DF[function],其中,所述代码影响范围为所述变更函数集合DF[function]。
[0046]可选地,所述第二确定模块,还用于:
[0047]利用所变更函数集合DF[function]对所述累计覆盖率进行筛选,得到所述需求覆盖率。
[0048]可选地,所述累加本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种代码覆盖率确定方法,其特征在于,包括:根据被测软件的需求查询关联的多个代码版本;确定所述需求涉及代码的代码影响范围;对所述多个代码版本的覆盖率进行累加,得到所述需求的累计覆盖率;根据所述代码影响范围与所述累计覆盖率确定所述被测代码的覆盖率。2.根据权利要求1所述的方法,其特征在于,在根据所述代码影响范围与所述累计覆盖率确定所述被测代码的覆盖率之后,所述方法还包括:根据所述需求的代码影响范围,对所述被测软件覆盖到的代码进行染色。3.根据权利要求1所述的方法,其特征在于,确定所述需求涉及代码的代码影响范围包括:利用版本比对工具对需求关联的所述多个代码版本中的起始版本、当前版本的java代码进行对比,得到代码的变更行号集合DL[line],将之保存到存储介质中;利用抽象语法树AST对所述当前版本的java代码进行解析,识别出函数集合F[function];根据所述变更行号集合DL[line],对所述函数集合F[function]进行筛选,得到所述需求的变更函数集合DF[function],其中,所述代码影响范围为所述变更函数集合DF[function]。4.根据权利要求3所述的方法,其特征在于,根据所述代码影响范围与所述累计覆盖率确定所述被测代码的覆盖率包括:利用所变更函数集合DF[function]对所述累计覆盖率进行筛选,得到所述需求覆盖率。5.根据权利要求1至4中任一项所述的方法,其特征在于,对所述多个代码版本的覆盖率进行累加,得到所述需求的累计覆盖率包括:利用代码覆盖率工具jacoco,对所述被测软件的单个应用程序进行插桩,定频采集所述多个代码版本的覆盖率信息,以xml文件格式保存于存储介质中;从存储介质中获取多个XML文件;按照时间先后顺序对所述多个XML文件进行排序,得到File 1、File 2、File 3、...、File n;将最新的所述File n作为基准,依次将File 1、File 2、File 3、...、File n
‑
1合并到所述File n中,得到合并结果;根据所述合并结果确定所...
【专利技术属性】
技术研发人员:蒋其恩,王靖文,龚荣荣,史新丽,栗冰,邓建全,李红建,丁永建,李璠,
申请(专利权)人:光大科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。