测试用例的生成方法、测试方法、装置、设备和介质与流程
未命名
09-11
阅读:91
评论:0

1.本公开涉及人工智能领域或信息安全领域,更具体地,涉及测试用例的生成方法、测试方法、装置、设备、介质和程序产品。
背景技术:
2.模糊测试是一种通过向被测程序发送输入(即测试用例),尝试触发软件异常的软件测试技术。模糊测试已经成为漏洞挖掘领域的主流技术,基于变异的模糊测试往往缺乏对输入结构的了解,采用忽略用例结构的盲目、随机的变异策略,这样的变异方式容易破坏用例结构,导致变异后的新用例无效,从而浪费大量资源生成和执行无效用例,严重降低测试效率。
技术实现要素:
3.鉴于上述问题,本公开提供了测试用例的生成方法、测试方法、装置、设备、介质和程序产品。
4.本公开实施例的一个方面,提供了一种测试用例的生成方法,包括:确定原始测试用例;将所述原始测试用例输入策略模型,获得所述策略模型输出的变异结构策略,其中,所述变异结构策略包括将所述原始测试用例划分为n个结构单元的策略,n为大于或等于2的整数;以单个结构单元为变异维度,基于所述n个结构单元对所述原始测试用例进行变异处理,生成变异测试用例。
5.根据本公开的实施例,所述策略模型通过神经网络模型构建得到,在将所述原始测试用例输入策略模型之前,还包括预先训练所述神经网络模型,具体包括:确定待变异样本用例;将所述待变异样本用例输入待训练的所述神经网络模型,获得待定变异结构策略,所述待定变异结构策略包括将所述待变异样本用例划分为n个待定结构单元的策略;以单个结构单元为变异维度,基于所述n个待定结构单元对所述待变异样本用例进行变异处理,生成变异样本用例;利用所述变异样本用例对目标程序进行测试,获得测试结果;基于所述测试结果更新所述神经网络模型的模型参数,直至生成符合特定条件的最优变异结构策略。
6.根据本公开的实施例,基于强化学习算法训练所述神经网络模型,所述待变异样本用例作为状态,所述待定变异结构策略作为动作,所述测试结果包括所述目标程序的程序路径覆盖信息和程序异常信息;所述基于所述测试结果更新所述神经网络模型的模型参数包括:基于所述目标程序的程序路径覆盖信息和程序异常信息,确定所述待定变异结构策略的奖励值;将所述奖励值和策略参数输入至目标函数,得到目标函数值,其中,所述目标函数预先基于所述强化学习算法得到;若所述目标函数值不符合结束条件,根据所述目标函数更新所述神经网络模型的模型参数。
7.根据本公开的实施例,所述程序路径覆盖信息包括新路径的数量、稀有路径的数量和已发现路径的增量碰撞次数,所述程序异常信息包括发现异常的数量;所述确定所述
待定变异结构策略的奖励值包括:基于所述新路径的数量、稀有路径的数量和已发现路径的增量碰撞次数中至少之一,以及所述发现异常的数量,确定所述待定变异结构策略的奖励值。
8.根据本公开的实施例,所述确定所述待定变异结构策略的奖励值包括:基于所述新路径的数量及其第一权重,所述稀有路径的数量及其第二权重,所述已发现路径的增量碰撞次数及其第三权重,和所述发现异常的数量及其第四权重,确定所述待定变异结构策略的奖励值;其中,所述第一权重、所述第二权重、所述第三权重和所述第四权重的和为1。
9.根据本公开的实施例,所述变异结构策略包括n个结构单元策略,所述原始测试用例包括原始测试文件,所述获得所述策略模型输出的变异结构策略包括:利用所述策略模型解析得到组成所述原始测试文件的m个字节,m为大于或等于n的整数;获得所述策略模型输出的所述n个结构单元策略,其中,所述n个结构单元策略用于一一对应地划分出所述n个结构单元,其中每个结构单元策略包括至少一个字节的总长度信息及其中每个字节的字节位置信息。
10.根据本公开的实施例,所述利用所述策略模型处理所述m个字节获得所述n个结构单元策略包括:基于所述原始测试文件的文件结构信息,确定所述m个字节中每个字节与其余至少一个字节之间的第一结构关系,所述文件结构信息包括存储所述原始测试文件时的组织形式;基于所述每个字节与其余至少一个字节之间的第一结构关系,获得所述n个结构单元策略。
11.根据本公开的实施例,所述利用所述策略模型处理所述m个字节获得所述n个结构单元策略还包括:获取所述原始测试文件中的文件内容;基于所述文件内容的内容结构信息,确定所述m个字节中每个字节与其余至少一个字节之间的第二结构关系,所述内容结构信息包括所述文件内容中基于语义表征的结构信息;基于所述每个字节与其余至少一个字节之间的第二结构关系,获得所述n个结构单元策略。
12.根据本公开的实施例,所述利用所述策略模型处理所述m个字节获得所述n个结构单元策略还包括:确定所述原始测试文件中的s个数据类型,s为大于或等于1的整数;确定所述m个字节中每个字节隶属的数据类型,其中,所述每个字节隶属的数据类型属于所述s个数据类型中任一个;根据所述每个字节隶属的数据类型及与其余至少一个字节之间的第一结构关系,获得所述n个结构单元策略。
13.本公开实施例的另一方面提供了一种测试方法,包括:获取至少一个变异测试用例,其中每个变异测试用例根据如上任一项所述的方法获得;基于所述至少一个变异测试用例对目标程序进行测试。
14.本公开实施例的另一方面提供了一种测试用例的生成装置,包括:确定模块,用于确定原始测试用例;策略模块,用于将所述原始测试用例输入策略模型,获得所述策略模型输出的变异结构策略,其中,所述变异结构策略包括将所述原始测试用例划分为n个结构单元的策略,n为大于或等于2的整数;变异器模块,用于以单个结构单元为变异维度,基于所述n个结构单元对所述原始测试用例进行变异处理,生成变异测试用例。
15.本公开实施例的另一方面提供了一种测试装置,包括:变异用例模块,用于获取至少一个变异测试用例,其中每个变异测试用例根据如上任一项所述的方法获得;程序测试模块,用于基于所述至少一个变异测试用例对目标程序进行测试。
16.本公开实施例的另一方面提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行如上所述的方法。
17.本公开实施例的另一方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如上所述的方法。
18.本公开实施例的另一方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
19.上述一个或多个实施例具有如下有益效果:考虑原始测试用例的结构性,从原始测试用例中不同位置的变异关联性出发,通过策略模型输出变异结构策略,把原始测试用例划分为n个结构单元,从而执行基于用例结构的变异结构策略,生成高质量测试用例,解决现有的用例生成方法忽略用例结构,测试盲目低效的问题,提高测试效率。
附图说明
20.通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
21.图1示意性示出了根据本公开实施例的测试用例的生成方法或测试方法的应用场景图;
22.图2示意性示出了根据本公开实施例的测试用例的生成方法的流程图;
23.图3示意性示出了根据本公开实施例的获得变异结构策略的流程图;
24.图4示意性示出了根据本公开实施例的确定结构单元策略的流程图;
25.图5示意性示出了根据本公开另一实施例的确定结构单元策略的流程图;
26.图6示意性示出了根据本公开另一实施例的确定结构单元策略的流程图;
27.图7示意性示出了根据本公开实施例的训练神经网络模型的流程图;
28.图8示意性示出了根据本公开实施例的更新模型参数的流程图;
29.图9示意性示出了根据本公开实施例的测试方法的流程图;
30.图10示意性示出了根据本公开另一实施例的用例生成和程序测试的流程图;
31.图11示意性示出了根据本公开实施例的测试用例的生成装置的结构框图;
32.图12示意性示出了根据本公开实施例的测试装置的结构框图;以及
33.图13示意性示出了根据本公开实施例的适于实现测试用例的生成方法或测试方法的电子设备的方框图。
具体实施方式
34.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
35.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在
或添加一个或多个其他特征、步骤、操作或部件。
36.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
37.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
38.相关技术中,用例生成方法通常随机选择用例中的内容,并采用随机改变选定内容的方式生成测试用例,由于忽略了用例结构性,导致存在破坏用例完整性、生成用例不可用的情况。例如,对于文件类的原始测试用例,可能会使得变异后的测试用例不是一个完整、可用的文件,甚至可能无法用于测试。对于文本或编程语言类型的原始测试用例内容,可能会使得变异后的测试用例破坏了原有内容的语义表达、数值内容或框架结构等。
39.本公开的一些实施例提供了一种测试用例的生成方法,考虑原始测试用例的结构性,从原始测试用例中不同位置的变异关联性出发,通过策略模型输出变异结构策略,从而把原始测试用例划分为n个结构单元,从而执行基于用例结构的变异结构策略,生成高质量测试用例,解决现有的用例生成方法忽略用例结构,测试盲目低效的问题,提高测试效率。
40.本公开的一些实施例还提供了一种测试方法,利用测试用例的生成方法得到至少一个变异测试用例,并对目标程序进行测试,有利于提高测试效率,具有较好的测试效果。
41.图1示意性示出了根据本公开实施例的测试用例的生成方法或测试方法的应用场景图。需要注意的是,图1所示仅为可以应用本公开实施例的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
42.如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
43.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
44.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
45.服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
46.服务器105可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或分布式系统,还可以是提供云服务、云计算、网络服务、中间件服务等基础云计算服务的云服务器。
47.本公开涉及的测试的目标程序包括c/s架构、b/s架构、微服务架构、分布式架构等
部署的程序,以c/s架构举例,在诸如客户端应用程序、web应用程序等应用程序(英文缩写为app)中,客户端(即前端)与服务器端(即后端)可以通过网络报文进行数据通信,例如,即在app客户端中,将服务器端需要从客户端获取的参数进行组装,调用网络请求方法向服务器端发送。测试过程可以包括前后端交互进行业务处理的过程。
48.示例性地,本公开实施例所提供的测试用例的生成方法或测试方法可以由终端设备101、102、103或服务器105执行。相应地,本公开实施例所提供的测试用例的生成方法或测试方法装置一般可以设置于终端设备101、102、103或服务器105中。本公开实施例所提供的测试用例的生成方法或测试方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的测试用例的生成方法或测试方法装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
49.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
50.以下将基于图1描述的场景,通过图2~图10对本公开实施例的测试用例的生成方法和测试方法进行详细描述。
51.图2示意性示出了根据本公开实施例的测试用例的生成方法的流程图。如图2所示,该实施例包括:
52.在操作s210,确定原始测试用例。
53.示例性地,将生成之前提供的测试用例称为原始测试用例,为了区分,将对原始测试用例变异得到成为变异测试用例。将训练阶段的模型输入成为待变异样本用例,将对训练过程中对待变异样本用例变异得到变异样本用例。
54.在操作s220,将原始测试用例输入策略模型,获得策略模型输出的变异结构策略,其中,变异结构策略包括将原始测试用例划分为n个结构单元的策略,n为大于或等于2的整数。
55.例如,策略模型可以基于机器学习算法构建得到,其可以解析原始测试用例并根据预先训练确定的映射关系,得到变异结构策略。映射关系包括不同类别的原始测试用例与最优变异结构策略的映射。
56.在操作s230,以单个结构单元为变异维度,基于n个结构单元对原始测试用例进行变异处理,生成变异测试用例。
57.示例性地,相比于现有技术对原始测试用例的全部内容随机选定并进行变异,以单个结构单元为变异维度是指,在单个结构单元范围内对应的用例内容中实现变异操作。其作用在于,保留原始测试用例的整体架构,不会影响其他结构单元,较大程度保留单个结构单元范围的原有性质和特点,且能与原始内容形成差异。
58.变异是指修改原始测试用例中的部分或全部内容,生成新的测试用例,即变异测试用例。变异处理包括一个或多个改变原有内容的操作。结构单元包括策略模型输出的,对原始测试用例进行单独变异处理的较优粒度范围内的用例内容。
59.例如,变异处理包括对各结构单元依次进行随机修改(如随机增减)、删除、插入、特殊值替换等操作,获得新的用例。
60.根据本公开的实施例,能够考虑原始测试用例的结构性,从原始测试用例中不同
位置的变异关联性出发,通过策略模型输出变异结构策略,从而把原始测试用例划分为n个结构单元,从而执行基于用例结构的变异结构策略,生成高质量测试用例,解决现有的用例生成方法忽略用例结构,测试盲目低效的问题,提高测试效率。
61.可以理解,上述不同位置的变异关联性可以包括不同字节之间、文章内不同结构(如段落、章节)之间、文件结构之间(如文件头、文件体)、不同数值之间等变异关联性。
62.图3示意性示出了根据本公开实施例的获得变异结构策略的流程图。原始测试用例包括原始测试文件,如图3所示,该实施例是操作s220的其中一个实施例,包括:
63.在操作s310,解析得到组成所述原始测试文件的m个字节,m为大于或等于n的整数。
64.可以具有不同类型的原始测试文件,例如txt文件、word文档、xml文件、图片、音频或视频等文件。在计算机中文件以二进制的形式存储,字节指的是byte,1024byte为1kb。m个字节可以是原始测试文件在计算机中的全部字节,也可以是部分字节,视原始测试文件的类型,或者目标程序的待测内容确定。
65.在操作s320,利用所述策略模型处理所述m个字节获得所述n个结构单元策略,其中,所述n个结构单元策略用于一一对应地划分出所述n个结构单元,其中每个结构单元策略包括至少一个字节的总长度信息及其中每个字节的字节位置信息。
66.总长度信息是指每个结构单元范围内涵盖的字节数量,字节位置信息是指每个字节在m个字节中的坐标。通过每个结构单元策略即可定位到原始测试用例中对应字节,划分出一个结构单元。
67.根据本公开的实施例,从底层字节的维度确定变异结构策略,进而能够基于结构单元实现细粒度的变异处理,避免破坏原始测试用例的结构,提高变异测试用例的可用性。
68.图4示意性示出了根据本公开实施例的确定结构单元策略的流程图。如图4所示,该实施例是操作s320的其中一个实施例,包括:
69.在操作s410,基于原始测试文件的文件结构信息,确定m个字节中每个字节与其余至少一个字节之间的第一结构关系,文件结构信息包括存储原始测试文件时的组织形式。
70.文件结构可以包括文件头、数据区、文件尾、文件系统信息、索引信息和其他元数据等,共同称之为组织形式。例如,png图片格式的文件头标识为(8bytes)89504e 470d 0a 1a 0a,根据这个标识可以确定是png图片格式。而tiff格式的文件头标识是(2bytes)4d 4d或4949,根据这个标识可以确定是tiff格式。相应地,其他结构具有对应的字节。
71.第一结构关系包括每个字节与其余至少一个字节是否隶属于同一文件结构的关系,例如是否属于文件头。
72.在操作s420,基于所述每个字节与其余至少一个字节之间的第一结构关系,获得所述n个结构单元策略。
73.例如可以按照文件头、数据区、文件尾、文件系统信息、索引信息和其他元数据等各自确定结构单元策略,进而划分出各个独立的结构单元。又例如可以继续将同一文件结构内的字节进一步划分出多个结构单元策略。
74.根据本公开的实施例,按照文件结构信息确定字节之间的第一结构关系,能够保留文件原有的整体结构,防止后续针对字节为单位进行变异处理时破坏文件的完整性和可用性。
75.图5示意性示出了根据本公开另一实施例的确定结构单元策略的流程图。如图5所示,该实施例是操作s320的其中一个实施例,包括:
76.在操作s510,获取原始测试文件中的文件内容。
77.示例性地,文件内容包括文件中实际存储的数据。例如文本的文件内容包括字符序列,如文字、表格、代码、配置信息等。图像的文件内容包括像素值信息,如颜色、亮度等。音频的文件内容包括音频信号,如声音波形、频率等。可以理解,本公开并不限于上述举例,还可以包括其他文件类型的文件内容。
78.在操作s520,基于文件内容的内容结构信息,确定m个字节中每个字节与其余至少一个字节之间的第二结构关系,内容结构信息包括文件内容中基于语义表征的结构信息。
79.语义是指通过文件内容包括的意义、含义或情感信息等。可以使用自然语言处理技术提取语义信息,确定文件内容中表达的结构。第二结构关系包括文本中各字节按照句子、段落或章节确定的主题结构关系,也可以包括图像中各字节是否隶属于同一对象,还可以包括音频中各字节是否隶属于同一情感类别、同一主题或同一波形等。
80.在操作s530,基于每个字节与其余至少一个字节之间的第二结构关系,获得所述n个结构单元策略。
81.根据本公开的实施例,从语义的维度确定字节之间的第二结构关系,能够保留文件内容原有的语义表达结构,且形成新的测试用例,提高变异测试用例的有效性。
82.图6示意性示出了根据本公开另一实施例的确定结构单元策略的流程图。如图6所示,该实施例是操作s320的其中一个实施例,包括:
83.在操作s610,确定原始测试文件中的s个数据类型,s为大于或等于1的整数。
84.数据类型可以包括整数类型(int)、浮点数类型(float)、双精度浮点数类型(double)、长整数类型(long)、无符号整数类型(unsigned)、字符类型(char)和布尔类型(bool)等。
85.在操作s620,确定m个字节中每个字节隶属的数据类型,其中,每个字节隶属的数据类型属于s个数据类型中任一个。
86.在操作s630,根据所述每个字节隶属的数据类型及与其余至少一个字节之间的第一结构关系,获得所述n个结构单元策略。例如,确定一个整数类型数值,该数值对应的字节皆属于同一个结构单元策略,后续将该数值划分为一个结构单元。
87.例如若确定多个字节之间具有第一结构关系,如皆属于文件头,可以将文件头中相同数据类型下的所有字节划分为一个结构单元。进一步,若同一文件结构内,存在多个数值具有相同的数据类型,则可以将各个数值分别作为单独的结构单元划分出。可以通过机器学习得到结构单元的划分粒度,不同用例之间的结构单元划分粒度可以是不同的。
88.在另一些实施例中,若确定多个字节之间具有第二结构关系,如皆属于同一主题,可以将该主题中相同数据类型下的所有字节划分为一个结构单元。
89.根据本公开的实施例,可以在变异后保留原有的数据类型及第一结构关系进行测试,确保测试的准确性和可靠性,避免因数据类型转换等问题导致的测试错误和漏洞。
90.尤其说明,结合参照图3~图6,各个实施例可以单独实施,也可以结合实施,例如多阶段的确定结构单元策略。举例而言,先确定文件结构信息,根据第一结构关系确定第一层次的结构单元策略。再确定文件内容,在第一层次的每个结构单元策略范围内,继续根据
第二结构关系确定更小粒度的第二层次的结构单元策略。接着,再确定数据类型,在第一层次的每个结构单元策略范围内或在第二层次的每个结构单元策略范围内,根据每个字节隶属的数据类型及与其他字节之间的第一结构关系或第二结构关系,确定更小粒度的第三层次的结构单元策略。通过层层递进的操作能够提高确定结构单元策略的准确性。
91.下面通过图7和图8,进一步阐述预先训练策略模型的内容,以实现基于文件结构信息、内容结构信息和数据类型等划分结构单元。
92.图7示意性示出了根据本公开实施例的训练神经网络模型的流程图。策略模型通过神经网络模型构建得到,在将原始测试用例输入策略模型之前,还包括预先训练神经网络模型,如图7所示,该实施例预先训练神经网络模型包括:
93.在操作s710,确定待变异样本用例。
94.该步骤根据待测对象(即目标程序),收集待变异测试用例构成模糊测试初始用例集。具体可通过网络爬取、使用现有公开用例集等方式收集用例。
95.在操作s720,将待变异样本用例输入待训练的神经网络模型,获得待定变异结构策略,待定变异结构策略包括将待变异样本用例划分为n个待定结构单元的策略。
96.例如,神经网络模型包含输入层、lstm(长短期记忆神经网络)层和输出层。其中输出层采用softmax函数作为激活函数。
97.训练阶段不断迭代以更新模型直至找到符合结束条件的最优策略,为便于区分,在训练停止之前的每次迭代中称之为待定变异结构策略、待定结构单元。
98.在操作s730,以单个结构单元为变异维度,基于n个待定结构单元对待变异样本用例进行变异处理,生成变异样本用例。
99.在操作s740,利用变异样本用例对目标程序进行测试,获得测试结果。
100.生成新用例后,将新用例作为目标程序的输入,监控程序执行过程中的情况,获得测试结果。
101.在操作s750,基于测试结果更新神经网络模型的模型参数,直至生成符合特定条件的最优变异结构策略。
102.特定条件可以包括下述的结束条件,指满足迭代次数或者目标函数值符合要求,则得到的待定变异结构策略称之为最优变异结构策略。最优变异结构策略中包含划分出的最终结构单元。可以理解,n是一个变量,不同用例所划分的结构单元数量可以相同或不同。
103.根据本公开的实施例,考虑用例变异的结构性,通过训练神经网络模型学习用例变异的最优结构信息(即最优变异结构策略),进而在测试时执行基于用例结构的变异结构策略,生成高质量测试用例,解决现有基于变异的模糊测试忽略用例结构,变异方法盲目低效的问题。
104.图8示意性示出了根据本公开实施例的更新模型参数的流程图。
105.基于强化学习算法训练神经网络模型,待变异样本用例作为状态,待定变异结构策略作为动作,测试结果包括目标程序的程序路径覆盖信息和程序异常信息。
106.强化学习是一种对目标导向的学习与决策问题进行理解和自动化处理的计算方法,强调智能体通过与环境的直接互动来学习,而不需要可效仿的监督信号或对周围环境的完全建模,主要可以用于解决一些传统算法难以处理的优化问题。在强化学习算法中有两个可以交互的对象:智能体和环境。智能体是强化学习算法的本体,作为策略的学习者和
决策者,智能体可以感知环境的状态,并根据反馈的收益学习执行动作获得最大化长期总收益。环境会接收智能体执行的一系列动作,对这一系列动作进行评价并转换为一种可量化的信号(称之为奖励)反馈给智能体。
107.进一步地,该实施例将用例结构单元确定问题建模为一个强化学习问题,最终的目标是通过与测试过程不断交互,学习出一种最优变异结构策略,能够针对不同用例自适应划分结构单元,使得基于所划分的结构单元执行变异操作后,具有最大累积奖励。
108.在一个强化学习问题中,需要定义如下关键要素:
109.状态:其中每个用例对应一个状态,即状态集合s可表示为:s={s1,...,sn}《=》{input1,...,inputn},其中n为用例数量,n≥1。
110.动作:每个结构单元长度lf是可变的,且每个用例划分结构单元的数量可变,因此先生成结构单元长度值集合lf={l
f1
,...,l
fm
},其中m(m≥1)为用例划分的结构单元的数量。然后根据集合中的长度值,分别在用例中选择相应数量的字节构成结构单元集合。例如结构单元长度lf=4,则在用例中选取4个字节构成一个结构单元。结构单元fd通过字节在用例中的位置偏移(即字节位置信息)来表示,即fd={pos1,...,posk},其中k(k≥1)为结构单元长度(即总长度信息)。具体每个用例结构单元长度值集合以及每个结构单元对应的字节在用例中的位置偏移是通过强化学习模型根据当前用例来确定的。
111.因此,在此场景中,结构单元长度值集合lf和每个结构单元对应的字节位置偏移fd构成的集合fd,共同构成一个动作a,可以表示为a=(lf,fd),其中fd={f
dl
,...,f
dm
}。
112.奖励:基于强化学习模型获得结构单元后,基于结构单元进行变异,其变异效果的数值评估作为奖励r。具体地,变异效果评估是通过变异后生成的新用例获取的测试执行收益来计算。
113.在一些实施例中,基于上述要素定义,构建强化学习算法模型。选择近端策略优化算法(仅为示例),其通过神经网络模型来近似策略函数π
θ
,通过优化策略参数θ来更新策略,以学习到最优变异结构策略。其中神经网络模型的输入为状态s,输出为动作a的概率分布。具体地,由于每个用例可以看作由字节序列构成,对当前待变异的用例字节序列进行向量化处理,如进行word2vec编码,得到状态向量作为强化学习模型的输入。输出为当前用例可选动作的概率分布,即指示如何划分结构单元的变异结构策略。
114.如图8所示,该实施例是操作s750的其中一个实施例,包括:
115.在操作s810,基于目标程序的程序路径覆盖信息和程序异常信息,确定待定变异结构策略的奖励值。
116.在一些实施例中,程序路径覆盖信息包括新路径的数量、稀有路径的数量和已发现路径的增量碰撞次数,程序异常信息包括发现异常的数量。
117.确定待定变异结构策略的奖励值包括:基于新路径的数量、稀有路径的数量和已发现路径的增量碰撞次数中至少之一,以及发现异常的数量,确定待定变异结构策略的奖励值。
118.在一些实施例中,确定待定变异结构策略的奖励值包括:基于新路径的数量及其第一权重,稀有路径的数量及其第二权重,已发现路径的增量碰撞次数及其第三权重,和发现异常的数量及其第四权重,确定待定变异结构策略的奖励值。其中,第一权重、第二权重、第三权重和第四权重的和为1。
119.举例而言,生成新用例(即变异样本用例)后,将新用例作为目标程序的输入执行程序,监控程序执行过程中发现的有价值的程序路径覆盖和程序异常情况,进而计算奖励r,反馈给策略模型。
120.具体地,有价值的程序路径覆盖包括三种情况,1)发现了从未发现的新路径,新路径数量表示为path
new
。2)发现了只有极少数用例(指占总用例数量的比例小于或等于特定阈值,如0.1)可以发现的稀有路径,稀有路径数量表示为path
rare
。3)对已发现路径的增量碰撞次数,增量碰撞次数是指新用例相比于上次测试的旧用例能够增加的已知路径的碰撞次数,被碰撞到且增加碰撞次数的路径数量表示为path
hit
,若未达到增加碰撞次数的效果,该指标值为0。发现程序异常的数量表示为p
crash
,奖励r的计算公式如公式(1)所示。
121.r=β1*path
new
+β2*path
rare
+β3*path
hit
+α*p
crash
ꢀꢀꢀ
(1)
122.其中,β1、β2、β3及α分别为第一权重、第二权重、第三权重和第四权重,α+β1+β2+β3=1(例如α>β1>β2>β3,仅为示例),可以根据专家经验设定,如β1、β2、β3及α分别为0.2、0.2、0.2和0.4。
123.在操作s820,将奖励值和策略参数输入至目标函数,得到目标函数值,其中,目标函数值预先基于强化学习算法得到。
124.针对策略模型优化原理,根据近端策略优化算法,其优化目标是通过优化策略参数θ学习一种最优策略π
θ
,使得累积奖励的期望l
clip+s
(θ)最大,具体目标函数如公式(2)所示:
[0125][0126][0127][0128]
其中,表示求期望值。r
t
表示t时刻的奖励,a
t
表示t时刻的动作,s
t
表示t时刻的状态,r
t
(θ)表示t时刻的重要性采样,计算公式如公式(2)所示,指新旧策略的比例,π
θ
(a
t
|s
t
)表示新策略下在状态s
t
选择动作a
t
的概率,表示旧策略下在状态s
t
选择动作a
t
的概率。min(r
t
(θ),clip(r
t
(θ),1-ε,1+ε))表示裁剪项,避免新旧策略差异过大,c*s[π
θ
]为熵奖励项,表示在一定程度上鼓励探索一些可能获得更大奖励的新策略,解决利用-探索的困境,ε、c表示超参数,如可设置ε=0.5,c=0.3。θ的更新方式如公式(4)所示。t≥t≥1。old代表更新之前,new代表更新之后。
[0129]
在操作s830,若所述目标函数值不符合结束条件,根据目标函数更新神经网络模型的模型参数。结束条件可以包括特定阈值,在目标函数值小于该特定阈值时则符合结束条件。例如可以通过反向传播算法计算梯度值,通过梯度上升更新模型参数。
[0130]
根据本公开的实施例,能够结合强化学习和神经网络模型,从目标程序的实际测试结果中不断学习,直至得到最优变异结构策略,有利于后续变异测试用例生成准确性和生成效率。
[0131]
可以理解,可以在输入神经网络模型之前,解析待变异用例,得到字节信息,训练
其将所述m个字节划分为所述n个结构单元的能力,即状态与动作之间的映射关系,并结合参照图3~图6。进一步地,可以解析文件结构信息、内容结构信息和数据类型等信息参与到训练过程中,使得神经网络模型学习特定划分粒度的变异结构策略。尤其说明,在训练阶段,输入是状态,输出是动作,基于强化学习算法使得神经网络模型自动学习最优变异结构策略,例如针对不同类型的用例文件输出不同的策略,依据神经网络模型实际输出的策略结果和测试结果为准,而非限定于文件结构信息、内容结构信息和数据类型范围内确定结构单元的划分粒度。
[0132]
在另一些实施例中,策略模型可以使用除神经网络模型之外的其他模型构建,例如随机森林、支持向量机、贝叶斯分类模型等。
[0133]
图9示意性示出了根据本公开实施例的测试方法的流程图。如图9所示,该实施例的测试方法,包括:
[0134]
在操作s910,获取至少一个变异测试用例,其中每个变异测试用例根据图2~图8描述的任一个实施例的生成方法获得。
[0135]
在操作s920,基于至少一个变异测试用例对目标程序进行测试。
[0136]
根据本公开的实施例,利用测试用例的生成方法得到至少一个变异测试用例,并对目标程序进行测试,有利于提高测试效率,具有较好的测试效果。
[0137]
图10示意性示出了根据本公开另一实施例的用例生成和程序测试的流程图。如图10所示,该实施例包括:
[0138]
在操作s1010,构建初始用例集。
[0139]
根据待测对象,收集初始测试用例构成模糊测试初始用例集。具体可通过网络爬取、使用现有公开用例集等方式收集用例。
[0140]
在操作s1020,从初始用例集选择待变异样本用例。
[0141]
该步骤用于从用例集选择一个用例作为当前待变异用例。选择用例的策略基于用例价值。具体价值计算根据用例历史累积奖励r、执行次数及用例数据大小,累积奖励高、执行次数少、大小较小的用例优先选择,三种因素都无法确定时,则随机选择用例。
[0142]
在操作s1030,输入待训练神经网络模型,确定待定变异结构策略中的n个结构单元策略。根据n个结构单元策略划分出n个待定结构单元。并按照每个待定结构单元为维度进行变异处理。各个待定结构单元之间的变异处理内容相同或不同。
[0143]
在操作s1040,得到变异样本用例。
[0144]
根据步骤s3获取的变异结构单元,执行基于结构单元的变异结构策略。具体地,对于用例i划分的变异结构单元集合于用例i划分的变异结构单元集合遍历集合中的每个结构单元,对各结构单元依次进行随机修改(如随机增减)、删除、插入、特殊值替换等操作,获得新的用例。
[0145]
在操作s1050,用例执行及反馈,参照操作s810。
[0146]
参照图7和图8,结合操作s1030~操作s1050,模型训练过程如下:
[0147]
(1)模型搭建好后,先随机初始化模型策略参数θ0。
[0148]
(2)在步骤s2选择出待变异用例后,将用例i作为状态s输入策略模型,通过模型得到该状态下的动作a。
[0149]
(3)按照动作a对用例i划分结构单元,按照后续步骤s4执行变异过程。
[0150]
(4)根据上述公式(1)将变异后得到的用例作为新用例测试待测程序,根据测试情况计算奖励r。并计算目标函数值以更新模型参数。
[0151]
(5)将每次执行(2)~(4)得到的《s,a,r》作为经验存入经验池,若存入的经验数量达到预设上限值m(m>1),则采样k(k≤m)条经验重新训练模型,更新参数θ,得到新的策略π
θ
,并清空经验池。
[0152]
(6)执行上述步骤(2)~(5),直到达到预设的测试时间阈值τ,τ≥1。
[0153]
在操作s1060,判断奖励r是否大于等于特定值x,若是则执行操作s1070,若否,则舍弃该用例。特定值x可以灵活设定,例如x=0,仅为示例。
[0154]
在操作s1070,获取变异用例集。
[0155]
筛选本次循环的候选测试用例(奖励r大于等于特定值x)保存到变异用例集,进入下一次循环,或完成测试退出用于后续对目标程序进行测试。
[0156]
在操作s1080,对目标程序进行测试,参照图9。
[0157]
根据本公开的实施例,提出了一种基于强化学习的用例变异方法,该方法考虑用例输入不同位置的变异关联性,通过强化学习算法学习用于变异的最优结构信息,从而执行基于用例结构的变异结构策略,解决现有基于变异的模糊测试变异盲目低效的问题,提高测试效率。
[0158]
基于上述测试用例的生成方法,本公开还提供了一种测试用例的生成装置。以下将结合图11对该装置进行详细描述。
[0159]
图11示意性示出了根据本公开实施例的测试用例的生成装置的结构框图。
[0160]
如图11所示,该实施例的测试用例的生成装置1100包括确定模块1110、策略模块1120和变异器模块1130。
[0161]
确定模块1110可以执行操作s210,用于确定原始测试用例。
[0162]
策略模块1120可以执行操作s220,用于将原始测试用例输入策略模型,获得策略模型输出的变异结构策略,其中,变异结构策略包括将原始测试用例划分为n个结构单元的策略,n为大于或等于2的整数。
[0163]
在一些实施例中,策略模块用于获取用例最优变异结构,该模块利用强化学习算法构建策略模型,通过优化策略参数得到划分用例变异结构单元的最优策略。从而可以在每个用例变异之前,先通过策略模型划分结构单元,进而后续执行基于结构单元的变异。
[0164]
优选的,该模块的强化学习算法采用近端策略优化算法(proximal policy optimization)。
[0165]
变异器模块1130可以执行操作s230,用于以单个结构单元为变异维度,基于n个结构单元对原始测试用例进行变异处理,生成变异测试用例。
[0166]
在一些实施例中,变异器模块用于对现有用例进行变异,生成大量高质量的新用例,提升程序测试效果。该模块基于变异结构单元学习模块获取的变异结构单元信息,对各用例执行以结构单元为粒度的变异操作。
[0167]
测试用例的生成装置1100还可以包括执行反馈模块,用于执行用例并反馈测试收益。其将原始用例或变异后生成的新用例作为输入,执行被程序,监控程序执行过程中触发的程序路径和程序异常情况,并据此评估变异效果。
[0168]
测试用例的生成装置1100包括分别用于执行如上图2~图8描述的任意一个实施
例的各个步骤的模块。
[0169]
基于上述测试用例的生成方法,本公开还提供了一种测试用例的生成装置。以下将结合图12对该装置进行详细描述。
[0170]
图12示意性示出了根据本公开实施例的测试装置的结构框图。
[0171]
如图12所示,该实施例的测试装置1200包括变异用例模块1210和程序测试模块1220。
[0172]
变异用例模块1210可以执行操作s910,用于获取至少一个变异测试用例,其中每个变异测试用例根据如上图2~图8描述的任意一个实施例的方法获得。
[0173]
程序测试模块1220可以执行操作s920,用于基于至少一个变异测试用例对目标程序进行测试。
[0174]
需要说明的是,装置部分实施例中各模块/单元/子单元等的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再赘述。
[0175]
根据本公开的实施例,测试用例的生成装置1100或测试装置1200中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。
[0176]
根据本公开的实施例,测试用例的生成装置1100或测试装置1200中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,测试用例的生成装置1100或测试装置1200中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0177]
图13示意性示出了根据本公开实施例的适于实现测试用例的生成方法或测试方法的电子设备的方框图。
[0178]
如图13所示,根据本公开实施例的电子设备1300包括处理器1301,其可以根据存储在只读存储器(rom)1302中的程序或者从存储部分1308加载到随机访问存储器(ram)1303中的程序而执行各种适当的动作和处理。处理器1301例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))等等。处理器1301还可以包括用于缓存用途的板载存储器。处理器1301可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0179]
在ram 1303中,存储有电子设备1300操作所需的各种程序和数据。处理器1301、rom 1302以及ram 1303通过总线1304彼此相连。处理器1301通过执行rom 1302和/或ram 1303中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除rom 1302和ram 1303以外的一个或多个存储器中。处理器1301也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0180]
根据本公开的实施例,电子设备1300还可以包括输入/输出(i/o)接口1305,输入/输出(i/o)接口1305也连接至总线1304。电子设备1300还可以包括连接至i/o接口1305的以
下部件中的一项或多项:包括键盘、鼠标等的输入部分1306。包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1307。包括硬盘等的存储部分1308。以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至i/o接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
[0181]
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的。也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0182]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 1302和/或ram 1303和/或rom 1302和ram 1303以外的一个或多个存储器。
[0183]
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的方法。
[0184]
在该计算机程序被处理器1301执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0185]
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1309被下载和安装,和/或从可拆卸介质1311被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0186]
在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被处理器1301执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0187]
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c++,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备
(例如利用因特网服务提供商来通过因特网连接)。
[0188]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0189]
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
[0190]
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
技术特征:
1.一种测试用例的生成方法,包括:确定原始测试用例;将所述原始测试用例输入策略模型,获得所述策略模型输出的变异结构策略,其中,所述变异结构策略包括将所述原始测试用例划分为n个结构单元的策略,n为大于或等于2的整数;以单个结构单元为变异维度,基于所述n个结构单元对所述原始测试用例进行变异处理,生成变异测试用例。2.根据权利要求1所述的方法,其中,所述策略模型通过神经网络模型构建得到,在将所述原始测试用例输入策略模型之前,还包括预先训练所述神经网络模型,具体包括:确定待变异样本用例;将所述待变异样本用例输入待训练的所述神经网络模型,获得待定变异结构策略,所述待定变异结构策略包括将所述待变异样本用例划分为n个待定结构单元的策略;以单个结构单元为变异维度,基于所述n个待定结构单元对所述待变异样本用例进行变异处理,生成变异样本用例;利用所述变异样本用例对目标程序进行测试,获得测试结果;基于所述测试结果更新所述神经网络模型的模型参数,直至生成符合特定条件的最优变异结构策略。3.根据权利要求2所述的方法,其中,基于强化学习算法训练所述神经网络模型,所述待变异样本用例作为状态,所述待定变异结构策略作为动作,所述测试结果包括所述目标程序的程序路径覆盖信息和程序异常信息;所述基于所述测试结果更新所述神经网络模型的模型参数包括:基于所述目标程序的程序路径覆盖信息和程序异常信息,确定所述待定变异结构策略的奖励值;将所述奖励值和策略参数输入至目标函数,得到目标函数值,其中,所述目标函数预先基于所述强化学习算法得到;若所述目标函数值不符合结束条件,根据所述目标函数更新所述神经网络模型的模型参数。4.根据权利要求3所述的方法,其中,所述程序路径覆盖信息包括新路径的数量、稀有路径的数量和已发现路径的增量碰撞次数,所述程序异常信息包括发现异常的数量;所述确定所述待定变异结构策略的奖励值包括:基于所述新路径的数量、稀有路径的数量和已发现路径的增量碰撞次数中至少之一,以及所述发现异常的数量,确定所述待定变异结构策略的奖励值。5.根据权利要求4所述的方法,其中,所述确定所述待定变异结构策略的奖励值包括:基于所述新路径的数量及其第一权重,所述稀有路径的数量及其第二权重,所述已发现路径的增量碰撞次数及其第三权重,和所述发现异常的数量及其第四权重,确定所述待定变异结构策略的奖励值;其中,所述第一权重、所述第二权重、所述第三权重和所述第四权重的和为1。
6.根据权利要求1所述的方法,其中,所述变异结构策略包括n个结构单元策略,所述原始测试用例包括原始测试文件,所述获得所述策略模型输出的变异结构策略包括:解析得到组成所述原始测试文件的m个字节,m为大于或等于n的整数;利用所述策略模型处理所述m个字节获得所述n个结构单元策略,其中,所述n个结构单元策略用于一一对应地划分出所述n个结构单元,其中每个结构单元策略包括至少一个字节的总长度信息及其中每个字节的字节位置信息。7.根据权利要求6所述的方法,其中,所述利用所述策略模型处理所述m个字节获得所述n个结构单元策略包括:基于所述原始测试文件的文件结构信息,确定所述m个字节中每个字节与其余至少一个字节之间的第一结构关系,所述文件结构信息包括存储所述原始测试文件时的组织形式;基于所述每个字节与其余至少一个字节之间的第一结构关系,获得所述n个结构单元策略。8.根据权利要求6或7所述的方法,其中,所述利用所述策略模型处理所述m个字节获得所述n个结构单元策略还包括:获取所述原始测试文件中的文件内容;基于所述文件内容的内容结构信息,确定所述m个字节中每个字节与其余至少一个字节之间的第二结构关系,所述内容结构信息包括所述文件内容中基于语义表征的结构信息;基于所述每个字节与其余至少一个字节之间的第二结构关系,获得所述n个结构单元策略。9.根据权利要求7所述的方法,其中,所述利用所述策略模型处理所述m个字节获得所述n个结构单元策略还包括:确定所述原始测试文件中的s个数据类型,s为大于或等于1的整数;确定所述m个字节中每个字节隶属的数据类型,其中,所述每个字节隶属的数据类型属于所述s个数据类型中任一个;根据所述每个字节隶属的数据类型及与其余至少一个字节之间的第一结构关系,获得所述n个结构单元策略。10.一种测试方法,包括:获取至少一个变异测试用例,其中每个变异测试用例根据权利要求1~9中任一项所述的方法获得;基于所述至少一个变异测试用例对目标程序进行测试。11.一种测试用例的生成装置,包括:确定模块,用于确定原始测试用例;策略模块,用于将所述原始测试用例输入策略模型,获得所述策略模型输出的变异结构策略,其中,所述变异结构策略包括将所述原始测试用例划分为n个结构单元的策略,n为大于或等于2的整数;变异器模块,用于以单个结构单元为变异维度,基于所述n个结构单元对所述原始测试用例进行变异处理,生成变异测试用例。
12.一种测试装置,包括:变异用例模块,用于获取至少一个变异测试用例,其中每个变异测试用例根据权利要求1~9中任一项所述的方法获得;程序测试模块,用于基于所述至少一个变异测试用例对目标程序进行测试。13.一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~10中任一项所述的方法。14.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~10中任一项所述的方法。15.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~10中任一项所述的方法。
技术总结
本公开提供了一种测试用例的生成方法,涉及人工智能领域或信息安全领域。该方法包括:确定原始测试用例;将所述原始测试用例输入策略模型,获得所述策略模型输出的变异结构策略,其中,所述变异结构策略包括将所述原始测试用例划分为N个结构单元的策略,N为大于或等于2的整数;以单个结构单元为变异维度,基于所述N个结构单元对所述原始测试用例进行变异处理,生成变异测试用例。能够执行基于用例结构的变异结构策略,生成高质量测试用例,解决现有的用例生成方法忽略用例结构,测试盲目低效的问题,提高测试效率。提高测试效率。提高测试效率。
技术研发人员:王雪霏 许啸 旷亚和 程元鸿
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2023.06.20
技术公布日:2023/9/9
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/