AI自动化测试:技术原理、平台搭建与工程实践
上QQ阅读APP看书,第一时间看更新

3.4 强化学习在自动化测试中的应用

在游戏进入关卡后,我们可以使用3.2节和3.3节介绍的强化学习方法让游戏自动运行起来。本节以赛车游戏为例介绍如何使用A3C进行自动化测试。

在进行自动化测试之前,我们需要训练强化学习模型,训练流程如图3-7所示。在进入游戏后,通过UI自动化的方式让游戏到达关卡开始的界面,此时开始强化学习的训练过程。当游戏到达关卡结束的界面时,暂停强化学习的训练过程,再次使用UI自动化的方式让游戏返回到关卡开始的界面,如此反复进行,直到达到最大的训练次数。

图3-7 强化学习的训练流程

强化学习模型将小地图作为输入区域,游戏的控制位置作为操作区域。并且,为了获取强化学习训练过程中的奖励,我们将游戏关卡中的速度值作为计算奖励的依据,如图3-8所示。当速度增加时,奖励为正值;当速度降低时,奖励为负值。

图3-8 强化学习使用的各个区域示意图

强化学习模型的网络结构如图3-9所示。输入为游戏图像中小地图的图像,演员网络输出当前时刻需要执行的动作,评论家网络输出当前时刻运行状态的评价。AlexNet从输入层到全连接层,包含5个卷积层和3个池化层。演员和评论家网络都有两个全连接层,神经元数量分别为1024和512。演员网络输出层使用softmax激活函数,神经元数量等于动作数量,输出动作策略。评论家网络输出层不使用激活函数,只有一个神经元,输出评价数值。

图3-9 A3C网络结构示意

在设计赛车游戏动作时,可以使用离散的动作,包括:左转、右转和无动作。这样的动作设计方式比较简单,便于强化学习模型快速训练出效果。也可以使用连续的动作,将漂移添加到动作中,让强化学习模型学习左转、右转、漂移和无动作的执行时刻和执行时长。

在训练时需要使用3.3.4节中介绍的A3C训练过程,利用分布式结构提高样本的采集速度,缩短强化学习模型的训练时间。当训练完成后,就可以使用训练好的强化学习模型在游戏关卡中进行自动化测试了。