CN107656864A - 一种基于概率模型的移动应用自动化测试方法 - Google Patents
一种基于概率模型的移动应用自动化测试方法 Download PDFInfo
- Publication number
- CN107656864A CN107656864A CN201610985778.1A CN201610985778A CN107656864A CN 107656864 A CN107656864 A CN 107656864A CN 201610985778 A CN201610985778 A CN 201610985778A CN 107656864 A CN107656864 A CN 107656864A
- Authority
- CN
- China
- Prior art keywords
- event
- test
- executable
- probability
- application
- 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
Links
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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3676—Test management for coverage analysis
-
- 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
本发明公开了一种基于概率模型的移动应用自动化测试方法,包括如下步骤:通过分析被测应用获取当前界面上的可执行事件;综合权衡可执行事件的控件类型、控件执行次数以及后继子节点的数量确定每个可执行事件的综合权重值,并选择出下一个可执行事件;执行所选中的可执行事件;在执行过程中,记录下每个执行后的程序状态,获取到所执行状态的迁移图,从而构建被测应用的行为模型;采用蒙德卡罗算法来调整行为模型上的概率,根据概率产生测试用例;执行测试用例并统计测试覆盖率,记录执行崩溃的测试用例,完成测试过程。本发明方法有效提升测试效率,提高测试的充分性,可以广泛运用于移动应用自动化测试领域。
Description
技术领域
本发明属于嵌入式系统技术领域,尤其涉及一种基于概率模型的移动应用自动化测试方法。
背景技术
随着智能手机的兴起,基于移动平台的应用得到了快速增长。当前的主流手机平台包括iOS和Android两个平台,其中Android平台由Google发布,基于Linux内核并采用开放源码的协议。在随后的发展过程中,Android平台由于其开源、易用等特性而受到了越来越多的手机生产厂商和开发者的喜爱,并逐渐占有了超过80%的市场份额。Android应用程序已经逐步渗透到人们的日常生活之中,同人们的日常生活越来越密不可分。对于Android应用开发者而言,快速地推出应用有助于占领市场,从而赢得更多的用户。但未经细致测试的Android应用将可能包含有未知异常及错误,从而导致用户因应用体验不佳而流失。因此,应用开发者的一大难题便是如何对开发的应用进行充分的测试,从而减少可能存在的异常及错误,提升应用产品的质量。
Android应用测试可分为人工测试及自动化测试两类。其中,人工测试方法主要由测试人员手工编写测试用例进行测试。该方法由于过度依赖于测试人员自身素质,故测试质量参差不齐,无法保证测试结果的充分性。同时,人工测试效率低下,无法有效地进行回归测试。随着Android应用程序的不断复杂,其测试任务也越来越繁重,因而自动化测试应运而生。当前的移动应用自动化测试方法主要包括:(1)编写-执行测试法,(2)录制回放测试法,(3)关键字测试法,(4)随机测试法,(5)基于深度或广度优先的事件提取测试法等。其中(1)、(2)、(3)方法仍然需要人工参与编写或录制测试用例,无法完全自动化测试。(4)、(5)能够完全自动地自动化测试移动应用,但随机测试法只能通过随机方式来生成测试用例,无法定向地针对功能进行测试,在较短的时间内便会达到测试瓶颈。而基于深度或广度的优先事件提取测试法执行过程较为死板,无法有效地针对不同事件类型进行测试,测试覆盖率较低。
为了克服现有技术存在的上述缺陷,本发明提出了一种基于概率模型的移动应用测试方法,提高测试效率,提升测试质量。
发明内容
本发明提出了一种基于概率模型的移动应用自动化测试方法,包括如下步骤:
可执行事件提取步骤:通过对被测应用的代码静态分析及控件动态分析,获取当前应用界面上的可执行事件集合;
可执行事件选择步骤:综合权衡可执行事件的控件类型、控件执行次数以及后继子节点的数量确定每个可执行事件的综合权重值,并根据所述综合权重值采用带有偏好的随机选择算法选择出下一个可执行事件;
可执行事件执行步骤:执行所选中的所述可执行事件;
行为模型生成步骤:在执行过程中,记录下每个可执行事件执行后的程序状态,获取到所执行状态的迁移图,构建一个能描述移动应用所有行为的有限状态自动机得到被测应用的初级行为模型;
测试用例生成步骤:采用蒙德卡罗算法来调整所述初级行为模型上的概率,最终得到针对被测应用被优化过的基于概率的概率行为模型,再根据所述概率行为模型来产生测试事件序列,得到测试用例集;
测试用例执行步骤:执行所述测试用例集并统计测试覆盖率,记录执行崩溃的测试用例,并在程序崩溃点启动事件恢复操作,再次开始测试,以达到更高的测试覆盖率,最终完成测试过程。
本发明提出的所述基于概率模型的移动应用自动化测试方法中,所述可执行事件提取步骤包含以下步骤:
步骤A1:静态分析被测应用的底层代码,通过代码中的注册接口获取注册的事件;
步骤A2:动态运行被测应用后,抓取屏幕控件信息并根据控件类型分配不同的事件;
步骤A3:将静态分析的所述注册的时间及动态分析的所述不同的事件相结合,生成可执行事件集;
步骤A4:在所述可执行事件集中根据需求加入系统事件;所述系统事件用于保证在该可执行事件集中有至少一个可执行事件,使执行过程不会陷入所述可执行事件集中无法跳出。比如,在可执行事件集中,当事件执行完毕或程序无其他可执行事件时,往往需要退回至前一个页面以防止程序卡死。故,在已经获取的事件集Ta中,按照需要加入back事件,从而构成完成的可执行事件集,使程序卡死崩溃后能恢复工作,完成可执行事件集的生成工作。总体而言,所需加入的系统事件对应关系如下:
对所有不含back事件的事件集而言,直接添加back事件。
对于不含menu事件的事件集而言,直接添加menu事件。
对于事件集执行过程中超时情况,直接加入back事件并执行back。
对于所添加的系统事件,按照固定的概率触发(根据实际需要设定)。该概率不受该系统事件的执行次数影响。
本发明提出的所述基于概率模型的移动应用自动化测试方法中,所述可执行事件选择步骤包含以下步骤:所述系统事件按照固定的概率或根据实际需要触发,概率不受该系统事件的执行次数影响。
本发明提出的所述基于概率模型的移动应用自动化测试方法中,所述可执行事件选择步骤包含以下步骤:
步骤B1:根据可执行事件集中的控件类型、控件执行次数以及控件后继子节点来计算控件权重;
步骤B2:从权重最高的可执行事件集中随机选择出一个事件作为当前可执行事件。
本发明提出的所述基于概率模型的移动应用自动化测试方法中,所述行为模型生成步骤包含以下步骤:
步骤C1:记录下当前可执行事件的状态(s0);
步骤C2:记录下执行当前可执行事件(t)后的状态(s1);
步骤C3:对比前后状态的迁移关系,在状态迁移关系表中查找当前是否存在相应的迁移关系;若不存在,则将所述迁移关系记录在所述状态迁移关系表中;
步骤C4:不断循环步骤C1至C3,直到构建出整个被测应用的初级行为模型。
本发明提出的所述基于概率模型的移动应用自动化测试方法中,所述初级行为模型是有限状态自动机,能表示该被测应用的全部操作,所述初级行为模型的节点表示应用状态,每一条边表示一个输入事件,每一个输入事件使用一个5元组来表示这个有限状态自动机M=(Q,∑,δ,s0,F)来表示,其中Q和∑分别表示应用状态集合和输入事件集合,s0∈Q表示应用的开始状态(开始页面),F表示应用的终止状态集合,δ:Q×∑→Q表示迁移关系,即应用状态s∈Q接受一个输入事件e∈∑,并返回一个新的状s’。
本发明提出的所述基于概率模型的移动应用自动化测试方法中,所述测试用例生成步骤包含以下步骤:
步骤D1:根据获取的移动应用行为模型的事件迁移关系的数量来给出每个状态转移边的执行概率;
步骤D2:根据状态转移边的执行概率来随机选择边,选择的状态点长度大于预先设定的测试用例事件长度阈值时,将针对所选择的转移边及对应的状态来生成测试用例;
步骤D3:对产生的测试用例采用蒙德卡罗算法来对行为模型上的概率进行修正,对产生的测试用例集进行执行并统计其合并覆盖率,对于得到覆盖率,将随机调整其某一条边上的概率,并重新生成测试用例,测试覆盖率结果;对于覆盖率升高的结果,将直接采用新的概率,对于覆盖率降低的结果,将根据概率接收指标来接收该结果。
本发明提出的所述基于概率模型的移动应用自动化测试方法中,概率接收指标以如下公式表示:
其中,p(x’)及p(x)分别代表当前执行所获得的覆盖率评价指标及前一次所获得的覆盖率评价指标。通过该方法,能够不断地优化测试用例,得到一个较优的测试用例集。P(x)的评价方式有多种多样,在该方法中可以使用代码总体覆盖率或测试用例多样性等多个指标来评价。同时,该方法能够对评价指标根据需要进行拓展。
本发明的有益效果在于:本发明方法能够综合考虑执行事件的控件类型、执行次数、后继子节点等影响关系,使得在更少的事件内便能达到一个更高的覆盖率,有效提升测试效率,提高测试的充分性,可以广泛运用于移动应用自动化测试领域。
附图说明
图1是本发明基于概率模型的移动应用自动化测试方法的结构框架图。
图2是具体实例中Monkey随机测试方法、A3E深度优先测试方法、及本发明测试方法关于25个开源安卓应用的测试覆盖率对比的折线图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明方法的主要过程包括移动应用可执行事件提取、可执行事件选择、可执行事件执行、行为模型生成、测试用例生成及测试用例执行,共6个大步骤。该方法的整体框架如图1所示,具体包括如下步骤:
可执行事件提取步骤:通过对被测应用的代码静态分析及控件动态分析,获取当前界面上的可执行事件;
可执行事件选择步骤:综合权衡可执行事件的控件类型、控件执行次数以及后继子节点的数量确定每个可执行事件的综合权重值,并根据所述综合权重值采用带有偏好的随机选择算法选择出下一个可执行事件;
可执行事件执行步骤:执行所选中的所述可执行事件;
行为模型生成步骤:在执行过程中,记录下每个执行后的程序状态,获取到所执行状态的迁移图,从而构建被测应用的初级行为模型;
测试用例生成步骤:采用蒙德卡罗算法来调整所述初级行为模型上的概率,根据所述概率产生测试用例;
测试用例执行步骤:执行所述测试用例并统计测试覆盖率,记录执行崩溃的测试用例,完成测试过程。
本发明针对概率行为模型的改进点在于概率行为模型的建立过程:
(1)构建初始行为模型时,考虑移动应用的事件序列和状态迁移,结合静态和动态分析技术来分析应用代码,先通过静态分析技术发现代码底层实现的事件(如,长按等),然后使用动态分析技术结合独创的加权屏幕控件搜索策略来发现应用图形界面的可执行事件和程序状态,在应用运行时的图形界面结构上产生输入事件,并动态的优先考虑执行这些事件,来达到更明确和有效的用户图形界面遍历,得到上述的能表示该移动应用全部操作的有限状态自动机,即移动应用的行为模型。
(2)在实际执行过程中,通过在该移动应用的多次模拟执行中,以每个输入事件被执行到的频率为依据来计算概率,从而确定基于概率的初始行为模型,并且对执行中重复访问的应用状态(应用界面)会进行合并,简化概率行为模型。
(3)使用蒙德卡罗算法来修正初始行为模型上的概率,最终得到针对被测应用被优化过的基于概率的行为模型。
本发明所提出的所述的基于概率模型的移动应用自动化测试方法中,所述可执行事件提取步骤含以下步骤:
步骤A1:静态分析被测应用的底层代码,通过代码中的注册接口获取注册的事件;
该步骤中,主要依靠对代码的静态分析来实现。对于Android应用而言,其事件往往通过注册接口及继承接口来实现分别如下表1和表2所示:
表1注册接口示例
注册接口 | 事件 |
setOnClickListener | 单击事件 |
setOnLongClickListener | 长按事件 |
setOnFocusChangeListener | 聚焦改变事件 |
setOnTouchListener | 触摸事件 |
setOncreateContextMenuListener | 菜单事件 |
setOnKeyListener | 键盘事件 |
表2继承接口示例
继承接口 | 事件 |
onCreateOptionsMenu | 生成菜单事件 |
onCreateContextMenu | 生成上下文菜单事件 |
通过对源代码中的注册接口及继承接口的扫描,便可以得到注册或继承的该类事件,从而得到静态分析事件集Ts。
步骤A2:动态运行被测应用之后,抓取屏幕控件信息并根据控件类型分配不同的事件;除静态分析之外,在Android应用运行过程中也将动态收集可执行事件,使得获取的事件集更为完整。在该过程中,前端能够监测到当前页面上所有的控件信息,并根据控件类型来分配不同的可执行事件。
如表3所示,表3中显示了部分控件类型及其分配的对应事件:
表3控件事件示例
控件名称 | 控件描述 | 分配事件 |
TextView | 用于显示文本 | click |
EditText | 文本编辑框,可由用户输入内容 | Edittext |
Button | 按钮 | click |
CheckBox | 复选框 | click |
RadioButton | 单选框 | click |
ImageButton | 图片按钮 | click |
ImageView | 图片 | click |
MenuItem | 菜单 | click |
DigitalClock | 数字时钟 | click |
SeekBar | 滑动条 | click |
通过动态事件分配后,将得到一个对应该界面的事件集合Td。
步骤A3:将静态分析及动态分析的事件相结合,生成可执行事件集;在该步骤中,将静态分析所得的事件集和动态分析所得的事件集进行合并,去除重复的事件,从而得到一个完整的事件集Ta。
步骤A4:在可执行事件集中根据需要加入back等系统事件,完成可执行事件集的生成工作。
在可执行事件集中,当事件执行完毕或程序无其他可执行事件时,往往需要退回至前一个页面以防止程序卡死。故,在已经获取的事件集Ta中,按照需要加入back事件,从而构成完成的可执行事件集。总体而言,对所有不含back事件的事件集而言,直接添加back事件。对于不含menu事件的事件集而言,直接添加menu事件。对于事件集执行过程中超时情况,直接加入back事件并执行back。对于所添加的系统事件,按照固定的概率触发(根据实际需要设定)。该概率不受该系统事件的执行次数影响。
本发明所提出的所述的基于概率模型的移动应用自动化测试方法中,所述可执行事件选择步骤包含以下步骤:
步骤B1:根据可执行事件集中的控件类型、控件执行次数以及控件后继子节点来计算控件权重;
在可执行事件集中,不同种类的控件应该分配不同的权重,否则,将会有大量的时间浪费在执行无意义的事件上。在这里,我们主要考虑被执行控件的类型、执行次数以及后继子节点三个因素来计算权重,具体如下。
①控件类型。不同的控件类型所包含的可执行事件概率并不相同。例如,textview通常用来显示描述性文字,而不绑定可执行事件,故该类控件的权重相应较低。
②执行次数。对于一个控件而言,被执行的次数越多,则该控件下次被执行的概率也将相应降低,从而把有限的执行次数分配给还未被执行的控件上去,发现更大的可执行空间,提高执行效率。
③后继子节点数。如果一个控件被执行后,能够发现更多的潜在可执行事件,那么该控件被执行的概率应该相应提高。
综合以上三点,控件的权重可以用如下带有权重偏好的随机选择算法1来计算,以下算法1的主要计算步骤为:
1)对于本次被选中的可执行事件ti,首先计算权重w1=m*getTypeWeight(ti),即m和该事件类型的权重值的乘积;然后,获取该控件事件触发后所有的后续的子控件事件,计算权重w2:
即n和所有子事件的空间类型的权重和的乘积,其中m,n为调节参数,得到事件ti的权重为即w1和w2的和与该事件已被执行的次数的比值,更新事件ti的权重。
2)在权重最大的事件集中随机选择出一个作为下一次的执行事件。
算法1对于事件的权重计算综合考虑了控件的类型,后续子事件执行情况以及该事件已经被执行的次数,能够执行尽可能多的程序事件来描述应用的行为,来构造更完整的,更具代表性,更贴近实际执行情况的概率行为模型。
算法1带有权重偏好的随机选择算法
步骤B2:从权重最高的可执行事件集中随机选择出一个事件作为当前可执行事件。如以上算法1所示,从权重最高的集合中随机选出一个事件作为当前可执行事件即可。
在获取当前执行事件之后,通过Android的API来调用执行。
本发明所提出的所述的基于概率模型的移动应用自动化测试方法中,所述初级行为模型生成步骤包含以下步骤:
步骤C1:记录下当前的状态,s0;
步骤C2:记录下执行事件t后的状态,s1;
步骤C3:将S0与S1相对比。在状态迁移关系中查找当前是否存在s0到s1的迁移关系。若存在,则无需做任何事。若不存在,则将s0到s1的状态记录在状态迁移关系中;
在本实施例的状态合并中,可以通过如下算法2来检查状态是否重复。
算法2状态合并算法
步骤C4:不断循环该过程,直到构建出整个被测应用的初级行为模型。该构建模型的具体算法3如下所示,主要计算步骤为:
1)首先根据静态分析应用代码得到的事件为初始的可执行事件集合W,获取当前页面(程序状态)的可调用事件集合E,将E中的事件加入W,并更新W中每一个事件e的权重,每次选择W中权重最大的事件来执行,直到执行完W中的所有事件或者系统超时,构建最终概率行为模型。
2)定义Tabu为禁止事件列表,该列表表示可能会触发应用程序的未知状态的特殊事件,当选择可调用事件时,不选择Tabu列表中的事件。当遇到新的触发未知状态的特殊事件时,将该事件加入禁止事件列表,并重启应用或退回到之前的页面,调用恢复应用操作。
3)更新可执行事件集合W中事件e的权重时,获取e的所有子事件,根据没有被执行过的子事件的数目来调整e的权重,没有执行的子事件数量越多,e的权重值越大,以使得能执行尽可能多的程序事件,来构造更完整的概率行为模型。
以下算法3将可能会触发应用程序的未知状态的特殊事件提取到禁止事件列表中,并对进入未知状态的应用程序执行恢复操作,重启应用会退回到之前的页面。比如,在可执行事件集中,当事件执行完毕或程序无其他可执行事件时,往往需要退回至前一个页面以防止程序卡死。故,在已经获取的事件集Ta中,按照需要加入back事件,从而构成完整的可执行事件集,使程序卡死崩溃后能恢复工作,完成可执行事件集的生成工作。
算法3本发明模型构造算法
基于上述步骤获得的初级行为模型实际上是一个有限状态自动机,能表示该移动应用的全部操作,模型的节点表示应用状态(即一个应用页面),每一条边表示一个输入事件。使用一个5元组来表示这个有限状态自动机M=(Q,∑,δ,s0,F),其中Q和∑分别表示应用状态集合和输入事件集合,s0∈Q表示应用的开始状态(开始页面),F表示应用的终止状态集合,δ:Q×∑→Q表示迁移关系,即应用状态s∈Q接受一个输入事件e∈∑,并返回一个新的状s’。实际执行该移动应用,并记录执行每一个事件的频率,将这个频率作为初始的选择该事件的概率,每一条边表示的输入事件都有相应的概率,得到的这个基于概率的状态迁移图即是移动应用初始行为模型。采用蒙德卡罗算法来调整所述行为模型上的概率,最终得到针对被测应用被优化过的基于概率的行为模型。
本发明所提出的所述的基于概率模型的移动应用自动化测试方法中,所述测试用例生成步骤包含以下步骤:
步骤D1:根据获取的移动应用初级行为模型的事件迁移关系的多少来给出每个状态转移边的执行概率;在构建好的初级行为模型中,每个状态到相邻状态的迁移都由事件边组成。根据事件边出现的次数即可以完成概率的分配。对于出现次数越多的边,其概率将越大,否则概率将越小。
步骤D2:根据状态转移边的执行概率来产生测试用例;
从根节点开始,按照概率来依次选择状态点。对于每个状态点而言,其上面记录有一个最大的选择次数信息。当该状态点每选择一次时,该最大选择次数便会减少1。当最大次数为0后,若相邻的其他路径依旧有状态点不为0,那么将选择其他状态点最为下一个状态点。如果所有的相邻状态点最大执行次数都为0,那么将把所有相关节点的最大执行次数恢复到最开始的最大执行次数,进行一次新的循环。通过该方法能够产生若干个测试用例,并形成测试用例集。
D3:对产生的测试用例采用蒙德卡罗算法来对初级行为模型上的概率进行修正,以使得获取更高的覆盖率及更高的测试用例多样性;
对产生的测试用例集进行执行,并统计其合并覆盖率。对于得到覆盖率后,将随机调整其某一条边上的概率,并重新生成测试用例,测试覆盖率结果。对于覆盖率升高的结果,将直接采用新的概率。对于覆盖率降低的结果,将通过一定的概率来接收该结果。其概率接收指标如下:
其中,p(x’)及p(x)分别代表当前执行所获得的覆盖率评价指标及前一次所获得的覆盖率评价指标。该表达式将表明,当p(x’)>=p(x)时,将直接接收当前结果。当p(x’)<p(x)时,将按照概率来接收。通过该方法,能够不断地优化测试用例,得到一个较优的测试用例集。P(x)的评价方式有多种多样,在该方法中可以使用代码总体覆盖率或测试用例多样性等多个指标来评价。同时,该方法能够对评价指标根据需要进行拓展。
本发明所提出的所述的基于概率模型的移动应用自动化测试方法中,所述测试用例执行步骤包含以下步骤:
步骤E1:执行所有测试用例;
步骤E2:记录执行过程中的崩溃测试用例,反馈测试结果。
本基于概率模型的移动应用自动化测试方法包含了可执行事件的提取、行为模型生成、测试用例生成及执行的完整移动应用测试过程,能够很好地解决当前移动应用自动化测试方法中覆盖率较低、测试过程不够灵活等特点,可以广泛运用于移动应用自动化测试领域。
本发明方法能够有效地提高移动应用的测试用例生成效率,在有限的执行次数内达到一个较高的测试覆盖率。在方法评估实施例中,采用了来自F-droid的25个开源Android应用。该应用包含了影音娱乐、手机通讯、时间管理、运动健康、科学教育、写作办公等主要应用软件,通过与Monkey随机测试方法及A3E深度优先测试方法的对比来展示本方法的有效性。通过表4与图2的测试结果可以看出,本发明基于概率模型的测试方法的覆盖率84%以上均超过Monkey及A3E,证明了本发明方法的有效性。
表4Monkey、A3E及本方法覆盖率对比
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (8)
1.一种基于概率模型的移动应用自动化测试方法,其特征在于,包括如下步骤:
可执行事件提取步骤:通过对被测应用的代码静态分析及控件动态分析,获取当前应用界面上的可执行事件集合;
可执行事件选择步骤:综合权衡可执行事件的控件类型、控件执行次数以及后继子节点的数量确定每个可执行事件的综合权重值,并根据所述综合权重值采用带有偏好的随机选择算法选择出下一个可执行事件;
可执行事件执行步骤:执行所选中的所述可执行事件;
行为模型生成步骤:在执行过程中,记录下每个可执行事件执行后的程序状态,获取到所执行状态的迁移图,构建一个能描述移动应用所有行为的有限状态自动机得到被测应用的初级行为模型;
测试用例生成步骤:采用蒙德卡罗算法来调整所述初级行为模型上的概率,最终得到针对被测应用被优化过的基于概率的概率行为模型,再根据所述概率行为模型来产生测试事件序列,得到测试用例集;
测试用例执行步骤:执行所述测试用例集并统计测试覆盖率,记录执行崩溃的测试用例,并在程序崩溃点启动事件恢复操作,再次开始测试,以达到更高的测试覆盖率,最终完成测试过程。
2.如权利要求1所述的基于概率模型的移动应用自动化测试方法,其特征在于,所述可执行事件提取步骤包含以下步骤:
步骤A1:静态分析被测应用的底层代码,通过代码中的注册接口获取注册的事件;
步骤A2:动态运行被测应用后,抓取屏幕控件信息并根据控件类型分配不同的事件;
步骤A3:将静态分析的所述注册的事件及动态分析的所述不同的事件相结合,生成可执行事件集;
步骤A4:在所述可执行事件集中根据需求加入系统事件;所述系统事件用于保证在该可执行事件集中有至少一个可执行事件,使执行过程不会陷入所述可执行事件集中无法跳出。
3.如权利要求2所述的基于概率模型的移动应用自动化测试方法,其特征在于,所述可执行事件选择步骤包含以下步骤:所述系统事件按照固定的概率或根据实际需要触发,概率不受该系统事件的执行次数影响。
4.如权利要求2所述的基于概率模型的移动应用自动化测试方法,其特征在于,所述可执行事件选择步骤包含以下步骤:
步骤B1:根据可执行事件集中的控件类型、控件执行次数以及控件后继子节点来计算控件权重;
步骤B2:从权重最高的可执行事件集中随机选择出一个事件作为当前可执行事件。
5.如权利要求3所述的基于概率模型的移动应用自动化测试方法,其特征在于,所述行为模型生成步骤包含以下步骤:
步骤C1:记录下当前可执行事件的状态(s0);
步骤C2:记录下执行当前可执行事件(t)后的状态(s1);
步骤C3:对比前后状态的迁移关系,在状态迁移关系表中查找当前是否存在相应的迁移关系;若不存在,则将所述迁移关系记录在所述状态迁移关系表中;
步骤C4:不断循环步骤C1至C3,直到构建出整个被测应用的初级行为模型。
6.如权利要求5所述的基于概率模型的移动应用自动化测试方法,其特征在于,所述初级行为模型是有限状态自动机,能表示该被测应用的全部操作,所述初级行为模型的节点表示应用状态,每一条边表示一个输入事件,每输入一个输入事件使用一个5元组来表示这个有限状态自动机M=(Q,∑,δ,s0,F),其中Q和∑分别表示应用状态集合和输入事件集合,s0∈Q表示应用的开始状态(开始页面),F表示应用的终止状态集合,δ:Q×∑→Q表示迁移关系,即应用状态s∈Q接受一个输入事件e∈∑,并返回一个新的状s’。
7.如权利要求4所述的基于概率模型的移动应用自动化测试方法,其特征在于,所述测试用例生成步骤包含以下步骤:
步骤D1:根据获取的移动应用行为模型的事件迁移关系的数量来给出每个状态转移边的执行概率;
步骤D2:根据状态转移边的执行概率来随机选择边,选择的状态点长度大于预先设定的测试用例事件长度阈值时,将针对所选择的转移边及对应的状态来生成测试用例;
步骤D3:对产生的测试用例采用蒙德卡罗算法来对行为模型上的概率进行修正,对产生的测试用例集进行执行并统计其合并覆盖率,对于得到覆盖率,将随机调整其某一条边上的概率,并重新生成测试用例,测试覆盖率结果;对于覆盖率升高的结果,将直接采用新的概率,对于覆盖率降低的结果,将根据概率接收指标来接收该结果。
8.如权利要求4所述的基于概率模型的移动应用自动化测试方法,其特征在于,概率接收指标以如下公式表示:
<mfenced open = "" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>A</mi>
<mi>c</mi>
<mi>c</mi>
<mi>e</mi>
<mi>p</mi>
<mi>t</mi>
<mi>R</mi>
<mi>a</mi>
<mi>t</mi>
<mi>i</mi>
<mi>o</mi>
<mrow>
<mo>(</mo>
<msup>
<mi>x</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mi>min</mi>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>,</mo>
<mfrac>
<mrow>
<mi>p</mi>
<mrow>
<mo>(</mo>
<msup>
<mi>x</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
<mo>*</mo>
<mi>q</mi>
<mrow>
<mo>(</mo>
<msup>
<mi>x</mi>
<mo>&prime;</mo>
</msup>
<mo>|</mo>
<msub>
<mi>x</mi>
<mi>t</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>p</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>x</mi>
<mi>t</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>*</mo>
<mi>q</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>x</mi>
<mi>t</mi>
</msub>
<mo>|</mo>
<msup>
<mi>x</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<mi>min</mi>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>,</mo>
<mfrac>
<mrow>
<mi>p</mi>
<mrow>
<mo>(</mo>
<msup>
<mi>x</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>p</mi>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>)</mo>
</mrow>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
其中,p(x’)及p(x)分别代表当前执行所获得的覆盖率评价指标及前一次所获得的覆盖率评价指标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610985778.1A CN107656864A (zh) | 2016-11-09 | 2016-11-09 | 一种基于概率模型的移动应用自动化测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610985778.1A CN107656864A (zh) | 2016-11-09 | 2016-11-09 | 一种基于概率模型的移动应用自动化测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107656864A true CN107656864A (zh) | 2018-02-02 |
Family
ID=61126615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610985778.1A Pending CN107656864A (zh) | 2016-11-09 | 2016-11-09 | 一种基于概率模型的移动应用自动化测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107656864A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857671A (zh) * | 2019-02-15 | 2019-06-07 | 广州视源电子科技股份有限公司 | 测试用例的生成方法、装置、服务器及存储介质 |
CN110083529A (zh) * | 2019-03-20 | 2019-08-02 | 北京字节跳动网络技术有限公司 | 自动化测试方法、装置、介质和电子设备 |
CN110347593A (zh) * | 2019-06-26 | 2019-10-18 | 贝壳技术有限公司 | 流程测试方法及装置 |
CN110580222A (zh) * | 2019-08-29 | 2019-12-17 | 清华大学 | 一种软件测试用例生成方法及系统 |
CN111060325A (zh) * | 2019-12-13 | 2020-04-24 | 斑马网络技术有限公司 | 测试场景的构造方法、装置、电子设备及存储介质 |
CN111143205A (zh) * | 2019-12-19 | 2020-05-12 | 华东师范大学 | 一种面向安卓平台的测试用例自动化生成方法及生成系统 |
CN111290966A (zh) * | 2020-03-09 | 2020-06-16 | 南京大学 | 提高安卓应用测试覆盖率的测试用例分解组合方法和系统 |
CN111538649A (zh) * | 2020-03-19 | 2020-08-14 | 南京邮电大学 | 一种基于selenium测试工具的web应用系统自动化测试的方法 |
CN111538652A (zh) * | 2020-03-30 | 2020-08-14 | 中国平安人寿保险股份有限公司 | 一种应用控件测试方法及相关设备 |
CN111694756A (zh) * | 2020-07-31 | 2020-09-22 | 北京字节跳动网络技术有限公司 | 一种应用程序测试方法及装置 |
CN112052156A (zh) * | 2020-07-15 | 2020-12-08 | 杭州木链物联网科技有限公司 | 一种模糊测试方法、装置和系统 |
CN114722946A (zh) * | 2022-04-12 | 2022-07-08 | 中国人民解放军国防科技大学 | 基于概率模型检测的无人机异步行动与协同策略合成方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102368226A (zh) * | 2011-10-10 | 2012-03-07 | 南京大学 | 一种基于扩展有限状态机可行路径分析的测试用例自动生成方法 |
CN102831055A (zh) * | 2012-07-05 | 2012-12-19 | 陈振宇 | 基于加权属性的测试用例选择方法 |
US20150261657A1 (en) * | 2014-03-13 | 2015-09-17 | Infosys Limited | Methods for generating test suites and devices thereof |
-
2016
- 2016-11-09 CN CN201610985778.1A patent/CN107656864A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102368226A (zh) * | 2011-10-10 | 2012-03-07 | 南京大学 | 一种基于扩展有限状态机可行路径分析的测试用例自动生成方法 |
CN102831055A (zh) * | 2012-07-05 | 2012-12-19 | 陈振宇 | 基于加权属性的测试用例选择方法 |
US20150261657A1 (en) * | 2014-03-13 | 2015-09-17 | Infosys Limited | Methods for generating test suites and devices thereof |
Non-Patent Citations (1)
Title |
---|
苏亭: ""基于覆盖准则的软件测试用例自动化生成方法的研究与实现"", 《中国博士学位论文全文数据库信息科技辑》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857671A (zh) * | 2019-02-15 | 2019-06-07 | 广州视源电子科技股份有限公司 | 测试用例的生成方法、装置、服务器及存储介质 |
CN110083529A (zh) * | 2019-03-20 | 2019-08-02 | 北京字节跳动网络技术有限公司 | 自动化测试方法、装置、介质和电子设备 |
CN110347593A (zh) * | 2019-06-26 | 2019-10-18 | 贝壳技术有限公司 | 流程测试方法及装置 |
CN110580222A (zh) * | 2019-08-29 | 2019-12-17 | 清华大学 | 一种软件测试用例生成方法及系统 |
CN111060325A (zh) * | 2019-12-13 | 2020-04-24 | 斑马网络技术有限公司 | 测试场景的构造方法、装置、电子设备及存储介质 |
CN111143205A (zh) * | 2019-12-19 | 2020-05-12 | 华东师范大学 | 一种面向安卓平台的测试用例自动化生成方法及生成系统 |
CN111290966A (zh) * | 2020-03-09 | 2020-06-16 | 南京大学 | 提高安卓应用测试覆盖率的测试用例分解组合方法和系统 |
CN111290966B (zh) * | 2020-03-09 | 2023-06-02 | 南京大学 | 提高安卓应用测试覆盖率的测试用例分解组合方法和系统 |
CN111538649B (zh) * | 2020-03-19 | 2022-09-23 | 南京邮电大学 | 一种基于selenium测试工具的web应用系统自动化测试的方法 |
CN111538649A (zh) * | 2020-03-19 | 2020-08-14 | 南京邮电大学 | 一种基于selenium测试工具的web应用系统自动化测试的方法 |
CN111538652A (zh) * | 2020-03-30 | 2020-08-14 | 中国平安人寿保险股份有限公司 | 一种应用控件测试方法及相关设备 |
CN111538652B (zh) * | 2020-03-30 | 2024-09-10 | 中国平安人寿保险股份有限公司 | 一种应用控件测试方法及相关设备 |
CN112052156B (zh) * | 2020-07-15 | 2022-07-29 | 浙江木链物联网科技有限公司 | 一种模糊测试方法、装置和系统 |
CN112052156A (zh) * | 2020-07-15 | 2020-12-08 | 杭州木链物联网科技有限公司 | 一种模糊测试方法、装置和系统 |
CN111694756A (zh) * | 2020-07-31 | 2020-09-22 | 北京字节跳动网络技术有限公司 | 一种应用程序测试方法及装置 |
CN114722946A (zh) * | 2022-04-12 | 2022-07-08 | 中国人民解放军国防科技大学 | 基于概率模型检测的无人机异步行动与协同策略合成方法 |
CN114722946B (zh) * | 2022-04-12 | 2022-12-20 | 中国人民解放军国防科技大学 | 基于概率模型检测的无人机异步行动与协同策略合成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107656864A (zh) | 一种基于概率模型的移动应用自动化测试方法 | |
EP3874372B1 (en) | Automatically performing and evaluating pilot testing of software | |
CN109189469B (zh) | 基于反射的安卓应用微服务化方法及系统 | |
US9953262B2 (en) | Application recommending method and apparatus | |
EP3021217A1 (en) | Distributed analysis and attribution of source code | |
CN110603527B (zh) | 用于服务器侧生产代码的条件调试的方法、系统和设备 | |
US9292281B2 (en) | Identifying code that exhibits ideal logging behavior | |
US7636698B2 (en) | Analyzing mining pattern evolutions by comparing labels, algorithms, or data patterns chosen by a reasoning component | |
CN102609296A (zh) | 虚拟机分支和并行执行 | |
US20170060732A1 (en) | Automated bug detection with virtual machine forking | |
CN109240666B (zh) | 基于调用栈和依赖路径的函数调用代码生成方法及系统 | |
CN102947791B (zh) | 用户增强的反向工程 | |
EP4182796B1 (en) | Machine learning-based techniques for providing focus to problematic compute resources represented via a dependency graph | |
US9355020B2 (en) | Resolving nondeterminism in application behavior models | |
US20230205516A1 (en) | Software change analysis and automated remediation | |
CN109582382B (zh) | 配置信息的加载方法、装置、存储介质及终端设备 | |
CN114610639A (zh) | 一种对图形用户界面测试的方法、装置、设备及存储介质 | |
JP2023553220A (ja) | マルチインスタンスプロセスのためのプロセスマイニング | |
CN111338609B (zh) | 信息获取方法、装置、存储介质及终端 | |
Didona et al. | Hybrid machine learning/analytical models for performance prediction: A tutorial | |
US11487641B1 (en) | Micro services recommendation system for identifying code areas at risk | |
US20230316303A1 (en) | Method and system for event prediction using spatio-temporally sampled data | |
Michaels et al. | Test suite prioritization with element and event sequences for android applications | |
CN114840418A (zh) | 模糊测试方法及装置 | |
CN114416520A (zh) | 一种面向Windows程序图形界面绕过的模糊测试方法及装置 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180202 |
|
WD01 | Invention patent application deemed withdrawn after publication |