CN113688029B - 一种面向移动平台的自动化蜕变测试方法 - Google Patents

一种面向移动平台的自动化蜕变测试方法 Download PDF

Info

Publication number
CN113688029B
CN113688029B CN202110569541.6A CN202110569541A CN113688029B CN 113688029 B CN113688029 B CN 113688029B CN 202110569541 A CN202110569541 A CN 202110569541A CN 113688029 B CN113688029 B CN 113688029B
Authority
CN
China
Prior art keywords
event
test
sequence
application
mobile
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
CN202110569541.6A
Other languages
English (en)
Other versions
CN113688029A (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.)
East China Normal University
Original Assignee
East China Normal University
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 East China Normal University filed Critical East China Normal University
Priority to CN202110569541.6A priority Critical patent/CN113688029B/zh
Publication of CN113688029A publication Critical patent/CN113688029A/zh
Application granted granted Critical
Publication of CN113688029B publication Critical patent/CN113688029B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3688Test management for test execution, e.g. scheduling of test suites
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

一种面向移动平台的自动化蜕变测试方法
技术领域
本发明属于移动平台自动化测试领域,尤其涉及一种基于蜕变测试对于移动平台的崩溃和非崩溃错误的系统化的检测方法。
背景技术
对于移动应用的开发者而言,研发出一个合格的移动应用来提高用户量是其主要目标,但是由于移动平台的应用软件变得日渐复杂,移动应用开发人员编程水平良莠不齐等原因,开发出的移动应用往往很难达到高质量水平。不经过详细测试的移动应用会包含很多未知的错误,这将极大地影响用户体验,从而导致该移动应用的用户量和用户黏度急剧下降,因此,一个合格的移动应用必须要经过细致的测试流程,保证软件质量后才能提供给大量用户使用。
现有的移动应用测试方法主要分为人工测试和自动化测试两类,其中,人工测试由测试人员手工一步步执行所有活动,并观察每个步骤是否成功完成,但是人工测试的效率非常低下,难以满足日渐繁重的测试任务,对于公司而言雇佣大量的测试人员也是一笔巨大的开支,因此面向移动平台的自动化测试技术成为了软件研究的新目标。
在移动自动化测试领域,目前已经有了一些研究成果,主要分为以下几类:(1)随机测试方法,代表性方法主要有monkey和Dynodroid等,通过随机模拟用户的按键输入,触摸屏输入,手势输入等,快速生成测试用例。(2)符号执行方法,代表性研究有ACTeve和JPF-Android等,通过对项目源码进行符号化动态执行,收集约束并求解,最终产生测试用例。(3)启发式生成方法采用例如遗传算法,机器学习等启发式搜索方法,对初始的测试用例进行蜕变等操作生成新的测试用例,代表性研究主要有Sapienz和TimeMachine等。(4)基于模型的生成方法对被测程序分析进行分析,生成行为模型,通过行为模型产生测试用例,并在真实软件上执行,完成测试工作,代表性研究主要有Stoat和A3E等。然而,目前的移动自动测试工具受到了两个方面的限制,首先,这些技术通常会限制在应用程序内探索这一测试目标,因此几乎没有机会检测到需要更改设置与配置才会导致的问题。其次,这些工具只能通过捕获应用抛出的异常来检测错误,因此难以检测到非崩溃的错误,例如屏幕卡死或功能失效的错误。
为了克服现有移动自动测试技术存在的上述缺陷,本发明提出一种面向移动平台的自动化蜕变测试方法,可以检测包括系统设置在内的各种原因导致的移动应用的多种形式的错误。
发明内容
为了解决上述现有技术的不足,本发明提出了一种面向移动平台的自动化蜕变测试方法,包括如下步骤:
步骤1:基础测试事件序列生成步骤:自动或人工地在真实移动设备或虚拟移动设备上对移动应用进行探索,并在探索的过程中生成并记录测试事件序列E。
步骤2:测试事件序列蜕变步骤:通过对步骤1生成的测试事件序列E有策略地插入事件对的方式,对测试事件序列E进行蜕变,获得蜕变的测试事件序列E'。
步骤3:蜕变前后测试事件序列执行步骤:执行蜕变前后的测试事件序列E和E',并记录每个测试事件执行后的界面转储层次结构信息。
步骤4:蜕变前后测试事件序列执行结果对比步骤,通过计算蜕变前后执行的差异判断应用是否出现错误,变质关系判断步骤:对比蜕变前后的事件序列中的重叠事件在执行后获得的界面转储层次结构信息序列,当蜕变前后执行获得的信息序列不满足蜕变关系时,视为出现一个错误。
步骤5:错误记录步骤:对每一个检测到的错误,记录产生错误的测试事件序列,并生成蜕变前后的每步执行结果的对比图序列,通过记录的测试事件序列可以在真实移动设备或虚拟移动设备重放错误,通过记录的对比图序列可以快速地确认错误发生的过程以及错误的表现形式。
步骤1基础测试事件序列生成步骤中,可以通过三种方式对应用进行探索并记录测试事件序列E=[e1,e2,…,en]:
A1:基于uiautomator2移动测试框架对应用进行随机探索、深度优先探索或广度优先探索并记录测试事件序列;
A2:使用已有的移动自动化测试工具(如monkey)对应用进行探索并记录测试事件序列;
A3:使用已有的移动测试用例录制回放工具(如AndroidViewClient)人工录制并记录测试事件序列。
方式A1包括如下步骤:
B1:抓取屏幕控件信息并根据控件类型分配不同的事件,生成可执行事件集,通过uiautomator2自动测试框架提供的dump_hierarchy()接口可以获取当前界面的所有控件的信息,其中控件的classname决定了控件输入什么类型,将根据classname属性来分配不同的可执行事件;
B2:根据所选择的探索策略为可执行事件集中的事件计算选择权重,可选择的探索策略分为随机探索策略、深度优先探索策略和广度优先探索策略;其中,对于随机探索策略,所有事件集中的元素权重相同;对于深度优先探索策略,可以抵达未被详细探索的界面的控件将获得更高的权重;对于广度优先探索策略,未被执行过的事件将获得更高的权重;
B3:从权重最高的可执行事件集中随机选择出一个事件作为当前的待执行事件;
B4:在设备中执行步骤B3所选择的待执行事件,如果执行成功则记录该事件的信息,事件的信息包括事件动作和目标控件的全部信息(包括控件的index,resource-id,class-name, package-name,content-description,checkable,checked,clickable,enabled,focusable, focused,scrollable,long-clickable,password,selected,visible-to-user,bounds 值)。
每次探索顺序执行B1-B4四个步骤,执行结束后再从B1开始重复执行四个步骤,直到已经达到事先规定的最大探索时间。
方式A2包括如下步骤:
C1:使用已有的移动自动化测试工具自动化探索应用;
C2:获得移动自动化测试工具所生成的测试事件序列E;
方式A3包括如下步骤:
D1:使用已有的移动测试用例录制回放工具人工探索应用;
D2:获得移动测试用例录制回放工具所生成的测试事件序列E;
步骤2测试事件序列蜕变步骤中,将会在基础测试事件序列生成步骤记录的测试事件序列E中插入一个事件对来获得蜕变的测试事件序列E',事件对表示为<ec,eu>,ec将会改变应用或者系统的状态,eu为空事件或者复原这种变化的事件,在这里插入的事件对主要基于两种策略:
E1:插入事件对后,应用不会受到任何影响,蜕变关系为L=L',其中L为E中每个事件执行后获得的界面转储层次结构信息序列,L'为E'中所有和E重叠的事件执行后获得的界面转储层次结构信息序列。例如在初始测试事件序列E中,应用一直拥有存储权限,在E中插入事件对<ec,eu>获得E',ec关闭应用的存储权限,eu授予应用所需的存储权限,在<ec,eu>都执行完毕后应用应该不会再受到存储权限的影响,可以执行后续的E中所有事件,包括需要存储权限的事件。
E2:插入事件对后,应用受到的影响是可以被蜕变关系表示的,即L=F(L'),其中F的蜕变关系是根据插入的事件对制定的。例如在初始测试事件序列E中,移动系统的语言为英语,在E中插入事件对<ec,eu>获得E',ec关闭将设备的语言更改为中文,eu为空事件,即不进行任何操作,在<ec,eu>都执行完毕后移动系统的语言为中文,如果应用支持语言切换功能,且分别支持中文和英文,则应用内的文本将会被翻译为中文,但是原有的功能仍然可以执行,可以执行后续的E中的所有事件。
步骤3蜕变前后测试事件序列执行步骤中,将会在同一版本的同一移动系统中的同一版本的应用中分别执行步骤1生成的测试事件序列E和步骤2生成的测试事件序列E',执行每一测试事件ei后将会抓取当前应用的界面转储层次结构信息文件Li和L'i,该文件记录了当前应用界面的布局层次和每一个控件的信息(包括控件的index,resource-id,class-name, package-name,content-description,checkable,checked,clickable,enabled,focusable, focused,scrollable,long-clickable,password,selected,visible-to-user,bounds 值),两次执行结束后获得转储层次结构信息序列L和L'。
步骤4蜕变前后测试事件序列执行结果对比步骤中,将会判断步骤3中获得的转储层次结构信息序列L和L'是否满足所选择的策略对应的蜕变关系,这一步将通过对比界面转储层次结构信息文件中每一个控件的信息实现,所述的蜕变关系根据步骤2中两种插入事件对的策略E1和E2进行相应的蜕变关系检测,
例如对于策略E1,这一步中的蜕变关系是,对于插入事件对<ec,eu>之后的每一个事件 ei,其蜕变前后执行时获得的转储层次结构信息文件Li和L'i应该有关系:L'i=Li;
对于策略E2,这一步中的蜕变关系是,对于插入事件对<ec,eu>之后的每一个事件ei,其蜕变前后执行时获得的转储层次结构信息文件Li和L'i应该有关系:L'i=F(li),这里的 F根据插入的事件对定制,对于策略E2所举的语言的例子,L'i=F(Li)为L'i中每个控件的 text值都被翻译为Li中对应控件的text值的中文,当蜕变关系不满足时,一个错误被检测到。
步骤5错误记录步骤中,将记录从上一次清空全部应用内存信息并启动应用开始到错误被检测出为止的所有测试事件序列,每一步测试事件ei执行后,会截取当前设备的屏幕图片 si,并且将下一步要执行的事件ei+1的对象wi通过方框标注在当前的屏幕图片si上,对测试事件序列E和E'执行后获得的所有标注的屏幕图片分别进行横向排列,最终获得两排事件一一对应的执行结果对比图序列。
本发明的有益效果在于:
本发明可以有效检测外部设置对应用在使用过程中的各个阶段造成的影响,模拟移动用户对外部设置的可能操作并捕获相应的错误。
本发明可以有效检测移动应用的崩溃和非崩溃类型的错误,主要针对但不限于由设置更改引起的移动应用的错误,提高移动应用的健壮性和可靠性。
本发明第一次提供了方法解决移动自动化测试中的测试预言问题,有效提升测试效率,提高测试的充分性,可以广泛运用于移动应用自动化测试领域。
由于缺乏测试预言,现有技术无法对移动应用的非崩溃错误进行自动断言,因此无法自动检测非崩溃的应用错误,本发明将蜕变测试技术与模糊测试技术结合,并根据移动设置问题的特征进行调整,以解决移动自动化检测中的测试预言问题,是第一个全自动有效检测移动非崩溃错误的技术
附图说明
图1是本发明面向移动平台的自动化蜕变测试方法的方法示意图。
图2是本发明的一个实施例的图示。
具体实施方式
结合以下具体实施例和附图,对发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明方法的主要过程包括基础测试事件序列生成、测试事件序列蜕变、蜕变前后测试事件序列执行、蜕变前后测试事件序列执行结果对比、错误记录步骤,共5个步骤。该方法的整体框架如图1所示,具体包括如下步骤:
步骤1:基础测试事件序列生成步骤:自动或人工地对移动应用进行探索,并在探索的过程中记录测试事件序列。
步骤2:测试事件序列蜕变步骤:通过对基础测试事件序列生成步骤生成的测试事件序列有策略地插入事件对的方式,对测试事件序列进行蜕变。
步骤3:蜕变前后测试事件序列执行步骤:执行蜕变前后的测试事件序列,并记录每个测试事件执行后的界面转储层次结构信息。
步骤4:蜕变前后测试事件序列执行结果对比步骤:对比蜕变前后的事件序列中的重叠事件在执行后获得的界面转储层次结构信息序列,当蜕变前后执行获得的信息序列不满足蜕变关系时,视为出现一个错误。
步骤5:错误记录步骤:对每一个检测到的错误,记录产生错误的测试事件序列,并生成蜕变前后的每步执行结果的对比图序列。
步骤1基础测试事件序列生成步骤中:可以通过三种方式对应用进行探索并记录测试事件序列E=[e1,e2,…,en]:
方式A1:基于移动测试框架对应用进行随机探索,深度优先探索或广度优先探索并记录测试事件序列,其步骤如下:
步骤B1:抓取屏幕控件信息并根据控件类型分配不同的事件,生成可执行事件集;通过 uiautomator2自动测试框架提供的dump_hierarchy()接口可以获取当前界面的所有控件的信息,其中控件的classname决定了控件输入什么类型,将根据classname属性来分配不同的可执行事件,如表1所示,表1中显示了部分控件类型及其分配的可执行事件.
表1控件事件示例
控件名称 控件用途 可执行事件
ImageView 显示图片 click,long_click
CheckBox 复选框 click,long_click
Button 按钮 click,long_click
Switch 开关 click,long_click
ImageButton 图片按钮 click,long_click
TextView 文本 click,long_click
MenuItem 菜单项 click,long_click
TableRow 表格项 click,long_click
EditText 输入框 click,long_click,edit
RadioButton 单选框 click,long_click
SeekBar 滑动条 click,long_click
DigitalClock 数字时钟 click,long_click
B2:根据所选择的探索策略为可执行事件集中的事件计算选择权重。其中,对于随机探索策略,所有事件集中的元素权重相同;对于深度优先探索策略,可以抵达未被详细探索的界面的控件将获得更高的权重;对于广度优先探索策略,未被执行过的事件将获得更高的权重。
B3:从权重最高的可执行事件集中随机选择出一个事件作为当前的待执行事件;
B4:在设备中执行所选择的待执行事件,如果执行成功则记录该事件的信息,事件的信息包括事件动作和目标控件的全部信息(包括控件的index,resource-id,class-name, package-name,content-description,checkable,checked,clickable,enabled,focusable, focused,scrollable,long-clickable,password,selected,visible-to-user,bounds 值)
每次探索顺序执行B1-B4四个步骤,执行结束后再从B1开始重复执行四个步骤,直到已经达到事先规定的最大探索时间。
方式A2:使用已有的移动自动化测试工具(如monkey)对应用进行探索并记录测试事件序列,方式A2包括如下步骤:
C1:使用已有的移动自动化测试工具自动化探索应用;
C2:获得移动自动化测试工具所生成的测试事件序列;
C3:将C2所获得的测试事件序列转换为可以被蜕变前后测试事件序列执行步骤所识别和执行的测试事件序列,以monkey为例,monkey生成的测试事件序列包括每一个事件的坐标,且每个事件的粒度较细,如点击事件将分为”touch down”和”touch up”两个事件,两个事件所对应的目标控件具有同一个坐标,转换时只需将”touch down”和”touch up”的两个事件合并为一个click点击事件,并将目标控件记为两个事件所对应的共同的目标控件。
方式A3:使用已有的移动测试用例录制回放工具(如AndroidViewClient)人工录制并记录测试事件序列,方式A3包括如下步骤:
D1:使用已有的移动测试用例录制回放工具人工探索应用;
D2:获得移动测试用例录制回放工具所生成的测试事件序列;
D3:将D2所获得的测试事件序列转换为可以被蜕变前后测试事件序列执行步骤所识别和执行的测试事件序列。
步骤2测试事件序列蜕变步骤中,将会在基础测试事件序列生成步骤记录的测试事件序列E中插入一个事件对来获得蜕变的测试事件序列E',事件对表示为<ec,eu>,ec将会改变应用或者系统的状态,eu为空事件或者复原这种变化的事件,在这里插入的事件对主要基于两种策略:
E1:插入事件对后,应用不会受到任何影响。
E2:插入事件对后,应用受到的影响是可以被蜕变关系表示的。
步骤3蜕变前后测试事件序列执行步骤中,将会在同一版本的同一移动系统中的同一版本的应用中分别执行测试事件序列E和E',执行每一测试事件ei后将会抓取当前应用的界面转储层次结构信息文件li和l'i,该文件记录了当前应用界面的布局层次和每一个控件的信息(包括控件的index,resource-id,class-name,package-name,content-description, checkable,checked,clickable,enabled,focusable,focused,scrollable,long-clickable, password,selected,visible-to-user,bounds值),最终获得转储层次结构信息序列L和 L'。
步骤4蜕变前后测试事件序列执行结果对比步骤中,所述的蜕变关系根据步骤2中两种插入事件对的策略E1和E2进行相应的蜕变关系检测
表2中显示了部分事件对和对应的蜕变关系
对于策略一,这一步中的蜕变关系是,对于插入事件对<ec,eu>之后的每一个事件ei,其蜕变前后执行时获得的转储层次结构信息文件Li和L'i应该有关系:L'i=Li;
对于策略二,这一步中的蜕变关系是,对于插入事件对<ec,eu>之后的每一个事件ei,其蜕变前后执行时获得的转储层次结构信息文件Li和L'i应该有关系:L'i=F(Li),这里的 F与插入的事件有关。
步骤5错误记录步骤,将记录从上一次清空全部应用内存信息并启动应用开始到错误被检测出为止的所有测试事件序列,每一步测试事件ei执行后,会截取当前设备的屏幕图片 si,并且将下一步要执行的事件ei+1的对象wi通过方框标注在当前的屏幕图片si上,对测试事件序列E和E'执行后获得的所有标注的屏幕图片分别进行横向排列,最终获得两排事件一一对应的执行结果对比图序列。
实施例1
本实施例以在GitHub上开源的软件OpenBikeSharing作为检测对象为例(OpenBikeSharing是一个移动应用程序,可以显示你所在城市的共享自行车的可用性),对本发明一种面向移动平台的自动化蜕变测试方法做具体说明:
步骤1在基础测试事件序列生成步骤中,我们选择使用随机生成的方式生成了一条测试事件序列,该测试序列如下:
(1)e0:打开“OpenBikeSharing”应用并点击进入“welcome”界面
(2)e1:点击欢迎界面的“OK”按钮并点击进入“choose a network”界面
(3)e2:点击选择网络“Albacete(ES)”并点击进入“NEARBY”界面
(4)e3:点击“ALL STATIONS”并进入了“ALL STATIONS”界面
(5)应用会显示该区域的共享自行车
步骤2在测试事件序列蜕变步骤中,在事件e0后插入一个事件eu和一个事件ec(对于有些策略而言,eu和ec也可以分别插入在不同的初始事件之后,但是eu应该插入在ec之前):
eu:将设备旋转到横屏
ec:将设备旋转到竖屏
步骤3在蜕变前后测试事件序列执行步骤中,执行蜕变前后的测试事件序列,并记录每个测试事件执行后的界面转储层次结构信息。
步骤4在蜕变前后测试事件序列执行结果对比步骤中,对比蜕变前后的事件序列中的重叠事件在执行后获得的界面转储层次结构信息序列,检查L=L'不符合,得到一个错误。
步骤5错误记录步骤:对每一个检测到的错误,记录产生错误的测试事件序列,并生成蜕变前后的每步执行结果的对比图序列,生成的对比图序列如图2所示。
实施例中的移动应用可以被替换,包括但不限于各种类型的开源应用,商业应用,个人应用。
实施例中步骤1中基础测试事件序列生成步骤中的测试事件生成方法可以被多种探索方式代替,包括但不限于深度优先遍历,广度优先遍历,基于模型的探索方式,基于深度学习指导的探索方式,基于符号执行的探索方式,基于其他启发式方法的探索方式。
实施例中生成的测试序列中的事件类型可以被多种事件类型替换,包括但不限于点击事件,长按事件,输入事件,滑动事件,后退事件。
实施例中ec和eu事件插入的位置可以被替换,可以被分别插入或同时插入在基础测试事件序列中任意事件之前。其中ec和eu事件包括但不限于表2中的事件,可以插入任何对移动应用的操作事件,包括对外部物理环境的调整。
实施例中执行结果对比步骤中,对比方式可以被替换,包括但不限于界面对比,后台信息对比,界面上单个控件的对比。
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。

Claims (7)

1.一种面向移动平台的自动化蜕变测试方法,其特征在于,包括以下步骤:
步骤1:基础测试事件序列生成步骤:自动或人工地在真实移动设备或虚拟移动设备上对移动应用进行探索,并在探索的过程中生成并记录测试事件序列E;
步骤2:测试事件序列蜕变步骤:通过对步骤1生成的测试事件序列E有策略地插入事件对的方式,对测试事件序列E进行蜕变,获得蜕变的测试事件序列E';
所述步骤2测试事件序列蜕变步骤中,将会在步骤1记录的测试事件序列E中插入一个事件对来获得蜕变的测试事件序列E',事件对表示为<ec,eu>,ec将会改变应用或者系统的状态,eu为空事件或者复原这种变化的事件;基于两种策略插入事件对:
E1:插入事件对后,应用不会受到任何影响,蜕变关系为L=L',其中L为E中每个事件执行后获得的界面转储层次结构信息序列,L'为E'中所有和E重叠的事件执行后获得的界面转储层次结构信息序列;
E2:插入事件对后,应用受到的影响是通过蜕变关系表示的,即L=F(L'),其中F的蜕变关系是根据插入的事件对制定的;
步骤3:蜕变前后测试事件序列执行步骤:执行蜕变前后的测试事件序列E和E',并记录每个测试事件执行后的界面转储层次结构信息;
步骤4:蜕变前后测试事件序列执行结果对比步骤:对比蜕变前后的事件序列中的重叠事件在执行后获得的界面转储层次结构信息序列,当蜕变前后执行获得的信息序列不满足蜕变关系时,检测到一个错误;
所述步骤4将判断步骤3中获得的转储层次结构信息序列L和L'是否满足所选择的策略对应的蜕变关系,这一步将通过对比界面转储层次结构信息文件中每一个控件的信息实现;所述蜕变关系根据步骤2中两种插入事件对的策略E1和E2进行相应的蜕变关系检测;对于策略E1,这一步中的蜕变关系是,对于插入事件对<ec,eu>之后的每一个事件ei,其蜕变前后执行时获得的转储层次结构信息文件Li和L'i有关系:L'i=Li;对于策略E2,这一步中的蜕变关系是,对于插入事件对<ec,eu>之后的每一个事件ei,其蜕变前后执行时获得的转储层次结构信息文件Li和L'i有关系:L'i=F(li),其中F的蜕变关系是根据插入的事件对制定的;
步骤5:错误记录步骤:对每一个检测到的错误,记录产生错误的测试事件序列,并生成蜕变前后的每步执行结果的对比图序列,通过记录的测试事件序列在真实移动设备或虚拟移动设备重放错误。
2.根据权利要求1所述的面向移动平台的自动化蜕变测试方法,其特征在于,步骤1中通过三种方式对应用进行探索并记录测试事件序列E=[e1,e2,…,en]:
A1:基于移动测试框架对应用进行随机探索、深度优先探索或广度优先探索并记录测试事件序列;
A2:使用已有的移动自动化测试工具对应用进行探索并记录测试事件序列,所述已有的移动自动化测试工具包括monkey;
A3:使用已有的移动测试用例录制回放工具人工录制并记录测试事件序列,所述已有的移动测试用例录制回放工具包括AndroidViewClient。
3.根据权利要求2所述的面向移动平台的自动化蜕变测试方法,其特征在于,所述方式A1包括如下步骤:
B1:抓取屏幕控件信息并根据控件类型分配不同的事件,生成可执行事件集,通过uiautomator2自动测试框架提供的dump_hierarchy()接口获取当前界面的所有控件的信息,其中控件的classname决定了控件输入的类型,将根据classname属性来分配不同的可执行事件;
B2:根据所选择的探索策略为可执行事件集中的事件计算选择权重,所述可选择的探索策略分为随机探索策略、深度优先探索策略和广度优先探索策略;其中,对于随机探索策略,所有事件集中的元素权重相同;对于深度优先探索策略,抵达未被详细探索的界面的控件将获得更高的权重;对于广度优先探索策略,未被执行过的事件将获得更高的权重;
B3:从权重最高的可执行事件集中随机选择出一个事件作为当前的待执行事件;
B4:在设备中执行步骤B3所选择的待执行事件,如果执行成功则记录该事件的信息,所述事件的信息包括事件动作和目标控件的全部信息,所述信息包括控件的index,resource-id,class-name,package-name,content-description,checkable,checked,clickable,enabled,focusable,focused,scrollable,long-clickable,password,selected,visible-to-user,bounds值;每次探索顺序执行B1-B4四个步骤,执行结束后再从B1开始重复执行四个步骤,直到已经达到事先规定的最大探索时间。
4.根据权利要求2所述的面向移动平台的自动化蜕变测试方法,其特征在于,所述方式A2包括如下步骤:
C1:使用已有的移动自动化测试工具自动化探索应用;
C2:获得移动自动化测试工具所生成的测试事件序列E。
5.根据权利要求2所述的面向移动平台的自动化蜕变测试方法,其特征在于,所述方式A3包括如下步骤:
D1:使用已有的移动测试用例录制回放工具人工探索应用;
D2:获得移动测试用例录制回放工具所生成的测试事件序列E。
6.根据权利要求1所述的面向移动平台的自动化蜕变测试方法,其特征在于,所述步骤3中将会在同一版本的同一移动系统中的同一版本的应用中分别执行步骤1生成的测试事件序列E和步骤2生成的测试事件序列E',执行每一测试事件ei后将会抓取当前应用的界面转储层次结构信息文件Li和L'i,所述文件Li和L'i记录了当前应用界面的布局层次和每一个控件的信息,所述信息包括控件的index,resource-id,class-name,package-name,content-description,checkable,checked,clickable,enabled,focusable,focused,scrollable,long-clickable,password,selected,visible-to-user,bounds值,两次执行结束后获得转储层次结构信息序列L和L'。
7.根据权利要求1所述的面向移动平台的自动化蜕变测试方法,其特征在于,所述步骤5将记录从上一次清空全部应用内存信息并启动应用开始到错误被检测出为止的所有测试事件序列,每一步测试事件ei执行后,会截取当前设备的屏幕图片si,并且将下一步要执行的事件ei+1的对象wi通过方框标注在当前的屏幕图片si上,对测试事件序列E和E'执行后获得的所有标注的屏幕图片分别进行横向排列,最终获得两排事件一一对应的执行结果对比图序列。
CN202110569541.6A 2021-05-25 2021-05-25 一种面向移动平台的自动化蜕变测试方法 Active CN113688029B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110569541.6A CN113688029B (zh) 2021-05-25 2021-05-25 一种面向移动平台的自动化蜕变测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110569541.6A CN113688029B (zh) 2021-05-25 2021-05-25 一种面向移动平台的自动化蜕变测试方法

Publications (2)

Publication Number Publication Date
CN113688029A CN113688029A (zh) 2021-11-23
CN113688029B true CN113688029B (zh) 2024-03-12

Family

ID=78576449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110569541.6A Active CN113688029B (zh) 2021-05-25 2021-05-25 一种面向移动平台的自动化蜕变测试方法

Country Status (1)

Country Link
CN (1) CN113688029B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758062A (en) * 1996-04-30 1998-05-26 Oracle Corporation Method and apparatus for regression testing of application logic
CN104750608A (zh) * 2015-03-25 2015-07-01 南京大学 一种程序中基于动态符号执行的自动错误定位方法
CN108153675A (zh) * 2017-12-26 2018-06-12 江苏润和软件股份有限公司 一种面向移动云计算的Android应用自动化测试方法
CN111679978A (zh) * 2020-05-29 2020-09-18 腾讯科技(深圳)有限公司 一种程序测试方法、程序测试装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758062A (en) * 1996-04-30 1998-05-26 Oracle Corporation Method and apparatus for regression testing of application logic
CN104750608A (zh) * 2015-03-25 2015-07-01 南京大学 一种程序中基于动态符号执行的自动错误定位方法
CN108153675A (zh) * 2017-12-26 2018-06-12 江苏润和软件股份有限公司 一种面向移动云计算的Android应用自动化测试方法
CN111679978A (zh) * 2020-05-29 2020-09-18 腾讯科技(深圳)有限公司 一种程序测试方法、程序测试装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蜕变测试技术综述;董国伟;徐宝文;陈林;聂长海;王璐璐;;计算机科学与探索(第02期);全文 *

Also Published As

Publication number Publication date
CN113688029A (zh) 2021-11-23

Similar Documents

Publication Publication Date Title
US7302677B2 (en) Event driven graph explorer for model-based testing of software
US8903691B2 (en) Linking graphical user interface testing tools and human performance modeling to enable usability assessment
US11144434B2 (en) Refining coverage analyses using context information
CN103336742A (zh) 一种基于Android的自动化软件黑盒测试系统及方法
US20200327043A1 (en) System and a method for automated script generation for application testing
Paganelli et al. Tools for remote usability evaluation of Web applications through browser logs and task models
CN109634570A (zh) 前后端集成开发方法、装置、设备及计算机可读存储介质
CN109902013B (zh) 一种基于组态化测试序列的有效载荷测试方法及系统
CN113626326B (zh) 一种基于图像识别的拖拽式的零代码前端自动化测试系统
CN106528429A (zh) 一种ui界面测试方法及装置
Patil et al. Enhanced UI Automator Viewer with improved Android accessibility evaluation features
JP2000112784A (ja) プログラムテスト支援装置及びプログラムテスト支援プログラムを記録した記録媒体
Zhong et al. Iterative android automated testing
US8850407B2 (en) Test script generation
CN113688029B (zh) 一种面向移动平台的自动化蜕变测试方法
Guo et al. Crowdsourced requirements generation for automatic testing via knowledge graph
US11422696B2 (en) Representation of user interface interactive regions
EP3091453A1 (en) Designing a longevity test for a smart tv
CN109669868A (zh) 软件测试的方法及系统
CN112148608B (zh) 一种基于控件功能标注的移动端自动化软件测试方法
CN113220596B (zh) 应用的测试方法、装置、设备、存储介质及程序产品
Jameson et al. Looking for unexpected consequences of interface design decisions: The memo workbench
Wang et al. Event handler tree model for GUI test case generation
Moran et al. Fixing bug reporting for mobile and GUI-based applications
CN118093381A (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
GR01 Patent grant
GR01 Patent grant