CN109901994B - 一种基于强化学习的测试脚本生成方法和装置 - Google Patents

一种基于强化学习的测试脚本生成方法和装置 Download PDF

Info

Publication number
CN109901994B
CN109901994B CN201910054193.1A CN201910054193A CN109901994B CN 109901994 B CN109901994 B CN 109901994B CN 201910054193 A CN201910054193 A CN 201910054193A CN 109901994 B CN109901994 B CN 109901994B
Authority
CN
China
Prior art keywords
state
test
testing
states
behavior
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.)
Active
Application number
CN201910054193.1A
Other languages
English (en)
Other versions
CN109901994A (zh
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.)
Advanced Nova Technology Singapore Holdings Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910054193.1A priority Critical patent/CN109901994B/zh
Publication of CN109901994A publication Critical patent/CN109901994A/zh
Priority to PCT/CN2019/116263 priority patent/WO2020151301A1/zh
Application granted granted Critical
Publication of CN109901994B publication Critical patent/CN109901994B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

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)
  • Debugging And Monitoring (AREA)

Abstract

本说明书实施例提供一种基于强化学习的测试脚本生成方法和装置,其中,所述方法包括:获取用于测试的状态和行为,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态之间的切换由所述行为触发,一个所述状态对应多个可能的行为;运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;根据所述Q值,得到测试脚本,所述测试脚本对应一条由测试初始状态至测试目标状态的执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本对目标被测软件进行测试。

Description

一种基于强化学习的测试脚本生成方法和装置
技术领域
本公开涉及测试技术领域,特别涉及一种基于强化学习的测试脚本生成方法和装置。
背景技术
测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。而自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。
在传统的自动化测试过程中,需要由测试人员手动编写自动化测试的测试脚本,测试脚本的编写往往会花费测试人员的大部分时间。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种基于强化学习的测试脚本生成方法和装置,以节省自动化测试的人力成本,更便捷的进行测试。
具体地,本说明书一个或多个实施例是通过如下技术方案实现的:
第一方面,提供一种基于强化学习的测试脚本生成方法,所述测试脚本用于测试目标被测软件;所述方法包括:
获取用于测试的状态和行为,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态之间的切换由所述行为触发,一个所述状态对应多个可能的行为;
运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;
根据所述Q值,得到测试脚本,所述测试脚本对应一条由测试初始状态至测试目标状态的执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本对目标被测软件进行测试。
第二方面,提供一种基于强化学习的测试脚本生成装置,所述装置用于生成测试脚本;所述装置包括:
信息获取模块,用于获取用于测试的状态和行为,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态之间的切换由所述行为触发,一个所述状态对应多个可能的行为;
模型运行模块,用于运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;
脚本生成模块,用于根据所述Q值,得到测试脚本,所述测试脚本对应一条由测试初始状态至测试目标状态的执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本进行测试。
第三方面,提供一种基于强化学习的测试脚本生成设备,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令;所述处理器用于在执行所述计算机指令时实现以下步骤:
获取用于测试的状态和行为,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态之间的切换由所述行为触发,一个所述状态对应多个可能的行为;
运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;
根据所述Q值,得到测试脚本,所述测试脚本对应一条由测试初始状态至测试目标状态的执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本对目标被测软件进行测试。
本说明书一个或多个实施例的基于强化学习的测试脚本生成方法和装置,通过利用强化学习模型的方式,使得通过强化学习模型就可以自动生成测试脚本,从而节省人力成本。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书至少一个实施例提供的一种测试脚本生成方法的应用系统;
图2为本说明书至少一个实施例提供的一种登录例子的路径自动生成场景;
图3为根据图2所示的路径自动生成流程;
图4为本说明书至少一个实施例提供的一种基于羌胡学习的测试脚本自动生成的流程;
图5为本说明书至少一个实施例的基于强化学习的测试脚本生成装置。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
本说明书至少一个实施例用强化学习模型自动化生成测试脚本。
首先,通过图1描述该方法应用的系统。如图1所示,该系统中可以包括:基于强化学习的测试脚本生成设备11(后续简称脚本生成设备)、代理设备12和被测设备13。
其中,脚本生成设备11中可以运行强化学习模型。例如,该强化学习模型可以是QLearning模型,或者,还可以是深度Q网络(Deep Q-Network,简称:DQN)模型,等。
代理设备12(Agent)可以接收脚本生成设备11发送的命令,并根据该命令操作被测设备13。例如,代理设备12可以接收脚本生成设备11发送的执行某个action的命令,则代理设备12可以操作控制被测设备13执行该action。并且,被测设备13可以向代理设备12反馈执行action后的反馈结果,该反馈结果可以包括执行action后达到的状态,代理设备12可以将该反馈的状态返回给脚本生成设备11,以使得脚本生成设备11进行下一步处理。
被测设备13可以是测试软件运行的设备,例如,该被测设备13可以是移动端设备,也可以是PC端设备,图1以移动端为例。
如下以Q Learing为例,描述基于图1的系统,通过强化学习的方法来自动生成测试脚本:
测试中的Q表
在Q Learing方法中,Q_learning的目的就是更新Q表,使之变成一个准确的Q表。脚本生成设备11中可以维护这样一份Q表,Q表中可以包括状态status和行为action。如下表1的示例:
表1 Q表示例
Q action_1 action_2 ..... action_n
state_1
state_2
.....
state_n
在测试的场景中,解释Q表中的相关概念如下:
所述的“状态”:可以包括由测试初始状态至测试目标状态之间的多个测试状态,例如,该测试状态可以包括测试初始状态及测试中间状态。
以基于UI的测试为例,且以用户登录应用为例:
测试初始状态可以是用户打开了应用首页;
测试目标状态可以是用户进入应用主页。
测试初始状态至测试目标状态之间可以包括多个测试中间状态。例如,用户在点击了登录按钮后,页面跳转到登录页面,该显示登录页面可以是一个测试状态。又例如,用户输入用户名后,页面中显示了输入的用户名,这又可以作为一个测试状态。
多个测试状态之间的切换由行为action的操作触发,比如,用户点击了登录按钮,这个操作触发测试状态由应用首页显示切换到登录页面的显示。
上述的各种状态,状态是可观测的,也可以通过系统提供的一些借口来获取当前界面的显示信息作为状态。比如,android设备可以通过adb dump的方式,自动获取到对当前界面控件信息的观测状态。
例如,可以是按照如下方式设计Q表的状态:以android设备为例,可以通过adbdump的方式获取到当前设备界面控件的描述信息,并记录在一个xml格式的文件中,该文件中可以记录当前界面所有控件的类型、坐标信息等。可以提取出一个界面状态的状态向量来标识当前界面的状态,该状态向量表示测试状态,状态向量中可以包括多个状态特征,每一个状态特征对应在所述测试状态下的目标被测软件运行界面的一种界面描述维度。
比如,在状态向量[x1,x2,x3,x4,x5]中,状态特征x1表示当前界面的控件数量,状态特征x2表示当前界面布局的最大层级数,x3是当前界面所有控件的总面积,x4是所有控件的平均中心坐标的x值,x5是所有控件的平均中心坐标的y值。其中,上述的控件数量、层级数、总面积等,各自都可以看做是一种界面描述维度,利用这些信息就可以大致用数值化的方式来表示一个界面的测试状态了。
所述的“行为”:在某一状态下可能遇到的多种action操作。在测试场景中,可以尽可能的测试在某一状态下的多种可能的行为。
本例子是以UI测试为例,所以行为action可以是用户的操作行为,比如点击登录按钮。本说明书的方法也可以应用于其他类型的测试,比如功能测试或接口测试,不限于UI测试。
仍以UI测试为例,登录按钮在登录页面的某个位置,但是用户在点击时可能并不是点击在正确的位置上,比如,点了一个毫无疑义的空位置,或者点了一个错误的地方,等。本例子可以将页面屏幕划分为多个单元,每个单元以一个位置表示,点击该位置作为一个action。例如,点击(30,10),点击(10,10),上述的(30,10)可以是点击位置的坐标。具体如何划分,可以自定义。
举例一种点击坐标的设计方式:为了提高操作的普适性,对操作的定义应尽量做到普适。比如,点击操作可以定义为对界面坐标的点击,具体的坐标可以根据屏幕的分辨率来分割得到。例如,定义所有点击操作一共有20*40个。
每个点击操作的横坐标x分别为:
单位宽度=(当前界面宽度/20)
第i列操作的x坐标=单位宽度/2+i*单位宽度。
每个点击操作的纵坐标为:
单位长度=(当前界面长度/40)
第j行操作的y坐标=单位长度/2+j*单位长度。
点击操作坐标的设计,可以人为来指定网格的尺寸,比如点击操作对应的网格可以是20*40或者30*60,可以在具体使用中根据运行表现好坏调整。
在点击操作之外,还可以包括其他类型的行为action,比如,输入行为,滑动行为。具体何种类型的action可以根据测试软件的界面功能设计相关。例如,若页面中用户要输入用户名和密码,可以包括输入action;若页面中需要用户滑动,则可以包括滑动action。进一步的,滑动action还可以包括向左滑动和向右滑动,分别是一个action。其他类型的行为action也可以尽量进行普适性设计,比如,对于滑动操作,可以指定四个参数,包括指定起始点的坐标(x,y)和终止点的坐标(x,y)。
上述的“状态”和“行为”可以根据测试软件的特点进行设计。
在进行软件测试时,需要测试的情况有多种,比如,在测试某个软件时,该软件可以包括多方面的测试,如下列举几个测试情况,每一种情况可以称为一个测试case:
测试case一:输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。(正常输入)
测试case二:输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息。(错误校验);
测试case三:用户名和密码,如果太短或者太长,应该怎么处理(安全性,密码太短时是否有提示)
每一种case可以设计自己的Q表,不过,为了提高测试效率,可以尽量设计一个具有普适性的Q表。比如,以点击类型的action为例,不同测试目标状态的case,正确的点击位置可以是不同的,但是在Q表中可以将所有可能的位置都列举出来,Q表中的行为可以包括分别对应不同屏幕坐标位置的点击行为,只要在不同的case中对不同的位置行为设置不同的奖励值进行引导即可。
不同的被测case可以有相同的action,有的case的action可能完全相同。不同的case中,状态有一部分可能是一样的,比如,执行登录和注册两个case,登录和注册这两个case的初始状态可能都会经过注册登录页面,最终状态也都可能是达到了应用首页,但中间环节可能是不一样的。如果说有两个不同的case,在执行了对应的操作之后,一系列的操作路径上的状态都一样,那就会出现状态也完全相同的情况,但这种情况很少。
即,如果说第一测试目标状态和第二测试目标状态是两个不同的测试目标状态(这是两个不同的case),比如,第一测试目标状态可以是显示登录成功页面,第二测试目标状态可以是弹出错误提示信息,那么,当所述测试目标状态是第一测试目标状态时使用的多个测试状态status,与所述测试目标状态是第二测试目标状态时使用的多个测试状态status,至少部分测试状态可以相同。如上面提到的,两个case的测试初始状态和中间的部分测试状态可能是一样。
当所述测试目标状态是第一测试目标状态时使用的多个行为action,与所述测试目标状态是第二测试目标状态时使用的多个行为action,至少部分行为可以相同。比如,两个case都包括点击操作,且包括相同的多个可能的点击坐标。而不同的case中,对于每个所述状态和每个行为之间对应的Q值,尽管在不同的case中使用的某个行为和状态分别相同,但是该状态和行为之间对应的Q值可以不同。举例来说,假设上述的测试case一和测试case二可以使用同一个Q表,在Q值的更新时,对于测试case一,如果登录成功,奖励值设置更高;而对于测试case二,如果登录失败,奖励值设置更高。那么这两个case的Q表中的Q值是可以存在差异的。
测试中的Q表的更新
在设计好Q表之后,可以由脚本生成设备11对该Q表进行更新,并在更新完成后根据Q表得到测试时的执行路径。
以用户登录应用为例,描述如何得到测试执行路径:
图2示例了登录例子的路径自动生成场景,图3是根据图2所示的路径自动生成流程,请结合图2和图3所示,该方法可以包括:
在步骤300中,初始化Q表,所述Q表中包括所述状态和行为。
例如,可以参见下面的表2,该表2是用户登录应用例子中的Q表。
表2用户登录应用例子中的Q表示例
Q 点击(10,10) 点击(30,10) ..... 输入(user_id)
state_1
state_2
.....
state_n
例如,状态1可以是应用首页;该应用首页中显示了登录按钮,该状态1下对应的操作action可以包括点击首页的多种不同位置,其中有点击登录按钮。
状态2可以是应用登录页面,该登录页面中显示用户名和密码的输入框,还包括登录按钮的显示。在该状态2下,可能的行为可以包括点击不同的位置,还可以包括输入用户名,或者输入密码等输入操作。当然,在其他的例子中,除了输入用户名和密码,还可以有一些其他的身份认证方式,比如页面中需要用户滑动标签进行配图,那么可以包括向左滑动或者向右滑动等action。
状态3可以是显示用户输入的用户名。还可以有状态4,状态5等到达用户成功登录应用前的其他状态。
登录成功后进入应用主页。
其中,用户执行了正确的操作后,才可以触发状态的切换。比如,如果在用户在应用首页点击了无意义的位置,那也许状态仍然保持在状态1,不会切换到状态2。
可以看到,状态是在测试过程中可能达到的多个中间状态,
而动作action是在各个状态下可能的用户行为。
而表中的Q值,表示用户采取何种行为,会更有可能达到本次测试的目标。如果用户执行的行为距离测试目标更近,可以设置更高的Q值;相当于对用户行为的一种引导,使得更快速的找到达到测试目标的路径。当在某一个状态下,选择该状态下的某个行为action时,Q值较高的行为将有更大概率得到选择。
即在测试场景中,Q表中的状态、行为以及Q值的设定,都与测试软件本身的特点以及测试目标状态相关,据此确定。不同的测试软件、测试目标状态可以有不同的状态和行为,可以设置不同的Q值来引导测试路径的生成。
本步骤中,初始时,可以将Q表中的值初始化为全0,也可以采用其他值。
在步骤302中,通过Q Learning的方式,对所述Q表进行更新,得到更新后的Q表,Q表中包括每个状态下的各种行为对应的Q值。
请结合图2所示,在每个状态下,脚本生成设备11可以随机的选择该状态下的一个action,并通知代理设备12执行该action。代理设备12根据指令控制被测设备13执行行为,被测环设备13相当于被测软件的一个运行环境。
代理设备12可以反馈给脚本生成设备11一个反馈结果,该反馈结果可以包括执行action之后达到的状态是否是测试目标状态。
Q表更新的过程可以根据常规的Q Learning方式执行,不再详述。
如下简单描述一种更新Q表的过程,但不局限于此:
例如,参见表2,在状态1下随机选择一个action,指示代理设备12执行。代理设备12反馈回来进入了状态2,该状态2不是目标状态(成功登录),只要未达到最终状态,那么脚本生成设备11继续由状态2对应的action中选择一个行为,继续指示代理设备12执行。
如此循环,直至最后一个状态下选择了action后,代理设备12反馈回来的结果是达到了成功登录,那么,可以给予奖励值,并使用该奖励值更新触发登录的那个状态下的action。比如,用户输入了用户名和密码后,并点击了登录按钮后,才导致成功登录应用,则可以将上述三个状态下的输入用户名、输入密码、点击登录按钮这几个行为action对应的Q值更新的稍微高一些,例如,同状态下的其他action对应的Q值都是0,而这些行为的Q值可以是0.8,或者0.9之类的。
同样的方式,可以继续迭代,重新由状态1开始,随机选择一个action去执行。若能到达测试目标的行为,则更新较高的Q值,直至更新完Q表中的所有状态行。然后,使用生成的Q表继续迭代,在每个状态下选择Q值比较高的行为action,并根据最后的结果是否到达测试目标状态来更新Q表。
在步骤304中,根据Q值,得到测试脚本的所述执行路径,所述执行路径包括能够达到所述目标状态的行为序列。
本步骤中,在更新完Q表后,可以据此得到测试脚本的执行路径,比如,可以选择每个状态下的Q值最高的action后,组成一个行为序列,这就是测试的执行路径。
脚本生成设备11至此自动生成了测试脚本,可以将该测试脚本发送至代理设备12执行,通过所述测试脚本进行测试。生成的测试脚本可以是至少一个。
本例子的测试脚本生成方法,通过利用强化学习模型的方式,可以节省人力成本,并且可以生成较好的测试脚本。
上述的例子是以强化学习中的Q Learning为例,还可以使用其他强化学习模型来处理,例如DQN。
在使用DQN模型时,可以预先训练DQN网络,所述DQN网络的输入可以是Q表中的状态,该状态是测试过程中的状态,比如测试的软件界面的图像。DQN模型的输出可以是对应该状态下的各个行为action对应的Q值,Q值就是state-action value它是一个关于状态和动作的函数。经过训练后,可以得到训练完成的DQN网络。DQN网络训练完成后,已经得到了各个状态下的各个行为对应的Q值。在测试时,把当前状态输入,选取最大Q值对应的action执行,这就是测试路径。
对于不同的case,可以使用相同的方法得到该case下对应的测试路径。
测试脚本的生成方法不局限于上述的Q Learning和DQN,还可以采用其他的强化学习模型。图4的流程示例了将强化学习应用于测试脚本的自动生成时的处理流程,可以包括如下处理:
在步骤400中,获取用于测试的状态status和行为action,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态的切换由所述行为触发,一个所述状态对应多个可能的行为;
在步骤402中,运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;
在步骤404中,根据所述Q值,得到测试脚本的所述执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本进行测试。
基于强化学习的模型实现自动生成自动化测试用例,大幅减少了人力成本的投入,可以达到不用手动编写用例脚本即可自动生成用例的效果。
图5提供了一种本说明书至少一个实施例的基于强化学习的测试脚本生成装置,所述装置用于生成测试脚本。如图5所示,该装置可以包括:信息获取模块51、模型运行模块52和脚本生成模块53。
信息获取模块51,用于获取用于测试的状态和行为,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态之间的切换由所述行为触发,一个所述状态对应多个可能的行为;
模型运行模块52,用于运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;
脚本生成模块53,用于根据所述Q值,得到测试脚本,所述测试脚本对应一条由测试初始状态至测试目标状态的执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本进行测试。
在一个例子中,当所述行为的类型是点击时,所述行为包括分别对应不同界面坐标的点击行为,所述界面是目标被测软件的运行界面。
在一个例子中,模型运行模块52,具体用于:初始化Q表,所述Q表中包括所述状态和行为;通过Q Learning的方式,对所述Q表进行更新,得到更新后的Q表。
在一个例子中,模型运行模块52,具体用于:训练DQN,所述DQN的输入是状态,输出是对应状态和行为的Q值;得到训练完成的DQN。
本说明书至少一个实施例还提供了一种基于强化学习的测试脚本生成设备,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令;所述处理器用于在执行所述计算机指令时实现以下步骤:
获取用于测试的状态和行为,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态之间的切换由所述行为触发,一个所述状态对应多个可能的行为;
运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;
根据所述Q值,得到测试脚本,所述测试脚本对应一条由测试初始状态至测试目标状态的执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本对目标被测软件进行测试。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的行为或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (14)

1.一种基于强化学习的测试脚本生成方法,所述测试脚本用于测试目标被测软件;所述方法包括:
获取用于测试的状态和行为,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态之间的切换由所述行为触发,一个所述状态对应多个可能的行为;
运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;
根据所述Q值中对应状态切换成功的行为,得到测试脚本,所述测试脚本对应一条由测试初始状态至测试目标状态的执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本对目标被测软件进行测试。
2.根据权利要求1所述的方法,所述行为包括:多种类型的行为,所述行为的类型与目标被测软件的界面设计相关。
3.根据权利要求1所述的方法,
当所述测试目标状态是第一测试目标状态时使用的多个测试状态,与所述测试目标状态是第二测试目标状态时使用的多个测试状态,至少部分测试状态相同;
当所述测试目标状态是第一测试目标状态时使用的多个行为,与所述测试目标状态是第二测试目标状态时使用的多个行为,至少部分行为相同;
所述第一测试目标状态和第二测试目标状态不同。
4.根据权利要求1所述的方法,
当所述行为的类型是点击时,所述行为包括分别对应不同界面坐标的点击行为,所述界面是目标被测软件的运行界面。
5.根据权利要求4所述的方法,
所述界面坐标根据目标被测软件的运行界面的屏幕分辨率分割得到。
6.根据权利要求1所述的方法,所述运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值,包括:
初始化Q表,所述Q表中包括所述状态和行为;
通过Q Learning的方式,对所述Q表进行更新,得到更新后的Q表。
7.根据权利要求1所述的方法,所述运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值,包括:
训练深度Q网络,所述深度Q网络的输入是状态,输出是对应状态和行为的Q值;得到训练完成的所述深度Q网络。
8.根据权利要求1所述的方法,所述行为是用户在目标被测软件的运行界面的操作行为。
9.根据权利要求1所述的方法,
所述目标被测软件的每一个所述测试状态,包括多个状态特征;
每个所述状态特征,对应在所述测试状态下的目标被测软件运行界面的一种界面描述维度。
10.一种基于强化学习的测试脚本生成装置,所述装置用于生成测试脚本;所述装置包括:
信息获取模块,用于获取用于测试的状态和行为,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态之间的切换由所述行为触发,一个所述状态对应多个可能的行为;
模型运行模块,用于运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;
脚本生成模块,用于根据所述Q值中对应状态切换成功的行为,得到测试脚本,所述测试脚本对应一条由测试初始状态至测试目标状态的执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本进行测试。
11.根据权利要求10所述的装置,
当所述行为的类型是点击时,所述行为包括分别对应不同界面坐标的点击行为,所述界面是目标被测软件的运行界面。
12.根据权利要求10所述的装置,
所述模型运行模块,具体用于:初始化Q表,所述Q表中包括所述状态和行为;通过QLearning的方式,对所述Q表进行更新,得到更新后的Q表。
13.根据权利要求10所述的装置,
所述模型运行模块,具体用于:训练深度Q网络,所述深度Q网络的输入是状态,输出是对应状态和行为的Q值;得到训练完成的所述深度Q网络。
14.一种基于强化学习的测试脚本生成设备,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令;所述处理器用于在执行所述计算机指令时实现以下步骤:
获取用于测试的状态和行为,所述状态包括由测试初始状态至测试目标状态的多个测试状态,且所述多个测试状态之间的切换由所述行为触发,一个所述状态对应多个可能的行为;
运行强化学习模型,确定每个所述状态和每个行为之间对应的Q值;
根据所述Q值中对应状态切换成功的行为,得到测试脚本,所述测试脚本对应一条由测试初始状态至测试目标状态的执行路径,所述执行路径包括能够达到所述目标状态的行为序列,以通过所述测试脚本对目标被测软件进行测试。
CN201910054193.1A 2019-01-21 2019-01-21 一种基于强化学习的测试脚本生成方法和装置 Active CN109901994B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910054193.1A CN109901994B (zh) 2019-01-21 2019-01-21 一种基于强化学习的测试脚本生成方法和装置
PCT/CN2019/116263 WO2020151301A1 (zh) 2019-01-21 2019-11-07 一种基于强化学习的测试脚本生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910054193.1A CN109901994B (zh) 2019-01-21 2019-01-21 一种基于强化学习的测试脚本生成方法和装置

Publications (2)

Publication Number Publication Date
CN109901994A CN109901994A (zh) 2019-06-18
CN109901994B true CN109901994B (zh) 2020-05-15

Family

ID=66943961

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910054193.1A Active CN109901994B (zh) 2019-01-21 2019-01-21 一种基于强化学习的测试脚本生成方法和装置

Country Status (2)

Country Link
CN (1) CN109901994B (zh)
WO (1) WO2020151301A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109901994B (zh) * 2019-01-21 2020-05-15 阿里巴巴集团控股有限公司 一种基于强化学习的测试脚本生成方法和装置
CN110442515B (zh) * 2019-07-12 2023-07-25 创新先进技术有限公司 应用测试方法、装置、设备及可读存储介质
CN111008154B (zh) * 2019-12-31 2021-09-28 南京大学 一种基于强化学习的Android应用自动测试方法及系统
CN111694755B (zh) * 2020-07-31 2023-07-18 抖音视界有限公司 应用程序测试方法、装置、电子设备及介质
CN112383482B (zh) * 2020-11-16 2021-10-08 北京邮电大学 基于数据平面的动态q值路由计算方法及装置
CN112685318A (zh) * 2021-01-07 2021-04-20 广州三星通信技术研究有限公司 产生测试脚本的方法和系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572123B (zh) * 2015-01-27 2019-05-14 Oppo广东移动通信有限公司 一种脚本生成方法及装置
US10176073B2 (en) * 2017-02-24 2019-01-08 International Business Machines Corporation Controlling a system under test using a cognitive control based test runner
CN106991030B (zh) * 2017-03-01 2020-04-14 北京航空航天大学 一种基于在线学习的系统功耗优化的轻量级方法
CN108334439B (zh) * 2018-03-14 2021-06-04 百度在线网络技术(北京)有限公司 一种压力测试方法、装置、设备和存储介质
CN109062782B (zh) * 2018-06-27 2022-05-31 创新先进技术有限公司 一种回归测试用例的选择方法、装置及设备
CN109901994B (zh) * 2019-01-21 2020-05-15 阿里巴巴集团控股有限公司 一种基于强化学习的测试脚本生成方法和装置

Also Published As

Publication number Publication date
CN109901994A (zh) 2019-06-18
WO2020151301A1 (zh) 2020-07-30

Similar Documents

Publication Publication Date Title
CN109901994B (zh) 一种基于强化学习的测试脚本生成方法和装置
US20130060507A1 (en) Application testing
US20130311827A1 (en) METHOD and APPARATUS for automatic testing of automation software
CN111538668B (zh) 基于强化学习的移动端应用测试方法、装置、设备及介质
US9274930B2 (en) Debugging system using static analysis
Xie et al. Cooperative software testing and analysis: Advances and challenges
CN103814373A (zh) 针对自动化脚本的对记录的动作的自动分类调整
Sualim et al. Comparative evaluation of automated user acceptance testing tool for web based application
Koeman et al. Automating failure detection in cognitive agent programs
US11169910B2 (en) Probabilistic software testing via dynamic graphs
Zhang et al. Automated testing for intelligent agent systems
Tyen et al. LLMs cannot find reasoning errors, but can correct them!
Akpinar et al. Web application testing with model based testing method: case study
KR20210036167A (ko) 어플리케이션의 테스트 자동화
Delgado et al. Fuzz testing in behavior-based robotics
US20050203717A1 (en) Automated testing system, method and program product using testing map
Ernits et al. Model-based integration testing of ROS packages: A mobile robot case study
Ohtsuki et al. Utilizing Software Engineering Education Support System ALECSS at an Actual Software Development Experiment: A Case Study.
Deiner et al. Search-based testing for scratch programs
CN113126881B (zh) 系统配置方法、装置、设备、可读存储介质及分布式存储系统
Ibrahim et al. Finite State Machine-Model Based Testing on Website Application
CN112765041A (zh) 游戏自动化测试方法、装置及电子设备
Tao et al. Webwise: Web interface control and sequential exploration with large language models
CN112486802A (zh) Flutter测试辅助方法及装置
Gebrekrstos et al. Search-based Test Generation Framework for Android Apps with Support for Multiobjective Generation: STGFA-SMOG

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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201022

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201022

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240219

Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore

Patentee after: Advanced Nova Technology (Singapore) Holdings Ltd.

Country or region after: Singapore

Address before: Ky1-9008 Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands, ky1-9008

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: Cayman Islands