CN107423222B - 一种确定测试覆盖率的方法及设备 - Google Patents

一种确定测试覆盖率的方法及设备 Download PDF

Info

Publication number
CN107423222B
CN107423222B CN201710673539.7A CN201710673539A CN107423222B CN 107423222 B CN107423222 B CN 107423222B CN 201710673539 A CN201710673539 A CN 201710673539A CN 107423222 B CN107423222 B CN 107423222B
Authority
CN
China
Prior art keywords
enumerated value
target
value
agreement
enumerated
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.)
Active
Application number
CN201710673539.7A
Other languages
English (en)
Other versions
CN107423222A (zh
Inventor
何定涛
赵振兴
罗健
张翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710673539.7A priority Critical patent/CN107423222B/zh
Publication of CN107423222A publication Critical patent/CN107423222A/zh
Application granted granted Critical
Publication of CN107423222B publication Critical patent/CN107423222B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例公开了一种确定测试覆盖率的方法及设备。本发明实施例方法包括:确定待测试目标应用;获取目标应用中所包含的全部协议的协议集合;确定协议集合中每个协议所包含的各字段对应的枚举值;统计协议集合中全部枚举值的总数量;对目标应用进行测试,统计在测试过程中被执行的目标枚举值的数量;根据目标枚举值的数量及总数量获取测试覆盖率。本发明实施例中还提供了一种确定测试覆盖率的设备,提高了测试覆盖率的精确度及漏测用例的转化率。

Description

一种确定测试覆盖率的方法及设备
技术领域
本发明涉及计算机领域,尤其涉及一种确定测试覆盖率的方法及设备。
背景技术
测试覆盖度评估是衡量阶段性软件测试执行状态的重要方法之一,用于确定对于软件的测试是否达到预先设定的测试任务完成的标准。测试覆盖率则是测试覆盖度评估中一种量化的表示方法。
传统方法中一般是通过基于需求的测试覆盖率来表示测量覆盖度。
基于需求的测试覆盖率评估:主要是测试用例覆盖率统计,依赖于对执行测试用例的核实与分析,即在所有测试用例中,有多少测试用例已被执行。例如,Tx表示已执行的测试用例数,Rft表示测试需求总数,测试用例覆盖率为Tx/Rft。基于需求的测试覆盖评估主要依赖于对测试用例的设计,这种评估方式是建立在测试用例足够完善的前提下,如果测试用例设计本身存在问题,测试用例未覆盖到的全部的测试点,在这种情况下,计算的覆盖率是不准确的。并且在实际测试执行过程中,这种覆盖统计通过人工记录,存在人为“作弊”的情况,从而使得测试覆盖率的准确率更低。
发明内容
本发明实施例提供了一种确定测试覆盖率的方法及设备,用于提高测试覆盖率的精确度。
第一方面,本发明实施例了一种确定测试覆盖率的方法,包括:
确定待测试的目标应用,所述目标应用为基于网络协议通信的应用,所述目标应用包括游戏应用、社交应用;
获取所述目标应用中所包含的全部协议的协议集合;
确定所述协议集合中每个协议所包含的各字段对应的枚举值,所述枚举值为所述枚举值为相斥的字段值,所述枚举值作为覆盖率测试的测试点;
统计所述协议集合中全部枚举值的总数量;
对所述目标应用进行测试,统计在测试过程中被执行的目标枚举值的数量;
根据所述目标枚举值的数量及所述总数量计算测试覆盖率。
第二方面,本发明实施例了一种确定测试覆盖率的设备,包括:
第一确定模块,用于确定待测试目标应用,所述目标应用为基于网络协议通信的应用,所述目标应用包括游戏应用、社交应用;
获取模块,用于获取所述第一确定模块确定的所述目标应用中所包含的全部协议的协议集合;
第二确定模块,用于确定所述获取模块获取的所述协议集合中每个协议所包含的各字段对应的枚举值,所述枚举值为相斥的字段值,所述枚举值作为覆盖率测试的测试点;
第一统计模块,用于统计所述获取模块获取的所述协议集合中全部枚举值的总数量;
第二统计模块,用于对所述目标应用进行测试,统计在测试过程中被执行的所述第二确定模块确定的所述目标枚举值的数量;
获取模块,用于根据所述第二统计模块统计的目标枚举值的数量及所述第一统计模块统计的所述总数量获取测试覆盖率。
第三方面,本发明实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
第四方面,本发明实施例一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施中,通过获取目标应用中所包含的全部协议的协议集合;然后对所述协议集合中所述枚举值的总数量进行统计,该枚举值可以理解为协议字段的字段值,相斥的字段值为枚举值,本实施例中从协议层面对测试覆盖率进行评估,将目标应用中全部协议中的枚举值作为测试点参考,避免了有测试点覆盖不到的情况。在测试过程中,统计被执行的目标枚举值的数量;然后,设备根据目标枚举值的数量及全部协议中枚举值的总数量来计算测试覆盖率,测试覆盖率的精确度高,提高了漏测用例的转化率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种确定测试覆盖率的方法的系统架构图;
图2为本发明实施例中一种确定测试覆盖率的方法的一个实施例的方法步骤示意图;
图3为本发明实施例中测试覆盖率的趋势示意图;
图4为本发明实施例中一种确定测试覆盖率的方法的另一个实施例的方法步骤示意图;
图5为本发明实施例中协议集合的协议树结构的示意图;
图6为本发明实施例中一种确定测试覆盖率的设备的一个实施例的结构示意图;
图7为本发明实施例中一种确定测试覆盖率的设备的另一个实施例的结构示意图;
图8为本发明实施例中一种确定测试覆盖率的设备的另一个实施例的结构示意图;
图9为本发明实施例中一种确定测试覆盖率的设备的另一个实施例的结构示意图;
图10为本发明实施例中一种确定测试覆盖率的设备的另一个实施例的结构示意图。
具体实施方式
本发明实施例提供了一种确定测试覆盖率的方法及设备,用于提高测试覆盖率的精确度及漏测用例的转化率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了方便理解,首先对本发明实施例中涉及的词语进行解释说明:
字段的枚举值:一个协议可以包括多个字段,不同的字段对应不同的功能,若一个字段通常的字段取值就包括有限的几个,且字段取值是相斥的,则该字段为枚举字段,该字段的取值为枚举值。例如,以“登录协议”为例,登录协议中的一个字段用于表示平台信息,该字段取值包括:1、微信登录;2、QQ登录;3、微博登录三种取值,这三个取值是相斥的,也就是说,在用户登录时,只能通过微信登录、QQ登录或微博登录中的一种方式登录,那么该字段为枚举字段,该枚举字段的取值为枚举值。
该枚举值可以用数字值来表示,例如,“1”表示“微信登录”,“2”表示“QQ”登录,“3”表示“微博”登录。该枚举值也可以用字符串编码来表示,例如,“wechat”表示“微信登录”,“qq”表示“QQ登录”,“microblog”表示“微博登录”。需要说明的是,对于上述枚举值的举例说明并不造成对本发明的限定性说明。
本发明实施例提供了一种确定测试覆盖率的方法,该方法应用于一种确定测试覆盖率的设备,该设备可以以个人计算机(personal computer,缩写:PC)机的形态存在,也可以以服务器的形态存在,在实际应用中,该设备的具体存在形态并不限定。请结合图1进行理解,图1为本发明实施例中系统架构图,该系统中包括确定测试覆盖率的设备110和查询设备120,本示例中,该设备以服务器的形态为例,该设备110用于确定待测试目标应用。例如,该目标应用可以为一款游戏应用,或者该目标应用也可以为社交应用等基于网络协议通信的应用。设备110获取目标应用中所包含的全部协议的协议集合,然后,确定协议集合中每个协议所包含的各字段对应的枚举值;统计协议集合中全部枚举值的总数量;对目标应用进行测试,统计在测试过程中被执行的目标枚举值的数量;根据目标枚举值的数量及总数量计算测试覆盖率。然后将该测试覆盖率的结果反馈给查询设备120。
本实施例中从协议层面对测试覆盖率进行评估,将目标应用中全部协议中的枚举值作为测试点参考,避免了有测试点覆盖不到的情况。在测试过程中,统计被执行的目标枚举值的数量;然后,设备根据目标枚举值的数量及全部协议中枚举值的总数量来计算测试覆盖率,测试覆盖率的精确度高,提高了漏测用例的转化率。
需要说明的是,本发明实施例中对于图1中的系统架构只是举例说明,并不造成对本发明的限定性说明。
请结合图2进行理解,本发明实施例中一种确定测试覆盖率的方法的一个实施例包括:
步骤201、确定待测试目标应用。
该目标应用包括多个协议,本实施例中,该目标应用可以以一款游戏为例进行说明。
步骤202、获取目标应用中所包含的全部协议的协议集合。
提取该目标应用中所包含的全部协议的协议集合,例如,该游戏包括三个协议,该三个协议分别为“登录协议”、“升级协议”和“购买物品协议”,需要说明的是,本实施例中对于全部协议只是为了方便说明而举的例子,并不造成对本发明的限定性说明。
该协议集合包括:“登录协议”、“升级协议”和“购买物品协议”。
步骤203、确定协议集合中每个协议所包含的各字段对应的枚举值。
每个协议具有对应的ID,每个协议包括多个字段,每个字段具有对应的枚举值集合。请结合下表1进行理解,表1为协议集合中全部的枚举值的举例说明。
表1
需要说明的是,上表1中对于协议集合中协议名称、协议包含的字段及字段对应的枚举值只是举例说明,并不造成对本发明的限定性说明。
步骤204、统计协议集合中全部枚举值的总数量。
统计该协议集合中每个协议的各个字段,及每个字段对应的枚举值的子集合,然后,将每个子集合中的枚举值的数量进行加和,得到该协议集合中全部的枚举值的总数量。
从上述表1中的例子可以看出,“登录协议”包括两个字段,分别为“字段A”和“字段B”,其中,“字段A”对应的子集合包括枚举值“1”、“2”和“3”。“字段B”对应的子集合包括枚举值“4”和“5”。
“购买物品协议”包括三个字段,分别为“字段C”、“字段D”和“字段E”,其中,“字段C”对应的子集合包括枚举值“0”。“字段D”对应的子集合包括枚举值“a”和“b”。“字段E”对应的子集合包括枚举值“c”和“d”。
“协议协议”包括两个字段,分别为“字段F”和“字段G”,其中,“字段F”对应的子集合包括枚举值“aa”和“bb”。“字段G”对应的子集合包括枚举值“cc”、“dd”和“ee”。
“字段A”对应的子集合中的枚举值的数量为3个;“字段B”对应的子集合包括枚举值的数量为2个;“字段C”对应的子集合包括的枚举值的数量为1个;“字段D”对应的子集合包括枚举值的数量为2个;“字段E”对应的子集合包括枚举值的数量为2个;“字段F”对应的子集合包括枚举值的数量为2个;“字段G”对应的子集合包括枚举值的数量为3个,综上,在表1中的例子中,该协议集合中枚举值的总数量为15个。
步骤205、对目标应用进行测试,统计在测试过程中被执行的目标枚举值的数量。
对该目标应用进行测试,运行目标应用的程序,当执行到协议集合中的任一一个协议的枚举值时,标记被执行的枚举值。例如,运行目标应用的程序,执行“登录协议”-“字段A”-“1”,则对枚举值“1”进行标记,标记的方式可以生成一个标识,将该标识与该枚举值“1”进行关联,例如,该标识可以为序号,字符串等,只要能标记该被执行的枚举值均可,具体的实现形式本发明实施例中并不限定。
具有标记的枚举值为被击中的目标枚举值,例如,在上表1中黑体字标记的枚举值为目标枚举值,当该目标应用运行完成,统计具有标记的目标枚举值的数量。本实施例,具有标记的目标枚举值的数量为13个。
在另一种实现方式中,当一个枚举值被执行时,记录该被执行的枚举值的时刻。例如,当枚举值“1”被执行时的时刻为2017-5-13 16:09:03,则将该枚举值被执行时刻(时间戳)与该枚举值“1”建立对应关系,如“1”-“2017-5-13 16:09:03”。关联了时间戳的枚举值为被击中的目标枚举值,然后,统计被建立了对应关系(具有时间戳)的目标枚举值的数量。
需要说明的是,在本实施例中,若一个枚举值关联了多个时间戳,例如,枚举值“1”在时刻2017-5-13 16:09:03被执行一次,在时刻2017-5-13 10:09:00被执行一次,也就是说,该枚举值“1”关联了两个时间戳,该两个时间戳分别为“2017-5-13 11:09:03”和“2017-5-13 10:09:00”,在统计在测试过程中被执行的目标枚举值的数量时,该枚举值被统计一次,也就是说,只要该枚举值被执行过,该枚举值就为目标枚举值,该枚举值被执行的次数对统计该目标枚举值的数量没有影响。
步骤206、根据目标枚举值的数量及总数量获取测试覆盖率。
按照如下公式计算测试覆盖率:
测试覆盖率=目标枚举值的数量/协议集合中的全部枚举值的总数量。
以上述表1中的例子为例,该目标应用的测试覆盖率=13/15。
本发明实施中,通过获取目标应用中所包含的全部协议的协议集合;然后对协议集合中枚举值的总数量进行统计,该枚举值可以理解为字段的字段值,相斥的字段值为枚举值,本实施例中从协议层面对测试覆盖率进行评估,将目标应用中全部协议中的枚举值作为测试点,避免了有测试点覆盖不到的情况。在测试过程中,统计被执行的目标枚举值的数量;然后,设备根据目标枚举值的数量及全部协议中枚举值的总数量来计算测试覆盖率,测试覆盖率的精确度高,提高了漏测用例的转化率。
可选的,本实施例中也可以计算一个预置时间段内的测试覆盖率。
当一个枚举值被执行时,记录该被执行的枚举值的时刻,例如,当枚举值“1”被执行时的时刻为2017-5-13 16:09:03,将该枚举值被执行时刻与该枚举值建立对应关系,也就是说,被执行的目标枚举值均具有关联的时间戳,根据该目标枚举值的被执行时刻计算预置时间段内目标枚举值的数量。
请结合下表2进行理解,下表2为在预置时间段内统计的该目标枚举值的数量。
表2
目标枚举值 时间戳
1 2017-5-13 10:09:03
2 2017-5-13 09:10:03
4 2017-5-13 09:20:00
5 2017-5-13 09:45:00
6 2017-5-13 10:10:00
a 2017-5-13 10:10:00
b 2017-5-13 10:12:00
c 2017-5-13 10:55:00
d 2017-5-13 11:10:00
aa 2017-5-13 11:20:00
bb 2017-5-13 12:10:00
cc 2017-5-13 12:30:00
dd 2017-5-13 12:45:00
若统计2017-5-13 09:00:00至2017-5-13 11:00:00之间时间段内的测试覆盖率,则需要根据被执行枚举值的时间戳统计出预置时间内被执行的目标枚举值的数量,从上表2中可以看出,在2017-5-13 09:00:00至2017-5-13 11:00:00的预置时间段中,被执行的目标枚举值为上表2中斜体字所示出的枚举值及时间戳,在预置时间段内,统计目标枚举值的数量为8个,然后,再根据预置时间段内目标枚举值的数量和总数量计算对应的时间段内的测试覆盖率。则在预置时间段内的测试覆盖率为:8/15。
进一步的,可以根据被执行枚举值的时间戳对测试覆盖率的趋势进行分析,便于测试人员把控整个测试进程,尤其针对测试周期时间较长的目标应用,对于测试覆盖率的趋势分析更利于测试人员把控整个测试的趋势,利于测试人员通过趋势分析后续测试覆盖率而调整测试方向,进行测试设计与执行的补充。例如,测试该目标应用的时间超过阈值,该阈值可以为1天,若测试时间超过1天的目标应用,以上表2中的数据为例,计算的每个小时的测试覆盖率如下表3所示:
表3
时间段 测试覆盖率
9:00-10:00 3/15=0.20
10:00-11:00 5/15=0.33
11:00-12:00 2/15=0.13
12:00-13:00 3/15=0.20
该趋势分析请结合图3进行理解,图3为以上表3中的数据进行分析,得到的按照小时为单位统计测试覆盖率的趋势示意图。
需要说明的是,上述表2和表3中的数据只是为了方便说明而举的例子,并不造成对本发明的限定性说明。
请结合图4进行理解,本发明实施例中提供了一种确定测试覆盖率的方法的另一个实施例包括:
步骤401、确定待测试目标应用。
该目标应用包括多个协议,本实施例中,该目标应用可以以一款游戏为例进行说明。
步骤402、获取目标应用中所包含的全部协议的协议集合。
提取该目标应用中所包含的全部协议的协议集合,例如,该游戏包括三个协议,该三个协议分别为“登录协议”、“升级协议”和“购买物品协议”,需要说明的是,本实施例中对于全部协议只是为了方便说明而举的例子,并不造成对本发明的限定性说明。
该协议集合包括:“登录协议”、“升级协议”和“购买物品协议”。
步骤403、解析协议集合中每个协议的协议结构。
解析该协议集合中每个协议的协议结构,每个协议的协议结构包括该协议包括的各个字段,及各个字段包括的枚举值。
步骤404、根据每个协议的协议结构,生成协议集合的协议树结构,协议树结构中包括每个协议的标识对应的各个字段,及各个字段对应的枚举值集合。
结合图5进行理解,图5为该协议集合的协议树结构的示意图。
协议集合中每个协议包括协议ID。首先,提取该协议集合中的协议ID的集合,该协议ID的集合包括“P”、“Q”、“F”、“G”和“H”。对每个协议ID对应的协议字段进行解析,该协议字段中的各枚举字段又对应枚举值集合,生成协议树结构,若协议结构如下所示:
协议P包括三个字段,分别为字段_A、字段_B和字段_C,其中,字段_A为枚举字段,字段_A包括四个枚举值,该三个枚举值分别为:“value_a1”、“value_a2”、“value_a3”和“value_a4”。
生成的协议树结构如下:
协议(Protocol)P
字段_A(Item_A)
value_a1
value_a2
value_a3
value_a4
字段_B(Item_B)
字段_C(Item_C)
步骤405、统计协议集合中全部枚举值的总数量。
根据上述协议树结构统计每个协议对应的各个字段对应的枚举值的子集合中包括的枚举值的数量,然后将每个子集合中的枚举值的数量进行加总,得到该协议集合中全部枚举值的总数量。例如,该总数量为28个。
需要说明的是,上述协议树结构及枚举值的总数量只是为了方便说明而举的例子,并不造成对本发明的限定性说明。
步骤406、对目标应用进行测试,在测试的过程中,根据协议树结构记录执行枚举值的执行路径。
根据测试过程中被执行的协议,统计被执行的协议的协议ID,及该协议ID对应的被执行的枚举值,记录执行枚举值的执行路径。
例如,结合图5进行理解,协议“P”和协议“Q”为被执行的协议,其中以协议“P”对应的枚举值为例说明执行路径,记录的枚举值的执行路径为:P-字段_A-value_a1;P-字段_A-value_a2。
步骤407、根据执行路径确定被执行的目标协议的目标枚举值。
根据上述执行路径确定被执行的协议P的目标枚举值为value_a1和value_a2。该协议P和协议Q对应的其他目标枚举值根据记录的执行路径确定,此处不赘述。
可选的,此过程中的数据存储可以采用key,value的方式进行对应存储,执行路径作为key,该枚举值在测试过程中的命中时间戳(被执行时刻)集合作为value。如上述的协议树结构,举个例子,若value_a1、value_a2和value_a3可枚举字段的枚举值,执行路径与时间戳的对应存储结构可以为:
P-字段_A-value_a1:[第一时间戳]
P-字段_A-value_a2:[第二时间戳]
P-字段_A-value_a3:[第三时间戳]
其中,P-字段_A-value_a1为协议树结构的执行路径key,时间戳为测试过程中的value。
步骤408、统计目标枚举值的数量。
统计在测试过程中被执行的目标枚举值的数量,如图5所示,在图5中,黑色框表示被执行的目标枚举值,例如,该目标枚举值的数量为11。需要说明的是,本实施例中对于目标枚举值的数量只是举例说明,并不造成对本发明的限定性说明。
步骤409、根据目标枚举值的数量及总数量计算测试覆盖率。
按照如下公式计算测试覆盖率:
测试覆盖率=目标枚举值的数量/协议集合中的全部枚举值的总数量。
以上述表3中的例子为例,该目标应用的测试覆盖率=11/28。
本发明实施例中,通过获取目标应用中所包含的全部协议的协议集合;然后对协议集合中枚举值的总数量进行统计,本实施例中从协议层面对测试覆盖率进行评估,将目标应用中全部协议中的枚举值作为测试点,避免了有测试点覆盖不到的情况。在测试过程中,记录被执行的目标枚举值的执行路径,然后统计被执行的目标枚举值的数量,然后,根据目标枚举值的数量及全部协议中枚举值的总数量来计算测试覆盖率,测试覆盖率的精确度高,提高了漏测用例的转化率。本实施例中,记录了每个目标枚举值的执行路径,执行路径唯一的记录被执行枚举值,能够准确的反映出测试过程中的漏测情况。
可选的,根据记录的时间戳统计预置时间段内的目标枚举值的数量。根据预置时间段内目标枚举值的数量和总数量计算对应的时间段内的测试覆盖率。进一步的,可以根据被执行枚举值的时间戳对测试覆盖率的趋势进行分析,便于测试人员把控整个测试进程,尤其针对测试周期时间较长的目标应用,对于测试覆盖率的趋势分析更利于测试人员把控整个测试的趋势。
对本发明实施例中提供的方法应用场景进行举例说明:
目标应用版本测试前,首先获取该目标应用版本内的所有协议的协议集合,并对所有协议中的每个协议进行分析,梳理每个协议包括的字段及个枚举字段对应的枚举值,根据分析的协议的结构生成协议集合的协议树结构,
对目标应用进行测试,在测试过程中,可以以被执行枚举值的执行路径和测试过程中该枚举值的命中时间戳作为key和value,将key和value建立对应关系,并进行存储。例如,目标应用中存在登录协议(login协议),该登录协议中存在枚举字段(type),该枚举字段存在两种枚举值:1(QQ登陆)和2(微信登陆)。
根据协议树结构的所有枚举值和存储的数据结构(key和value),统计测试过程中被执行的目标协议及目标协议对应的目标枚举值的数量,将统计数据进行存储。例如,若在测试过程中,该登录协议为被执行的目标协议,以该login协议为例,通过解析协议字段type,统计执行路径为login-type-1(QQ登陆),则该枚举值“1”的命中次数加1,将命中时间戳(枚举值被执行时刻)进行存储。也就是说,枚举值“1”为目标枚举值。
根据目标枚举值的数量和协议集合中的枚举值的总数量计算测试覆盖率,设备接受自助查询平台的查询请求,生成测试报告,该测试报告包括测试覆盖率及被执行枚举值的信息,以登录协议为例,通过统计分析,若login->type->2(微信登陆)命中次数为0,则确定“微信登陆”出现漏测。
本发明实施例中,测试覆盖率不仅兼顾目标应用的客户端与服务器端,而且可以测试服务端后台进程之间的基于协议的交互场景。
上面对一种确定测试覆盖率的方法进行了描述,下面对本发明实施例中一种确定测试覆盖率的设备进行描述,请结合图6进行理解,图6为本发明实施例中一种确定测试覆盖率的设备600的一个实施例包括:
第一确定模块601,用于确定待测试目标应用;
获取模块602,用于获取第一确定模块601确定的目标应用中所包含的全部协议的协议集合;
第二确定模块603,用于确定获取模块602获取的协议集合中每个协议所包含的各字段对应的枚举值;
第一统计模块604,用于统计获取模块602获取的协议集合中全部枚举值的总数量;
第二统计模块605,用于对目标应用进行测试,统计在测试过程中被执行的第二确定模块603确定的目标枚举值的数量;
获取模块606,用于根据第二统计模块605统计的目标枚举值的数量及第一统计模块604统计的总数量获取测试覆盖率。
在图6对应的实施例的基础上,请结合图7进行理解,本发明实施例中一种确定测试覆盖率的设备700的另一个实施例包括:第二统计模块605包括:标记单元6051和统计单元6052;
标记单元6051,用于当枚举值被执行时,标记被执行的枚举值;
统计单元6052,用于统计标记单元6051标记的目标枚举值的数量。
可选的,标记单元6051,还用于记录枚举值的被执行时刻;对被执行时刻与被执行的枚举值建立对应关系;
统计单元6052,还用于统计被标记单元6051建立对应关系的目标枚举值的数量。
在图6对应的实施例的基础上,请结合图8进行理解,本发明实施例中一种确定测试覆盖率的设备800的另一个实施例包括:第二确定模块603包括解析单元6031和生成单元6032;
解析单元6031,用于解析协议集合中每个协议的协议结构;
生成单元6032,用于根据解析单元解析的每个协议的协议结构,生成协议集合的协议树结构,协议树结构中包括每个协议的标识对应的各个字段,及各个字段对应的枚举值。
在图8对应的实施例的基础上,请结合图9进行理解,本发明实施例中一种确定测试覆盖率的设备900的另一个实施例包括:第二统计模块605包括第一记录单元6051和确定单元6052和第一计算单元6053;
第一记录单元6051,用于根据协议树结构记录执行枚举值的执行路径;
确定单元6052,用于根据第一记录单元6051记录的执行路径确定被执行的目标协议的目标枚举值;
第一计算单元6053,用于统计确定单元6052确定的目标枚举值的数量。
可选的,第一记录单元6051,还用于记录目标枚举值的被执行时刻;
第一计算单元6053,还用于根据第一记录单元6051记录的目标枚举值的被执行时刻计算预置时间段内目标枚举值的数量;
获取模块606,还用于根据第一计算单元6053在预置时间段内计算的目标枚举值的数量和第一统计模块604统计的总数量计算对应的时间段内的测试覆盖率。
进一步的,图6至图9中的确定测试覆盖率的设备是以功能模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application-specific integrated circuit,ASIC),电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,图6至图9中的确定测试覆盖率的设备可以采用图10所示的形式。
图10是本发明实施例提供的一种确定测试覆盖率的设备结构示意图,该该设备1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器1022和存储器1032,一个或一个以上存储应用程序1042或数据1044的存储介质1030(例如一个或一个以上海量存储设备)。其中,存储器1032和存储介质1030可以是短暂存储或持久存储。存储在存储介质1030的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对该设备中的一系列指令操作。更进一步地,处理器1022可以设置为与存储介质1030通信,在该设备1000上执行存储介质1030中的一系列指令操作。
该设备1000还可以包括一个或一个以上电源1026,一个或一个以上有线或无线网络接口1050,一个或一个以上输入输出接口1058,和/或,一个或一个以上操作系统1041,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等等。
上述实施例中由确定测试覆盖率的设备所执行的步骤可以基于该图10所示的该设备结构。
具体的,本发明实施中,处理器1022,用于执行以下步骤:
确定待测试目标应用;获取目标应用中所包含的全部协议的协议集合;确定协议集合中每个协议所包含的各字段对应的枚举值;统计协议集合中全部枚举值的总数量;对目标应用进行测试,统计在测试过程中被执行的目标枚举值的数量;根据目标枚举值的数量及总数量计算测试覆盖率。
可选的,该处理器1022,还用于当枚举值被执行时,标记被执行的枚举值;统计具有标记的目标枚举值的数量。
可选的,该处理器1022,还用于记录枚举值的被执行时刻;对被执行时刻与被执行的枚举值建立对应关系;统计被建立对应关系的目标枚举值的数量。
可选的,该处理器1022,还用于解析协议集合中每个协议的协议结构;根据每个协议的协议结构,生成协议集合的协议树结构,协议树结构中包括每个协议的标识对应的各个字段,及各个字段对应的枚举值。
可选的,该处理器1022,还用于根据协议树结构记录执行枚举值的执行路径;根据执行路径确定被执行的目标协议的目标枚举值;统计目标枚举值的数量。
可选的,该处理器1022,还用于记录目标枚举值的被执行时刻;根据目标枚举值的被执行时刻计算预置时间段内目标枚举值的数量;根据预置时间段内目标枚举值的数量和总数量计算对应的时间段内的测试覆盖率。
本发明实施例还提供了一种计算机存储介质,用于储存为上述图10所示的设备所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以实现确定目标应用的测试覆盖率。
本发明实施例一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法实施例中的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (13)

1.一种确定测试覆盖率的方法,其特征在于,包括:
确定待测试的目标应用,所述目标应用为基于网络协议通信的应用,所述目标应用包括游戏应用、社交应用;
获取所述目标应用中所包含的全部协议的协议集合;
确定所述协议集合中每个协议所包含的各字段对应的枚举值,所述枚举值为相斥的字段值,所述枚举值作为覆盖率测试的测试点;
统计所述协议集合中全部枚举值的总数量;
对所述目标应用进行测试,统计在测试过程中被执行的目标枚举值的数量;
根据所述目标枚举值的数量及所述总数量获取测试覆盖率。
2.根据权利要求1所述的方法,其特征在于,所述统计在测试过程中被执行的目标枚举值的数量,包括:
当枚举值被执行时,标记被执行的枚举值;
统计具有标记的所述目标枚举值的数量。
3.根据权利要求2所述的方法,其特征在于,所述标记被执行的枚举值包括:
记录枚举值的被执行时刻;
对所述被执行时刻与所述被执行的枚举值建立对应关系;
所述统计具有标记的目标枚举值的数量,包括:
统计被建立所述对应关系的目标枚举值的数量。
4.根据权利要求1所述的方法,其特征在于,所述确定所述协议集合中每个协议所包含的各字段对应的枚举值,包括:
解析所述协议集合中每个协议的协议结构;
根据每个协议的协议结构,生成所述协议集合的协议树结构,所述协议树结构中包括每个协议的标识对应的各个字段,及所述各个字段对应的枚举值。
5.根据权利要求4所述的方法,其特征在于,所述统计被执行的目标枚举值的数量,包括:
根据所述协议树结构记录执行枚举值的执行路径;
根据所述执行路径确定被执行的目标协议的目标枚举值;
统计所述目标枚举值的数量。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
记录所述目标枚举值的被执行时刻;
根据所述目标枚举值的被执行时刻计算预置时间段内所述目标枚举值的数量;
所述根据所述目标枚举值的数量及所述总数量计算测试覆盖率,包括:
根据所述预置时间段内目标枚举值的数量和所述总数量计算对应的时间段内的测试覆盖率。
7.一种确定测试覆盖率的设备,其特征在于,包括:
第一确定模块,用于确定待测试目标应用,所述目标应用为基于网络协议通信的应用,所述目标应用包括游戏应用、社交应用;
获取模块,用于获取所述第一确定模块确定的所述目标应用中所包含的全部协议的协议集合;
第二确定模块,用于确定所述获取模块获取的所述协议集合中每个协议所包含的各字段对应的枚举值,所述枚举值为相斥的字段值,所述枚举值作为覆盖率测试的测试点;
第一统计模块,用于统计所述获取模块获取的所述协议集合中全部枚举值的总数量;
第二统计模块,用于对所述目标应用进行测试,统计在测试过程中被执行的所述第二确定模块确定的所述目标枚举值的数量;
获取模块,用于根据所述第二统计模块统计的目标枚举值的数量及所述第一统计模块统计的所述总数量获取测试覆盖率。
8.根据权利要求7所述的设备,其特征在于,所述第二统计模块包括:标记单元和统计单元;
所述标记单元,用于当枚举值被执行时,标记被执行的枚举值;
所述统计单元,用于统计所述标记单元标记的所述目标枚举值的数量。
9.根据权利要求8所述的设备,其特征在于,
所述标记单元,还用于记录枚举值的被执行时刻;对所述被执行时刻与所述被执行的枚举值建立对应关系;
所述统计单元,还用于统计被所述标记单元建立所述对应关系的目标枚举值的数量。
10.根据权利要求7所述的设备,其特征在于,所述第二确定模块包括解析单元和生成单元;
所述解析单元,用于解析所述协议集合中每个协议的协议结构;
所述生成单元,用于根据所述解析单元解析的所述每个协议的协议结构,生成所述协议集合的协议树结构,所述协议树结构中包括每个协议的标识对应的各个字段,及所述各个字段对应的枚举值。
11.根据权利要求10所述的设备,其特征在于,所述第二统计模块包括第一记录单元和确定单元和第一计算单元;
所述第一记录单元,用于根据所述协议树结构记录执行枚举值的执行路径;
所述确定单元,用于根据所述第一记录单元记录的所述执行路径确定被执行的目标协议的目标枚举值;
所述第一计算单元,用于统计所述确定单元确定的所述目标枚举值的数量。
12.根据权利要求11所述的设备,其特征在于,
所述第一记录单元,还用于记录所述目标枚举值的被执行时刻;
所述第一计算单元,还用于根据所述第一记录单元记录的所述目标枚举值的被执行时刻计算预置时间段内所述目标枚举值的数量;
所述获取模块,还用于根据所述第一计算单元在预置时间段内计算的所述目标枚举值的数量和所述第一统计模块统计的所述总数量计算对应的时间段内的测试覆盖率。
13.一种确定测试覆盖率的设备,其特征在于,包括:
存储器,用于存储计算机可执行程序代码;
网络接口,以及
处理器,与所述存储器和所述网络接口耦合;
其中所述程序代码包括指令,当所述处理器执行所述指令时,所述指令使所述确定测试覆盖率的设备执行如权利要求1至6任一项所述的方法。
CN201710673539.7A 2017-08-08 2017-08-08 一种确定测试覆盖率的方法及设备 Active CN107423222B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710673539.7A CN107423222B (zh) 2017-08-08 2017-08-08 一种确定测试覆盖率的方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710673539.7A CN107423222B (zh) 2017-08-08 2017-08-08 一种确定测试覆盖率的方法及设备

Publications (2)

Publication Number Publication Date
CN107423222A CN107423222A (zh) 2017-12-01
CN107423222B true CN107423222B (zh) 2018-05-22

Family

ID=60437761

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710673539.7A Active CN107423222B (zh) 2017-08-08 2017-08-08 一种确定测试覆盖率的方法及设备

Country Status (1)

Country Link
CN (1) CN107423222B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111326205B (zh) * 2018-12-14 2022-03-22 长鑫存储技术有限公司 测试系统、存储器的测试方法及测试装置
CN110245063B (zh) * 2019-06-25 2023-01-31 北京搜房科技发展有限公司 用户行为统计方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425573A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 代码测试信息收集方法及系统
CN103631707A (zh) * 2012-08-27 2014-03-12 腾讯科技(深圳)有限公司 一种获取代码覆盖率的方法及装置
CN105573908A (zh) * 2015-09-01 2016-05-11 北京中电华大电子设计有限责任公司 一种功能验证方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051352B2 (en) * 2006-04-27 2011-11-01 Mentor Graphics Corporation Timing-aware test generation and fault simulation
CN103631719A (zh) * 2013-12-12 2014-03-12 用友软件股份有限公司 一种Web自动化测试方法和装置
US9710367B1 (en) * 2015-10-30 2017-07-18 EMC IP Holding Company LLC Method and system for dynamic test case creation and documentation to the test repository through automation
CN106980573B (zh) * 2016-10-26 2020-11-20 创新先进技术有限公司 一种构建测试用例请求对象的方法、装置及系统
CN106610899B (zh) * 2016-12-30 2020-01-14 中国科学院长春光学精密机械与物理研究所 一种测试用例生成方法及装置
CN106897217A (zh) * 2017-02-13 2017-06-27 北京趣拿软件科技有限公司 测试方法和测试装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425573A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 代码测试信息收集方法及系统
CN103631707A (zh) * 2012-08-27 2014-03-12 腾讯科技(深圳)有限公司 一种获取代码覆盖率的方法及装置
CN105573908A (zh) * 2015-09-01 2016-05-11 北京中电华大电子设计有限责任公司 一种功能验证方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Comprehensive Static Analysis for Configurable Software via Combinatorial Instantiation;Dong Yan et al;《2017 IEEE 41st Annual Computer Software and Applications Conference (COMPSAC)》;20170708;第67-74页 *

Also Published As

Publication number Publication date
CN107423222A (zh) 2017-12-01

Similar Documents

Publication Publication Date Title
US9582399B2 (en) Entropy weighted message matching for opaque service virtualization
US20180196837A1 (en) Root cause analysis of performance problems
US20060025984A1 (en) Automatic validation and calibration of transaction-based performance models
CN109582588A (zh) 测试用例生成方法、装置及电子设备
CN105279397A (zh) 一种识别蛋白质相互作用网络中关键蛋白质的方法
US20170109667A1 (en) Automaton-Based Identification of Executions of a Business Process
CN104756106A (zh) 表征数据存储系统中的数据源
CN110336838B (zh) 账号异常检测方法、装置、终端及存储介质
CN109783324B (zh) 系统运行预警方法及装置
CN107844914B (zh) 基于集团管理的风险管控系统和实现方法
US20170109639A1 (en) General Model for Linking Between Nonconsecutively Performed Steps in Business Processes
Ali et al. A framework to implement data cleaning in enterprise data warehouse for robust data quality
CN109783459A (zh) 从日志中提取数据的方法、装置及计算机可读存储介质
CN107423222B (zh) 一种确定测试覆盖率的方法及设备
CN104574141A (zh) 一种业务影响度分析方法
CN108897765A (zh) 一种数据批量导入方法及其系统
CN113806343B (zh) 一种车联网数据质量的评估方法和系统
CN113138906A (zh) 一种调用链数据采集方法、装置、设备及存储介质
CN108345620B (zh) 品牌信息处理方法、装置、存储介质及电子设备
CN111680083B (zh) 智能化多级政府财政数据采集系统及数据采集方法
Akca et al. Run-time measurement of cosmic functional size for java business applications: Initial results
CN112561388A (zh) 一种基于物联网的信息处理方法、装置及设备
US20170109637A1 (en) Crowd-Based Model for Identifying Nonconsecutive Executions of a Business Process
Sneed et al. Measuring legacy database structures
CN115809795A (zh) 一种基于数字化的生产班组的承载能力评估方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant