4.4.2 问题的描述
更新于 2026年10月10日
版权声明
4.4.2 问题的描述
1.问题的提出
在面向路径的测试用例生成中,无效的运算在求解约束的过程中占了很大一部分。如果能减少无效运算,指导计算方向,则可以提高求解效率。即在计算的过程中选取合适的变量进行搜索,选取合适的方向进行搜索,使得整个搜索变得智能化。强化学习技术就是这样一种通过经验来指导决策的技术,利用强化学习技术指导测试用例的生成,会有效地提高测试的效率。
前文已经介绍面向路径的测试用例生成问题是约束满足问题,如图4-37所示,对于被测程序test,包含的约束条件为{x 1>0,x 2>0,x 1-x 2>0,x 1+x 2==4},在分支限界法对约束进行求解的过程中,需要选择合适的变量进行赋值,并且确定变量取值增大还是缩小。例如,变量x 1已经被赋值为1,变量x 2被赋值为-1,当发现不满足约束条件时,如果当前变量x 2下一步对应的操作是减1,这一步运算过程将是无效的多余运算。如果在运算过程中可以借鉴经验,使其在下一步可以智能地加1,则可以提高求解器的运算效率。

图4-37 待测程序test(https://www.daowen.com)
2.问题的定义
基于以上问题,对强化学习的过程及构造的测试用例自动生成的强化学习模型进行定义。
定义4-11 强化学习解决测试用例自动生成问题的过程被定义为一个四元组<S,A,S*,R>,其中S代表当前的状态,A代表动作集合(a 1,a 2,…,a n),S*代表下一步的状态,R代表奖惩函数r()。
针对测试用例生成问题,构建的强化学习模型被称为测试用例生成的强化学习模型(Testcase Generation Reinforce Learning Model,TGRLM)。