一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于强化学习的测试数据生成方法及装置与流程

2022-09-01 00:21:36 来源:中国专利 TAG:


1.本公开涉及人工智能技术领域,具体涉及软件测试技术领域,更具体地涉及一种基于强化学习的测试数据生成方法、装置、设备、存储介质和程序产品。


背景技术:

2.在开发人员编码过程中会自己构造一些数据进行简单的通过性验证,但是这种测试数据单一简单,带有较大的主观意识,即开发人员会下意识地将测试数据往预设的方向进行构造。因此需要测试人员,客观地构造数据对开发人员编写的程序进行验证,但是由于并非代码开发者,程序代码的内容对于测试来说都是一个黑盒子,测试人员只能让开发人员进行分析,这导致了测试人员进行验证的过程中,只能覆盖大部分比较常见、普遍的分支,对于一些隐蔽分支,或者一些由于开发人员的错误导致的不可预知分支无法正常覆盖测试。而且现如今大部分系统都为分布式系统,一个完整的交易流程可能涉及多个开发基地,多个开发部门之间的协作,想要了解数据在上下游如何流动比较困难,不同测试人员之间掌握的测试数据也彼此隔离。
3.相关技术中的测试数据生成方法需要使用人员将测试数据的格式进行预设,即使使用深度学习的方法对数据进行生成,数据的生成没有相对应的规则,生成的数据命中预期的概率低。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.鉴于上述问题,本公开提供了提高测试覆盖率的基于强化学习的测试数据生成方法、装置、设备、介质和程序产品。
6.根据本公开的第一个方面,提供了一种基于强化学习的测试数据生成方法,包括:
7.根据预设数据规则生成输入数据,所述预设数据规则为银行金融系统数据规则;
8.将所述输入数据输入预设强化学习模型进行训练直至测试覆盖率达到预设阈值;
9.确定测试覆盖率达到预设阈值时的最大q值,所述q值为预设强化学习模型的状态动作网络参数,所述状态动作网络参数用于表征按照指定策略执行目标操作后得到的奖惩值之和;
10.输出所述最大q值对应的目标操作链;以及
11.根据所述目标操作链确定目标测试数据。
12.根据本公开的实施例,所述将所述输入数据输入预设强化学习模型进行训练直至测试覆盖率达到预设阈值包括:
13.通过测试插件收集测试评估信息,所述测试评估信息包括测试数据覆盖程序行数、测试数据覆盖分支数、依赖系统操作次数和生成输入数据次数;
14.根据所述测试评估信息和预设权重参数确定奖惩表;
15.根据所述奖惩表和预设计算公式确定q值,以生成q表;以及
16.更新q表直至测试覆盖率达到预设阈值。
17.根据本公开的实施例,所述根据所述测试评估信息和预设权重参数确定奖惩表包括:
18.根据所述测试评估信息和预设权重参数确定奖惩值,所述奖惩值为软件程序系统在目标状态描述下执行目标操作后能够获得的奖惩值;以及
19.根据多个所述奖惩值生成所述奖惩表。
20.根据本公开的实施例,所述根据所述奖惩表和预设计算公式确定q值,以生成q表包括:
21.根据当前时刻的奖惩值、预设奖励性衰系数和下一时刻的最大奖惩值确定q值;
22.根据q值的时间差分法更新公式更新q值,以生成q表。
23.根据本公开的实施例,所述目标测试数据为能够覆盖测试程序全部分支的测试案例集。
24.根据本公开的实施例,所述目标操作包括对数据库的新增、查询、删除和更改操作。
25.本公开的第二方面提供了一种基于强化学习的测试数据生成装置,包括:输入数据生成模块,用于根据预设数据规则生成输入数据,所述预设数据规则为银行金融系统数据规则;
26.模型训练模块,用于将所述输入数据输入预设强化学习模型进行训练直至测试覆盖率达到预设阈值;
27.第一确定模块,用于确定测试覆盖率达到预设阈值时的最大q值,所述q值为预设强化学习模型的状态动作网络参数,所述状态动作网络参数用于表征按照指定策略执行目标操作后得到的奖惩值之和;
28.输出模块,用于输出所述最大q值对应的目标操作链;以及
29.第二确定模块,用于根据所述目标操作链确定目标测试数据。
30.根据本公开的实施例,模型训练模块包括:
31.收集子模块,用于通过测试插件收集测试评估信息,所述测试评估信息包括测试数据覆盖程序行数、测试数据覆盖分支数、依赖系统操作次数和生成输入数据次数;
32.第一确定子模块,用于根据所述测试评估信息和预设权重参数确定奖惩表;
33.第二确定子模块,用于根据所述奖惩表和预设计算公式确定q值,以生成q表;以及
34.更新子模块,用于更新q表直至测试覆盖率达到预设阈值。
35.根据本公开的实施例,第一确定子模块包括:
36.第一确定单元,用于根据所述测试评估信息和预设权重参数确定奖惩值,所述奖惩值为软件程序系统在目标状态描述下执行目标操作后能够获得的奖惩值;以及
37.生成单元,用于根据多个所述奖惩值生成所述奖惩表。
38.根据本公开的实施例,第二生成子模块包括:
39.第二确定单元,用于根据当前时刻的奖惩值、预设奖励性衰系数和下一时刻的最大奖惩值确定q值;
40.更新单元,用于根据q值的时间差分法更新公式更新q值,以生成q表。
41.本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述基于强化学习的测试数据生成方法。
42.本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述基于强化学习的测试数据生成方法。
43.本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述基于强化学习的测试数据生成方法。
44.通过本公开的实施例提供的一种基于强化学习的测试数据生成方法,通过预设银行金融数据规则生成输入数据,输入预设强化学习模型进行训练,输出使得q值最大的操作链,从而生成测试数据,降低构造测试数据的难度,提高测试覆盖率。
附图说明
45.通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
46.图1示意性示出了根据本公开实施例的基于强化学习的测试数据生成方法、装置、设备、介质和程序产品的应用场景图;
47.图2a示意性示出了根据本公开实施例的基于强化学习的测试数据生成模型的架构图;
48.图2b示意性示出了根据本公开实施例的数据组织模块的框架图;
49.图3示意性示出了根据本公开实施例的基于强化学习的测试数据生成方法的流程图;
50.图4示意性示出了根据本公开实施例的预设强化学习模型的训练过程的流程图;
51.图5示意性示出了根据本公开实施例的奖惩表的构建方法的流程图;
52.图6示意性示出了根据本公开实施例的q表构建方法的流程图;
53.图7示意性示出了根据本公开实施例的基于强化学习的测试数据生成装置的结构框图;
54.图8示意性示出了根据本公开实施例的适于实现基于强化学习的测试数据生成方法的电子设备的方框图。
具体实施方式
55.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
56.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
57.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的
含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
58.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
59.首先对本公开出现的术语进行解释:
60.测试数据:在本公开实施例中测试数据包括输入被测试接口的数据和接口在执行过程中依赖其他应用的数据。
61.强化学习:强化学习又称再励学习、评价学习,是机器学习算法广义三分类之一,在机器人控制、决策分析、自然语言处理、计算机视觉等领域应用较为广泛。它注重的是软件主体在一个环境中应该如何进行行动从而达到最大化累积奖励的想法。
62.现在软件开发测试的生命周期一般是需求分析,编码开发,测试验证,部分上线试点,全面上线等。为了提高软件程序上线的正确率和客户使用新功能的体验,一般会在编码和测试过程中,使用模拟真实上线的环境,也称之为测试环境或者仿真环境对编写的程序代码进行测试。测试数据也就是在这类环境中流动使得程序运行到的特定分支的数据,在软件开发测试的整个生命周期中都发挥着重要的作用。
63.在开发人员编码过程中会自己构造一些数据进行简单的通过性验证,但是这种测试数据单一简单,带有较大的主观意识,即开发人员会下意识地将测试数据往预设的方向进行构造。因此需要测试人员,客观地构造数据对开发人员编写的程序进行验证,但是由于并非代码开发者,程序代码的内容对于测试来说都是一个黑盒子,正确的数据为何能获取正确的结果,错误的数据为何不能获取到正确的结果,测试人员只能让开发人员进行分析,这导致了测试人员进行验证的过程中,只能覆盖大部分比较常见、普遍的分支,对于一些隐蔽分支,或者一些由于开发人员的错误导致的不可预知分支无法正常覆盖测试。而且现如今大部分系统都为分布式系统,一个完整的交易流程可能涉及多个开发基地,多个开发部门之间的协作,想要了解数据在上下游如何流动比较困难,不同测试人员之间掌握的测试数据也彼此隔离。
64.而且由于硬件设备的限制和测试数据的固有弊端,测试环境无法很好地模拟真实的环境,且存在较多被污染的数据(无论是系统参数数据还是业务数据),会导致一些原本正确的测试数据得到了错误的结果,原本错误的数据却能成功运行。这无疑降低开发人员分析问题的效率,也降低了测试验证的质量。
65.因此,无论是开发人员进行自测,还是测试人员进行验证,在数据构造过程中,存在以下技术问题:
66.1构造数据需要较多的先验知识;
67.2有些分支比较隐蔽,手工梳理可能遗漏,存在测试遗漏的风险;
68.3测试环境相关参数设置混乱,测试环境不稳定比较大地降低测试的效率。
69.基于上述技术问题,本公开的实施例提供了基于强化学习的测试数据生成方法,所述方法包括:根据预设数据规则生成输入数据,所述预设数据规则为银行金融系统数据规则;将所述输入数据输入预设强化学习模型进行训练直至测试覆盖率达到预设阈值;确
定测试覆盖率达到预设阈值时的最大q值,所述q值为预设强化学习模型的状态动作网络参数,所述状态动作网络参数用于表征按照指定策略执行目标操作后得到的奖惩值之和;输出所述最大q值对应的目标操作链;以及根据所述目标操作链确定目标测试数据。
70.图1示意性示出了根据本公开实施例的基于强化学习的测试数据生成方法、装置、设备、介质和程序产品的应用场景图。图2a示意性示出了根据本公开实施例的基于强化学习的测试数据生成模型的架构图。图2b示意性示出了根据本公开实施例的数据组织模块的框架图。
71.如图1所示,根据该实施例的应用场景100可以包括分布式微服务测试数据生成场景。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
72.测试人员可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
73.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
74.服务器105可以是为测试数据生成服务器,针对测试人员输入的金融数据规则生成输入数据,例如响应于测试人员利用终端设备101、102、103所发出的测试指令,该测试数据生成服务器可以对接收到的输入数据,输入预设强化学习模型,自动生成测试数据。
75.需要说明的是,本公开实施例所提供的基于强化学习的测试数据生成方法一般可以由服务器105执行。相应地,本公开实施例所提供的基于强化学习的测试数据生成装置一般可以设置于服务器105中。本公开实施例所提供的基于数据集成模型的测试方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的基于强化学习的测试数据生成装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
76.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
77.需要说明的是,本公开实施例确定的基于强化学习的测试数据生成方法和装置可用于人工智能技术领域在自动化测试领域的应用,也可用于金融领域以及除金融领域之外的任意领域,本公开实施例确定的基于强化学习的测试数据生成方法和装置的应用领域不做限定。
78.如图2a所示,本公开实施例的测试数据生成模型包括输入模块、数据组织模块、数据治理模块和操作数据池。通过4个模块的协作运行,使得模型依赖较少的先验知识和具有较高的分支覆盖率,引入相关数据规则的输入模块和长期基类的操作数据池也使得数据生成的效率大大提高,提高生成数据的覆盖分支命中率。
79.输入模块负责生成输入被测试接口的数据,该模块会引入常用数据的生成规则,银行科技系统中卡号、存折号、身份证号、手机号具有固定字典的枚举值等都有一定的生成规则,数据模块集成了这一系列银行金融系统数据的规则,一定程度上限制数据生成的方
向,且提高了输入被测试接口的数据的生成效率。
80.除了输入被测试接口的数据,还需要生成对应的执行过程中依赖其他应用的数据,数据组织模块主要负责生成依赖其他应用的数据,主要实现原理可见图3所示的测试数据生成方法。作为整个模型核心的数据组织模块,其核心框架如图2b所示,数据组织模块通过观测软件程序系统运行的状态,依照一定的策略去选择执行动作。而该动作在软件程序系统执行之后,软件程序系统的状态会随之变化,且反馈一个奖励或者惩罚给数据组织模块。数据组织模块在软件程序系统中执行相应的操作,收获环境的奖励或者惩罚,修正自身做出的决策,进而训练出能收获软件程序系统最大奖励的一系列动作。
81.在测试数据生成模型中,数据组织模块就是决策机,软件程序系统就是现实环境,数据组织模块对软件程序系统执行的操作s
t
,对软件系统执行完对应操作之后,软件程序系统的环境状态描述e
t
,而覆盖程度与覆盖目标之间可以量化成一个奖惩值或者惩罚值r
t
。模型训练过后就可以自动执行特定的动作,准确生成被测试接口需要依赖到的其他应用的数据。
82.当生成一整套正确可信,可覆盖的数据之后,如果重复运行该数据获取到了非预期的结果,即走到了非预取的程序分支,那么通过数据治理模块可以判断出在哪个步骤中或哪个应用的数据变化导致的结果错误,发出警报提醒运维人员及时维护,修正或者清理污染数据。
83.在数据组织过程中,涉及对于依赖应用的操作,如新增删除或者更新等,这些操作以接口的形式体现,是一些已经经过验证测试准确的接口,操作数据池用于维护这些经过验证的接口,查询接口测试验证完之后也可以新增到操作数据池中,操作数据池是个从底层到高层,从核心辐射出去的过程,随着测试进程的推进,会形成多种多样的操作接口,也使得数据组织模块的操作有来源,有基础保障。
84.以下将基于图1描述的场景和图2所示的架构图,通过图3~图6对本公开实施例的基于强化学习的测试数据生成方法进行详细描述。
85.图3示意性示出了根据本公开实施例的基于强化学习的测试数据生成方法的流程图。如图3所示,该实施例的基于强化学习的测试数据生成方法包括操作s210~操作s250,该方法可以由数据组织模块执行。
86.在操作s210,根据预设数据规则生成输入数据。
87.根据本公开的实施例,所述预设数据规则为银行金融系统数据规则。
88.一个示例中,测试数据包括输入被测试接口的数据,和接口在执行过程中依赖其他应用的数据。本公开实施例的输入数据即为输入被测试接口的数据。为了更形象地展示本公开的方案和银行系统的保密性考虑,本公开实施例以常见的学生管理系统为例,学生管理系统具有常见的软件程序流程和逻辑,复杂系统也是在该基础上进行数据库表格的扩展和业务多样性上的扩展,能够从一定程度上反应金融科技系统的测试场景。现需要测试学生基本信息查询的接口,该接口的输入为统一通行证号,依赖招生部门学生基本信息,如果涉及学生成绩、学生相关违纪查询或者学生学费查询,则还会涉及教务部门,检查部门和财务部门的相关数据。统一通行证号则为输入被测试接口的数据,学生基本信息、成绩、违纪信息,学费信息等则为依赖其他部门的数据。通过随机穷举的方法去生成输入被测试接口的数据,比较难命中具体的通行证规则,在操作s210中会引入常用数据的生成规则,银行
科技系统中卡号、存折号、身份证号、手机号具有固定字典的枚举值等都有一定的生成规则。通过集成这一系列银行金融系统数据的规则,一定程度上限制数据生成的方向,且提高了输入被测试接口的数据的生成效率。
89.在操作s220,将所述输入数据输入预设强化学习模型进行训练直至测试覆盖率达到预设阈值。
90.一个示例中,除了输入被测试接口的数据,还需要生成对应执行过程中依赖其他应用的数据,以下简称依赖系统的数据。以学生管理系统为例,在测试查询学生基本信息接口的时候,该接口的主要处理流程为到招生部门系统查询入学提交基本信息,同时验证输入的统一通行证号是否合理,通行证密码是否正确等,验证通过后需要访问教务部门系统,检查部门系统和财务部门系统去查询其他信息,最后将信息整合进行输入,得到学生的基本信息。
91.一个示例中,基于q-learning框架,数据组织模块作为决策机,软件程序系统为现实环境,数据组织模块对软件程序系统执行的操作si,如新增a应用的数据、新增b应用的数据、重新生成输入参数、修改a应用的数据、修改b应用的数据、删除a应用的数据、删除b应用的数据。此处应用具体数量由软件程序涉及依赖的其他应用数目为准,以查询学生基本信息接口为准,此处涉及招生部门、教务部门、检查部门和财务部门4个应用。且由于数据彼此连接的多样性,新增a应用的数据的操作可能有a1,a2,...,an多种方式;就是对软件系统执行完对应操作之后,软件程序系统的环境状态描述e
t
,而覆盖程度与覆盖目标之间可以量化成一个奖惩值或者惩罚值r
t
。模型训练过后就可以自动执行特定的动作,准确生成被测试接口需要依赖到的其他应用的数据。强化学习具体训练过程可参见图4所示的操作s221~操作s224,在此不再赘述。
92.在操作s230,确定测试覆盖率达到预设阈值时的最大q值。
93.根据本公开的实施例,所述q值为预设强化学习模型的状态动作网络参数,所述状态动作网络参数用于表征按照指定策略执行目标操作后得到的奖惩值之和。
94.一个示例中,本公开实施例中的数据组织模块基于q-learning,提出能生成测试数据的的q-learning强化学习模型td-qn(test data q-leanrning network)。在该模型中,维护两张表:q表和奖惩表。如下表1所示,奖惩表表示在某个覆盖程度下ek执行某个软件系统操作sk之后,能够获得的奖励值rk95.表1奖惩表示例
[0096][0097]
而q值则表征执行一系列操作之后获得的奖惩值之和,最大q值则表征该值下对应的一系列操作为最优选择,在本实施例中,学习的评价标准为测试覆盖率,由测试数据覆盖
程序行数和测试数据覆盖分支数共同决定。强化学习训练的过程实际上是更新q表的过程,通过机器自学习寻找测试覆盖率最优的一系列动作。具体过程可参见图4所示的操作s221~操作s224。
[0098]
在操作s240,输出所述最大q值对应的目标操作链。
[0099]
根据本公开的实施例,所述目标测试数据为能够覆盖测试程序全部分支的测试案例集。
[0100]
在操作s250,根据所述目标操作链确定目标测试数据。
[0101]
根据本公开的实施例,所述目标操作包括对数据库的新增、查询、删除和更改操作。
[0102]
一个示例中,在不断地进行输入数据生成和依赖应用数据操作过程中,测试覆盖率也会不断提高,当测试覆盖率达到预期,即预设阈值后,此时q表更新为覆盖所有分支的操作链,确定最大q值,并输出使得q值最大的操作链作为目标操作链,根据目标操作连确定一系列目标操作,包括对应用的新增、查询、删除和更改操作,实际上是对数据库的增删查改操作。根据一系列目标操作形成一整套能够正常覆盖程序分支的测试数据,即能够覆盖测试程序全部分支的测试案例集。
[0103]
通过本公开的实施例提供的一种基于强化学习的测试数据生成方法,通过预设银行金融数据规则生成输入数据,输入预设强化学习模型进行训练,输出使得q值最大的操作链,从而生成测试数据,降低构造测试数据的难度,提高测试覆盖率。
[0104]
接下来将结合图4~图6介绍强化学习模型的训练过程。
[0105]
图4示意性示出了根据本公开实施例的预设强化学习模型的训练过程的流程图;图5示意性示出了根据本公开实施例的奖惩表的构建方法的流程图;图6示意性示出了根据本公开实施例的q表构建方法的流程图。
[0106]
如图4所示,操作s220包括操作s221~操作s224。
[0107]
在操作s221,通过测试插件收集测试评估信息。
[0108]
根据本公开的实施例,所述测试评估信息包括测试数据覆盖程序行数、测试数据覆盖分支数、依赖系统操作次数和生成输入数据次数。
[0109]
在操作s222,根据所述测试评估信息和预设权重参数确定奖惩表。
[0110]
如图5所示,操作s222包括操作s2221和操作s2222。
[0111]
在操作s2221,根据所述测试评估信息和预设权重参数确定奖惩值。
[0112]
根据本公开的实施例,所述奖惩值为软件程序系统在目标状态描述下执行目标操作后能够获得的奖惩值。
[0113]
在操作s2222,根据多个所述奖惩值生成所述奖惩表。
[0114]
一个示例中,一个示例中,在测试过程中,对于不同的测试业务场景,对软件程序系统执行的操作s的类型是有限的,但是执行完操作之后软件软件程序系统的环境状态描述e是不能穷尽的,为了更好评估某一状态下的奖励值,本公开引入测试数据覆盖程序行数,测试数据覆盖分支数,对依赖系统操作次数,重新生成输入数据次数等评估指标,所得奖励值计算公式如下:
[0115]
r(e,s)=λ
×
cf(s,u) β
×
kf(s,u)-χ
×
tf(s,uo)-δt
gen
[0116]
其中,λ,β,χ,δ是权重参数,cf(s,u)表示在被测试程序u中执行完s操作之后,被测
试程序的覆盖行数,该数据可以借助软件程序系统相关测试插件,如jmokit等进行获取;kf(s,u)表示在被测试程序u中执行完s操作之后,被测试程序的分支覆盖行数,该数据同样可以通过测试插件获取;tf(s,uo)表示对依赖系统uo执行操作惩罚项,对于新增、更新或者删除的不同的操作,惩罚值也不仅相同,新增的惩罚值较低,更新或者删除会造成测试环境的污染数据生成,会有相对应较高的惩罚值,该项控制尽量不影响依赖系统的数据,但是如果的被依赖系统没有对应的数据,程序会为了最后覆盖分支的巨大奖励而去命中一些惩罚项,t
gen
为重新生成输入数据,该项得惩罚值一般情况下会设置得比较大,甚至高于所依赖其他系统得操作惩罚,避免学习过程中一直在重新生成输入数据,对于被依赖应用的数据没有对应操作,陷入无法推进学习进程的死循环。
[0117]
计算每个状态对应操作的奖惩值生成如表1所示的奖惩表。
[0118]
在操作s223,根据所述奖惩表和预设计算公式确定q值,以生成q表。
[0119]
如图6所示,操作s223包括操作s2231和操作s2232。
[0120]
在操作s2231,根据当前时刻的奖惩值、预设奖励性衰系数和下一时刻的最大奖惩值确定q值。
[0121]
在操作s2232,根据q值的时间差分法更新公式更新q值,以生成q表。
[0122]
一个示例中,q表为某个状态下ek执行某个动作sk之后,能够计算出的qk,如表2所示。
[0123]
表2 q表示例
[0124][0125]
根据q表和奖惩表,当前状态下执行动作之后的q值可以由如下公式计算得出:
[0126][0127]
其中,t为当前时刻,e
t

,s
t

为执行完s
t
之后下一时刻的软件程序环境状态描述和操作。可以看出当前q值包含执行完当前动作之后q值。
[0128]
td-qn模型训练过程,就是不断更新q表的过程,q值的时间差分法更新公式如下,其中,α为学习率,γ是奖励性衰系数,同时引入贪婪系数以避免模型在训练到一定程度后不再有提高,使得模型有一定的概率不去执行使得q值最大的操作。
[0129][0130]
在操作s224,更新q表直至测试覆盖率达到预设阈值。
[0131]
在不断地进行输入数据生成和依赖应用数据操作过程中,所生成的测试数据所能覆盖的程序行数和分支数也会随之提高,q表最终能更新成为覆盖所有分支的操作链,这些
操作链能形成一整套能够正常覆盖程序分支测试数据。
[0132]
可拓展的,在训练的过程中,对于依赖应用的操作,即增删查改等,设置操作数据池,用于维护经过测试验证通过的接口,随着强化学习模型的训练,操作数据池中的操作类型和数量也会越来越丰富,训练效果也会越来越好。
[0133]
基于上述基于强化学习的测试数据生成方法,本公开还提供了一种基于强化学习的测试数据生成装置。以下将结合图7对该装置进行详细描述。
[0134]
图7示意性示出了根据本公开实施例的基于强化学习的测试数据生成装置的结构框图。
[0135]
如图7所示,该实施例的基于强化学习的测试数据生成装置800包括输入数据生成模块810、模型训练模块820、第一确定模块830、输出模块和第二确定模块850。
[0136]
输入数据生成模块810用于根据预设数据规则生成输入数据,所述预设数据规则为银行金融系统数据规则。在一实施例中,输入数据生成模块810可以用于执行前文描述的操作s210,在此不再赘述。
[0137]
模型训练模块820用于将所述输入数据输入预设强化学习模型进行训练直至测试覆盖率达到预设阈值。在一实施例中,模型训练模块820可以用于执行前文描述的操作s220,在此不再赘述。
[0138]
第一确定模块830用于确定测试覆盖率达到预设阈值时的最大q值,所述q值为预设强化学习模型的状态动作网络参数,所述状态动作网络参数用于表征按照指定策略执行目标操作后得到的奖惩值之和。在一实施例中,第一确定模块830可以用于执行前文描述的操作s230,在此不再赘述。
[0139]
输出模块840用于输出所述最大q值对应的目标操作链。在一实施例中,输出模块840可以用于执行前文描述的操作s240,在此不再赘述。
[0140]
第二确定模块850用于根据所述目标操作链确定目标测试数据。在一实施例中,第二确定模块850可以用于执行前文描述的操作s250,在此不再赘述。
[0141]
根据本公开的实施例,模型训练模块820包括:收集子模块、第一确定子模块、第二确定子模块和更新子模块。
[0142]
收集子模块用于通过测试插件收集测试评估信息,所述测试评估信息包括测试数据覆盖程序行数、测试数据覆盖分支数、依赖系统操作次数和生成输入数据次数。在一实施例中,收集子模块可以用于执行前文描述的操作s221,在此不再赘述。
[0143]
第一确定子模块用于根据所述测试评估信息和预设权重参数确定奖惩表。在一实施例中,第一确定子模块可以用于执行前文描述的操作s222,在此不再赘述。
[0144]
第二确定子模块用于根据所述奖惩表和预设计算公式确定q值,以生成q表。在一实施例中,第二确定子模块可以用于执行前文描述的操作s223,在此不再赘述。以及
[0145]
更新子模块用于更新q表直至测试覆盖率达到预设阈值。在一实施例中,更新子模块可以用于执行前文描述的操作s224,在此不再赘述。
[0146]
根据本公开的实施例,第一确定子模块包括:第一确实单元和生成单元。
[0147]
第一确定单元用于根据所述测试评估信息和预设权重参数确定奖惩值,所述奖惩值为软件程序系统在目标状态描述下执行目标操作后能够获得的奖惩值。在一实施例中,第一确定单元可以用于执行前文描述的操作s2221,在此不再赘述。
[0148]
生成单元用于根据多个所述奖惩值生成所述奖惩表。在一实施例中,生成单元可以用于执行前文描述的操作s2222,在此不再赘述。
[0149]
根据本公开的实施例,第二生成子模块包括:第二确定单元和更新单元。
[0150]
第二确定单元用于根据当前时刻的奖惩值、预设奖励性衰系数和下一时刻的最大奖惩值确定q值。在一实施例中,第二确定单元可以用于执行前文描述的操作s2231,在此不再赘述。
[0151]
更新单元用于根据q值的时间差分法更新公式更新q值,以生成q表。在一实施例中,更新单元可以用于执行前文描述的操作s2232,在此不再赘述。
[0152]
根据本公开的实施例,输入数据生成模块810、模型训练模块820、第一确定模块830、输出模块和第二确定模块850中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,输入数据生成模块810、模型训练模块820、第一确定模块830、输出模块和第二确定模块850中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,输入数据生成模块810、模型训练模块820、第一确定模块830、输出模块和第二确定模块850中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0153]
图8示意性示出了根据本公开实施例的适于实现基于强化学习的测试数据生成方法的电子设备的方框图。
[0154]
如图8所示,根据本公开实施例的电子设备900包括处理器901,其可以根据存储在只读存储器(rom)902中的程序或者从存储部分908加载到随机访问存储器(ram)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0155]
在ram 903中,存储有电子设备900操作所需的各种程序和数据。处理器901、rom 902以及ram 903通过总线904彼此相连。处理器901通过执行rom902和/或ram903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom 902和ram 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0156]
根据本公开的实施例,电子设备900还可以包括输入/输出(i/o)接口905,输入/输出(i/o)接口905也连接至总线904。电子设备900还可以包括连接至i/o接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至i/o接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、
半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
[0157]
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的基于强化学习的测试数据生成方法。
[0158]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 902和/或ram 903和/或rom902和ram 903以外的一个或多个存储器。
[0159]
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的基于强化学习的测试数据生成方法。
[0160]
在该计算机程序被处理器901执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0161]
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分909被下载和安装,和/或从可拆卸介质911被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0162]
在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0163]
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c ,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0164]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代
表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0165]
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
[0166]
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献