CN104657256B - 一种收集用例与代码之间映射关系的方法和装置 - Google Patents
一种收集用例与代码之间映射关系的方法和装置 Download PDFInfo
- Publication number
- CN104657256B CN104657256B CN201310582719.6A CN201310582719A CN104657256B CN 104657256 B CN104657256 B CN 104657256B CN 201310582719 A CN201310582719 A CN 201310582719A CN 104657256 B CN104657256 B CN 104657256B
- Authority
- CN
- China
- Prior art keywords
- case
- information
- code
- execution module
- collection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 68
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000007613 environmental effect Effects 0.000 claims description 55
- 238000012986 modification Methods 0.000 abstract description 4
- 230000004048 modification Effects 0.000 abstract description 4
- 239000013589 supplement Substances 0.000 abstract description 3
- 238000012360 testing method Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 241000219793 Trifolium Species 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 239000000686 essence Substances 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种收集用例与代码之间映射关系的方法和装置,其中方法包括:用例执行结束后,获取代码覆盖率工具输出的覆盖信息报告,所述覆盖信息报告包含所述用例执行所覆盖的代码信息;解析所述覆盖信息报告得到所述用例所覆盖的代码,从而建立所述用例与代码之间的映射关系。通过本发明能够实现用例与代码之间映射关系的收集,为是否补充用例、修改用例和回归哪些用例等提供参考。
Description
【技术领域】
本发明涉及计算机技术领域中的测试技术,特别涉及一种收集用例与代码之间映射关系的方法和装置。
【背景技术】
测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略,其类型可以包括诸如功能测试用例、自动化测试用例、性能测试用例等等,在此统称为用例(case)。在测试过程中,无论是衡量用例是否进行补充来尽可能覆盖软件的所有代码,亦或是当软件的代码发生变更时,需要进行哪些用例的相应修改或者回归哪些用例,等等,这些都需要获知用例与软件的代码之间的映射关系,也就是说,需要确定各用例对应软件中的哪些代码。然而,目前尚没有相关技术能够很好的实现这一映射关系的确定。
【发明内容】
有鉴于此,本发明提供了一种收集用例与代码之间映射关系的方法和装置,以便于实现用例与代码之间映射关系的收集,为是否补充用例、修改用例和回归哪些用例等提供参考。
具体技术方案如下:
本发明提供了一种收集用例与代码之间映射关系的方法,该方法包括:
用例执行结束后,获取代码覆盖率工具输出的覆盖信息报告,所述覆盖信息报告包含所述用例执行所覆盖的代码信息;
解析所述覆盖信息报告得到所述用例所覆盖的代码,从而建立所述用例与代码之间的映射关系。
根据本发明一优选实施方式,该方法还包括:
预先部署映射关系收集的环境,具体包括:对代码进行代码覆盖率工具的插桩,并定义代码覆盖率工具的监听端口;
准备解析环境,具体包括:确定所述映射关系收集的环境信息与使用该环境的用例信息之间的对应关系。
根据本发明一优选实施方式,所述获取代码覆盖率工具输出的覆盖信息报告包括:查询所述对应关系确定本次执行的用例所对应的映射关系收集的环境信息,由确定的环境信息中的监听端口获取所述代码覆盖率工具输出的覆盖信息报告。
根据本发明一优选实施方式,该方法还包括:
所述用例执行前,在数据库中针对所述确定的环境信息记录一条执行开始记录;
所述用例执行结束后,查询所述数据库中所述用例对应的环境信息是否只有一条执行开始记录,如果是,则将所述记录更新为完成状态,并执行所述获取代码覆盖率工具输出的覆盖信息报告的步骤;否则放弃本次收集。
根据本发明一优选实施方式,所述获取代码覆盖率工具输出的覆盖信息报告由收集执行模块执行;所述解析所述覆盖信息报告得到所述用例所覆盖的代码由解析执行模块执行。
根据本发明一优选实施方式,该方法还包括:用例执行前,总控模块将所述用例的用例信息发送给所述收集执行模块并指示所述收集执行模块开始收集;
所述用例执行结束后,所述总控模块将所述用例信息发送给所述收集执行模块并指示收集执行模块结束收集,所述收集执行模块执行所述获取代码覆盖率工具输出的覆盖信息报告的步骤。
根据本发明一优选实施方式,总控模块将所述用例的用例信息发送给所述收集执行模块并指示所述收集执行模块开始收集具体包括:所述总控模块将所述用例信息和指示收集执行模块开始收集的信息携带在http请求中发送给所述收集执行模块;
所述总控模块将所述用例信息发送给所述收集执行模块并指示收集执行模块结束收集具体包括:所述总控模块将所述用例信息和指示收集执行模块结束收集的信息携带在http请求中发送给所述收集执行模块。
本发明还提供了一种收集用例与代码之间映射关系的装置,该装置包括:
收集执行模块,用于用例执行结束后,获取代码覆盖率工具输出的覆盖信息报告,所述覆盖信息报告包含所述用例执行所覆盖的代码信息;
解析执行模块,用于解析所述覆盖信息报告得到所述用例所覆盖的代码,从而建立所述用例与代码之间的映射关系。
根据本发明一优选实施方式,该装置还包括:环境部署和准备模块,用于预先部署映射关系收集的环境,具体包括:对代码进行代码覆盖率工具的插桩,并定义代码覆盖率工具的监听端口;还用于准备解析环境,具体包括:确定所述映射关系收集的环境信息与使用该环境的用例信息之间的对应关系。
根据本发明一优选实施方式,所述收集执行模块在获取代码覆盖率工具输出的覆盖信息报告时,具体用于查询所述对应关系确定本次执行的用例所对应的映射关系收集的环境信息,由确定的环境信息中的监听端口获取所述代码覆盖率工具输出的覆盖信息报告。
根据本发明一优选实施方式,所述收集执行模块,还用于在所述用例执行前,在数据库中针对所述确定的环境信息记录一条执行开始记录;所述用例执行结束后,查询所述数据库中所述用例对应的环境信息是否只有一条执行开始记录,如果是,则将所述记录更新为完成状态,并执行所述获取代码覆盖率工具输出的覆盖信息报告的操作;否则放弃本次收集。
根据本发明一优选实施方式,该装置还包括:总控模块,用于在所述用例执行前,将所述用例的用例信息发送给所述收集执行模块并指示所述收集执行模块开始收集;所述用例执行结束后,将所述用例信息发送给所述收集执行模块并指示收集执行模块结束收集;
所述收集执行模块接收到结束收集的指示后,执行所述获取代码覆盖率工具输出的覆盖信息报告的操作。
根据本发明一优选实施方式,所述总控模块具体用于将所述用例信息和指示收集执行模块开始收集的信息携带在http请求中发送给所述收集执行模块,以及将所述用例信息和指示收集执行模块结束收集的信息携带在http请求中发送给所述收集执行模块。
由以上技术方案可以看出,本发明通过获取并解析代码覆盖率工具输出的包含用例执行所覆盖的代码信息的覆盖信息报告,实现用例与代码之间的映射关系的收集,为是否补充用例、修改用例和回归哪些用例等提供参考。
【附图说明】
图1为本发明实施例一提供的收集用例与代码之间映射关系的方法流程图;
图2为本发明实施例二提供的收集用例与代码之间映射关系的装置结构图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明的核心思想在于:通过代码覆盖率工具对用例进行覆盖信息的收集,即在用例执行结束后,获取代码覆盖率工具输出的覆盖信息报告,该覆盖信息报告包含了用例执行所覆盖的代码信息;然后解析覆盖信息报告得到该用例所覆盖的代码,从而建立该用例与代码之间的映射关系。下面通过实施例一对本发明提供的方法进行详细描述。
实施例一、
图1为本发明实施例一提供的收集用例与代码之间映射关系的方法流程图,在本实施例中以java环境为例,代码覆盖率工具以emma为例,emma是一个用于检测和报告java代码覆盖率的开源工具,支持多种级别的覆盖率指标:包、类、方法、语句块和行,最终能够生成并输出text、xml、html等形式的报告。当然,本发明并不限于emma工具,还可以使用诸如clover、BullseyeCoverage等其他代码覆盖率工具。语言环境也可以采用诸如C语言、C++语言、python、perl等等。如图1中所示,该方法可以包括以下步骤:
步骤101:部署映射关系收集的环境:对各应用的代码进行emma的插桩并针对各应用分别自定义emma的监听端口。
对各应用的代码进行emma的插桩目的是为了使得emma能够得到执行的代码信息,从而得到覆盖率信息。在本发明实施例中,针对各应用分别自定义emma的监听端口时,可以采用预设的端口自定义规则,该端口自定义规则可以与用户名相关,目的是为了避免各应用在同一台机器上发生监听端口的冲突。
步骤102:准备解析环境:确定映射关系收集的环境信息与使用该环境的用例信息之间的对应关系,启动调用收集执行模块所需要的tomcat服务。
在本发明实施例中,每一个用例的执行都对应有映射关系收集的环境信息,也就是说,将步骤101部署的环境赋予给具体的用例。其中映射关系收集的环境信息主要是运行emma的机器信息和监听端口信息,可以表现为IP地址和端口号。用例信息主要包括用例标识(case id),还可以进一步包括用例类型(case type)。
上述映射关系收集的环境信息与使用该环境的用例信息之间可以是多对多的关系,由于用例与代码之间的映射关系收集可能会是多次进行并更新的,因此,可以将上述映射关系收集的环境信息与使用该环境的用例信息之间的对应关系存储于数据库中,以方便进行查询。
在本发明实施例中,调用收集执行模块所需要的服务以tomcat服务为例,tomcat服务可以实现通过访问url的http请求调用收集执行模块,具体形式将在步骤103和步骤104中举例描述。需要说明的是,在此tomcat服务仅是本发明实施例所举的一种优选的实施方式,但也可以通过启动其他服务来进行收集执行模块的调用,例如可以启动通过界面调用收集执行模块的服务,或者启动通过命令行调用收集执行模块的服务等等,在此不再一一列举。
以上两个步骤都属于环境准备阶段,上述环境准备阶段的操作可以由环境部署与准备模块执行。在完成上述环境准备工作后,就可以执行以下步骤开始收集用例与代码之间的映射关系。
步骤103:用例执行前,将要执行的用例信息发送给收集执行模块并指示收集执行模块开始收集。
该用例执行之前将要执行的用例信息发送给收集执行模块并指示收集执行模块开始收集的操作可以由总控模块来执行。
在执行某用例之前,根据步骤102中确定的该用例信息与映射关系收集的环境信息之间的对应关系,该对应关系可以通过查询数据库获得,确定该用例对应的环境信息,收集执行模块可以在数据库中针对该环境信息记录一条执行开始记录,目的是防止相同环境出现同时收集映射关系的情况,导致用例与代码之间映射关系的结果不准确。另外,根据该用例对应的环境信息,收集执行模块执行emma的重置(reset)功能,从内存中清除之前收集的覆盖信息。
以tomcat服务为例,在本步骤中将要执行的用例信息发送给收集执行模块并指示收集执行模块开始收集时,可以通过访问url的http请求实现,举一个例子:
http://10.125.195.155:8080/CallShell/Start_emma_all?id=用例id&casetype=auto。
其中10.125.195.155为运行tomcat服务的机器(同时也是收集执行模块所在机器)的IP地址,8080为监听端口的端口号,callshell/start_emma_all用于指示收集执行模块开始收集,id表示用例标识,casetype表示用例类型,该例子中为自动化用例。如果casetype采用默认值,http请求中也可以不携带casetype参数。
在用例执行过程中,由于预先对代码进行了emma的插桩,因此emma就能够获取到执行的代码信息,从而生成并输出覆盖信息报告,该覆盖信息报告就是该用例执行所覆盖的代码信息。
步骤104:用例执行结束后,将用例信息发送给收集执行模块并指示收集执行模块结束收集,收集执行模块获取emma输出的覆盖信息报告。
本步骤中,将用例信息发送给收集执行模块并指示收集执行模块结束收集仍可以由总控模块执行。仍以tomcat服务为例,在本步骤中将用例信息发送给收集执行模块并指示收集执行模块结束收集时,可以通过访问url的http请求实现,举一个例子:
http://10.125.195.155:8080/CallShell/end_emma_all?id=用例id&casetype=auto。
其中10.125.195.155为运行tomcat的机器(同时也是收集执行模块所在机器)的IP地址,8080为监听端口的端口号,callshell/and_emma_all用于指示收集执行模块结束收集,id表示用例标识,casetype表示用例类型,该例子中为自动化用例。如果casetype采用默认值,http请求中也可以不携带casetype参数。
收集执行模块接收到上述请求后,查询数据库中该用例信息对应的环境信息,并确定该环境信息中是否只有一条执行开始记录,如果是,则将该执行开始记录更新为完成状态,然后收集执行模块通过对应的监听端口获取emma输出的覆盖信息报告。在此,收集执行模块对emma的调用可以是本地的方式,也可以是远程调用的方式。否则说明该环境信息对应的覆盖信息收集出现冲突,放弃本次收集结果。
步骤105:解析执行模块解析覆盖信息报告,得到本次执行的用例所覆盖的代码,建立本次执行的用例与代码之间的映射关系,可以将该映射关系存入数据库。
上述收集执行模块和解析执行模块可以是脚本的形式,即收集脚本和解析脚本,脚本所使用的语言可以采用java、C、C++、python、perl等语言。当然也可以采用其他类型的执行文件。在获取到本次执行的实例与代码之间的映射关系后,就可以针对下一实例开始执行实施例一中所述的步骤,从而逐一实现各实例与代码之间映射关系的收集。需要说明的是,如果针对各实例均预先部署好了环境,则针对各实例执行的流程可以不包含实施例一中的步骤101和步骤102,即从步骤103开始执行。
下面对上述实施例中,数据库所存储的数据内容举例进行描述:
用例信息与环境信息的对应关系可以存入asura_mapping_case_env_list表,该表中的case_id字段和case_type字段分别是用例标识和用例类型,唯一标识具体的用例,该表中的id字段表示具体环境的唯一标识,env_ip字段表示运行emma的机器ip,env_user_name字段表示为该用例进行映射关系收集的环境用户名,list_id字段对应asura_mapping_detail表的标识。
在数据库中上述映射关系收集的环境信息和对应的记录可以存入asura_mapping_case_class表,该表中的case_env_id字段表示用例信息对应的映射关系收集的环境信息的唯一标识,该表中的id字段表示映射关系收集的环境信息对应的记录。
上述的asura_mapping_detail表主要用于存储具体环境信息每次执行记录的唯一标识和方法维表的对应关系,即表中的list_id字段表示环境信息对应的记录的唯一标识,app_method_id字段表示方法维表asura_mapping_app_method_id_dimt0的唯一标识,用于标识具体方法。
方法维表asura_mapping_app_method_id_dimt0表中主要包含以下字段信息:id字段表示具体方法的唯一标识,app_name字段表示该方法对应的应用名,package_name字段表示该方法对应的java包名,class_name字段表示该方法对应的java类名,method_name字段表示该方法对应的java方法名。
举个例子:
在asura_mapping_case_env_list表中用例信息与环境信息的对应关系可以如表1中所示。
表1
id | Case_id | Case_type | Env_ip | Env_user_name | List_id |
10001 | 1001 | auto | 10.20.198.1 | admin | 201 |
10002 | 1001 | auto | 10.20.198.2 | admin | 202 |
10003 | 1002 | online | 10.20.168.1 | admin | 203 |
在asura_mapping_case_class表中,环境信息与对应的记录可以如表2中所示:
表2
id | Case_env_id |
199 | 10001 |
200 | 10002 |
201 | 10001 |
202 | 10002 |
203 | 10003 |
本例中:id199为Case_env_id10001的记录,id200为Case_env_id10002的记录。
在asura_mapping_detail表中,环境信息对应的记录的唯一标识与方法维表的唯一标识可以如表3中所示。
表3
List_id | App_method_id |
199 | 3001 |
200 | 3002 |
201 | 3001 |
201 | 4001 |
202 | 3001 |
202 | 3003 |
在asura_mapping_app_method_id_dimt0方法维表中,各字段可以如表4中所示:
表4
id | App_name | Package_name | Class_name | Method_name |
3001 | Intl-test | Com.test.hz | Test1 | testRun |
3002 | Intl-test | Com.test.hz | Test2 | testAdd |
3003 | Intl-test | Com.test.hz | Test1 | testSub |
4001 | Intl-comput | Com.test.hz | Test3 | testAll |
这样就可以知道:case_id=1001,case_type=“auto”有对应覆盖方法id:3001,4001,3003。
本发明所使用的数据库可以是各种主流的数据库,包括但不限于:mysql、oracle、greenplum、postgresql等。
以上是对本发明所提供的方法进行的详细描述,下面通过实施例二对本发明所提供的装置进行详细描述。
实施例二、
图2为本发明实施例二提供的收集用例与代码之间映射关系的装置结构图,该装置可以是一个独立的装置,也可以作为测试设备中的一个单元。如图2中所示,该装置主要包括收集执行模块01和解析执行模块02,还可以进一步包括环境部署和准备模块03和总控模块00。
收集执行模块01负责在用例执行结束后,获取代码覆盖率工具输出的覆盖信息报告,覆盖信息报告包含用例执行所覆盖的代码信息。在本发明中代码覆盖率工具可以包括但不限于emma、clover、BullseyeCoverage等工具,语言环境也可以包括但不限于java、C语言、C++语言、python、perl等等。
然后由解析执行模块02解析覆盖信息报告得到用例所覆盖的代码,从而建立用例与代码之间的映射关系。该映射关系可以存储于数据库中,具体形式可以参见实施例一中的相关描述,在此不再赘述。
如果预先已经针对各实例部署和准备好了环境,则上述收集执行模块01和解析执行模块02逐一针对各实例分别执行操作后,就能够得到各实例与代码之间的映射关系。为了实现环境部署和准备,环境部署和准备模块03可以预先部署映射关系收集的环境,具体包括:对代码进行代码覆盖率工具的插桩,并定义代码覆盖率工具的监听端口;还用于准备解析环境,具体包括:确定映射关系收集的环境信息与使用该环境的用例信息之间的对应关系。
对代码进行代码覆盖率工具的插桩目的是为了使得诸如emma等代码覆盖率工具能够得到执行的代码信息,从而得到覆盖率信息。在本发明实施例中可以分别针对各应用进行覆盖率工具的安装,并分别自定义代码覆盖率工具的监听端口,该端口自定义规则可以与用户名相关,目的是为了避免各应用在执行时在同一台机器上发生监听端口的冲突。
由于每一个用例的执行都对应有映射关系收集的环境信息,也就是说,需要将部署的映射关系收集的环境信息赋予给具体的用例,因此就需要确定映射关系收集的环境信息与使用该环境的用例信息之间的对应关系。其中映射关系收集的环境信息主要是运行代码覆盖率工具的机器信息和监听端口信息,可以表现为IP地址和端口号。用例信息主要包括用例标识,还可以进一步包括用例类型。
上述映射关系收集的环境信息与使用该环境的用例信息之间可以是多对多的关系,由于用例与代码之间的映射关系收集可能会是多次进行并更新的,因此,可以将上述映射关系收集的环境信息与使用该环境的用例信息之间的对应关系存储于数据库中,以方便进行查询。
在准备解析环境时,还可以进一步启动调用收集执行模块01所需要的服务,以tomcat服务为例,tomcat服务可以实现通过访问url的http请求调用收集执行模块01。
具体地,收集执行模块01在获取代码覆盖率工具输出的覆盖信息报告时,具体用于查询对应关系确定本次执行的用例所对应的映射关系收集的环境信息,由确定的环境信息中的监听端口获取代码覆盖率工具输出的覆盖信息报告。在此,收集执行模块01通过监听端口对收集执行模块01的调用可以是本地的方式,也可以是远程调用的方式。
为了保证代码覆盖信息的收集不发生对同一环境信息的冲突,收集执行模块01在用例执行前,在数据库中针对确定的环境信息记录一条执行开始记录;用例执行结束后,查询数据库中用例对应的环境信息是否只有一条执行开始记录,如果是,则将记录更新为完成状态,并执行获取代码覆盖率工具输出的覆盖信息报告的操作;否则放弃本次收集。
更进一步地,为了保证代码覆盖信息收集的准确性,收集执行模块01在用例执行前还可以根据该用例对应的环境信息,执行emma的重置(reset)功能,从内存中清除之前收集的覆盖信息。
本装置中的总控模块00负责对本装置中其他模块进行总体的调控,主要体现在对收集执行模块01的调用上,具体地,在用例执行前,将用例的用例信息发送给收集执行模块01并指示收集执行模块01开始收集;用例执行结束后,将用例信息发送给收集执行模块01并指示收集执行模块01结束收集。功能类似于一个触发接口的功能。
收集执行模块01接收到结束收集的指示后,执行获取代码覆盖率工具输出的覆盖信息报告的操作。
以tomcat服务为例,总控模块00可以将用例信息和指示收集执行模块开始收集的信息携带在http请求中发送给收集执行模块01,以及将用例信息和指示收集执行模块结束收集的信息携带在http请求中发送给收集执行模块01。举一个例子:
http://10.125.195.155:8080/CallShell/Start_emma_all?id=用例id&casetype=auto。
其中10.125.195.155为运行tomcat的机器(同时也是收集执行模块所在机器)的IP地址,8080为监听端口的端口号,callshell/start_emma_all用于指示收集执行模块开始收集,id表示用例标识,casetype表示用例类型,该例子中为自动化用例。如果casetype采用默认值,http请求中也可以不携带casetype参数。
http://10.125.195.155:8080/CallShell/end_emma_all?id=用例id&casetype=auto。
其中10.125.195.155为运行tomcat的机器(同时也是收集执行模块所在机器)的IP地址,8080为监听端口的端口号,callshell/and_emma_all用于指示收集执行模块结束收集,id表示用例标识,casetype表示用例类型,该例子中为自动化用例。如果casetype采用默认值,http请求中也可以不携带casetype参数。
上述收集执行模块和解析执行模块可以是脚本的形式,即收集脚本和解析脚本,脚本所使用的语言可以采用java、C、C++、python、perl等语言。当然也可以采用其他类型的执行文件。
在通过本发明实施例提供的上述方法和装置实现用例和代码之间映射关系的收集后,可以应用于但不限于以下场景:
通过用例和代码之间的映射关系,衡量用例是否已经覆盖软件的所有代码,如果否,则可以依据该映射关系对用例进行补充。
当软件的代码发生变更时,可以依据用例和代码之间的映射关系,确定该变更的代码涉及到哪些用例,以便对涉及到的用例进行相应的修改或者回归回测。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (11)
1.一种收集用例与代码之间映射关系的方法,其特征在于,该方法包括:
部署映射关系收集的环境:预先对各应用的代码进行代码覆盖率工具的插桩并针对各应用分别定义代码覆盖率工具的监听端口;
确定映射关系收集的环境信息与使用该环境的用例信息之间的对应关系;
用例执行结束后,通过本次执行的用例所对应的环境信息中的监听端口获取代码覆盖率工具输出的覆盖信息报告,所述覆盖信息报告包含所述用例执行所覆盖的代码信息;
解析所述覆盖信息报告得到所述用例所覆盖的代码,从而建立所述用例与代码之间的映射关系。
2.根据权利要求1所述的方法,其特征在于,所述获取代码覆盖率工具输出的覆盖信息报告包括:查询所述对应关系确定本次执行的用例所对应的映射关系收集的环境信息,由确定的环境信息中的监听端口获取所述代码覆盖率工具输出的覆盖信息报告。
3.根据权利要求2所述的方法,其特征在于,该方法还包括:
所述用例执行前,在数据库中针对所述确定的环境信息记录一条执行开始记录;
所述用例执行结束后,查询所述数据库中所述用例对应的环境信息是否只有一条执行开始记录,如果是,则将所述记录更新为完成状态,并执行所述获取代码覆盖率工具输出的覆盖信息报告的步骤;否则放弃本次收集。
4.根据权利要求1至3任一权项所述的方法,其特征在于,所述获取代码覆盖率工具输出的覆盖信息报告由收集执行模块执行;所述解析所述覆盖信息报告得到所述用例所覆盖的代码由解析执行模块执行。
5.根据权利要求4所述的方法,其特征在于,该方法还包括:用例执行前,总控模块将所述用例的用例信息发送给所述收集执行模块并指示所述收集执行模块开始收集;
所述用例执行结束后,所述总控模块将所述用例信息发送给所述收集执行模块并指示收集执行模块结束收集,所述收集执行模块执行所述获取代码覆盖率工具输出的覆盖信息报告的步骤。
6.根据权利要求5所述的方法,其特征在于,总控模块将所述用例的用例信息发送给所述收集执行模块并指示所述收集执行模块开始收集具体包括:所述总控模块将所述用例信息和指示收集执行模块开始收集的信息携带在http请求中发送给所述收集执行模块;
所述总控模块将所述用例信息发送给所述收集执行模块并指示收集执行模块结束收集具体包括:所述总控模块将所述用例信息和指示收集执行模块结束收集的信息携带在http请求中发送给所述收集执行模块。
7.一种收集用例与代码之间映射关系的装置,其特征在于,该装置包括:
环境部署和准备模块,用于部署映射关系收集的环境:预先对代码进行代码覆盖率工具的插桩,并定义代码覆盖率工具的监听端口;还用于确定所述映射关系收集的环境信息与使用该环境的用例信息之间的对应关系;
收集执行模块,用于用例执行结束后,通过本次执行的用例所对应的环境信息中的监听端口获取代码覆盖率工具输出的覆盖信息报告,所述覆盖信息报告包含所述用例执行所覆盖的代码信息;
解析执行模块,用于解析所述覆盖信息报告得到所述用例所覆盖的代码,从而建立所述用例与代码之间的映射关系。
8.根据权利要求7所述的装置,其特征在于,所述收集执行模块在获取代码覆盖率工具输出的覆盖信息报告时,具体用于查询所述对应关系确定本次执行的用例所对应的映射关系收集的环境信息,由确定的环境信息中的监听端口获取所述代码覆盖率工具输出的覆盖信息报告。
9.根据权利要求8所述的装置,其特征在于,所述收集执行模块,还用于在所述用例执行前,在数据库中针对所述确定的环境信息记录一条执行开始记录;所述用例执行结束后,查询所述数据库中所述用例对应的环境信息是否只有一条执行开始记录,如果是,则将所述记录更新为完成状态,并执行所述获取代码覆盖率工具输出的覆盖信息报告的操作;否则放弃本次收集。
10.根据权利要求7至9任一权项所述的装置,其特征在于,该装置还包括:总控模块,用于在所述用例执行前,将所述用例的用例信息发送给所述收集执行模块并指示所述收集执行模块开始收集;所述用例执行结束后,将所述用例信息发送给所述收集执行模块并指示收集执行模块结束收集;
所述收集执行模块接收到结束收集的指示后,执行所述获取代码覆盖率工具输出的覆盖信息报告的操作。
11.根据权利要求10所述的装置,其特征在于,所述总控模块具体用于将所述用例信息和指示收集执行模块开始收集的信息携带在http请求中发送给所述收集执行模块,以及将所述用例信息和指示收集执行模块结束收集的信息携带在http请求中发送给所述收集执行模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310582719.6A CN104657256B (zh) | 2013-11-19 | 2013-11-19 | 一种收集用例与代码之间映射关系的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310582719.6A CN104657256B (zh) | 2013-11-19 | 2013-11-19 | 一种收集用例与代码之间映射关系的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657256A CN104657256A (zh) | 2015-05-27 |
CN104657256B true CN104657256B (zh) | 2018-07-31 |
Family
ID=53248425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310582719.6A Expired - Fee Related CN104657256B (zh) | 2013-11-19 | 2013-11-19 | 一种收集用例与代码之间映射关系的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104657256B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294114A (zh) * | 2015-06-08 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种代码覆盖率获取方法、服务器及待测应用装置 |
CN106557413A (zh) | 2015-09-25 | 2017-04-05 | 伊姆西公司 | 基于代码覆盖率获取测试用例的方法和设备 |
CN107562621B (zh) * | 2017-08-28 | 2020-11-06 | 阿里巴巴(中国)有限公司 | 确定手工测试用例与被测试代码关联关系的方法和装置 |
CN108829575B (zh) * | 2018-04-17 | 2021-08-24 | 平安科技(深圳)有限公司 | 测试案例推荐方法、电子装置及可读存储介质 |
CN108874661B (zh) * | 2018-05-07 | 2020-12-22 | 未鲲(上海)科技服务有限公司 | 测试映射关系库生成方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908892A (zh) * | 2005-08-01 | 2007-02-07 | 王彤 | 测试用例设计方法和系统 |
CN102436417A (zh) * | 2011-09-28 | 2012-05-02 | 于秀山 | 代码与功能覆盖映射系统及其覆盖映射方法 |
CN103095518A (zh) * | 2011-11-08 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 覆盖率测试处理方法、装置、覆盖率测试服务器及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9117025B2 (en) * | 2011-08-16 | 2015-08-25 | International Business Machines Corporation | Tracking of code base and defect diagnostic coupling with automated triage |
-
2013
- 2013-11-19 CN CN201310582719.6A patent/CN104657256B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908892A (zh) * | 2005-08-01 | 2007-02-07 | 王彤 | 测试用例设计方法和系统 |
CN102436417A (zh) * | 2011-09-28 | 2012-05-02 | 于秀山 | 代码与功能覆盖映射系统及其覆盖映射方法 |
CN103095518A (zh) * | 2011-11-08 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 覆盖率测试处理方法、装置、覆盖率测试服务器及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104657256A (zh) | 2015-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104657256B (zh) | 一种收集用例与代码之间映射关系的方法和装置 | |
CN108829560A (zh) | 数据监控方法、装置、计算机设备及存储介质 | |
CN103593419B (zh) | 数据查询方法、装置、服务器及系统 | |
CN102916854B (zh) | 流量统计方法、装置及代理服务器 | |
CN110888418B (zh) | 一种车辆诊断方法、装置、设备及可读存储介质 | |
CN109582517A (zh) | 系统应用自动化测试方法、装置、系统及工具存储端 | |
CN113190423B (zh) | 业务数据的监控方法、装置及系统 | |
CN109819060A (zh) | 异常检测方法、装置、计算机装置及存储介质 | |
CN108228770A (zh) | 一种应用文件来源查询的方法及装置 | |
CN103023693A (zh) | 一种行为日志数据管理系统及方法 | |
CN111224848B (zh) | 网络质量测试方法、装置、设备及存储介质 | |
WO2021035634A1 (zh) | 车辆远程诊断方法及系统 | |
CN107819641A (zh) | 一种保信系统的异常分析方法和装置 | |
CN109150569B (zh) | 一种网络视频业务故障定位分析方法、装置及系统 | |
CN109726830A (zh) | 设备巡检方法、装置、电子设备及存储介质 | |
CN101149665A (zh) | 一种将iSCSI目标名称映射到存储资源的方法 | |
CN109802842B (zh) | 应用拓扑的生成方法及相关设备 | |
CN112380229A (zh) | 业务数据同步方法及装置、非易失性存储介质、处理器 | |
CN114745295A (zh) | 数据采集方法、装置、设备和可读存储介质 | |
CN112965912A (zh) | 接口测试用例生成方法、装置和电子设备 | |
CN109219051B (zh) | 一种虚假号码确定方法、装置、设备及可读存储介质 | |
CN109086185B (zh) | 一种存储集群的故障检测方法、装置、设备及存储介质 | |
JP2014523671A (ja) | 対話型アプリケーションサービスの全体的なパフォーマンスの評価 | |
CN101083824A (zh) | 路测系统的视图联动实现方法 | |
CN114338347A (zh) | 基于Ampere平台的故障信息带外获取方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180731 |