CN114911704A - 基于强化学习的接口测试用例生成方法、装置、设备 - Google Patents

基于强化学习的接口测试用例生成方法、装置、设备 Download PDF

Info

Publication number
CN114911704A
CN114911704A CN202210549671.8A CN202210549671A CN114911704A CN 114911704 A CN114911704 A CN 114911704A CN 202210549671 A CN202210549671 A CN 202210549671A CN 114911704 A CN114911704 A CN 114911704A
Authority
CN
China
Prior art keywords
test
interface
url
test case
path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210549671.8A
Other languages
English (en)
Inventor
苏宝珠
刘晓健
高言
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202210549671.8A priority Critical patent/CN114911704A/zh
Publication of CN114911704A publication Critical patent/CN114911704A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明属于回归测试技术领域,具体提供一种基于强化学习的接口测试用例生成方法、装置、设备,所述方法包括如下步骤:获取所有浏览器发出的接口请求,并将获取到的接口请求存储;从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;根据处理结果构建并初始化测试智能体;训练测试智能体并生成具有风险优先级的测试路径;进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。基于强化学习生成高风险测试用例,可以不断生成当前系统风险优先级最高的测试用例,提高了测试用例的故障检测能力、测试用例生成效率和测试覆盖率。

Description

基于强化学习的接口测试用例生成方法、装置、设备
技术领域
本发明涉及回归测试技术领域,具体涉及一种基于强化学习的接口测试用例生成方法、装置、设备。
背景技术
在接口自动化测试领域中,经常使用的测试步骤如下:1、梳理测试需求,2、根据需求编写测试用例,3、根据测试用例及接口设计编写接口测试脚本,4、运行接口测试脚本进行测试。
当测试系统比较复杂,比如某些大型的应用,可能包括几百个核心应用,成千上万个接口,并且接口实现也比较复杂时,如果再使用上述手动编写测试脚本的方式去完成接口测试存在如下问题:1、对测试人员的自动化素质要求比较高,初次接触自动化测试人员需要花费时间来学习测试脚本的编写,并且后续编写、调试、维护测试脚本也需要占用大量人力及时间,性价比极低。2、测试场景单调,可能会由于测试用例的缺失导致系统没完整测试回归,给系统带来风险。
发明内容
针对手动编写测试脚本对测试人员的自动化素质要求比较高,初次接触自动化测试人员需要花费时间来学习测试脚本的编写,并且后续编写、调试、维护测试脚本也需要占用大量人力及时间,性价比极低的问题,本发明提供一种基于强化学习的接口测试用例生成方法、装置、设备。
本发明的技术方案是:
第一方面,本发明技术方案提供一种基于强化学习的接口测试用例生成方法,包括如下步骤:
获取所有浏览器发出的接口请求,并将获取到的接口请求存储;
从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;
根据处理结果构建并初始化测试智能体;
训练测试智能体并生成具有风险优先级的测试路径;
进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。
进一步的,从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理的步骤中,对提取出的url及对应的参数进行处理的步骤包括:
对提取出的url进行参数的剥离及聚集。
进一步的,对提取出的url进行参数的剥离及聚集的步骤包括:
对提取出的url进行识别;
将识别出的相同的url分为一组,并将组内所有url的参数进行抽取并汇聚到同一个参数组中。
进一步的,对提取出的url进行识别的步骤包括:
将url中的参数去掉,获取到url路径;
将去掉的url的参数按在url中的顺序进行排序;
当url路径相同且参数顺序相同时,识别为相同url。
进一步的,根据处理结果构建并初始化测试智能体的步骤之前包括:
将处理完成的不含参数的url定义为强化学习模型中的状态s;
收集到的所有的url定义为状态空间集合S;
将从当前接口到下一个接口抽象成一个动作,根据请求的发送顺序就可以得到状态-动作关系对;其中,动作的集合为A,每一个动作为a;
定义用于根据测试结果对测试用例进行奖惩的奖惩函数。
现有的方案测试场景单调,可能会由于测试用例的缺失导致系统没完整测试回归,给系统带来风险,而本方案基于强化学习生成高风险测试用例,可以不断生成当前系统风险优先级最高的测试用例,提高了测试用例的故障检测能力、测试用例生成效率和测试覆盖率。
进一步的,根据处理结果构建并初始化测试智能体的步骤包括:
将用状态-动作表示的数据表格来表示测试智能体;其中,表格中每一个(s,a)值表示在状态s下选择动作a的Q值;
初始化数据表格的Q值。
进一步的,初始化数据表格的Q值的步骤包括:
从存储的请求中,按cookie及时间段取出对应请求;
按顺序访问取出的各个请求,获取相邻的url对;
判断获取的url对是否存在于数据表格中;
若是,则Q值加1;
否则,将该url对添加到数据表格中,并将初始值设为1。
进一步的,训练测试智能体并生成具有风险优先级的测试路径的步骤包括:
采用贪心策略训练测试智能体生成测试路径;
组装测试路径与测试参数形成测试用例集;
执行测试用例对被测系统进行测试并获取测试结果;
获取到测试结果后,根据定义的奖惩函数计算出该测试用例中各个接口的奖励值;
根据计算的奖励值更新对应的数据表格中的Q值;
判断训练迭代次数是否达到设定的阈值;
若是,按照Q值的高低输出风险优先级的测试路径;
若否,执行步骤:采用贪心策略训练测试智能体生成测试路径。
现有的方案对测试人员的自动化素质要求比较高,初次接触自动化测试人员需要花费时间来学习测试脚本的编写,并且后续编写、调试、维护测试脚本也需要占用大量人力及时间,而采用本发明中的方案,在系统搭建完成后,仅需对测试系统进行很少的配置就可以直接使用,无需专门学习测试脚本编写,节省了人力及时间。
第二方面,本发明技术方案还提供一种基于强化学习的接口测试用例生成装置,包括接口请求获取模块、请求处理模块、测试智能体构建模块、测试路径更新模块、测试用例生成模块;
接口请求获取模块,用于获取所有浏览器发出的接口请求,并将获取到的接口请求存储;
请求处理模块,用于从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;
测试智能体构建模块,用于根据处理结果构建并初始化测试智能体;
测试路径更新模块,用于训练测试智能体并生成具有风险优先级的测试路径;
测试用例生成模块,用于进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。
进一步的,请求处理模块,用于从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url进行参数的剥离及聚集;
请求处理模块包括提取单元、识别单元、处理单元;
提取单元,用于从存储的接口请求中提取被测系统接口的url及对应的参数;
识别单元,用于对提取出的url进行识别;
处理单元,用于将识别出的相同的url分为一组,并将组内所有url的参数进行抽取并汇聚到同一个参数组中。
进一步的,识别单元包括路径获取子模块、参数处理子模块、识别处理子模块;
路径获取子模块,用于将url中的参数去掉,获取到url路径;
参数处理子模块,用于将去掉的url的参数按在url中的顺序进行排序;
识别处理子模块,用于当url路径相同且参数顺序相同时,识别为相同url。
进一步的,该装置还包括强化学习模型定义模块;
强化学习模型定义模块包括第一定义单元、第二定义单元、关系对生成单元、奖惩函数定义单元;
第一定义单元,用于将处理完成的不含参数的url定义为强化学习模型中的状态s;
第二定义单元,用于收集到的所有的url定义为状态空间集合S;
关系对生成单元,用于将从当前接口到下一个接口抽象成一个动作,根据请求的发送顺序就可以得到状态-动作关系对;其中,动作的集合为A,每一个动作为a;
奖惩函数定义单元,用于定义用于根据测试结果对测试用例进行奖惩的奖惩函数。
进一步的,测试智能体构建模块包括构建单元和初始化单元;
构建单元,用于将用状态-动作表示的数据表格来表示测试智能体;其中,表格中每一个(s,a)值表示在状态s下选择动作a的Q值;
初始化单元,用于初始化数据表格的Q值。
进一步的,初始化单元包括第一处理子模块、第二处理子模块、判断子模块、初始化子模块;
第一处理子模块,用于从存储的请求中,按cookie及时间段取出对应请求;
第二处理子模块,用于按顺序访问取出的各个请求,获取相邻的url对;
判断子模块,用于判断获取的url对是否存在于数据表格中;若是,则Q值加1;
初始化子模块,用于当判断子模块判断获取的url对不存在于数据表格中时将该url对添加到数据表格中,并将初始值设为1。
进一步的,测试路径更新模块包括路径生成单元、组装单元、执行单元、计算处理单元、更新单元、迭代判断处理单元;
路径生成单元,用于采用贪心策略训练测试智能体生成测试路径;
组装单元,用于组装测试路径与测试参数形成测试用例集;
执行单元,用于执行测试用例对被测系统进行测试并获取测试结果;
计算处理单元,用于获取到测试结果后,根据定义的奖惩函数计算出该测试用例中各个接口的奖励值;
更新单元,用于根据计算的奖励值更新对应的数据表格中的Q值;
迭代判断处理单元,用于判断训练迭代次数是否达到设定的阈值;输出信息到路径生成单元。
第三方面,本发明技术方案还提供一种计算机设备,包括处理器和存储器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如第一方面所述的基于强化学习的接口测试用例生成方法。
从以上技术方案可以看出,本发明具有以下优点:在系统搭建完成后,仅需对测试系统进行很少的配置就可以直接使用,无需专门学习测试脚本编写,节省了人力及时间。基于强化学习生成高风险测试用例,可以不断生成当前系统风险优先级最高的测试用例,提高了测试用例的故障检测能力、测试用例生成效率和测试覆盖率。
该方法通过生成具有风险优先级的测试用例来检测系统缺陷,从而有效的提升了回归测试的效率和保证了软件测试的质量。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例1的方法的示意性流程图。
图2是本发明一个实施例2的方法的示意性流程图。
图3是本发明一个实施例3的方法的示意性流程图。
图4是本发明一个实施例4的装置的示意性框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
如图1所示,本发明实施例1提供一种基于强化学习的接口测试用例生成方法,包括如下步骤:
步骤1:获取所有浏览器发出的接口请求,并将获取到的接口请求存储;
步骤2:从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;需要说明的是,本步骤中,对提取出的url及对应的参数进行处理的过程实际上是对提取出的url进行参数的剥离及聚集。
步骤3:根据处理结果构建并初始化测试智能体;
步骤4:训练测试智能体并生成具有风险优先级的测试路径;
步骤5:进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。
该方法通过生成具有风险优先级的测试用例来检测系统缺陷,从而有效的提升了回归测试的效率和保证了软件测试的质量。
本发明实施例2提供一种基于强化学习的接口测试用例生成方法,包括如下步骤:
步骤1:获取所有浏览器发出的接口请求,并将获取到的接口请求存储;
步骤2:从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;需要说明的是,本步骤中,对提取出的url及对应的参数进行处理的过程实际上是对提取出的url进行参数的剥离及聚集。
步骤3:根据处理结果构建并初始化测试智能体;
步骤4:训练测试智能体并生成具有风险优先级的测试路径;
步骤5:进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。
如图2所示,步骤2中,对提取出的url进行参数的剥离及聚集的步骤包括:
步骤21:对提取出的url进行识别;
步骤22:将识别出的相同的url分为一组,并将组内所有url的参数进行抽取并汇聚到同一个参数组中。
进一步需要说明的是,步骤21中对提取出的url进行识别的步骤包括:
步骤211:将url中的参数去掉,获取到url路径;
步骤212:将去掉的url的参数按在url中的顺序进行排序;
步骤213:当url路径相同且参数顺序相同时,识别为相同url。
如图3所示,本发明实施例3提供一种基于强化学习的接口测试用例生成方法,包括如下步骤:
S1:获取所有浏览器发出的接口请求,并将获取到的接口请求存储;
S2:从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;需要说明的是,本步骤中,对提取出的url及对应的参数进行处理的过程实际上是对提取出的url进行参数的剥离及聚集。
S3:定义强化学习模型,具体步骤包括:S31:将处理完成的不含参数的url定义为强化学习模型中的状态s;S32:收集到的所有的url定义为状态空间集合S;S33:将从当前接口到下一个接口抽象成一个动作,根据请求的发送顺序就可以得到状态-动作关系对;其中,动作的集合为A,每一个动作为a;S34:定义用于根据测试结果对测试用例进行奖惩的奖惩函数。
S4:根据处理结果构建并初始化测试智能体;
具体步骤包括:S41:将用状态-动作表示的数据表格来表示测试智能体;其中,表格中每一个(s,a)值表示在状态s下选择动作a的Q值;
S42:初始化数据表格的Q值;需要说明的是,初始化数据表格的Q值的步骤具体包括:S421:从存储的请求中,按cookie及时间段取出对应请求;
S422:按顺序访问取出的各个请求,获取相邻的url对;
S423:判断获取的url对是否存在于数据表格中;若是,执行步骤S424:否则,执行步骤S425;
S424:将Q值加1;
S425:将该url对添加到数据表格中,并将初始值设为1。
S5:训练测试智能体并生成具有风险优先级的测试路径;
本步骤中,使用贪心策略也就是ε-greedy策略生成测试路径,训练过程中,在开始迭代时ε值较小,测试智能体随机探索的概率较大。在迭代一段时间后ε值增大,测试智能体会不断的向最优状态转移策略(最大Q值策略)进行收敛。ε-greedy策略表示测试智能体在作策略时,有很小的正数ε(ε<1)的概率随机选择位置的一个动作,剩下的1-ε的概率选择已有动作中动作价值最大的动作。(在这里,动作价值最大的工作实际上应该是对应的Q值最大的)。假设当前测试智能体所处的状态st∈S,其可选择的动作集合是A,请求时将从当前接口到下一个接口抽象成一个动作,测试智能体在执行某一个动作at∈A之后,将会到达下一个状态st+1,在决策过程中,有ε概率选择费贪心的动作,即,每个动作被选择的概率为ε/|A|,其中,|A|表示动作数量,也就是说每个动作都有同样ε/|A|概率的被非贪心选择。另外还有1-ε的概率选择一个贪心策略,因此这个贪心策略被选择的概率为1-ε+ε/|A|,也就是说,在所有的动作集合A中,在某一个时刻,总会有一个动作是测试智能体认为的最优动作,也就是动作价值最大的动作,因此这个动作本身有ε/|A|概率在探索阶段被选择,还有1-ε概率在开发阶段被选择。
进一步的本步骤中,训练测试智能体并生成具有风险优先级的测试路径的步骤包括:
S51:采用贪心策略训练测试智能体生成测试路径;
S52:组装测试路径与测试参数形成测试用例集;
S53:执行测试用例对被测系统进行测试并获取测试结果;
S54:获取到测试结果后,根据定义的奖惩函数计算出该测试用例中各个接口的奖励值;
S55:根据计算的奖励值更新对应的数据表格中的Q值;
S56:判断训练迭代次数是否达到设定的阈值;
若是,执行步骤S57;
若否,执行步骤S51;
S57,按照Q值的高低输出风险优先级的测试路径;
S6:进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。
如图4所示,本发明实施例4还提供一种基于强化学习的接口测试用例生成装置,包括接口请求获取模块、请求处理模块、强化学习模型定义模块、测试智能体构建模块、测试路径更新模块、测试用例生成模块;
接口请求获取模块,用于获取所有浏览器发出的接口请求,并将获取到的接口请求存储;
通过该模块会获取所有浏览器发出的接口请求,并将获取到的请求按照指定格式存储,其中包含了所有的request请求,请求的先后顺序代表了他们之间的跳转关系。
请求处理模块,用于从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;
请求处理模块会获取已经存储的接口请求,并从获取到的请求中提取出被测系统的api接口以及对应的参数,由于有的请求的参数是在url后面,所以导致相同的url可能携带不同的参数,但实际对应的是同一个api接口。为了减少url的数量,所以需要对url进行参数剥离及聚集。参数剥离主要将url中的参数去掉,从而获取到url路径,当参数顺序不一样时,会被识别为不同的url,所以还需要对参数进行排序。通过参数剥离及排序,可以大幅减少可访问的url数量;参数聚集是将url进行聚类,将相同的url分为一组,并将组内所有url的参数进行抽取并汇聚到同一个参数组中方便后续组装测试用例使用。
强化学习模型定义模块,用于定义状态空间、定义动作空间、定义奖惩函数;其中,1)定义状态空间:将上一步中处理完成的不含参数的url定义为强化学习模型中的状态s,收集到的所有的url定义为状态空间S。2)定义动作空间:将从当前接口到下一个接口抽象成一个动作,所以在t时刻的动作空间由当前接口的可达状态空间确定。由于状态已确定为不含参数的url,动作为下一个可访问的url,所以根据请求的发送顺序就可以得到状态-动作关系对。3)定义奖惩函数:假如测试用例能够检测出软件缺陷(返回码不是200/返回值不正确/返回时间异常),则给予正向奖励,提高该api接口的优先级,反之则给予负向奖励,降低该api接口的优先级。
测试智能体构建模块,用于根据处理结果构建并初始化测试智能体;采用Q-Learning强化学习方法来解决自动化用例生成问题,将用状态-动作表示的Q-table来表示测试智能体。表格中每一个(s,a)值表示在状态s下选择动作a的Q值,Q值越大,选择该动作的可能性越大。1)初始化Q值的计算:从第一步存储的请求数据中,按cookie及时间段取出对应请求,按顺序访问其中的各个请求,获取相邻的url对,如果该url对已经存在与(s,a)集合中,则Q值加1,否则将该url对讲到(s,a)对中,并将初始值设为1。2)状态转移策略:使用ε-greedy策略生成测试路径,在开始迭代时ε值较小,智能体随机探索的概率较大。在迭代一段时间后ε值增大,智能体会不断的向最优状态转移策略(最大Q值策略)进行收敛。但是随机探索并不会被完全禁止。因为被测系统随着代码的改动,对于相同的API功能测试用例做出的响应是不同的,因此测试智能体需要不断地调整策略。
测试路径更新模块,用于训练测试智能体并生成具有风险优先级的测试路径;Q-Learning方法中Q-table的迭代更新需要依靠智能体与环境交互产生的奖励值进行学习,从而逐渐收敛到最优策略。在上一步测试路径生成之后,需要与请求参数组合之后才能生成完整的测试用例。本文中使用两两组合的方式,为每条测试路径生成了一系列的测试用例集。在获取到测试用例集之后,在被测环境中执行对应的测试用例。获取到测试结果之后,根据前面定义的奖惩函数计算出一条测试用例中各个api接口的奖励值。之后根据对应的计算公式更新Q(s,a)。
测试用例生成模块,用于进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。
本发明实施例5还提供一种基于强化学习的接口测试用例生成装置,接口请求获取模块、请求处理模块、强化学习模型定义模块、测试智能体构建模块、测试路径更新模块、测试用例生成模块;
接口请求获取模块,用于获取所有浏览器发出的接口请求,并将获取到的接口请求存储;
通过该模块会获取所有浏览器发出的接口请求,并将获取到的请求按照指定格式存储,其中包含了所有的request请求,请求的先后顺序代表了他们之间的跳转关系。
请求处理模块,用于从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;
请求处理模块会获取已经存储的接口请求,并从获取到的请求中提取出被测系统的api接口以及对应的参数,由于有的请求的参数是在url后面,所以导致相同的url可能携带不同的参数,但实际对应的是同一个api接口。为了减少url的数量,所以需要对url进行参数剥离及聚集。参数剥离主要将url中的参数去掉,从而获取到url路径,当参数顺序不一样时,会被识别为不同的url,所以还需要对参数进行排序。通过参数剥离及排序,可以大幅减少可访问的url数量;参数聚集是将url进行聚类,将相同的url分为一组,并将组内所有url的参数进行抽取并汇聚到同一个参数组中方便后续组装测试用例使用。也就是说,请求处理模块,用于从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url进行参数的剥离及聚集;
请求处理模块包括提取单元、识别单元、处理单元;
提取单元,用于从存储的接口请求中提取被测系统接口的url及对应的参数;
识别单元,用于对提取出的url进行识别;识别单元包括路径获取子模块、参数处理子模块、识别处理子模块;
路径获取子模块,用于将url中的参数去掉,获取到url路径;
参数处理子模块,用于将去掉的url的参数按在url中的顺序进行排序;
识别处理子模块,用于当url路径相同且参数顺序相同时,识别为相同url。
处理单元,用于将识别出的相同的url分为一组,并将组内所有url的参数进行抽取并汇聚到同一个参数组中。
强化学习模型定义模块,用于定义状态空间、定义动作空间、定义奖惩函数;其中,1)定义状态空间:将上一步中处理完成的不含参数的url定义为强化学习模型中的状态s,收集到的所有的url定义为状态空间S。2)定义动作空间:将从当前接口到下一个接口抽象成一个动作,所以在t时刻的动作空间由当前接口的可达状态空间确定。由于状态已确定为不含参数的url,动作为下一个可访问的url,所以根据请求的发送顺序就可以得到状态-动作关系对。3)定义奖惩函数:假如测试用例能够检测出软件缺陷(返回码不是200/返回值不正确/返回时间异常),则给予正向奖励,提高该api接口的优先级,反之则给予负向奖励,降低该api接口的优先级。也就是,强化学习模型定义模块包括第一定义单元、第二定义单元、关系对生成单元、奖惩函数定义单元;
第一定义单元,用于将处理完成的不含参数的url定义为强化学习模型中的状态s;
第二定义单元,用于收集到的所有的url定义为状态空间集合S;
关系对生成单元,用于将从当前接口到下一个接口抽象成一个动作,根据请求的发送顺序就可以得到状态-动作关系对;其中,动作的集合为A,每一个动作为a;
奖惩函数定义单元,用于定义用于根据测试结果对测试用例进行奖惩的奖惩函数。
测试智能体构建模块,用于根据处理结果构建并初始化测试智能体;采用Q-Learning强化学习方法来解决自动化用例生成问题,将用状态-动作表示的Q-table来表示测试智能体。表格中每一个(s,a)值表示在状态s下选择动作a的Q值,Q值越大,选择该动作的可能性越大。1)初始化Q值的计算:从第一步存储的请求数据中,按cookie及时间段取出对应请求,按顺序访问其中的各个请求,获取相邻的url对,如果该url对已经存在与(s,a)集合中,则Q值加1,否则将该url对讲到(s,a)对中,并将初始值设为1。2)状态转移策略:使用ε-greedy策略生成测试路径,在开始迭代时ε值较小,智能体随机探索的概率较大。在迭代一段时间后ε值增大,智能体会不断的向最优状态转移策略(最大Q值策略)进行收敛。但是随机探索并不会被完全禁止。因为被测系统随着代码的改动,对于相同的API功能测试用例做出的响应是不同的,因此测试智能体需要不断地调整策略。也就是,测试智能体构建模块包括构建单元和初始化单元;
构建单元,用于将用状态-动作表示的数据表格来表示测试智能体;其中,表格中每一个(s,a)值表示在状态s下选择动作a的Q值;
初始化单元,用于初始化数据表格的Q值。初始化单元包括第一处理子模块、第二处理子模块、判断子模块、初始化子模块;
第一处理子模块,用于从存储的请求中,按cookie及时间段取出对应请求;
第二处理子模块,用于按顺序访问取出的各个请求,获取相邻的url对;
判断子模块,用于判断获取的url对是否存在于数据表格中;若是,则Q值加1;
初始化子模块,用于当判断子模块判断获取的url对不存在于数据表格中时将该url对添加到数据表格中,并将初始值设为1。
测试路径更新模块,用于训练测试智能体并生成具有风险优先级的测试路径;Q-Learning方法中Q-table的迭代更新需要依靠智能体与环境交互产生的奖励值进行学习,从而逐渐收敛到最优策略。在上一步测试路径生成之后,需要与请求参数组合之后才能生成完整的测试用例。本文中使用两两组合的方式,为每条测试路径生成了一系列的测试用例集。在获取到测试用例集之后,在被测环境中执行对应的测试用例。获取到测试结果之后,根据前面定义的奖惩函数计算出一条测试用例中各个api接口的奖励值。之后根据对应的计算公式更新Q(s,a)。也就是,测试路径更新模块包括路径生成单元、组装单元、执行单元、计算处理单元、更新单元、迭代判断处理单元;
路径生成单元,用于采用贪心策略训练测试智能体生成测试路径;
组装单元,用于组装测试路径与测试参数形成测试用例集;
执行单元,用于执行测试用例对被测系统进行测试并获取测试结果;
计算处理单元,用于获取到测试结果后,根据定义的奖惩函数计算出该测试用例中各个接口的奖励值;
更新单元,用于根据计算的奖励值更新对应的数据表格中的Q值;
迭代判断处理单元,用于判断训练迭代次数是否达到设定的阈值;输出信息到路径生成单元。
测试用例生成模块,用于进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。经过多次迭代之后,更新后的Q-table中,Q值高的表示风险值大。当进行回归测试时,按照前述步骤,再次生成测试用例时,将生成具有风险优先级测试用例,提高了测试用例的故障检测能力、测试用例生成效率和测试覆盖率。
本发明实施例6提供的一种计算机设备,该设备可以包括:处理器、通信接口、存储器和总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信。总线可以用于电子设备与传感器之间的信息传输。处理器可以调用存储器中的逻辑指令,以执行如下方法:步骤1:获取所有浏览器发出的接口请求,并将获取到的接口请求存储;步骤2:从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;步骤3:根据处理结果构建并初始化测试智能体;步骤4:训练测试智能体并生成具有风险优先级的测试路径;步骤5:进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。
在有些实施例中处理器可以调用存储器中的逻辑指令,以执行如下方法:S51:采用贪心策略训练测试智能体生成测试路径;S52:组装测试路径与测试参数形成测试用例集;S53:执行测试用例对被测系统进行测试并获取测试结果;S54:获取到测试结果后,根据定义的奖惩函数计算出该测试用例中各个接口的奖励值;S55:根据计算的奖励值更新对应的数据表格中的Q值;S56:判断训练迭代次数是否达到设定的阈值;若是,执行步骤S57;若否,执行步骤S51;S57,按照Q值的高低输出风险优先级的测试路径。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种基于强化学习的接口测试用例生成方法,其特征在于,包括如下步骤:
获取所有浏览器发出的接口请求,并将获取到的接口请求存储;
从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;
根据处理结果构建并初始化测试智能体;
训练测试智能体并生成具有风险优先级的测试路径;
进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。
2.根据权利要求1所述的基于强化学习的接口测试用例生成方法,其特征在于,从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理的步骤中,对提取出的url及对应的参数进行处理的步骤包括:
对提取出的url进行参数的剥离及聚集。
3.根据权利要求2所述的基于强化学习的接口测试用例生成方法,其特征在于,对提取出的url进行参数的剥离及聚集的步骤包括:
对提取出的url进行识别;
将识别出的相同的url分为一组,并将组内所有url的参数进行抽取并汇聚到同一个参数组中。
4.根据权利要求3所述的基于强化学习的接口测试用例生成方法,其特征在于,对提取出的url进行识别的步骤包括:
将url中的参数去掉,获取到url路径;
将去掉的url的参数按在url中的顺序进行排序;
当url路径相同且参数顺序相同时,识别为相同url。
5.根据权利要求4所述的基于强化学习的接口测试用例生成方法,其特征在于,根据处理结果构建并初始化测试智能体的步骤之前包括:
将处理完成的不含参数的url定义为强化学习模型中的状态s;
收集到的所有的url定义为状态空间集合S;
将从当前接口到下一个接口抽象成一个动作,根据请求的发送顺序就可以得到状态-动作关系对;其中,动作的集合为A,每一个动作为a;
定义用于根据测试结果对测试用例进行奖惩的奖惩函数。
6.根据权利要求5所述的基于强化学习的接口测试用例生成方法,其特征在于,根据处理结果构建并初始化测试智能体的步骤包括:
将用状态-动作表示的数据表格来表示测试智能体;其中,表格中每一个(s,a)值表示在状态s下选择动作a的Q值;
初始化数据表格的Q值。
7.根据权利要求6所述的基于强化学习的接口测试用例生成方法,其特征在于,初始化数据表格的Q值的步骤包括:
从存储的请求中,按cookie及时间段取出对应请求;
按顺序访问取出的各个请求,获取相邻的url对;
判断获取的url对是否存在于数据表格中;
若是,则Q值加1;
否则,将该url对添加到数据表格中,并将初始值设为1。
8.根据权利要求7所述的基于强化学习的接口测试用例生成方法,其特征在于,训练测试智能体并生成具有风险优先级的测试路径的步骤包括:
采用贪心策略训练测试智能体生成测试路径;
组装测试路径与测试参数形成测试用例集;
执行测试用例对被测系统进行测试并获取测试结果;
获取到测试结果后,根据定义的奖惩函数计算出该测试用例中各个接口的奖励值;
根据计算的奖励值更新对应的数据表格中的Q值;
判断训练迭代次数是否达到设定的阈值;
若是,按照Q值的高低输出风险优先级的测试路径;
若否,执行步骤:采用贪心策略训练测试智能体生成测试路径。
9.一种基于强化学习的接口测试用例生成装置,其特征在于,包括接口请求获取模块、请求处理模块、测试智能体构建模块、测试路径更新模块、测试用例生成模块;
接口请求获取模块,用于获取所有浏览器发出的接口请求,并将获取到的接口请求存储;
请求处理模块,用于从存储的接口请求中提取被测系统接口的url及对应的参数,并对提取出的url及对应的参数进行处理;
测试智能体构建模块,用于根据处理结果构建并初始化测试智能体;
测试路径更新模块,用于训练测试智能体并生成具有风险优先级的测试路径;
测试用例生成模块,用于进行回归测试时根据具有风险优先级的测试路径生成具有风险优先级测试用例。
10.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至8任一项权利要求所述的基于强化学习的接口测试用例生成方法。
CN202210549671.8A 2022-05-20 2022-05-20 基于强化学习的接口测试用例生成方法、装置、设备 Pending CN114911704A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210549671.8A CN114911704A (zh) 2022-05-20 2022-05-20 基于强化学习的接口测试用例生成方法、装置、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210549671.8A CN114911704A (zh) 2022-05-20 2022-05-20 基于强化学习的接口测试用例生成方法、装置、设备

Publications (1)

Publication Number Publication Date
CN114911704A true CN114911704A (zh) 2022-08-16

Family

ID=82769364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210549671.8A Pending CN114911704A (zh) 2022-05-20 2022-05-20 基于强化学习的接口测试用例生成方法、装置、设备

Country Status (1)

Country Link
CN (1) CN114911704A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435516A (zh) * 2023-12-21 2024-01-23 江西财经大学 一种测试用例优先级排序方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435516A (zh) * 2023-12-21 2024-01-23 江西财经大学 一种测试用例优先级排序方法和系统
CN117435516B (zh) * 2023-12-21 2024-02-27 江西财经大学 一种测试用例优先级排序方法和系统

Similar Documents

Publication Publication Date Title
US10599506B2 (en) Methods and systems for identifying action for responding to anomaly in cloud computing system
US20180307551A1 (en) Log Events for Root Cause Error Diagnosis
CN111651357B (zh) 一种基于云计算的软件自动化测试方法
CN110471913A (zh) 一种数据清洗方法及装置
CN110224859B (zh) 用于识别团伙的方法和系统
US20210117779A1 (en) Method, device, and computer program product for error evaluation
CN113657715A (zh) 一种基于核密度估计调用链的根因定位方法及系统
CN112925926B (zh) 多媒体推荐模型的训练方法、装置、服务器以及存储介质
CN114911704A (zh) 基于强化学习的接口测试用例生成方法、装置、设备
CN115185804A (zh) 服务器性能预测方法、系统、终端及存储介质
CN114168429A (zh) 报错分析方法、装置、计算机设备及存储介质
CN112416800A (zh) 智能合约的测试方法、装置、设备及存储介质
CN116975081A (zh) 一种日志诊断集更新方法、装置、设备及存储介质
CN112463469A (zh) 一种服务器故障诊断方法、系统、终端及存储介质
EP4160435A1 (en) Cleaning raw data generated by a telecommunications network for deployment in a deep neural network model
CN114816719A (zh) 多任务模型的训练方法及装置
CN114706778A (zh) 云服务api的模糊测试方法和装置
CN114968491B (zh) 虚拟资源测试方法、装置、电子设备及存储介质
CN114253867B (zh) 基于神经网络模型的自动化测试方法、装置及系统
CN116628508B (zh) 模型训练过程异常检测方法、装置、设备及存储介质
CN115576821B (zh) 一种验证方法、装置,电子设备及存储介质
CN117714351A (zh) 一种网络协议模糊测试方法、系统、设备及介质
CN113535594B (zh) 业务场景测试用例的生成方法、装置、设备和存储介质
CN109901997B (zh) 金融系统升级方法及装置、电子设备、存储介质
CN118012657A (zh) 微服务系统的根因定位方法、装置、可读介质和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination