[发明专利]一种基于强化学习的类集成测试序列生成方法在审
申请号: | 202110647435.5 | 申请日: | 2021-06-10 |
公开(公告)号: | CN113377651A | 公开(公告)日: | 2021-09-10 |
发明(设计)人: | 张艳梅;丁艳茹;姜淑娟;袁冠;张颖辉 | 申请(专利权)人: | 中国矿业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F17/16;G06K9/62;G06N3/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 221116*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 强化 学习 集成 测试 序列 生成 方法 | ||
1.一种基于强化学习的类集成测试序列生成方法,其特征在于:
步骤1、定义强化学习任务:强化学习的任务就是使智能体在环境中不断地进行尝试,根据获得的奖励值不断调整策略,最终生成一个较好策略,智能体根据这个策略便能够知道在什么状态下应该执行什么动作;
步骤2、程序静态分析:对源程序进行静态分析,将获取的信息用于计算类间的属性和方法复杂度,通过属性复杂度计算类间的属性耦合,通过方法复杂度计算类间的方法耦合;
步骤3、度量测试桩复杂度:依据前面得到的属性和方法复杂度计算测试桩复杂度,为后面奖励函数的设计提供信息;
步骤4、设计奖励函数:将测试桩复杂度的计算融入奖励函数的设计中,指导智能体向测试桩复杂度更低的方向学习;
步骤5、设计值函数:通过奖励函数反馈值函数,通过值函数的设定保证累计奖励最大化;
步骤6、生成类集成测试序列:当智能体完成设定的训练次数,选出整体奖励值最大的动作路径,即为本次学习得到的类集成测试序列。
2.根据权利要求1所述的一种基于强化学习的类集成测试序列生成方法,其特征在于:
步骤1的具体步骤如下:
1.1、将要分析的软件系统视为一组在测试时进行需要进行集成的类的集合;
1.2、保留智能体在路径中执行的动作序列,即动作历史,作为集成测试类序列的候选解决方案;
1.3、从候选解决方案中找到一条总体奖励最大的动作历史,即为本次学习过程所求的类集成测试序列。
3.根据权利要求1所述的一种基于强化学习的类集成测试序列生成方法,其特征在于:
步骤2的具体步骤如下:
2.1、分析类间关系,通过属性复杂度计算类间的属性耦合,使用A(i, j)代表,i,j分别表示程序中的类,属性复杂度数量上等于i调用j的成员变量数、方法参数类型与方法的返回值数目三者之和;
2.2、通过方法复杂度计算类间的方法耦合,使用M(i, j)代表,方法复杂度数目上等于i调用j中方法的数目,然后对属性和方法复杂度进行标准化。
4.根据权利要求1所述的一种基于强化学习的类集成测试序列生成方法,其特征在于:
步骤3的具体步骤如下:
3.1、通过熵权法计算类间的属性和方法复杂度的权值;
3.2、结合属性和方法复杂度计算得到测试桩复杂度;
3.3、当得到类集成测试序列时,对过程中产生的测试桩复杂度进行累加,得到总体测试桩复杂度。
5.根据权利要求4所述的一种基于强化学习的类集成测试序列生成方法,其特征在于:
测试桩复杂度
其中,,,A(i, j)代表类i和j之间的属性复杂度,M(i, j)代表类i和j之间的方法复杂度,熵权法最先进行的就是对连个指标进行标准化,这样得到的结果均在0到1之间,标准化之后的类间的属性复杂度是,方法复杂度是。
6.根据权利要求1所述的一种基于强化学习的类集成测试序列生成方法,其特征在于:
步骤4的具体步骤如下:
4.1、设计当智能体探索并集成到的类越优,其得到奖励值越高的奖励函数;
4.2、当过程中任意一个动作类重复出现两次,给予这条路径一个最小值,以便继续探索时进行避免;
4.3、通过以上两点结合测试桩复杂度,设计奖励函数,训练智能体倾向于探索测试桩复杂度更低的路径。
7.根据权利要求6所述的一种基于强化学习的类集成测试序列生成方法,其特征在于:
其中,智能体经过i-1次状态变换到达σi,σi表示状态路径,r(σi)表示该状态路径会得到的奖励值,Max表示最大奖励值,这里取1000,c为一个正整数值,这里取100,aσi表示与状态路径对应的动作历史,SCplx()表示测试桩复杂度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国矿业大学,未经中国矿业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110647435.5/1.html,转载请声明来源钻瓜专利网。