一种收集用例与代码之间映射关系的方法和装置的制造方法

文档序号:8339503阅读:567来源:国知局
一种收集用例与代码之间映射关系的方法和装置的制造方法
【专利说明】一种收集用例与代码之间映射关系的方法和装置 【技术领域】
[0001] 本发明涉及计算机技术领域中的测试技术,特别涉及一种收集用例与代码之间映 射关系的方法和装置。 【【背景技术】】
[0002] 测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、 技术和策略,其类型可以包括诸如功能测试用例、自动化测试用例、性能测试用例等等,在 此统称为用例(case)。在测试过程中,无论是衡量用例是否进行补充来尽可能覆盖软件的 所有代码,亦或是当软件的代码发生变更时,需要进行哪些用例的相应修改或者回归哪些 用例,等等,这些都需要获知用例与软件的代码之间的映射关系,也就是说,需要确定各用 例对应软件中的哪些代码。然而,目前尚没有相关技术能够很好的实现这一映射关系的确 定。 【
【发明内容】

[0003] 有鉴于此,本发明提供了一种收集用例与代码之间映射关系的方法和装置,以便 于实现用例与代码之间映射关系的收集,为是否补充用例、修改用例和回归哪些用例等提 供参考。
[0004] 具体技术方案如下:
[0005] 本发明提供了一种收集用例与代码之间映射关系的方法,该方法包括:
[0006] 用例执行结束后,获取代码覆盖率工具输出的覆盖信息报告,所述覆盖信息报告 包含所述用例执行所覆盖的代码信息;
[0007] 解析所述覆盖信息报告得到所述用例所覆盖的代码,从而建立所述用例与代码之 间的映射关系。
[0008] 根据本发明一优选实施方式,该方法还包括:
[0009] 预先部署映射关系收集的环境,具体包括:对代码进行代码覆盖率工具的插桩,并 定义代码覆盖率工具的监听端口;
[0010] 准备解析环境,具体包括:确定所述映射关系收集的环境信息与使用该环境的用 例信息之间的对应关系。
[0011] 根据本发明一优选实施方式,所述获取代码覆盖率工具输出的覆盖信息报告包 括:查询所述对应关系确定本次执行的用例所对应的映射关系收集的环境信息,由确定的 环境信息中的监听端口获取所述代码覆盖率工具输出的覆盖信息报告。
[0012] 根据本发明一优选实施方式,该方法还包括:
[0013] 所述用例执行前,在数据库中针对所述确定的环境信息记录一条执行开始记录;
[0014] 所述用例执行结束后,查询所述数据库中所述用例对应的环境信息是否只有一条 执行开始记录,如果是,则将所述记录更新为完成状态,并执行所述获取代码覆盖率工具输 出的覆盖信息报告的步骤;否则放弃本次收集。
[0015] 根据本发明一优选实施方式,所述获取代码覆盖率工具输出的覆盖信息报告由收 集执行模块执行;所述解析所述覆盖信息报告得到所述用例所覆盖的代码由解析执行模块 执行。
[0016] 根据本发明一优选实施方式,该方法还包括:用例执行前,总控模块将所述用例的 用例信息发送给所述收集执行模块并指示所述收集执行模块开始收集;
[0017] 所述用例执行结束后,所述总控模块将所述用例信息发送给所述收集执行模块并 指示收集执行模块结束收集,所述收集执行模块执行所述获取代码覆盖率工具输出的覆盖 信息报告的步骤。
[0018] 根据本发明一优选实施方式,总控模块将所述用例的用例信息发送给所述收集执 行模块并指示所述收集执行模块开始收集具体包括:所述总控模块将所述用例信息和指示 收集执行模块开始收集的信息携带在http请求中发送给所述收集执行模块;
[0019] 所述总控模块将所述用例信息发送给所述收集执行模块并指示收集执行模块结 束收集具体包括:所述总控模块将所述用例信息和指示收集执行模块结束收集的信息携带 在http请求中发送给所述收集执行模块。
[0020] 本发明还提供了一种收集用例与代码之间映射关系的装置,该装置包括:
[0021] 收集执行模块,用于用例执行结束后,获取代码覆盖率工具输出的覆盖信息报告, 所述覆盖信息报告包含所述用例执行所覆盖的代码信息;
[0022] 解析执行模块,用于解析所述覆盖信息报告得到所述用例所覆盖的代码,从而建 立所述用例与代码之间的映射关系。
[0023] 根据本发明一优选实施方式,该装置还包括:环境部署和准备模块,用于预先部署 映射关系收集的环境,具体包括:对代码进行代码覆盖率工具的插桩,并定义代码覆盖率工 具的监听端口;还用于准备解析环境,具体包括:确定所述映射关系收集的环境信息与使 用该环境的用例信息之间的对应关系。
[0024] 根据本发明一优选实施方式,所述收集执行模块在获取代码覆盖率工具输出的覆 盖信息报告时,具体用于查询所述对应关系确定本次执行的用例所对应的映射关系收集的 环境信息,由确定的环境信息中的监听端口获取所述代码覆盖率工具输出的覆盖信息报 生 I=I 〇
[0025] 根据本发明一优选实施方式,所述收集执行模块,还用于在所述用例执行前,在数 据库中针对所述确定的环境信息记录一条执行开始记录;所述用例执行结束后,查询所述 数据库中所述用例对应的环境信息是否只有一条执行开始记录,如果是,则将所述记录更 新为完成状态,并执行所述获取代码覆盖率工具输出的覆盖信息报告的操作;否则放弃本 次收集。
[0026] 根据本发明一优选实施方式,该装置还包括:总控模块,用于在所述用例执行前, 将所述用例的用例信息发送给所述收集执行模块并指示所述收集执行模块开始收集;所 述用例执行结束后,将所述用例信息发送给所述收集执行模块并指示收集执行模块结束收 集;
[0027] 所述收集执行模块接收到结束收集的指示后,执行所述获取代码覆盖率工具输出 的覆盖信息报告的操作。
[0028] 根据本发明一优选实施方式,所述总控模块具体用于将所述用例信息和指示收集 执行模块开始收集的信息携带在http请求中发送给所述收集执行模块,以及将所述用例 信息和指示收集执行模块结束收集的信息携带在http请求中发送给所述收集执行模块。
[0029] 由以上技术方案可以看出,本发明通过获取并解析代码覆盖率工具输出的包含用 例执行所覆盖的代码信息的覆盖信息报告,实现用例与代码之间的映射关系的收集,为是 否补充用例、修改用例和回归哪些用例等提供参考。 【【附图说明】】
[0030] 图1为本发明实施例一提供的收集用例与代码之间映射关系的方法流程图;
[0031] 图2为本发明实施例二提供的收集用例与代码之间映射关系的装置结构图。 【【具体实施方式】】
[0032] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对 本发明进行详细描述。
[0033] 本发明的核心思想在于:通过代码覆盖率工具对用例进行覆盖信息的收集,即在 用例执行结束后,获取代码覆盖率工具输出的覆盖信息报告,该覆盖信息报告包含了用例 执行所覆盖的代码信息;然后解析覆盖信息报告得到该用例所覆盖的代码,从而建立该用 例与代码之间的映射关系。下面通过实施例一对本发明提供的方法进行详细描述。
[0034] 实施例一、
[0035] 图1为本发明实施例一提供的收集用例与代码之间映射关系的方法流程图,在 本实施例中以java环境为例,代码覆盖率工具以e_a为例,e_a是一个用于检测和报告 java代码覆盖率的开源工具,支持多种级别的覆盖率指标:包、类、方法、语句块和行,最终 能够生成并输出text、xml、html等形式的报告。当然,本发明并不限于e_a工具,还可以 使用诸如clover、BullseyeCoverage等其他代码覆盖率工具。语言环境也可以采用诸如C 语言、C++语言、python、perl等等。如图1中所示,该方法可以包括以下步骤:
[0036] 步骤101 :部署映射关系收集的环境:对各应用的代码进行emma的插桩并针对各 应用分别自定义e_a的监听端口。
[0037] 对各应用的代码进行emma的插桩目的是为了使得emma能够得到执行的代码信 息,从而得到覆盖率信息。在本发明实施例中,针对各应用分别自定义emma的监听端口时, 可以采用预设的端口自定义规则,该端口自定义规则可以与用户名相关,目的是为了避免 各应用在同一台机器上发生监听端口的冲突。
[0038] 步骤102 :准备解析环境:确定映射关系收集的环境信息与使用该环境的用例信 息之间的对应关系,启动调用收集执行模块所需要的tomcat服务。
[0039] 在本发明实施例中,每一个用例的执行都对应有映射关系收集的环境信息,也就 是说,将步骤101部署的环境赋予给具体的用例。其中映射关系收集的环境信息主要是运 行e_a的机器信息和监听端口信息,可以表现为IP地址和端口号。用例信息主要包括用 例标识(case id),还可以进一步包括用例类型(case type)。
[0040] 上述映射关系收集的环境信息与使用该环境的用例信息之间可以是多对多的关 系,由于用例与代码之间的映射关系收集可能会是多次进行并更新的,因此,可以将上述映 射关系收集的环境信息与使用该环境的用例信息之间的对应关系存储于数据库中,以方便 进行查询。
[0041] 在本发明实施例中,调用收集执行模块所需要的服务以tomcat服务为例,tomcat 服务可以实现通过访问url的http请求调用收集执行模块,具体形式将在步骤103和步骤 104中举例描述。需要说明的是,在此tomcat服务仅是本发明实施例所举的一种优选的实 施方式,但也可以通过启动其他服务来进行收集执行模块的调用,例如可以启动通过界面 调用收集执行模块的服务,或者启动通过命令行调用收集执行模块的服务等等,在此不再 歹丨J举。
[0042] 以上两个步骤都属于环境准备阶段,上述环境准备阶段的操作可以由环境部署与 准备模块执行。在完成上述环境准备工作后,就可以执行以下步骤开始收集用例与代码之 间的映射关系。
[0043] 步骤103 :用例执行前,将要执行的用例信息发送给收集执行模块并指示收集执 行模块开始收集。
[0044]该用例执行之前将要执行的用例信息发送给收集执行模块并指示收集执行模块 开始收集的操作可以由总控模块来执行。
[0045] 在执行某用例之前,根据步骤102中确定的该用例信息与映射关系收集的环境信 息之间的对应关系,该对应关系可以通过查询数据库获得,确定该用例对应的环境信息,收 集执行模块可以在数据库中针对该环境信息记录一条执行开始记录,目的是防止相同环境 出现同时收集映射关系的情况,导致用例与代码之间映射关系的结果不准确。另外,根据该 用例对应的环境信息,收集执行模块执行emma的重置(reset)功能,从内存中清除之前收 集的覆盖息。
[0046] 以tomcat服务为例,在本步骤中将要执行的用例信息发送给收集执行模块并指 示收集执行模块开始收集时,可以通
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1