应用程序测试覆盖率的确定方法、装置、介质及设备与流程

文档序号:29075138发布日期:2022-03-01 22:32阅读:106来源:国知局
应用程序测试覆盖率的确定方法、装置、介质及设备与流程

1.本公开涉及测试领域,具体地,涉及一种应用程序测试覆盖率的确定方法、装置、介质及设备。


背景技术:

2.计算机技术的发展,使得用户的对各类应用程序的准确性的要求逐渐提升。为了提高应用程序与用户使用的适配,通常需要对该应用程序进行更新,而在进行更新后则需要对其进行相应的测试确定新版本可用后,才能将该新版本投入使用。
3.目前,针对应用程序的更新测试中在确定其测试覆盖率时通常是采用执行单元测试用例的方式进行统计,例如可以编写测试用例以调用执行变更方法,其中执行的参数为用于测试的后端模拟数据,从而实现测试覆盖率的统计。而相关技术中,部分应用程序的逻辑比较复杂,其测试数据通常和运行环境以及用户操作的关联性较大,难以通过后端模拟数据对实际数据进行模拟,通过上述技术方案难以对该类应用程序测试覆盖率进行统计。


技术实现要素:

4.提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
5.第一方面,本公开提供一种应用程序测试覆盖率的确定方法,所述方法包括:
6.响应于接收到测试指令,获取目标应用程序的测试数据,其中,所述测试数据包括至少一个开发工单对应的测试运行过程中执行的代码信息,每一所述开发工单对应于所述目标应用程序的一个功能;
7.获取所述目标应用程序测试完成的已测试开发工单的工单信息,其中,所述工单信息中包含变更文件信息;
8.根据所述变更文件信息,从所述测试数据中确定与所述已测试开发工单对应的测试记录;
9.根据所述变更文件信息和所述测试记录,确定所述已测试开发工单对应的测试覆盖率。
10.第二方面,本公开提供一种应用程序测试覆盖率的确定装置,所述装置包括:
11.第一获取模块,用于响应于接收到测试指令,获取目标应用程序的测试数据,其中,所述测试数据包括至少一个开发工单对应的测试运行过程中执行的代码信息,每一所述开发工单对应于所述目标应用程序的一个功能;
12.第二获取模块,用于获取所述目标应用程序测试完成的已测试开发工单的工单信息,其中,所述工单信息中包含变更文件信息;
13.第一确定模块,用于根据所述变更文件信息,从所述测试数据中确定与所述已测试开发工单对应的测试记录;
14.第二确定模块,用于根据所述变更文件信息和所述测试记录,确定所述已测试开发工单对应的测试覆盖率。
15.第三方面,本公开提供一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现第一方面所述方法的步骤。
16.第四方面,本公开提供一种电子设备,包括:
17.存储装置,其上存储有计算机程序;
18.处理装置,用于执行所述存储装置中的所述计算机程序,以实现第一方面所述方法的步骤。
19.通过上述技术方案,通过获得的目标应用程序测试运行过程中执行到的代码信息,确定该测试过程对已测试开发工单中的变更文件的执行情况,以获得该测试覆盖度,一方面无需针对变更文件撰写后端模拟数据的测试用例,保证测试数据的准确性,另一方面可以基于该目标应用程序测试运行的实际环境中的数据确定对变更文件的测试覆盖度,使得测试数据与实际应用场景更加匹配,保证测试过程和测试结果的准确性。另外,该方法可以应用于测试数据与运行环境以及用户操作的关联性较大的应用程序的测试过程,进一步提高该方法的使用范围,同时可以为测试人员的测试过程是否全面提供准确的提示,为测试人员进行更加全面的测试提供准确的数据支持,进一步保证目标应用程序更新的安全性和稳定性。
20.本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
21.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
22.图1是根据本公开的一种实施方式提供的应用程序测试覆盖率的确定方法的流程图;
23.图2是根据本公开的一种实施方式提供的项目管理工具的示意图;
24.图3是根据本公开的一种实施方式提供的测试平台中的测试结果界面的示意图;
25.图4是根据本公开的另一种实施方式提供的测试平台中的测试结果界面的示意图;
26.图5是根据本公开的另一种实施方式提供的测试平台中的测试结果界面的示意图;
27.图6是根据本公开的一种实施方式提供的应用程序测试覆盖率的确定装置的框图;
28.图7示出了适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
29.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的
是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
30.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
31.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
32.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
33.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
34.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
35.图1所示,为根据本公开的一种实施方式提供的应用程序测试覆盖率的确定方法的流程图,如图1所示,所述方法包括:
36.在步骤11中,响应于接收到测试指令,获取目标应用程序的测试数据,其中,所述测试数据包括至少一个开发工单对应的测试运行过程中执行的代码信息,每一所述开发工单对应于所述目标应用程序的一个功能。
37.示例地,其中,在目标应用程序的更新过程中通常需要进行代码更新以对功能进行优化或者增加新的功能。在该过程中针对需要处理的每一功能可以通过提交开发工单的方式对更新过程进行记录,并在开发完成后对其进行测试,以确定更新或者新增功能的可用性。本公开中所提供的方法可以应用于测试平台,在需要进行测试时,用户可以在测试平台中通过点击按钮触发测试指令,从而测试平台接收到该测试指令,可以在对目标应用程序的测试过程中进行监测,以根据监测数据自动实现对该目标应用程序的测试过程中的测试覆盖度的确定。作为示例,目标应用程序可以在测试运行过程中自动记录其运行过程执行的代码信息等测试数据,并将该测试数据上传至测试平台或者存储到预设的存储位置。由此,测试平台接收到测试指令后则可以自动获取该测试数据,基于该测试数据对测试过程进行分析。
38.在步骤12中,获取目标应用程序测试完成的已测试开发工单的工单信息,其中,所述工单信息中包含变更文件信息。
39.示例地,可以通过redmine项目管理工具进行开发工单管理。例如,针对目标应用程序中需要进行更新的功能,可以创建一开发工单,之后开发人员可以开发工单进行相应的开发过程,该开发工单的状态会转换成制作中进而转换成制作完成,即开发过程结束。之后可以基于开发工单对应的功能进行测试,则开发工单的状态会进一步转换成测试中、关闭,至关闭表示功能开发测试完成,如图2所示,为项目管理工具的示意图,其中可以包含上述各个状态下的开发工单,如制作中、制作完成、测试中、关闭等状态,从而可以通过该工单管理工具直接获得对应的工单信息,便于统一管理。
40.由此,在该实施例中,可以通过调用相关的工单管理系统获得开发工单,将处于关
闭状态,即测试完成的开发工单确定为已测试开发工单,如图2中的的“#81”和“#82”对应的开发工单,并获取该已测试开发工单的工单信息,以获得该开发过程中对应的文件变更情况。
41.在步骤13中,根据变更文件信息,从测试数据中确定与已测试开发工单对应的测试记录。
42.在本公开实施例中,为了确定测试过程中变更的文件是否被测试执行到,在该步骤中,可以将该测试数据中与该变更文件信息对应的测试记录作为该与已测试开发工单对应的测试记录,对该变更文件信息对应的测试记录进行过滤,以降低需要进行分析的数据量。
43.在步骤14中,根据变更文件信息和测试记录,确定已测试开发工单对应的测试覆盖率。其中,该测试覆盖率可以通过该测试过程中执行到的新变更数据的程度进行表示,从而可以为测试的全面性提供准确的数据参考。
44.由此,通过上述技术方案,通过获得的目标应用程序测试运行过程中执行到的代码信息,确定该测试过程对已测试开发工单中的变更文件的执行情况,以获得该测试覆盖度,一方面无需针对变更文件撰写后端模拟数据的测试用例,保证测试数据的准确性,另一方面可以基于该目标应用程序测试运行的实际环境中的数据确定对变更文件的测试覆盖度,使得测试数据与实际应用场景更加匹配,保证测试过程和测试结果的准确性。另外,该方法可以应用于测试数据与运行环境以及用户操作的关联性较大的应用程序的测试过程,进一步提高该方法的使用范围,同时可以为测试人员的测试过程是否全面提供准确的提示,为测试人员进行更加全面的测试提供准确的数据支持,进一步保证目标应用程序更新的安全性和稳定性。
45.在一种可能的实施例中,响应于接收到测试指令,获取目标应用程序的测试数据的示例性实现方式如下,该步骤可以包括:
46.响应于接收到测试指令,接收目标应用程序测试启动后发送的测试执行数据。
47.作为示例,响应于接收到测试指令,测试平台可以向目标应用程序发送通知消息,则该目标应用程序接收到通知消息后,可以在目标应用程序的测试启动时开始记录代码执行数据。示例地,该目标应用程序可以是游戏类应用程序,则可以在游戏测试开始时,记录游戏操作过程中的代码执行数据。作为示例,在该过程中,可以通过debug.hook方法在代码执行到每一行的时候触发记录该代码行的属性信息,所述属性信息可以包括代码行所属的文件以及该代码行的行号信息,并向测试平台发送上述记录的执行数据。
48.响应于接收到所述目标应用程序测试结束的通知消息,将接收到的测试执行数据进行合并,确定合并后的数据中各个执行到的代码行所属的文件、行号信息和执行次数,以获得所述代码信息。
49.作为示例,目标应用程序可以定时向测试平台发送其记录的执行数据,并在游戏结束时,向测试平台发送通知消息,从而在测试平台接收到该通知消息时确定该游戏测试结束,并将从游戏测试启动到结束过程中接收到的数据进行整合,从而获得该目标应用程序的运行过程的测试数据。
50.示例地,在测试平台接收到通知消息确定游戏测试结束后,可以将接收到的测试执行数据进行整合,如针对执行到的每一代码行,确定该代码行所属的文件、该代码行的行
号、该代码行的执行次数、该代码行执行的文件的版本号、该测试执行数据对应的测试用户标识等,从而可以将该整合后的数据进行存储,以便于后续的分析过程。
51.由此,通过上述技术方案,针对目标应用程序的测试过程,用户无需撰写测试用例中的后端模拟数据,其可以在测试过程中处理目标应用程序进行数据记录,从而可以根据目标应用程序运行过程中的实际数据作为测试数据进行分析,从而确定测试过程中的测试覆盖度,降低对测试用户的技能要求,提高目标应用程序测试的便利性和应用性。
52.在一种可能的实施例中,所述测试数据还包括所述测试数据对应的用户标识,所述测试数据对应的测试时间,所述测试数据对应的测试版本的标识;所述工单信息还包括所述已测试开发工单的完成时间、测试用户标识以及所述已测试开发工单提交时的目标版本;
53.所述根据所述变更文件信息,从所述测试数据中确定与所述已测试开发工单对应的测试记录的示例性实现方式如下,该步骤可以包括:
54.将所述测试数据中满足以下条件的测试记录确定为与所述已测试开发工单对应的测试记录:
55.条件1,所述测试数据对应的代码信息所属文件的文件信息为所述变更文件信息。其中,在本公开中确定测试覆盖率是确定本次测试过程中对于变更文件的测试执行的程度,因此在该实施例中可以只需要获得与变更文件对应的测试记录,对于其他未变更的文件的测试过程则无需进行分析。
56.条件2,所述测试数据对应的测试版本的标识大于或等于所述目标版本的标识。
57.其中,该目标版本为该已测试开发工单提交时的文件版本,即该已测试开发工单对应的变更文件的最终版本,在该目标版本之前的数据并非针对本次已测试开发工单的变更文件的测试数据,则目标版本之前的版本对应的测试记录可以无需进行分析。
58.条件3,所述测试数据对应的测试时间早于所述完成时间。
59.其中,该完成时间为该已测试开发工单的完成时间,也就是该已测试开发工单的测试完成时间,则在该时间之后的测试记录并不属于本次测试过程,则可以无需对其进行分析。
60.条件4,所述测试数据对应的用户标识与所述测试用户标识相同。
61.其中,通常测试过程中一个已测试开发工单会由同一个测试人员进行测试,因此,针对一个已测试开发工单则可以直接选择该已测试开发工单对应的测试人员相关的测试数据,对应于其他用户的测试数据则无需进行分析。
62.由此,通过上述多个条件进行判断,可以准确且全面地确定出对应的已测试开发工单的变更文件对应的测试记录,在保证测试记录全面性的同时,可以有效降低需要进行分析的数据量,保证测试覆盖度计算的准确性的同时,提高测试覆盖度计算的效率,后续进行测试过程分析和测试结果校验提供准确的数据支持。
63.在一种可能的实施例中,在步骤14中根据变更文件信息和测试记录,确定已测试开发工单对应的测试覆盖率的示例性实现方式,包括:
64.根据所述变更文件信息,确定所述已测试开发工单对应的变更代码行。
65.其中,所述变更文件信息可以为该已测试开发工单对应的变更文件的标识信息,之后,则可以根据标识信息获得进行本次变更前后的文件,通过变更前后的文件对比,确定
该变更文件对应的变更代码行,并将各个变更文件分别对应的变更代码行确定为所述已测试开发工单对应的变更代码行。其中,对变更前后的文件进行对比确定变更的代码行的方式可以采用本领域中的常用工具进行对比,在此不再赘述。
66.根据所述测试记录,确定每一所述变更代码行的执行次数。
67.其中,在该测试记录中记录了测试过程中执行到了每一代码行的行号,从而可以基于确定出的变更代码行的行号从该测试记录进行查询,将从测试记录中查询到的、与变更代码行的行号对应的测试记录作为该变更代码行的一次测试执行,并将查询到的测试记录的数量作为该变更代码行的执行次数。
68.作为另一实施例,如上文所述,在获取到目标应用程序的测试数据后,可以对该测试数据进行合并处理,该合并处理过程可以是针对测试数据中的每一代码行对应的测试记录进行统计,从而可以获得每一代码行对应的测试记录,从而获得每一代码行对应的执行次数,并将该代码行与执行测试的对应关系进行存储。则在该实施例中,可以直接基于变更代码行的行号从上述对应关系中进行查询,从而将查询到的执行次数作为该变更代码行的执行次数,进一步提高计算效率,简化计算流程。
69.之后,将所述执行次数大于预设阈值的变更代码行的数量与所述变更代码行的总数量的比值确定为所述测试覆盖率。
70.作为示例,该预设阈值可以设置为零。例如,若变更代码行的执行次数为零,则表示在该测试过程中并未执行该变更代码行,即该测试过程中未覆盖到该变更代码行;若变更代码行的执行次数大于零,则表示在该测试过程中该变更代码行被执行,即该测试过程中覆盖到该变更代码行。
71.作为另一示例,为了保证测试过程的可靠性,该预设阈值可以设置为大于零的整数n,即在一代码行执行n次的情况下认为符合测试过程中的代码行的执行要求,该情况下可以将该代码行作为测试执行过的代码行;在一代码行的执行次数小于n时认为该次数较少不符合测试过程的执行要求,该情况下不会将该代码行作为测试执行过的代码行。
72.由此,在该实施例中,可以将所述执行次数大于预设阈值的变更代码行的数量与所述变更代码行的总数量的比值确定为所述测试覆盖率,即测试过程中测试执行到的变更代码行的数量与该变更代码行的总数量的比值。
73.由此,通过上述技术方案,可以通过已测试开发工单对应的各个变更代码行在本次测试过程中是否被测试执行到,从而确定本次测试过程对应的测试覆盖率,在该过程中,可以直接基于测试数据对变更代码行的执行情况进行分析确定,简化测试覆盖率的计算流程,同时可以为后续核验测试结果提供有效的数据支持,为测试过程的全面性提供数据支持,保证测试结果的准确性和有效性。
74.在实际应用场景中,针对一个代码文件在当前用户提交后可能会由多个用户进行共享更改。示例地,已测试开发工单的开发用户a1对f1文件的第200行代码进行了修改,在其提交之后,另一开发用户a2也可能对f1文件进行修改,如在该f1文件中增加的10行代码,由此可能导致已测试开发工单对应的变更代码行的行号发生变化。基于此,本公开还提供以下实施例。
75.在一种可能的实施例中,在步骤14中根据变更文件信息和测试记录,确定已测试开发工单对应的测试覆盖率的另一示例性实现方式如下,该步骤可以包括:
76.根据所述变更文件信息,确定所述已测试开发工单对应的变更代码行。其中,该步骤的实现方式已在上文进行详述,在此不再赘述。
77.若所述测试记录对应的变更文件的版本为多个,则根据每一所述变更代码行的标识信息,确定所述变更代码行在关联版本的变更文件中对应的映射代码行,其中,所述变更文件的关联版本为多个版本中晚于所述已测试开发工单提交时的目标版本的版本。
78.本领域技术人员所公知的是,在应用程序的迭代过程中,其更新版本的版本号通常是逐渐增大的,因此,变更文件的关联版本为多个版本中晚于所述已测试开发工单提交时的目标版本的版本,即关联版本的版本号大于该目标版本的版本号,也就是在该已测试开发工单的变更文件提交之后由其他用户进行修改的版本。
79.其中,测试过程是在已测试开发工单对应的文件开发完成提交之后进行的,因此,可以以该已测试开发工单提交时的版本作为目标版本,确定出本次变更的变更代码行的行号,因此,在此之前其他用户提交的版本中代码行的修改不会影响确定出的变更代码行的行号,只有在已测试开发工单提交之后其他用户再进行修改才可能会使得变更代码行的行号发生偏移。因此,在本公开实施例中,可以基于每一变更代码行的内容确定出该变更代码行在各个关联版本中的映射代码行。
80.针对每一所述关联版本,根据所述关联版本对应的测试记录,确定该关联版本对应的各个映射代码行的执行次数。
81.其中,可以从关联版本对应的测试记录中,基于该映射代码行的行号进行查询,将查询到的测试记录的数量确定为该映射代码行的执行次数。同样地,在对各个测试记录进行合并处理后,也可以根据每一映射代码行的行号进行查询,从而查询到每一映射代码行的执行次数,具体实现方式已在上文进行详述,在此不再赘述。
82.根据所述目标版本对应的测试记录,以及所述关联版本对应的各个映射代码行的执行次数,确定所述测试覆盖率。
83.因此,通过上述技术方案,在测试记录对应于多个版本时,可以根据每一变更代码行的代码内容确定其在多个版本下的映射代码行,从而可以基于变更代码行与其对应的映射代码行的执行次数,确定测试覆盖率,实现多个版本下测试记录的合并,进一步保证测试覆盖率计算的准确性,保证测试结果的准确性。
84.在一种可能的实施例中,所述根据所述目标版本对应的测试记录,以及所述关联版本对应的各个映射代码行的执行次数,确定所述测试覆盖率的示例性实现方式如下,该步骤可以包括:
85.根据所述目标版本对应的测试记录,确定每一变更代码行在所述目标版本中的执行次数。
86.其中针对目标版本中的每一变更代码行,确定该变更代码行在所述目标版本中的执行次数与上文所述确定执行次数的方式类似,在此不再赘述。
87.将每一所述变更代码行在所述目标版本中的执行次数与该变更代码行对应的映射代码行的执行次数之和,确定为该变更代码行的执行次数。
88.其中,如上文所示,变更代码行和该变更代码行对应的映射代码行实质是对应的是同一行代码,其是由于已测试开发工单提交之后其他用户的修改而造成行号偏移,因此,可以基于变更代码行和映射代码行之间的对应关系,确定出每一变更代码行的实际执行次
数,即将变更代码行在所述目标版本中的执行次数与该变更代码行对应的映射代码行的执行次数之和,确定为该变更代码行的执行次数,即在变更代码行在此次测试过程中实际执行到的次数。
89.将所述执行次数大于预设阈值的变更代码行的数量与所述变更代码行的总数量的比值确定为所述测试覆盖率。
90.由此,通过上述技术方案,可以进一步将变更代码行的执行次数与其对应的映射代码行的执行次数进行合并,从而获得该变更代码行的实际执行次数,在提高对多版本的数据合并兼容的同时,保证确定出的执行次数的准确性和全面性,进一步保证测试结果的准确性,为后续进行目标应用程序评测提供准确的数据支持,保证目标应用程序的可用性。
91.在一种可能的实施例中,所述方法还包括:
92.响应于接收到测试覆盖率的显示指令,向终端发送显示信息,以使终端在覆盖率展示界面显示所述测试覆盖率和所述显示信息,其中所述显示信息包括所述变更代码行所属的文件、所述变更代码行以及每一所述变更代码行对应的执行次数。
93.如图3所示为测试平台中的测试结果界面的示意图,可以在该界面中显示各个测试完成的开发工单对应的测试覆盖率。之后,用户可以通过点击对应的开发工单的显示按钮触发测试覆盖率的显示指令,如可以通过点击图3中的左侧“+”的图标或者点击对应的测试覆盖率以触发该显示指令,则可以向服务端发送该显示指令,以由服务端基于该显示指令对应的已测试开发工单,确定其对应的显示信息。
94.之后,测试平台终端接收到该显示信息,则可以在该测试结果界面中进一步对显示信息进行展示,如图4所示,在接收到服务端发送的显示信息后,可以在该已测试开发工单的显示记录下方展开显示其对应的显示信息,如在a1区域显示变更代码行所属的文件,a2区域显示所述变更代码行,a3区域显示每一所述变更代码行对应的执行次数,从而便于用户对测试过程的详细信息进行查看。
95.在该实施例中,响应于用户的操作需求,可以进一步显示本次测试过程对应的变更文件,以及每一变更代码行与该变更代码行对应的执行次数,以使用户更加明确本次测试过程中各个变更代码行的执行情况,便于用户对测试过程的整体把握,为其进行再次测试或者结束测试提供数据参考,为其进行补充测试提供数据支持,便于发现测试过程中的测试缺口,进一步保证测试过程的准确性和全面性。
96.同样地,用户也可以在测试结果界面上通过点击对应的“查看”按钮进行相关文件的查看,如点击变更文件下的“查看”按钮,则可以对变更文件进行查看,点击测试记录下的“查看”按钮,则可以对测试记录进行查看,如图5所示,可以在该测试结果显示界面的图层之上显示一个新的窗口以对测试记录进行显示,以满足用户的查看需求。
97.在一种可能的实施例中,所述方法还可以包括:
98.响应于接收到针对目标用户的查看指令,确定与所述目标用户的用户标识对应的测试开发工单以及该测试开发工单对应的测试覆盖率。
99.示例地,可以基于该测试平台查看某一测试用户的测试情况,则用户可以在显示界面中选中一目标用户的测试记录进行查看,响应于接收到查看指令,该终端可以向测试平台发送查看指令,则该测试平台接收到该查看指令,可以以该查看指令中包含的用户标识进行查询,从而获得测试用户标识为该用户标识的测试开发工单,以及该测试开发工单
对应的测试覆盖率。
100.向终端发送所述测试开发工单以及测试开发工单对应的测试覆盖率,以由所述终端显示所述目标用户对应的测试开发工单以及测试开发工单对应的测试覆盖率。
101.之后,可以向终端发送查询到的上述信息,以在终端对其进行显示。作为示例,可以直接显示目标用户对应的测试开发工单以及测试开发工单对应的测试覆盖率。作为另一示例,可以根据目标用户对应的测试开发工单的数量以及每一测试开发工单对应的测试覆盖率,确定该目标用户对开发工单进行测试的平均测试覆盖度,从而可以对该目标用户的测试能力进行表征,便于该目标用户及时制定相关的测试方式,进一步提高该方法的便利性,提升用户体验。
102.本公开还提供一种应用程序测试覆盖率的确定装置,如图6所示,所述装置10包括:
103.第一获取模块100,用于响应于接收到测试指令,获取目标应用程序的测试数据,其中,所述测试数据包括至少一个开发工单对应的测试运行过程中执行的代码信息,每一所述开发工单对应于所述目标应用程序的一个功能;
104.第二获取模块200,用于获取所述目标应用程序测试完成的已测试开发工单的工单信息,其中,所述工单信息中包含变更文件信息;
105.第一确定模块300,用于根据所述变更文件信息,从所述测试数据中确定与所述已测试开发工单对应的测试记录;
106.第二确定模块400,用于根据所述变更文件信息和所述测试记录,确定所述已测试开发工单对应的测试覆盖率。
107.可选地,所述第二确定模块包括:
108.第一确定子模块,用于根据所述变更文件信息,确定所述已测试开发工单对应的变更代码行;
109.第二确定子模块,用于根据所述测试记录,确定每一所述变更代码行的执行次数;
110.第三确定子模块,用于将所述执行次数大于预设阈值的变更代码行的数量与所述变更代码行的总数量的比值确定为所述测试覆盖率。
111.可选地,所述第二确定模块包括:
112.第一确定子模块,用于根据所述变更文件信息,确定所述已测试开发工单对应的变更代码行;
113.第四确定子模块,用于若所述测试记录对应的变更文件的版本为多个,则根据每一所述变更代码行的标识信息,确定所述变更代码行在关联版本的变更文件中对应的映射代码行,其中,所述变更文件的关联版本为多个版本中晚于所述已测试开发工单提交时的目标版本的版本;
114.第五确定子模块,用于针对每一所述关联版本,根据所述关联版本对应的测试记录,确定该关联版本对应的各个映射代码行的执行次数;
115.第六确定子模块,用于根据所述目标版本对应的测试记录,以及所述关联版本对应的各个映射代码行的执行次数,确定所述测试覆盖率。
116.可选地,所述第六确定子模块包括:
117.第七确定子模块,用于根据所述目标版本对应的测试记录,确定每一变更代码行
在所述目标版本中的执行次数;
118.第八确定子模块,用于将每一所述变更代码行在所述目标版本中的执行次数与该变更代码行对应的映射代码行的执行次数之和,确定为该变更代码行的执行次数;
119.第三确定子模块,用于将所述执行次数大于预设阈值的变更代码行的数量与所述变更代码行的总数量的比值确定为所述测试覆盖率。
120.可选地,所述装置还包括:
121.第一发送模块,用于响应于接收到测试覆盖率的显示指令,向终端发送显示信息,以使终端在覆盖率展示界面显示所述测试覆盖率和所述显示信息,其中所述显示信息包括所述变更代码行所属的文件、所述变更代码行以及每一所述变更代码行对应的执行次数。
122.可选地,所述测试数据还包括所述测试数据对应的用户标识,所述测试数据对应的测试时间,所述测试数据对应的测试版本的标识;所述工单信息还包括所述已测试开发工单的完成时间、测试用户标识以及所述已测试开发工单提交时的目标版本;
123.所述第一确定模块包括:
124.第九确定子模块,用于将所述测试数据中满足以下条件的测试记录确定为与所述已测试开发工单对应的测试记录:
125.所述测试数据对应的代码信息所属文件的文件信息为所述变更文件信息;
126.所述测试数据对应的测试版本的标识大于或等于所述目标版本的标识;
127.所述测试数据对应的测试时间早于所述完成时间;
128.所述测试数据对应的用户标识与所述测试用户标识相同。
129.可选地,所述装置还包括:
130.第三确定模块,用于响应于接收到针对目标用户的查看指令,确定与所述目标用户的用户标识对应的测试开发工单以及该测试开发工单对应的测试覆盖率;
131.第二发送模块,用于向终端发送所述测试开发工单以及测试开发工单对应的测试覆盖率,以由所述终端显示所述目标用户对应的测试开发工单以及测试开发工单对应的测试覆盖率。
132.可选地,所述第一获取模块包括:
133.接收子模块,用于响应于接收到测试指令,接收所述目标应用程序测试启动后发送的测试执行数据;
134.合并子模块,用于响应于接收到所述目标应用程序测试结束的通知消息,将接收到的测试执行数据进行合并,确定合并后的数据中各个执行到的代码行所属的文件、行号信息和执行次数,以获得所述代码信息。
135.下面参考图7,其示出了适于用来实现本公开实施例的电子设备600的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
136.如图7所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储装置608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram 603中,还存储有电子设备
600操作所需的各种程序和数据。处理装置601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
137.通常,以下装置可以连接至i/o接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
138.特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从rom 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
139.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
140.在一些实施方式中,服务器可以利用诸如http(hypertext transfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
141.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
142.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:响应于接收到测试指令,获取目标应用程序的测试数据,其中,所述测试数据包括至少一个开发工单对应的测试运行过程中执行的代码信息,每一
所述开发工单对应于所述目标应用程序的一个功能;获取所述目标应用程序测试完成的已测试开发工单的工单信息,其中,所述工单信息中包含变更文件信息;根据所述变更文件信息,从所述测试数据中确定与所述已测试开发工单对应的测试记录;根据所述变更文件信息和所述测试记录,确定所述已测试开发工单对应的测试覆盖率。
143.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言——诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
144.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
145.描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,例如,第一获取模块还可以被描述为“响应于接收到测试指令,获取目标应用程序的测试数据的模块”。
146.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
147.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
148.根据本公开的一个或多个实施例,示例1提供了一种应用程序测试覆盖率的确定方法,其中,所述方法包括:
149.响应于接收到测试指令,获取目标应用程序的测试数据,其中,所述测试数据包括至少一个开发工单对应的测试运行过程中执行的代码信息,每一所述开发工单对应于所述目标应用程序的一个功能;
150.获取所述目标应用程序测试完成的已测试开发工单的工单信息,其中,所述工单信息中包含变更文件信息;
151.根据所述变更文件信息,从所述测试数据中确定与所述已测试开发工单对应的测试记录;
152.根据所述变更文件信息和所述测试记录,确定所述已测试开发工单对应的测试覆盖率。
153.根据本公开的一个或多个实施例,示例2提供了示例1的方法,其中,所述根据所述变更文件信息和所述测试记录,确定所述已测试开发工单对应的测试覆盖率,包括:
154.根据所述变更文件信息,确定所述已测试开发工单对应的变更代码行;
155.根据所述测试记录,确定每一所述变更代码行的执行次数;
156.将所述执行次数大于预设阈值的变更代码行的数量与所述变更代码行的总数量的比值确定为所述测试覆盖率。
157.根据本公开的一个或多个实施例,示例3提供了示例1的方法,其中,所述根据所述变更文件信息和所述测试记录,确定所述已测试开发工单对应的测试覆盖率,包括:
158.根据所述变更文件信息,确定所述已测试开发工单对应的变更代码行;
159.若所述测试记录对应的变更文件的版本为多个,则根据每一所述变更代码行的标识信息,确定所述变更代码行在关联版本的变更文件中对应的映射代码行,其中,所述变更文件的关联版本为多个版本中晚于所述已测试开发工单提交时的目标版本的版本;
160.针对每一所述关联版本,根据所述关联版本对应的测试记录,确定该关联版本对应的各个映射代码行的执行次数;
161.根据所述目标版本对应的测试记录,以及所述关联版本对应的各个映射代码行的执行次数,确定所述测试覆盖率。
162.根据本公开的一个或多个实施例,示例4提供了示例3的方法,其中,所述根据所述目标版本对应的测试记录,以及所述关联版本对应的各个映射代码行的执行次数,确定所述测试覆盖率,包括:
163.根据所述目标版本对应的测试记录,确定每一变更代码行在所述目标版本中的执行次数;
164.将每一所述变更代码行在所述目标版本中的执行次数与该变更代码行对应的映射代码行的执行次数之和,确定为该变更代码行的执行次数;
165.将所述执行次数大于预设阈值的变更代码行的数量与所述变更代码行的总数量的比值确定为所述测试覆盖率。
166.根据本公开的一个或多个实施例,示例5提供了示例2-4中任一示例的方法,其中,所述方法还包括:
167.响应于接收到测试覆盖率的显示指令,向终端发送显示信息,以使终端在覆盖率展示界面显示所述测试覆盖率和所述显示信息,其中所述显示信息包括所述变更代码行所属的文件、所述变更代码行以及每一所述变更代码行对应的执行次数。
168.根据本公开的一个或多个实施例,示例6提供了示例1的方法,其中,所述测试数据还包括所述测试数据对应的用户标识,所述测试数据对应的测试时间,所述测试数据对应的测试版本的标识;所述工单信息还包括所述已测试开发工单的完成时间、测试用户标识以及所述已测试开发工单提交时的目标版本;
169.所述根据所述变更文件信息,从所述测试数据中确定与所述已测试开发工单对应的测试记录,包括:
170.将所述测试数据中满足以下条件的测试记录确定为与所述已测试开发工单对应的测试记录:
171.所述测试数据对应的代码信息所属文件的文件信息为所述变更文件信息;
172.所述测试数据对应的测试版本的标识大于或等于所述目标版本的标识;
173.所述测试数据对应的测试时间早于所述完成时间;
174.所述测试数据对应的用户标识与所述测试用户标识相同。
175.根据本公开的一个或多个实施例,示例7提供了示例6的方法,其中,所述方法还包括:
176.响应于接收到针对目标用户的查看指令,确定与所述目标用户的用户标识对应的测试开发工单以及该测试开发工单对应的测试覆盖率;
177.向终端发送所述测试开发工单以及测试开发工单对应的测试覆盖率,以由所述终端显示所述目标用户对应的测试开发工单以及测试开发工单对应的测试覆盖率。
178.根据本公开的一个或多个实施例,示例8提供了示例1的方法,其中,所述响应于接收到测试指令,获取目标应用程序的测试数据,包括:
179.响应于接收到测试指令,接收所述目标应用程序测试启动后发送的测试执行数据;
180.响应于接收到所述目标应用程序测试结束的通知消息,将接收到的测试执行数据进行合并,确定合并后的数据中各个执行到的代码行所属的文件、行号信息和执行次数,以获得所述代码信息。
181.根据本公开的一个或多个实施例,示例9提供了一种应用程序测试覆盖率的确定装置,其中,所述装置包括:
182.第一获取模块,用于响应于接收到测试指令,获取目标应用程序的测试数据,其中,所述测试数据包括至少一个开发工单对应的测试运行过程中执行的代码信息,每一所述开发工单对应于所述目标应用程序的一个功能;
183.第二获取模块,用于获取所述目标应用程序测试完成的已测试开发工单的工单信息,其中,所述工单信息中包含变更文件信息;
184.第一确定模块,用于根据所述变更文件信息,从所述测试数据中确定与所述已测试开发工单对应的测试记录;
185.第二确定模块,用于根据所述变更文件信息和所述测试记录,确定所述已测试开发工单对应的测试覆盖率。
186.根据本公开的一个或多个实施例,示例10提供了一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理装置执行时实现示例1-8中任一示例所述方法的步骤。
187.根据本公开的一个或多个实施例,示例11提供了一种电子设备,其中,包括:
188.存储装置,其上存储有计算机程序;
189.处理装置,用于执行所述存储装置中的所述计算机程序,以实现示例1-8中任一示例所述方法的步骤。
190.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
191.此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
192.尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1