本发明专利技术实施例提供一种业务处理方法及装置,其中的方法可包括:对待处理业务的源代码进行解析,获得所述源代码所包含的至少一个函数的关键信息;根据所述至少一个函数的关键信息对所述源代码进行插桩处理,获得目标代码;运行所述目标代码,并采集所述目标代码在运行过程中的函数调用信息;根据所述函数调用信息,计算所述业务的覆盖参数。本发明专利技术能够基于函数计算业务的覆盖参数,提升业务的覆盖参数的计算精度,提升对业务的完整性评判的准确度。
【技术实现步骤摘要】
本专利技术涉及互联网
,具体涉及互联网业务
,尤其涉及一种业务处理方法及装置。
技术介绍
覆盖参数是衡量互联网业务的完整性的一个重要指标,现有技术中通常采用代码覆盖率来表示业务的覆盖参数,例如:互联网软件的测试业务中,通常需要计算测试业务的代码覆盖率,以了解测试业务的方案完整性;一般地,可采用GCov/LCov(代码覆盖率测试工具)、或EMMA(一种代码覆盖率测试工具)等统计工具来计算业务的代码覆盖率;然而,上述的统计工具采用的是“基于行的代码覆盖率”的计算方式,即根据各代码行的调用情况获得代码覆盖率,其代码覆盖率精确到业务的源代码中的各代码行,由于业务迭代需求,业务的源代码的代码行经常发生变化,从而降低了现有技术中“基于行的代码覆盖率”的计算精度,影响业务的完整性评判。
技术实现思路
本专利技术实施例提供一种业务处理方法及装置,能够基于函数计算业务的覆盖参数,提升业务的覆盖参数的计算精度,提升对业务的完整性评判的准确度。本专利技术实施例第一方面提供一种业务处理方法,可包括:对待处理业务的源代码进行解析,获得所述源代码所包含的至少一个函数的关键信息;根据所述至少一个函数的关键信息对所述源代码进行插桩处理,获得目标代码;运行所述目标代码,并采集所述目标代码在运行过程中的函数调用信息;根据所述函数调用信息,计算所述业务的覆盖参数。本专利技术实施例第二方面提供一种业务处理装置,可包括:解析单元,用于对待处理业务的源代码进行解析,获得所述源代码所包含
的至少一个函数的关键信息;插桩处理单元,用于根据所述至少一个函数的关键信息对所述源代码进行插桩处理,获得目标代码;运行单元,用于运行所述目标代码;采集单元,用于采集所述目标代码在运行过程中的函数调用信息;计算单元,用于根据所述函数调用信息,计算所述业务的覆盖参数。实施本专利技术实施例,具有如下有益效果:本专利技术实施例中,可以根据业务的源代码所包含的至少一个函数的关键信息,对业务的源代码进行插桩处理获得目标代码,采集目标代码运行过程中的函数调用信息,并基于函数调用信息计算业务的覆盖参数,这使得业务的覆盖参数能够精确到源代码中的函数而不受限于代码行的变更,提升了业务的覆盖参数的计算精度,提升对业务的完整性评判的准确度。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种业务处理方法的流程图;图2为本专利技术实施例提供的另一种业务处理方法的流程图;图3为图2所示实施例的步骤S210的具体细化步骤;图4为本专利技术实施例提供的一种业务处理装置的结构示意图;图5为本专利技术实施例提供的一种解析单元的结构示意图;图6为本专利技术实施例提供的一种插桩处理单元的结构示意图;图7为本专利技术实施例提供的一种采集单元的结构示意图;图8为本专利技术实施例提供的一种计算单元105的结构示意图;图9为图8所示的覆盖率计算单元的实施例的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清
楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。下面将结合附图1-附图3,对本专利技术实施例提供的业务处理方法进行详细介绍。请参见图1,为本专利技术实施例提供的一种业务处理方法的流程图;该方法可包括以下步骤S101-步骤S105。S101,对待处理业务的源代码进行解析,获得所述源代码所包含的至少一个函数的关键信息。本专利技术实施例的业务指互联网业务,可包括但不限于:互联网软件的测试业务、应用程序的检测业务等等,业务通过源代码实现相应的业务功能,例如:互联网软件的测试业务的源代码能够实现对互联网软件的测试功能。通常,源代码中包括至少一个函数,源代码在运行过程中按照需求选择调用其所包含的至少一个函数来实现相应的业务功能。本专利技术实施例中,一个函数的关键信息包括:函数的全局唯一名称和函数的起始位置,所述函数的起始位置包括所述函数的起始代码行和起始代码列。其中,函数的全局唯一名称是指采用全局唯一命名规则对函数进行命名所获得的、能够用于标识该函数的唯一名称;具体实现中,对面向对象语言的函数的全局唯一命名规则可包含四部分内容,包括:包名、类名、函数名和函数参数类型名,例如:某面向对象语言编译的函数的全局唯一名称为com.sample.class1.func1(int,int),按照全局唯一命名规则该全局唯一名称包括4部分内容,第一部分内容为包名com.sample,第二部分内容为类名class1,第三部分内容为函数名func1,第四部分内容为函数参数类型名(int,int)。对非面向对象语言的函数的全局唯一命名规则可包含三部分内容,包括:文件路径、文件名和函数名。本步骤中,可对待处理业务的源代码进行解析,包括对源代码的词法和/或语法分析,获得所述源代码所包含的每一个函数的关键信息。S102,根据所述至少一个函数的关键信息对所述源代码进行插桩处理,获得目标代码。对所述源代码进行插桩处理是指在所述源代码中插入桩代码,通过桩代码的执行来获得源代码在运行过程中的控制流、数据流等运行信息。插桩处理的
关键在于确定桩代码的插入位置,本步骤中可以将每一个函数的起始位置确定为桩代码的插入位置,从而对所述源代码进行插桩处理,完成插桩处理后的源代码可被称为目标代码。S103,运行所述目标代码。本步骤需要运行所述目标代码,即运行带有桩代码的源代码。S104,采集所述目标代码在运行过程中的函数调用信息。所述目标代码即为带有桩代码的源代码,所述目标代码在运行过程中每调用一个函数,则该函数起始位置的桩代码被执行从而输出该函数的调用信息,本步骤中,可采集并统计所述目标代码在运行过程中所调用的所有函数的调用信息;函数调用信息优选包括被调用函数的全局唯一名称,进一步,函数调用信息还可包括被调用函数的用例标识、被调用次数、被调用时间等其他信息。S105,根据所述函数调用信息,计算所述业务的覆盖参数。覆盖参数是衡量互联网业务的完整性的一个重要指标,现有技术中采用代码覆盖率表示业务的覆盖参数;本专利技术实施例可采用函数覆盖率表示业务的覆盖参数。所述函数调用信息优选包括被调用函数的全局唯一名称,即本实施例在计算业务的覆盖参数过程中,仅关注于被调用函数的全局唯一名称,而不再关注于被调用函数中的代码行,因此使得业务的覆盖参数能够精确到函数而可不受限代码行的变更,提升业务的覆盖参数的计算精度。本专利技术实施例中,可以根据业务的源代码所包含的至少一个函数的关键信息,对业务的源代码进行插桩处理获得目标代码,采集目标代码运行过程中的函数调用信息,并基于函数调用信息计算业务的覆盖参数,这使得业务的覆盖参数能够精确到源代码中的函数而不受限于代码行的变更,提升了业务的覆盖参数的计算精度,提升对业务的完整性评判的准确度。请参见图2,为本专利技术实施例提供的另一种业务处理方法的本文档来自技高网...
【技术保护点】
一种业务处理方法,其特征在于,包括:对待处理业务的源代码进行解析,获得所述源代码所包含的至少一个函数的关键信息;根据所述至少一个函数的关键信息对所述源代码进行插桩处理,获得目标代码;运行所述目标代码,并采集所述目标代码在运行过程中的函数调用信息;根据所述函数调用信息,计算所述业务的覆盖参数。
【技术特征摘要】
1.一种业务处理方法,其特征在于,包括:对待处理业务的源代码进行解析,获得所述源代码所包含的至少一个函数的关键信息;根据所述至少一个函数的关键信息对所述源代码进行插桩处理,获得目标代码;运行所述目标代码,并采集所述目标代码在运行过程中的函数调用信息;根据所述函数调用信息,计算所述业务的覆盖参数。2.如权利要求1所述的方法,其特征在于,所述对待处理业务的源代码进行解析,获得所述源代码所包含的至少一个函数的关键信息,包括:获取待处理业务的源代码;对所述源代码进行静态解析,获得所述源代码所包含的至少一个函数;读取所述至少一个函数的关键信息,其中,一个函数的关键信息包括:函数的全局唯一名称和函数的起始位置,所述函数的起始位置包括所述函数的起始代码行和起始代码列。3.如权利要求2所述的方法,其特征在于,所述根据所述至少一个函数的关键信息对所述源代码进行插桩处理,获得目标代码,包括:按照所述至少一个函数中各函数的全局唯一名称,在所述各函数的起始位置分别插入桩代码;将包含所述桩代码的源代码确定为目标代码。4.如权利要求1-3任一项所述的方法,其特征在于,所述采集所述目标代码在运行过程中的函数调用信息,包括:在所述目标代码的运行过程中输出所述目标代码所调用的目标函数的全局唯一名称;按照所述目标函数的全局唯一名称,生成调用函数集合。5.如权利要求4所述的方法,其特征在于,所述根据所述函数调用信息,计算所述业务的覆盖参数,包括:按照所述源代码中所包含的至少一个函数的全局唯一名称,生成原函数集合;根据所述调用函数集合及所述原函数集合,采用预设的覆盖率计算规则计算所述业务的函数覆盖率。6.如权利要求5所述的方法,其特征在于,所述根据所述调用函数集合及所述原函数集合,采用预设的覆盖率计算规则计算所述业务的函数覆盖率,包括:求取所述调用函数集合及所述原函数集合的交集;计算所述交集相对于所述原函数集合的函数百分比;将计算获得的所述函数百分比确定为所述业务的函数覆盖率。7.一种业务处理装置,其特...
【专利技术属性】
技术研发人员:张峰,马云,张少峰,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。