CN111143205B - 一种面向安卓平台的测试用例自动化生成方法及生成系统 - Google Patents
一种面向安卓平台的测试用例自动化生成方法及生成系统 Download PDFInfo
- Publication number
- CN111143205B CN111143205B CN201911318530.XA CN201911318530A CN111143205B CN 111143205 B CN111143205 B CN 111143205B CN 201911318530 A CN201911318530 A CN 201911318530A CN 111143205 B CN111143205 B CN 111143205B
- Authority
- CN
- China
- Prior art keywords
- event
- script
- recorded
- android
- state
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
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
本发明公开了一种面向安卓平台的测试用例自动化生成方法,利用安卓应用测试框架AndroidViewClient和安卓应用进行交互,录制安卓图形用户界面的事件序列,生成相应的录制测试脚本;通过程序分析方法,将录制测试脚本转换成为抽象语法树,提取树的结点信息生成基于自定义的领域特定语言的录制事件序列脚本;将录制事件序列脚本与带权重偏好的随机选择算法结合在一起,去自动和安卓应用程序进行交互,并生成相应的状态转换模型;将与安卓应用程序交互后得到的状态转换模型进行聚合,根据得到的聚合状态转换模型,生成待定测试用例,检查待定测试用例的有效性,无效则重新生成,有效则为测试用例。本发明能够提高安卓应用的健壮性和可靠性。
Description
技术领域
本发明涉及安卓自动化测试领域,具体涉及一种面向安卓平台的测试用例自动化生成方法及生成系统。
背景技术
安卓应用程序无处不在,已经逐步渗透到人们的日常生活中,并且占有很大的市场份额,在能快速将安卓应用推出的同时还要保证应用程序的稳定性和良好的用户体验,安卓应用开发者不得不在之前进行测试,及时地发现未知的异常以及错误,因此对开发的应用进行充分的测试就成了应用开发者开发过程中关键的一步。而安卓应用测试多为人工测试,这种测试方法会过度依赖于测试人员的测试水平,从而导致测试质量的不稳定,并且随着大量Android应用程序的复杂程度增加,测试任务也会变得更复杂更繁重。因而,面向Android应用的自动化测试工作逐渐步入人们的视野之中,学术界也把安卓自动化测试作为一项未来具有很大发展潜力的学术研究课题来研究。
自动化测试用例生成技术主要包括随机生成法、符号执行生成法、启发式生成法和基于模型的测试用例生成法。到目前为止,安卓自动化测试领域中已经有了一些不错的成果,Stoat是一个采取边执行边分析的自动化测试策略,根据其测试过程中所构造的概率模型来自动生成安卓应用测试用例的工具;A3E是一个基于深度优先搜索方法的安卓自动化测试工具;Monkey是Google公司推出的安卓自动化测试工具,它随机获取安卓应用程序的图形用户界面的控件,并向系统发送随机的用户事件流来模拟人工测试行为。
发明内容
本发明提出了一种面向安卓平台的测试用例自动化生成方法,该方法有人工录制好的事件序列脚本引导与安卓应用程序自动交互时的一些场景,能够产生针对于该安卓应用程序较为完整的模型,使得生成的测试用例更为丰富,该方法包括:
步骤一:利用一个安卓应用测试框架AndroidViewClient和安卓应用进行交互,录制安卓图形用户界面的事件序列,生成相应的录制测试脚本;
步骤二:通过程序分析方法,将得到的录制测试脚本转换成为抽象语法树,提取树的结点信息生成基于自定义的领域特定语言(Domain Specific Language,简称DSL)的录制事件序列脚本;
步骤三:将得到的录制事件序列脚本与带权重偏好的随机选择算法结合在一起,去自动和安卓应用程序进行交互,并生成相应的状态转换模型;
步骤四:将与安卓应用程序交互后得到的状态转换模型进行聚合,根据得到的聚合状态转换模型,生成待定测试用例,检查待定测试用例的有效性,无效则重新生成,有效则为测试用例。
本发明提出的面向安卓平台的测试用例自动化生成方法中,所述步骤一中生成的录制测试脚本本身形式是python脚本,其中记录的操作对象是控件的单击事件、长按事件和设置文本事件,对应的控件除了包含控件本身的resource_id、text和content-description三种属性中的任意一种,还包含了控件的具体类别即class和控件所在屏幕中的位置范围即bounds。
本发明提出的面向安卓平台的测试用例自动化生成方法中,所诉步骤二中得到的录制事件序列脚本所基于的自定义的领域特定语言是能够表达步骤一生成的录制测试脚本的另一种结构清晰的形式,它基于一种轻量级的数据交换格式即json,它的内容是以下键值对:
A1:键是views,值是各个view,每个view对应步骤一中录制的某个事件的操作对象,各个view里面又有自己的键值对,对于操作对象是具体控件的,该view自己的键值对的键包括(1)resource_id、text和content-description三者中的任意一种以及(2)class和(3)bounds;对于操作对象是坐标的,该view自己的键值对的键只有in_coordinates表示坐标;
A2:键是states,值是各个state,每个state对应步骤一中录制的某个事件时对应的图形用户界面状态,各个state里面又有自己的键值对,键包括(1)views,对应这个state对应事件的操作对象,该值是A1中的某个或多个值;(2)dump_views,对应这个state的图形用户界面的某些控件,用于加大匹配这个state的精确度,值是新的键值对,新的键值对的键是控件名称,值是控件的非空的resource_id、text和content-description三种属性的并集;(3)seq_id,是从1开始逐一递增的数字;
A3:键是operations,值是各个operation,对应于步骤一中录制的某个事件,各个operation里面又有自己的键值对,键包括(1)事件类型和(2)事件对应的操作对象;
A4:键是main,值是一个新的键值对,新的键值对的键是各个state的名称,对应于A2的某个值,值是各个state对应的事件操作名称,对应于A3的某个值;
A5:键是multiple,值是一个新的键值对,新的键值对的键是eachend,值是数字列表。
本发明提出的面向安卓平台的测试用例自动化生成方法中,所述步骤二中的自定义的领域特定语言不仅仅能够表示步骤一中生成的单一录制测试脚本,还可以表示多个录制测试脚本,其中的multiple键值对就是用来表明每个录制测试脚本对应的最后一个事件的序列号,利用的是states键值对中每个值的seq_id。
本发明提出的面向安卓平台的测试用例自动化生成方法中,所述步骤三中的自动和安卓应用程序进行交互,并生成相应的状态转换模型,是指交互前可提供步骤二得到的录制事件序列脚本,分为两类功能,一类为起始事件序列脚本(必备),从安卓应用程序第一次启动开始引导交互场景,另一类为任意阶段事件序列脚本(可选),在交互过程中遇到了某些状态时根据脚本进行引导,故在给定交互事件数量N之后和安卓应用程序交互,包括以下步骤:
B1:根据起始事件序列脚本的multiple内容得到该脚本中包含的录制测试脚本的数量n,得到每个录制测试脚本事件回放轮回的总交互事件数量N/n;
B2:清空该应用程序的数据及缓存等记录,启动该应用程序,根据起始事件序列脚本中表明的某个录制测试脚本执行其事件;
B3:起始事件序列脚本中表明的某个录制测试脚本执行完了之后,根据N/n的值继续进行交互,若提供了任意阶段事件序列脚本,则将当前状态和任意阶段事件序列脚本中表明的的某个录制测试脚本的第一个状态进行匹配,若匹配了则顺序执行完该录制测试脚本,然后再采用带权重偏好的随机选择算法动态选择当前图形用户界面的某个事件继续进行交互;若没有提供任意阶段事件序列脚本,则直接采用带权重偏好的随机选择算法动态选择当前图形用户界面的某个事件继续进行交互;
B4:执行完了每轮N/n的交互事件后(最后一轮除外),从B2步骤开始继续执行。
本发明提出的面向安卓平台的测试用例自动化生成方法中,所述步骤三中生成的状态转换模型也是基于一种轻量级的数据交换格式即json,它主要由以下三部分组成:
C1:结点(node),每个结点表明与安卓应用程序交互时的某个图形界面用户状态,信息包括特有的状态哈希值state_str、可能和其它状态有相同的界面结构的哈希值structure_str、截图文件的存储路径和对应的activity等;
C2:边(edge),每条边表明某两个状态之间的单向转换所对应的事件,信息包括这个事件起始状态的state_str、这个事件结束状态的state_str、事件的类型和事件对应的操作对象等;
C3:本次交互过程的其它信息,包括该安卓应用程序的包名、交互时安卓设备的序列号、结点总数、边总数、该安卓应用程序的总activity数目和本次交互所到达的activity数目等。
本发明提出的面向安卓平台的测试用例自动化生成方法中,所述步骤四包括以下步骤:
D1:给定要生成的测试用例的事件总数Num;
D2:利用原模型结点和边信息将其转换为聚合的新模型;
D3:根据该聚合状态转换模型从起始node和其出边开始随机生成事件总数为Num的待定测试用例;
D4:清空该应用程序数据及缓存等记录,启动该应用程序,从初始状态开始检查能否复现待定测试用例,若能则为有效测试用例,若不能就舍弃该待定测试用例并回到D3步骤继续执行。
基于以上方法,本发明还提出了一种面向安卓平台的测试用例自动化生成系统,包括:
测试脚本生成模块,其用于利用安卓应用测试框架AndroidViewClient和安卓应用进行交互,录制安卓图形用户界面的事件序列,生成相应的录制测试脚本;
事件序列脚本生成模块,其用于通过程序分析方法,将所述录制测试脚本转换成为抽象语法树,提取树的结点信息生成基于自定义的领域特定语言的录制事件序列脚本;
模型生成模块,其用于将所述录制事件序列脚本与带权重偏好的随机选择算法结合在一起,去自动和安卓应用程序进行交互,并生成相应的状态转换模型;
测试用例生成模块,其用于将与安卓应用程序交互后得到的状态转换模型进行聚合,根据得到的聚合状态转换模型,生成待定测试用例,检查待定测试用例的有效性,无效则重新生成,有效则为测试用例。
本发明提出的面向安卓平台的测试用例自动化生成方法及系统能够自动生成与安卓应用交互时的较为完整的模型,从而能够生成更为丰富的测试用例用于安卓应用的测试,以提高安卓应用的健壮性和可靠性。
附图说明
图1为本发明面向安卓平台的测试用例自动化生成方法的流程示意图。
图2为本发明的基于自定义的领域特定语言的录制事件序列脚本示例。
图3为本发明的工作流程图。
图4为本发明面向安卓平台的测试用例自动化生成系统的示意图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明提出的面向安卓平台的测试用例自动化生成系统,如图4所示,包括:
测试脚本生成模块,其用于利用安卓应用测试框架AndroidViewClient和安卓应用进行交互,录制安卓图形用户界面的事件序列,生成相应的录制测试脚本;
事件序列脚本生成模块,其用于通过程序分析方法,将所述录制测试脚本转换成为抽象语法树,提取树的结点信息生成基于自定义的领域特定语言的录制事件序列脚本;
模型生成模块,其用于将所述录制事件序列脚本与带权重偏好的随机选择算法结合在一起,去自动和安卓应用程序进行交互,并生成相应的状态转换模型;
测试用例生成模块,其用于将与安卓应用程序交互后得到的状态转换模型进行聚合,根据得到的聚合状态转换模型,生成待定测试用例,检查待定测试用例的有效性,无效则重新生成,有效则为测试用例。
实施例
本实施例以Google Play(由Google为Android设备开发的在线应用程序商店)中的名为Notepad的安卓记事本应用为例对本发明一种面向安卓平台的测试用例自动化生成方法做具体说明,如图3所示,是本发明的工作流程图:
步骤一,录制安卓图形用户界面的事件序列,生成相应的录制测试脚本:
首先系统上连有一个安卓真机或者启动好了一个安卓模拟器(以安卓6.0模拟器为例),通过终端命令python culebra–scale=0.5-UG-ofilepath/record_trace.py启动AndroidViewClient的culebra图形化工具,culebra是模拟器的一个图形用户界面的拷贝,对culebra的图形用户界面的事件操作会体现在模拟器上,故之后的操作便在culebra图形化工具中进行,每个事件例如单击控件和输入框设置文本等和每个事件执行前图形用户界面中的主要控件都会被记录在终端命令的filepath路径下的record_trace.py这个python脚本中。
在模拟器中启动Notepad应用程序,在culebra中刷新后显示出了模拟器的图形用户界面,在Notepad首次启动弹出来了的欢迎对话框中(1)点击CLOSE按钮,(2)点击界面右下角的新建笔记图标,(3)输入Test1,(4)点击界面左上角返回图标总共四个事件完成了在Notepad应用中创建名为Test1的笔记记录的任务,得到的录制测试脚本为trace1.py。清除Notepad数据及缓存等记录重复执行本次录制操作并在第三步将输入Test1改为输入Test2完成了在Notepad应用中创建名为Test2的笔记记录的任务,得到的录制测试脚本为trace2.py。
生成的trace1.py和trace2.py均为从Notepad应用第一次启动开始时就执行的事件序列,其实还可以以同样的方式录制非第一次启动后对应用的某些操作,这两种时机下录制生成的录制测试脚本分别对应步骤二转换后生成的起始事件序列脚本和任意阶段事件序列脚本。
步骤二,将得到的录制测试脚本转换为基于自定义的领域特定语言的录制事件序列脚本:
利用python的ast包将trace1.py这个python文件转换成抽象语法树,原文件中的每条代码信息都以结点的形式呈现在一棵树上,通过自定义遍历树的结点的方式可以提取出每个事件的信息和每个事件执行前界面的主要控件信息,再将这些信息以A1、A2、A3、A4和A5键值对的形式保存下来,最后输出为json格式的脚本文件得到录制事件序列脚本。
如图2所示,以trace1.py中的第一个事件点击CLOSE按钮为例,该按钮控件的text属性为Close,class属性为android.widget.Button,bounds属性为[770,1049][969,1193],事件类型为touch即单击,录制时这些属性均被记录了下来,在进行程序分析转换时会生成A1中的view1,其内容为以上三个属性的键值对用于标志该控件,A2中会生成state1,其内容中的views为view1,即Notepad到了这个状态时界面上判断是否有该控件用于起始事件序列脚本的匹配,其内容中的dump_views为这个状态时界面上有哪些主要控件用于任意阶段事件序列脚本的匹配,其内容中的seq_id为1,A3中会生成operation1,其内容中的事件类型event_type为touch,操作对象target_view为view1,A4中会生成键为state1值为operation1的键值对,表明Notepad应用如果到了state1状态时进行operation1的事件,A5暂时不会生成,只有当trace1.py的4个事件解析转换完了之后会生成键为eachend值为4的键值对,表明转换后的录制事件序列脚本只表示了一个录制测试脚本并且该录制测试脚本共4个事件。同时可支持多个步骤一得到的录制测试脚本的转换生成在一个录制事件序列脚本中,若输入为trace1.py和trace2.py,得到的A5会是键为eachend,值为元素为4,8的列表,表明转换了两个录制测试脚本,分别是前4个事件和后4个事件。
除了BACK或HOME等宏事件以外,任何单击事件、长按事件、设置文本事件或者拖动事件对应的操作对象都会以view的形式出现在转换后的脚本之中,同时会有一个state和operation对应这个view和事件,并且这个state和operation又以键值对的形式出现在main这个字典之中,而BACK或HOME等宏事件出现在前一个最近的有操作对象的opeartion中的事件后面表示一起执行,而A5的multiple就是为了表明转换了几个录制测试脚本并且每个录制测试脚本的事件数各为多少。
不同时机下录制生成的录制测试脚本转换后生成的脚本有两类功能,起始事件序列脚本从应用启动开始时就开始匹配回放引导场景,例如某些安卓应用程序启动时会需要登录或者跳过较长的欢迎页,这时候起始事件序列脚本就可以引导度过这些状态到达应用程序更多的功能界面;任意阶段事件序列脚本是用在交互过程中匹配应用程序状态的,例如在交互中途不小心登出了需要登陆的应用可再次引导登录过程。
步骤三,将得到的录制事件序列脚本与带权重偏好的随机选择算法结合在一起,去自动和安卓应用程序进行交互,并生成相应的状态转换模型:
通过步骤二将转换步骤一得到的trace1.py和trace2.py后,得到的表明这两个脚本的start_trace.json作为起始事件序列脚本,给定200个事件总数,开始自动和模拟器进行交互,Notepad先从头开始执行start_trace.json中表明trace1.py的四个事件,分得的100个事件还剩96个事件将采用带权重偏好的随机选择算法随机选择当前界面的可执行事件并执行事件继续交互。
通过UI Automator获取当前用户界面的控件信息,包括控件类型和控件可执行的事件等,每个可执行事件都会被维护在一个哈希表里,每个可执行事件有三个重要属性,事件被执行次数、事件权重、事件的子事件列表,其中事件权重是指每个事件的权重大小,其会有一个相同的初始值,但是会动态改变,事件的子事件列表是指执行完该事件后哈希表中多了的新事件的数目,表明这个事件可能能够触发跳转至有更多没有探索过的界面。在执行带权重偏好的随机选择算法时会选取当前可执行事件权重最大的事件,若有多个则随机选取一个,执行完成之后更新所选事件的权重,进行下一轮的选择并交互。
在执行完了前100个事件后,清除Notepad应用程序的数据及缓存等记录,然后从头开始执行start_trace.json中表明trace2.py的四个事件,剩下的96个事件继续采用带权重偏好的随机选择算法选择事件进行交互。在200个事件都执行完了之后得到一个较为完整的状态转换模型。该模型以json文本表示,内容包括C1、C2和C3。结点信息中的state_str是根据当前状态所含所有控件的考虑控件内容的字符串拼接后经过摘要算法生成的字符串,而结点信息中的structure_str是根据当前状态所含所有控件的不考虑控件内容的字符串拼接后经过摘要算法生成的字符串,在本例的模型中会有两个结点node1和node2对应创建好了名为Test1的笔记记录状态和名为Test2的笔记记录状态。
步骤四,得到聚合状态转换模型,生成测试用例:
将原模型中具有相同structure_str的所有结点看成一个结点,得到多个具有不同structure_str的结点之间可能会有多条对应转换事件的边的新模型,步骤三得到的原模型中的node1结点和node2结点是具有相同的structure_str的,所以在聚合的状态转换模型中选取事件生成测试用例时能选择出如下两条测试用例,假定给定生成测试用例长度为6:
(1)单击CLOSE,单击新建笔记图标,输入Test1,单击返回图标,长按Test2笔记记录,单击删除图标;
(2)单击CLOSE,单击新建笔记图标,输入Test1,单击返回图标,长按Test1笔记记录,单击删除图标;
由于node1结点和node2结点是相同的结构,在聚合的状态转换模型中以一个结点出现,但有两条边指向别的结点,分别对应长按Test2笔记记录事件和长按Test1笔记记录事件,所以可以生成以上两条测试用例,动态检查测试用例有效性时可以发现,测试用例(1)在执行完第四步后找不到第五步对应的控件,表明这个测试用例无效,而测试用例(2)是可以全部执行完成的,同时测试用例(2)也是一个简单的对删除笔记记录功能的测试。
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (7)
1.一种面向安卓平台的测试用例自动化生成方法,其特征在于,包括以下
步骤:
步骤一:利用安卓应用测试框架AndroidViewClient和安卓应用进行交互,录制安卓图形用户界面的事件序列,生成相应的录制测试脚本;
步骤二:通过程序分析方法,将录制测试脚本转换成为抽象语法树,提取树的结点信息生成基于自定义的领域特定语言的录制事件序列脚本;
步骤二中得到的录制事件序列脚本所基于的自定义的领域特定语言是能够表达步骤一生成的录制测试脚本的另一种结构清晰的形式,它基于一种轻量级的数据交换格式即json,它的内容是以下键值对:
A1:键是views,值是各个view,每个view对应步骤一中录制的某个事件的操作对象,各个view里面又有自己的键值对,对于操作对象是具体控件的,所述view自己的键值对的键包括resource_id、text和content-description三者中的任意一种以及class和bounds;对于操作对象是坐标的,所述view自己的键值对的键只有in_coordinates表示坐标;
A2:键是states,值是各个state,每个state对应步骤一中录制的某个事件时对应的图形用户界面状态,各个state里面又有自己的键值对,键包括views,对应这个state对应事件的操作对象,该值是A1中的某个或多个值;dump_views,对应这个state的图形用户界面的某些控件,用于加大匹配这个state的精确度,值是新的键值对,新的键值对的键是控件名称,值是控件的非空的resource_id、text和content-description三种属性的并集;seq_id,是从1开始逐一递增的数字;
A3:键是operations,值是各个operation,对应于步骤一中录制的某个事件,各个operation里面又有自己的键值对,键包括事件类型和事件对应的操作对象;
A4:键是main,值是一个新的键值对,新的键值对的键是各个state的名称,对应于A2的某个值,值是各个state对应的事件操作名称,对应于A3的某个值;
A5:键是multiple,值是一个新的键值对,新的键值对的键是eachend,值是数字列表;
步骤三:将录制事件序列脚本与带权重偏好的随机选择算法结合在一起,去自动和安卓应用程序进行交互,并生成相应的状态转换模型;步骤三生成的状态转换模型是基于一种轻量级的数据交换格式即json,由以下组成:
C1:结点,每个结点表明与安卓应用程序交互时的某个图形界面用户状态,信息包括特有的状态哈希值state_str、和其它状态有相同的界面结构的哈希值structure_str、截图文件的存储路径和对应的activity;
C2:边,每条边表明某两个状态之间的单向转换所对应的事件,信息包括这个事件起始状态的state_str、这个事件结束状态的state_str、事件的类型和事件对应的操作对象;
C3:本次交互过程的其它信息,包括该安卓应用程序的包名、交互时安卓设备的序列号、结点总数、边总数、该安卓应用程序的总activity数目和本次交互所到达的activity数目;
步骤四:将与安卓应用程序交互后得到的所述状态转换模型进行聚合,根据得到的聚合状态转换模型,生成待定测试用例,检查待定测试用例的有效性,无效则重新生成,有效则为测试用例。
2.根据权利要求1所述的面向安卓平台的测试用例自动化生成方法,其特征在于,步骤一中生成的录制测试脚本形式是python脚本,其中记录的操作对象是控件的单击事件、长按事件和设置文本事件,对应的控件包含控件本身的resource_id、text和content-description三种属性中的任意一种,还包含控件的class属性和控件所在屏幕中的位置范围即bounds属性。
3.根据权利要求1所述的面向安卓平台的测试用例自动化生成方法,其特征在于,步骤二中自定义的领域特定语言能够表示步骤一中生成的单一录制测试脚本,还能够表示多个录制测试脚本,其中的multiple键值对就是用来表明每个录制测试脚本对应的最后一个事件的序列号,利用的是states键值对中每个值的seq_id。
4.根据权利要求1所述的一种面向安卓平台的测试用例自动化生成方法,
其特征在于,步骤三中自动和安卓应用程序进行交互,并生成相应的状态转换模型是指交互前可提供步骤二得到的录制事件序列脚本,包含起始事件序列脚本,从安卓应用程序第一次启动开始引导交互场景,在给定交互事件数量N之后和安卓应用程序交互具体包括以下步骤:
B1:根据起始事件序列脚本的multiple内容得到该脚本中包含的录制测试脚本的数量n,得到每个录制测试脚本事件回放轮回的总交互事件数量N/n;
B2:清空该应用程序的数据及缓存记录,启动该应用程序,根据起始事件序列脚本中表明的某个录制测试脚本执行其事件;
B3:起始事件序列脚本中表明的某个录制测试脚本执行完了之后,根据N/n的值继续进行交互,采用带权重偏好的随机选择算法动态选择当前图形用户界面的某个事件继续进行交互;
B4:执行完最后一轮除外的每轮N/n的交互事件后,从B2步骤开始继续执行。
5.根据权利要求4所述的一种面向安卓平台的测试用例自动化生成方法,其特征在于,步骤B3中,进一步包括任意阶段事件序列脚本,在交互过程中根据脚本进行引导,若提供了任意阶段事件序列脚本,则将当前状态和任意阶段事件序列脚本中表明的某个录制测试脚本的第一个状态进行匹配,若匹配了则顺序执行完该录制测试脚本,然后再采用带权重偏好的随机选择算法动态选择当前图形用户界面的某个事件继续进行交互。
6.根据权利要求1所述的面向安卓平台的测试用例自动化生成方法,其特征在于,步骤四包括以下步骤:
D1:给定要生成的测试用例的事件总数Num;
D2:将状态转换模型中具有相同structure_str的所有结点看成一个结点,得到多个具有不同structure_str的结点之间会有多条对应转换事件的边的新模型;
D3:根据该聚合状态转换模型从起始结点开始随机选择边进行状态的更替,同时将选择的边记录下作为事件序列即待定测试用例直到记录了Num个事件;
D4:清空该应用程序数据及缓存记录,启动该应用程序,从初始状态开始根据生成的待定测试用例的事件对应的操作对象在当前状态开始寻找匹配该操作对象,若能找到便执行该事件,到了新状态之后继续寻找匹配待定测试用例下一个事件对应的操作对象直到执行完了待定测试用例,则说明该待定测试用例是有效的,可作为测试用例;若未能找到该操作对象,则说明该待定测试用例是无效的,就回到D3步骤继续执行。
7.一种面向安卓平台的测试用例自动化生成系统,其特征在于,所述系统采用如权利要求与1-6之任一项所述的面向安卓平台的测试用例自动化生成方法,所述系统包括:
测试脚本生成模块,其用于利用安卓应用测试框架AndroidViewClient和安卓应用进行交互,录制安卓图形用户界面的事件序列,生成相应的录制测试脚本;
事件序列脚本生成模块,其用于通过程序分析方法,将所述录制测试脚本转换成为抽象语法树,提取树的结点信息生成基于自定义的领域特定语言的录制事件序列脚本;
模型生成模块,其用于将所述录制事件序列脚本与带权重偏好的随机选择算法结合在一起,去自动和安卓应用程序进行交互,并生成相应的状态转换模型;
测试用例生成模块,其用于将与安卓应用程序交互后得到的状态转换模型进行聚合,根据得到的聚合状态转换模型,生成待定测试用例,检查待定测试用例的有效性,无效则重新生成,有效则为测试用例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911318530.XA CN111143205B (zh) | 2019-12-19 | 2019-12-19 | 一种面向安卓平台的测试用例自动化生成方法及生成系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911318530.XA CN111143205B (zh) | 2019-12-19 | 2019-12-19 | 一种面向安卓平台的测试用例自动化生成方法及生成系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111143205A CN111143205A (zh) | 2020-05-12 |
CN111143205B true CN111143205B (zh) | 2023-04-21 |
Family
ID=70518933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911318530.XA Active CN111143205B (zh) | 2019-12-19 | 2019-12-19 | 一种面向安卓平台的测试用例自动化生成方法及生成系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111143205B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111694755B (zh) * | 2020-07-31 | 2023-07-18 | 抖音视界有限公司 | 应用程序测试方法、装置、电子设备及介质 |
CN112256591A (zh) * | 2020-11-12 | 2021-01-22 | 北京联创信安科技股份有限公司 | 一种测试用例生成方法、装置、测试设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006309290A (ja) * | 2005-04-26 | 2006-11-09 | Hitachi Ltd | テストプログラム作成支援方法及び装置 |
CN103336742A (zh) * | 2013-07-18 | 2013-10-02 | 北京航空航天大学 | 一种基于Android的自动化软件黑盒测试系统及方法 |
CN106681919A (zh) * | 2016-12-22 | 2017-05-17 | 上海斐讯数据通信技术有限公司 | 一种用户界面自动化测试方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7581212B2 (en) * | 2004-01-13 | 2009-08-25 | Symphony Services Corp. | Method and system for conversion of automation test scripts into abstract test case representation with persistence |
CN107656864A (zh) * | 2016-11-09 | 2018-02-02 | 华东师范大学 | 一种基于概率模型的移动应用自动化测试方法 |
-
2019
- 2019-12-19 CN CN201911318530.XA patent/CN111143205B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006309290A (ja) * | 2005-04-26 | 2006-11-09 | Hitachi Ltd | テストプログラム作成支援方法及び装置 |
CN103336742A (zh) * | 2013-07-18 | 2013-10-02 | 北京航空航天大学 | 一种基于Android的自动化软件黑盒测试系统及方法 |
CN106681919A (zh) * | 2016-12-22 | 2017-05-17 | 上海斐讯数据通信技术有限公司 | 一种用户界面自动化测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111143205A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8903690B2 (en) | Linking graphical user interface testing tools and human performance modeling to enable usability assessment | |
US10769056B2 (en) | System for autonomously testing a computer system | |
CN110427331B (zh) | 基于接口测试工具自动生成性能测试脚本的方法 | |
Ko et al. | Debugging reinvented: asking and answering why and why not questions about program behavior | |
US8402434B2 (en) | Graphical user interface (GUI) script generation and documentation | |
CN104809056B (zh) | 一种接口测试代码的生成方法和装置 | |
Mariani et al. | AutoBlackTest: a tool for automatic black-box testing | |
CN109739855B (zh) | 实现数据表拼接及自动训练机器学习模型的方法和系统 | |
US9594543B2 (en) | Activity diagram model-based system behavior simulation method | |
CN111143205B (zh) | 一种面向安卓平台的测试用例自动化生成方法及生成系统 | |
EP3227785B1 (en) | Playback and automatic execution of a process to control a computer system | |
CN112506766B (zh) | 交互式测试用例的自动生成方法 | |
El-Ramly et al. | Modeling the system-user dialog using interaction traces | |
Bellucci et al. | Automatic reverse engineering of interactive dynamic web applications to support adaptation across platforms | |
CN107038117B (zh) | 一种基于事件处理函数间定义-引用的web自动化测试方法 | |
US20160162398A1 (en) | Automated test generation and execution for testing a process to control a computer system | |
US11372750B2 (en) | Test script for application under test having abstracted action group instantiations | |
Jiang et al. | Log-it: Supporting Programming with Interactive, Contextual, Structured, and Visual Logs | |
Bowen et al. | UI-design driven model-based testing | |
Guo et al. | Crowdsourced requirements generation for automatic testing via knowledge graph | |
Nguyen et al. | Model-based testing of multiple GUI variants using the GUI test generator | |
CN109656816A (zh) | 控件识别方法、装置、设备以及存储介质 | |
Nabuco et al. | Inferring ui patterns with inductive logic programming | |
Su et al. | Constructing a system knowledge graph of user tasks and failures from bug reports to support soap opera testing | |
Pulido | Applying behavior driven development practices and tools to low-code technology |
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 |