一种获取代码覆盖率的方法及装置制造方法

文档序号:6488199阅读:186来源:国知局
一种获取代码覆盖率的方法及装置制造方法
【专利摘要】本发明公开一种获取代码覆盖率的方法及装置,涉及通信【技术领域】,可以获取手动测试的代码覆盖率,并且避免耗费大量的人力物力。本发明实施例通过获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码,并将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;接收到测试指令后运行测试用例,并将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率。本发明实施例适于在进行手动测试获取代码覆盖率时采用。
【专利说明】一种获取代码覆盖率的方法及装置
【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种获取代码覆盖率的方法及装置。
【背景技术】
[0002]代码覆盖率反映测试用例对被测软件覆盖程度的重要指标,是用来度量测试完整性的一个参考值,其值等于测试运行到的代码除以总的代码。通过代码覆盖率数据,可以评估测试是否充分。
[0003]目前,在被测试的应用程序(Application,APP)的工程基础上建立测试工程,其中在测试工程的基础上添加EMMA或者类似的代码覆盖率统计工具,然后在测试工程中编写大量自动化测试用例。当按照测试计划运行编写的大量测试用例后,就可以获得当前代
码覆盖率。
[0004]发明人发现现有技术中至少存在如下问题:由于现有安卓android平台的功能主要由手动测试保证,无法获取手动测试代码覆盖率;另外,由于获取代码覆盖率时需要写大量的自动化测试用例,耗费大量的人力物力。

【发明内容】

[0005]本发明的实施例提供一种获取代码覆盖率的方法及装置,可以获取手动测试的代码覆盖率,并且避免耗费大量的人力物力。
[0006]一方面,本发明的实施例提供一种获取代码覆盖率的方法,包括:
[0007]获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码,并将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;
[0008]接收到测试指令后运行测试用例,并将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;
[0009]根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率。
[0010]在本发明的另一实施例中,在所述获取所述第一代码的代码覆盖率之后,还包括:获取通过分析未被覆盖到的第一代码后编写的新测试用例;接收到测试指令后运行所述新测试用例,并根据获取所述第一代码的代码覆盖率的方法,获取所述第一代码的累积的代
码覆盖率。
[0011]在本发明的另一实施例中,所述获取所述第一代码的代码覆盖率包括:接收执行第一目录中文件的命令;根据置于所述第一目录中的所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,执行所述命令,获取所述第一代码的代码覆盖率。
[0012]在本发明的另一实施例中,所述获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码包括:
[0013]接收在被测试的APP的第一代码中注销或者退出时调用到的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码;或者,
[0014]接收在被测试的APP的第一代码中由于点击获取代码覆盖率的按钮或者菜单触发的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码。
[0015]在本发明的另一实施例中,所述第一代码的信息包括代码的版本信息、包、类方法和代码所在行的信息。
[0016]在本发明的另一实施例中,所述接收到测试指令后运行测试用例,并将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件包括:
[0017]接收到测试指令后运行测试用例,并记录运行所述测试用例过程中执行过的所述第一代码的代码执行信息,保存在内存中;
[0018]当APP注销或者退出时,调用所述获取代码覆盖率的代码,并将保存在内存中的所述代码执行信息保存在第二文件中,删除所述内存中的所述代码执行信息。
[0019]另一方面,本发明实施例提供一种获取代码覆盖率的装置,包括:
[0020]代码获取单元,用于获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码;
[0021]生成文件单元,用于将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;
[0022]执行单元,用于接收到测试指令后运行测试用例;
[0023]所述生成文件单元还用于,将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;
[0024]代码覆盖率获取单元,用于根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率。
[0025]在本发明的另一实施例中,所述装置还包括:
[0026]测试用例获取单元,用于获取通过分析未被覆盖到的第一代码后编写的新测试用例;
[0027]所述执行单元,用于接收到测试指令后运行所述新测试用例,并由所述生成文件单元和所述代码覆盖率获取单元操作,获取所述第一代码的累积的代码覆盖率。
[0028]在本发明的另一实施例中,所述代码覆盖率获取单元包括:
[0029]接收命令模块,用于接收执行第一目录中文件的命令;
[0030]代码覆盖率获取模块,用于根据置于所述第一目录中的所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,执行所述命令,获取所述第一代码的代码覆盖率。
[0031]在本发明的另一实施例中,所述代码获取单元用于:
[0032]接收在被测试的APP的第一代码中注销或者退出时调用到的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码;或者,
[0033]接收在被测试的APP的第一代码中由于点击获取代码覆盖率的按钮或者菜单触发的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码。
[0034]在本发明的另一实施例中,所述第一代码的信息包括代码的版本信息、包、类方法和代码所在行的信息。
[0035]在本发明的另一实施例中,所述生成文件单元包括:
[0036]记录保存模块,用于记录运行所述测试用例过程中执行过的所述第一代码的所述第一代码的代码执行信息,保存在内存中;
[0037]生成文件模块,用于当APP注销或者退出时,调用所述获取代码覆盖率的代码,并将保存在内存中的所述代码执行信息保存在第二文件中,删除所述内存中的所述代码执行信息。
[0038]本发明实施例提供一种获取代码覆盖率的方法及装置,通过获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码,并将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;接收到测试指令后运行测试用例,并将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率。与采用现有技术进行代码覆盖率测试时,无法获取手动测试代码覆盖率;另外,由于获取代码覆盖率时需要写大量的自动化测试用例,耗费大量的人力物力相比,本发明实施例提供的方案通过在应用程序的源代码中添加获取代码覆盖率的代码,可以获取手动测试代码覆盖率,并且避免耗费大量的人力物力。
【专利附图】

【附图说明】
[0039]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0040]图1为本发明实施例1提供的一种获取代码覆盖率的方法的流程图;
[0041]图2为本发明实施例1提供的一种获取代码覆盖率的装置的框图;
[0042]图3为本发明实施例2提供的一种获取代码覆盖率的方法的流程图;
[0043]图4为本发明实施例2提供的一种获取代码覆盖率的装置的框图。
【具体实施方式】
[0044]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045]实施例1
[0046]本发明实施例提供一种获取代码覆盖率的方法,该方法的执行主体为终端,例如安卓Android设备,如图1所示,该方法包括以下步骤:
[0047]步骤101,获取在被测试的应用程序(Application,APP)的第一代码中添加获取代码覆盖率的代码后的第二代码,并将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;
[0048]本步骤中,第一代码指应用程序APP的源代码。[0049]其中,所述第一代码的信息包括代码的版本信息、包、类方法和代码所在行的信息。也就是说,第一代码的信息包括代码的版本信息、所采用的包、采用的类方法以及某个代码所在的行等信息。
[0050]本步骤包括:接收在被测试的APP的第一代码中注销或者退出时调用到的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码;或者,
[0051]接收在被测试的APP的第一代码中由于点击获取代码覆盖率的按钮或者菜单触发的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码。
[0052]步骤102,接收到测试指令后运行测试用例,并将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;
[0053]测试人员根据被测试的APP撰写测试用例,然后接收到测试指令后运行测试用例。在实际操作中,测试人员可以按照测试计划手动运行测试用例。
[0054]本步骤包括:接收到测试指令后运行测试用例,并记录运行所述测试用例过程中执行过的所述第一代码的代码执行信息,保存在内存中;
[0055]当APP注销或者退出时,调用所述获取代码覆盖率的代码,并将保存在内存中的所述代码执行信息保存在第二文件中,删除所述内存中的所述代码执行信息。
[0056]步骤103,根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率。
[0057]本步骤包括:接收执行第一目录中文件的命令;
[0058]根据置于所述第一目录中的所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,执行所述命令,获取所述第一代码的代码覆盖率。
[0059]进一步的,在本步骤之后还包括:获取通过分析未被覆盖到的第一代码后编写的新测试用例;
[0060]接收到测试指令后运行所述新测试用例,并根据获取所述第一代码的代码覆盖率的方法,获取所述第一代码的累积的代码覆盖率。
[0061]本发明实施例提供一种获取代码覆盖率的方法,通过在APP代码中添加获取代码覆盖率的代码,并进行编译,将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;当接收到测试指令后运行测试用例,并将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率,从而可以获取手动测试代码覆盖率,并且避免耗费大量的人力物力,提供工作效率。
[0062]本发明实施例提供一种获取代码覆盖率的装置,该装置可以为终端,例如Android设备,如图2所示,该装置包括:代码获取单元201,生成文件单元202,执行单元203,代码覆盖率获取单元204 ;
[0063]代码获取单元201,用于获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码;
[0064]进一步的,所述代码获取单元201用于:
[0065]接收在被测试的APP的第一代码中注销或者退出时调用到的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码;或者,
[0066]接收在被测试的APP的第一代码中由于点击获取代码覆盖率的按钮或者菜单触发的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码。
[0067]生成文件单元202,用于将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;
[0068]其中,所述第一代码的信息包括代码的版本信息、包、类方法和代码所在行的信
肩、O
[0069]执行单元203,用于接收到测试指令后运行测试用例;
[0070]所述生成文件单元202还用于,将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;
[0071]进一步的,所述生成文件单元202包括:
[0072]记录保存模块,用于记录运行所述测试用例过程中执行过的所述第一代码的代码执行息,保存在内存中;
[0073]生成文件模块,用于当APP注销或者退出时,调用所述获取代码覆盖率的代码,并将保存在内存中的所述代码执行信息保存在第二文件中,删除所述内存中的所述代码执行信息。
[0074]代码覆盖率获取单元204,用于根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率。
[0075]进一步的,所述代码覆盖率获取单元204包括:
[0076]接收命令模块,用于接收执行第一目录中文件的命令;
[0077]代码覆盖率获取模块,用于根据置于所述第一目录中的所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,执行所述命令,获取所述第一代码的代码覆盖率。
[0078]所述装置还包括测试用例获取单元,用于获取通过分析未被覆盖到的第一代码后编写的新测试用例;
[0079]所述执行单元,用于接收到测试指令后运行所述新测试用例,并由所述生成文件单元和所述代码覆盖率获取单元操作,获取所述第一代码的累积的代码覆盖率。
[0080]本发明实施例提供一种获取代码覆盖率的装置,通过代码获取单元,用于获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码;生成文件单元,用于将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;执行单元,用于接收到测试指令后运行测试用例;所述生成文件单元还用于,将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;代码覆盖率获取单元,用于根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率,从而可以获取手动测试代码覆盖率,并且避免耗费大量的人力物力,提供工作效率。
[0081]实施例2
[0082]本发明实施例提供一种获取代码覆盖率的方法,该方法的执行主体为终端,例如可以为Android设备,如图3所示,该方法包括以下步骤:[0083]步骤301,获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码;
[0084]本步骤中第一代码为APP的源代码。APP为应用Application的简称,APP多指智能手机的第三方应用程序。在本发明实施例中APP可以指在Android设备上的应用程序。
[0085]进一步的,本步骤获取第二代码的方式可以有以下两种:
[0086]方式一:接收在被测试的APP的第一代码中注销或者退出时调用到的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码;其中,APP注销或者退出时调用到的函数可以为OnDestooy。
[0087]方式二:接收在被测试的APP的第一代码中由于点击获取代码覆盖率的按钮或者菜单触发的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码。
[0088]步骤302,编译所述第二代码,并将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;
[0089]本步骤可以使用Ant和Emma重新编译第二代码。其中,Ant是一个自动实现软件编译、测试、部署等步骤的工具,大多用于Java环境中的软件开发。Emma —款Java代码覆盖率获取工具。
[0090]Emma将编译过的第二代码文件做插桩处理,即记录编译第二代码过程中的所述第一代码的信息,所述第一代码的信息包括代码的版本信息、包、类方法和代码所在行的信息。也就是说,APP源代码的版本信息、所采用的包、采用的类方法以及某个代码所在的行
等信息。
[0091]处理完成后将生成一个后缀名为.em的默认文件,即本步骤中的第一文件,例如第一文件可以为coverage, em文件。
[0092]进一步的,将重新编译的第二代码进行安装,即安装到Android设备上。
[0093]步骤303,接收到测试指令后运行测试用例,并将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;
[0094]测试用例为测试人员根据APP的功能撰写的。
[0095]本步骤中:接收到测试指令后运行测试用例,并记录运行所述测试用例过程中执行过的所述第一代码的代码执行信息,保存在内存中;进一步的,Emma将在测试执行的过程中记录执行过的第一代码的代码执行信息并记录在内存中;
[0096]当APP注销或者退出时,调用所述获取代码覆盖率的代码,并将保存在内存中的所述代码执行信息保存在第二文件中,删除所述内存中的所述代码执行信息。进一步的,第二文件可以为后缀名为.ec的默认文件,例如第二文件可以为coverage, ec。
[0097]步骤304,根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率;
[0098]本步骤中,将获取的第一文件和第二文件,以及获取代码覆盖率的代码文件置于同一个目录中,例如置于第一目录中,即将.em文件、.ec文件以及e_a.jar文件放于第一目录中。
[0099]接收执行第一目录中文件的命令,根据置于所述第一目录中的所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,执行所述命令,获取所述第一代码的代码覆盖率,代码覆盖率报告在生成的coverage目录中。
[0100]代码覆盖率报告中还包括未调用的第一代码,可以提供测试人员和开发人员一起判断未调用的第一代码是否为冗余代码,将冗余代码去除,可以减少APP包的大小。
[0101]步骤305,获取通过分析未被覆盖到的第一代码后编写的新测试用例;
[0102]实际操作时,测试人员根据获取到的代码覆盖率分析未被覆盖到的第一代码中的代码,并编写相应的新的测试用例,以便更完整的覆盖应用程序的功能。
[0103]步骤306,接收到测试指令后运行所述新测试用例,并根据获取所述第一代码的代码覆盖率的方法,获取所述第一代码的累积的代码覆盖率。
[0104]本步骤接收到测试指令后运行所述新测试用例,即可根据步骤303和步骤304获取所述第一代码的代码覆盖率,本实施例可以循环执行步骤303、步骤304、步骤305、步骤306,即可以持续进行手动测试,实现代码覆盖率的累积。需要说明的是,循环获取代码覆盖率时,需要对同一个版本的应用程序进行操作。
[0105]本发明实施例提供一种获取代码覆盖率的方法,通过在应用程序的第一代码中添加获取代码覆盖率后的第二代码,通过对第二代码的编译以及运行测试用例等操作可以获取第一代码的代码覆盖率,并可以实现代码覆盖率的累积,从而可以实现手动测试获取代码覆盖率,并且可以避免大量的人力物力撰写自动化测试用例,提高工作效率。
[0106]另外,本发明实施例提供的方案可以通过功能测试人员使用获取的代码覆盖率数据评定与功能测试相关区域,可以更有针对性的设计出相应的测试用例,减少未覆盖到的第一代码的出错几率。
[0107]本发明实施例提供一种获取代码覆盖率的装置,该装置可以为终端,例如可以为android设备。如图4所示该装置包括:代码获取单元401,生成文件单元402,记录保存模块4021,生成文件模块4022,执行单元403,代码覆盖率获取单元404,接收命令模块4041,代码覆盖率获取模块4042,测试用例获取单元405 ;
[0108]代码获取单元401,用于获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码;其中,第一代码为APP的源代码。
[0109]进一步的,所述代码获取单元401用于:
[0110]接收在被测试的APP的第一代码中注销或者退出时调用到的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码;或者,
[0111]接收在被测试的APP的第一代码中由于点击获取代码覆盖率的按钮或者菜单触发的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码。
[0112]生成文件单元402,用于将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件;
[0113]其中,所述第一代码的信息包括代码的版本信息、包、类方法和代码所在行的信息。也就是说,APP源代码的版本信息、所采用的包、采用的类方法以及某个代码所在的行
等信息。
[0114]执行单元403,用于接收到测试指令后运行测试用例;测试用例为测试人员根据APP的功能撰写的。[0115]运行所述测试用例过程中,所述生成文件单元402还用于,将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件;
[0116]进一步的,所述生成文件单元402中的记录保存模块4021,用于记录运行所述测试用例过程中执行过的所述第一代码的代码执行信息,保存在内存中;
[0117]所述生成文件单元402中的生成文件模块4022,用于当APP注销或者退出时,调用所述获取代码覆盖率的代码,并将保存在内存中的所述代码执行信息保存在第二文件中,删除所述内存中的所述代码执行信息。
[0118]根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,代码覆盖率获取单元404,用于获取所述第一代码的代码覆盖率。
[0119]进一步的,所述代码覆盖率获取单元404中的接收命令模块4041,用于接收执行第一目录中文件的命令;
[0120]所述代码覆盖率获取单元404中的代码覆盖率获取模块4042,用于根据置于所述第一目录中的所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,执行所述命令,获取所述第一代码的代码覆盖率。
[0121]进一步的,本实施例还可以获取累积的代码覆盖率,测试用例获取单元405,用于获取通过分析未被覆盖到的第一代码后编写的新测试用例;
[0122]所述执行单元403,用于接收到测试指令后运行所述新测试用例,并由所述生成文件单元402和所述代码覆盖率获取单元404操作,获取所述第一代码的累积的代码覆盖率。
[0123]本发明实施例提供一种获取代码覆盖率的装置,通过在应用程序的第一代码中添加获取代码覆盖率后的第二代码,通过对第二代码的编译以及运行测试用例等操作可以获取第一代码的代码覆盖率,并可以实现代码覆盖率的累积,从而可以实现手动测试获取代码覆盖率,并且可以避免大量的人力物力撰写自动化测试用例,提高工作效率。
[0124]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【权利要求】
1.一种获取代码覆盖率的方法,其特征在于,包括: 获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码,并将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件; 接收到测试指令后运行测试用例,并将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件; 根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率。
2.根据权利要求1所述的方法,其特征在于,在所述获取所述第一代码的代码覆盖率之后,还包括: 获取通过分析未被覆盖到的第一代码后编写的新测试用例; 接收到测试指令后运行所述新测试用例,并根据获取所述第一代码的代码覆盖率的方法,获取所述第一代码的累积的代码覆盖率。
3.根据权利要求1或2所述的方法,其特征在于,所述获取所述第一代码的代码覆盖率包括: 接收执行第一目录中文件的命令; 根据置于所述第一目录 中的所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,执行所述命令,获取所述第一代码的代码覆盖率。
4.根据权利要求3所述的方法,其特征在于,所述获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码包括: 接收在被测试的APP的第一代码中注销或者退出时调用到的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码;或者, 接收在被测试的APP的第一代码中由于点击获取代码覆盖率的按钮或者菜单触发的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码。
5.根据权利要求1或2所述的方法,其特征在于,所述第一代码的信息包括代码的版本信息、包、类方法和代码所在行的信息。
6.根据权利要求5所述的方法,其特征在于,所述接收到测试指令后运行测试用例,并将运行所述测试用例过程中记录的所述第一代码的代码信息生成第二文件包括: 接收到测试指令后运行测试用例,并记录运行所述测试用例过程中执行过的所述第一代码的代码执行信息,保存在内存中; 当APP注销或者退出时,调用所述获取代码覆盖率的代码,并将保存在内存中的所述代码执行信息保存在第二文件中,删除所述内存中的所述代码执行信息。
7.一种获取代码覆盖率的装置,其特征在于,包括: 代码获取单元,用于获取在被测试的应用程序APP的第一代码中添加获取代码覆盖率的代码后的第二代码; 生成文件单元,用于将编译所述第二代码过程中记录的所述第一代码的信息生成第一文件; 执行单元,用于接收到测试指令后运行测试用例; 所述生成文件单元还用于,将运行所述测试用例过程中记录的所述第一代码的代码执行信息生成第二文件; 代码覆盖率获取单元,用于根据所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,获取所述第一代码的代码覆盖率。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括: 测试用例获取单元,用于获取通过分析未被覆盖到的第一代码后编写的新测试用例;所述执行单元,用于接收到测试指令后运行所述新测试用例,并由所述生成文件单元和所述代码覆盖率获取单元操作,获取所述第一代码的累积的代码覆盖率。
9.根据权利要求7或8所述的装置,其特征在于,所述代码覆盖率获取单元包括: 接收命令模块,用于接收执行第一目录中文件的命令; 代码覆盖率获取模块,用于根据置于所述第一目录中的所述第一文件和所述第二文件,以及获取代码覆盖率的代码文件,执行所述命令,获取所述第一代码的代码覆盖率。
10.根据权利要求9所述的装置,其特征在于,所述代码获取单元用于:接收在被测试的APP的第一代码中注销或者退出时调用到的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码;或者,接收在被测试的APP的第一代码中由于点击获取代码覆盖率的按钮或者菜单触发的函数中添加的获取代码覆盖率的代码,获取由所述第一代码和所述获取代码覆盖率的代码构成的第二代码。
11.根据权利要求7或8所述的装置,其特征在于,所述第一代码的信息包括代码的版本信息、包、类方法和代码所在行的信息。
12.根据权利要求11所述的装置,其特征在于,所述生成文件单元包括: 记录保存模块,用于记录运行所述测试用例过程中执行过的所述第一代码的代码执行信息,保存在内存中; 生成文件模块,用于当APP注销或者退出时,调用所述获取代码覆盖率的代码,并将保存在内存中的所述代码执行信息保存在第二文件中,删除所述内存中的所述代码执行信肩、O
【文档编号】G06F11/36GK103631707SQ201210308060
【公开日】2014年3月12日 申请日期:2012年8月27日 优先权日:2012年8月27日
【发明者】丁如敏, 皮凯 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1