CN112835787B - 应用程序界面跳转的路径纠正方法及装置、存储介质、终端 - Google Patents

应用程序界面跳转的路径纠正方法及装置、存储介质、终端 Download PDF

Info

Publication number
CN112835787B
CN112835787B CN202110025149.5A CN202110025149A CN112835787B CN 112835787 B CN112835787 B CN 112835787B CN 202110025149 A CN202110025149 A CN 202110025149A CN 112835787 B CN112835787 B CN 112835787B
Authority
CN
China
Prior art keywords
interface
path
jump
network graph
directed network
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
CN202110025149.5A
Other languages
English (en)
Other versions
CN112835787A (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.)
Spreadtrum Communications Shanghai Co Ltd
Original Assignee
Spreadtrum Communications Shanghai 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 Spreadtrum Communications Shanghai Co Ltd filed Critical Spreadtrum Communications Shanghai Co Ltd
Priority to CN202110025149.5A priority Critical patent/CN112835787B/zh
Publication of CN112835787A publication Critical patent/CN112835787A/zh
Application granted granted Critical
Publication of CN112835787B publication Critical patent/CN112835787B/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
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种应用程序界面跳转的路径纠正方法及装置、存储介质、终端,所述方法包括:根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径,其中,所述界面有向网络图用于描述所述应用程序的各个界面之间的跳转路径及触发跳转的操作信息;在按照所述跳转路径进行跳转期间,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则根据本次跳转结果和所述界面有向网络图纠正所述跳转路径;按照纠正后的跳转路径继续进行跳转,直至到达所述目标界面。通过本发明方案能够根据应用程序运行时界面的动态变化实时调整跳转路径,使得应用程序界面自动化探索时能够正确地从源界面跳转到目标界面。

Description

应用程序界面跳转的路径纠正方法及装置、存储介质、终端
技术领域
本发明涉及应用程序测试技术领域,具体地涉及一种应用程序界面跳转的路径纠正方法及装置、存储介质、终端。
背景技术
为评价一款应用程序(Application,简称APP)的性能,需要对应用程序在终端上的运行情况进行测试。例如,有针对性的控制应用程序从某一界面跳转到其另一界面以对应用程序进行广度和深度上的自动化探索测试。
现有主流做法是计算两个界面之间的跳转路径,如采用最短路径算法以便快速到达目标界面。现有较常用的最短路径算法包括迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法和最短路径快速算法(Shortest Path Faster Algorithm,简称SPFA)等技术。
但是,在实际应用中,应用程序的界面自动化探索是一个复杂且难度较高的过程,尤其是要从深度和广度两个维度进行探索。这是因为应用程序界面的可变因素太多,功能越复杂的应用程序界面就越多。此外,现在很多应用程序都具有记忆性功能,以及应用程序中不少操作都会带来很多界面上的变化。
上述各种因素均会导致,如果只采用传统的最短或最优路径算法来计算测试时的跳转路径是不可行的,严重的甚至会导致路径死循环,无法真正跳转到最终期望到达的目标界面。
综上所述,现有技术无法解决应用程序的记忆功能或某些操作等场景引起界面动态变化而导致的路径不可达问题,导致对应用程序的自动化探索测试无法顺利进行。
发明内容
本发明解决的技术问题是如何避免应用程序界面动态变化对界面跳转造成的干扰,使得在应用程序探索测试过程中能够快速且准确地跳转到目标界面。
为解决上述技术问题,本发明实施例提供一种应用程序界面跳转的路径纠正方法,包括:根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径,其中,所述界面有向网络图用于描述所述应用程序的各个界面之间的跳转路径及触发跳转的操作信息;在按照所述跳转路径进行跳转期间,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则根据本次跳转结果和所述界面有向网络图纠正所述跳转路径;按照纠正后的跳转路径继续进行跳转,直至到达所述目标界面。
可选的,所述根据本次跳转结果和所述界面有向网络图纠正所述跳转路径包括:根据本次跳转结果更新所述界面有向网络图;以本次跳转到达的实际界面为起始界面,根据更新后的界面有向网络图计算从所述起始界面到所述目标界面的跳转路径作为纠正后的跳转路径。
可选的,所述根据本次跳转结果更新所述界面有向网络图包括:将所述界面有向网络图中,执行本次跳转之前的界面到所述期望界面之间的跳转路径标记为不可达,以得到更新后的界面有向网络图。
可选的,每次跳转到达实际界面之后,所述路径纠正方法还包括:查找所述界面有向网络图中以所述实际界面为目标界面的跳转路径;将查找得到的跳转路径中被标记为不可达的跳转路径恢复成可达路径。
可选的,在根据本次跳转结果和所述界面有向网络图纠正所述跳转路径之前,所述路径纠正方法还包括:根据所述界面有向网络图判断是否存在替代路径,其中,所述替代路径为从其他界面跳转到所述期望界面的跳转路径,所述其他界面是指所述界面有向网络图中除了本次跳转之前的界面之外的界面;当判断结果表明存在所述替代路径时,根据本次跳转结果和所述界面有向网络图纠正所述跳转路径。
可选的,在根据本次跳转结果和所述界面有向网络图纠正所述跳转路径之后,所述路径纠正方法还包括:判断所述界面有向网络图中从其他界面跳转至所述期望界面的所有跳转路径是否均被标记为不可达,其中,所述其他界面是指所述界面有向网络图中除了本次跳转之前的界面之外的界面;当判断结果表明从其他界面跳转至所述期望界面的所有跳转路径均被标记为不可达时,将从其他界面跳转至所述期望界面的所有跳转路径全部恢复成可达路径。
可选的,所述根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径包括:根据所述界面有向网络图计算从所述源界面跳转到目标界面的最短路径。
可选的,所述根据所述界面有向网络图计算从所述源界面跳转到目标界面的最短路径包括:对所述界面有向网络图进行广度优先搜索,以得到主从关系字典,其中,所述主从关系字典用于记录所述源界面能够达到的所有路径;结合所述主从关系字典,对所述界面有向网络图进行深度优先搜索,以得到所述最短路径。
可选的,所述结合所述主从关系字典,对所述界面有向网络图进行深度优先搜索,以得到所述最短路径包括:结合所述主从关系字典按照递归方式搜索所述界面有向网络图,以得到多条从所述源界面到达所述目标界面的候选路径;选取跳转次数最少的候选路径作为所述最短路径。
可选的,所述结合所述主从关系字典,对所述界面有向网络图进行深度优先搜索,以得到所述最短路径包括:结合所述主从关系字典按照递归方式搜索所述界面有向网络图,以得到多条从所述源界面到达所述目标界面的候选路径;根据所述操作信息确定每条候选路径的加权值,其中,所述加权值用于表征所述候选路径的推荐度;选取跳转次数最少且加权值最高的候选路径作为所述最短路径。
可选的,所述操作信息包括:测试项;操作的奖励;界面跳转等待时间。
可选的,所述界面有向网络图是历史上对所述应用程序进行自动化测试得到的,所述自动化测试包括如下步骤:A.根据当前界面中的元素、布局以及当前界面对应的活动生成所述当前界面的界面唯一标识,其中,所述界面唯一标识用于唯一地表征所述应用程序的界面;B.选择所述当前界面上未探索过的测试项进行探索,其中,所述测试项包括所述当前界面上的元素或布局,以及针对所述元素或布局的操作类型;C.基于本次探索跳转得到的目标界面更新界面有向网络图;D.将所述目标界面确定为所述当前界面并重复执行步骤A至步骤C,直至所述应用程序的所有界面的所有测试项均探索完成。
为解决上述技术问题,本发明实施例还提供一种应用程序界面跳转的路径纠正装置,包括:处理模块,用于根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径,其中,所述界面有向网络图用于描述所述应用程序的各个界面之间的跳转路径及触发跳转的操作信息;纠正模块,用于在按照所述跳转路径进行跳转期间,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则根据本次跳转结果和所述界面有向网络图纠正所述跳转路径;测试模块,用于按照纠正后的跳转路径继续进行跳转,直至到达所述目标界面。
为解决上述技术问题,本发明实施例还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法的步骤。
为解决上述技术问题,本发明实施例还提供一种终端,包括上述应用程序界面跳转的路径纠正装置,或者包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
本发明实施例提供一种应用程序界面跳转的路径纠正方法,包括:根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径,其中,所述界面有向网络图用于描述所述应用程序的各个界面之间的跳转路径及触发跳转的操作信息;在按照所述跳转路径进行跳转期间,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则根据本次跳转结果和所述界面有向网络图纠正所述跳转路径;按照纠正后的跳转路径继续进行跳转,直至到达所述目标界面。
较之现有单纯依赖最短路径算法确定的跳转路径,本实施方案能够根据应用程序运行时界面的动态变化实时调整跳转路径,使得应用程序界面自动化探索时能够正确地从源界面跳转到目标界面。具体而言,基于界面有向网络图,以及最短路径算法和策略,寻找两个界面之间的跳转最优路径。进一步,考虑应用程序在某些界面有记忆功能或因在上一个界面执行了特定操作而导致的界面动态变化,根据界面动态变化情况及时纠正当前执行的跳转路径,从而避免获取的路径是不可达的。由此,本实施方案能够根据界面的实时变化动态调整界面有向网络图,然后根据变化后的界面有向网络图重新计算最短或最优路径,确保从源界面正确、快速地跳转到目标界面。
进一步,所述界面有向网络图是历史上对所述应用程序进行自动化测试得到的,所述自动化测试包括如下步骤:A.根据当前界面中的元素、布局以及当前界面对应的活动生成所述当前界面的界面唯一标识,其中,所述界面唯一标识用于唯一地表征所述应用程序的界面;B.选择所述当前界面上未探索过的测试项进行探索,其中,所述测试项包括所述当前界面上的元素或布局,以及针对所述元素或布局的操作类型;C.基于本次探索跳转得到的目标界面更新界面有向网络图;D.将所述目标界面确定为所述当前界面并重复执行步骤A至步骤C,直至所述应用程序的所有界面的所有测试项均探索完成。
较之现有的猴子测试是随机地触发对应用程序的某个界面进行某种操作,本实施方案能够兼顾对应用程序进行自动化探索遍历时的广度和深度,极大地提高应用程序自动化测试的覆盖率,使得最终得到的界面有向网络图更为全面。具体而言,以界面唯一标识来区分应用程序的不同界面,界面上的元素、布局和对应的活动(activity)中的任一个发生变化即认为是不同的界面。通过标识应用程序的界面,能够在探索时记录各界面的探索结果,以便区分各界面上已经探索的测试项和未探索过的测试项。在此基础上,以基于界面唯一标识表征的界面为单位,对应用程序进行自动化探索遍历,且每次探索的是当前界面上未探索过的测试项,使得对应用程序的自动化探索遍历不再是完全随机的,利于兼顾测试的广度和深度。进一步,通过形成界面有向网络图来记录自动化探索遍历结果,以记录应用程序各界面之间的有向路径,能够辅助测试和研发快速定位和复现问题出现的场景。进一步,将所述目标界面确定为所述当前界面并重复执行步骤A至步骤C,直至所述应用程序的所有界面的所有测试项均探索完成。由此,基本能探索测试应用程序的所有界面,以及各界面上所有的可操作元素和布局。
附图说明
图1是本发明实施例一种应用程序的自动化测试方法的流程图;
图2是本发明实施例一个典型应用场景的自动化测试进程示意图;
图3是本发明实施例一种应用程序界面跳转的路径纠正方法的流程图;
图4是图3中步骤S302的一个具体实施方式的流程图;
图5是本发明实施例一个典型应用场景的路径纠正进程示意图;
图6是本发明实施例一个典型应用场景中界面有向网络图的示意图;
图7是本发明实施例一种应用程序界面跳转的路径纠正装置的结构示意图。
具体实施方式
如背景技术所言,现有技术无法解决应用程序的记忆功能或某些操作等场景引起界面动态变化而导致的路径不可达问题,导致对应用程序的自动化探索测试无法顺利进行。
具体而言,某些操作的组合会导致界面跳转关系发生变化,这种变化无法在界面有向网络图上体现,导致按传统最短路径计算方法确定的跳转路径存在偏差,存在无法引导应用程序从源界面正确跳转到目标界面的风险。
为解决上述技术问题,本发明实施例提供一种应用程序界面跳转的路径纠正方法,包括:根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径,其中,所述界面有向网络图用于描述所述应用程序的各个界面之间的跳转路径及触发跳转的操作信息;在按照所述跳转路径进行跳转期间,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则根据本次跳转结果和所述界面有向网络图纠正所述跳转路径;按照纠正后的跳转路径继续进行跳转,直至到达所述目标界面。
本实施方案能够根据应用程序运行时界面的动态变化实时调整跳转路径,使得应用程序界面自动化探索时能够正确地从源界面跳转到目标界面。具体而言,基于界面有向网络图,以及最短路径算法和策略,寻找两个界面之间的跳转最优路径。进一步,考虑应用程序在某些界面有记忆功能或因在上一个界面执行了特定操作而导致的界面动态变化,根据界面动态变化情况及时纠正当前执行的跳转路径,从而避免获取的路径是不可达的。由此,本实施方案能够根据界面的实时变化动态调整界面有向网络图,然后根据变化后的界面有向网络图重新计算最短或最优路径,确保从源界面正确、快速地跳转到目标界面。
进一步,所述界面有向网络图可以是历史上对所述应用程序进行自动化测试得到的。也即,根据历史上对所述应用程序进行自动化测试得到的历史测试结果,将应用程序各界面之间的跳转情况、触发跳转的相关操作信息等以界面有向网络图的方式进行记录。生成的界面有向网络图能够作为后续应用程序自动化测试的索引基础,供测试程序合理确定测试时的跳转路径。
例如,所述界面有向网络图可以是采用猴子测试等随机式的自动化测试方式探索得到的。
又例如,所述界面有向网络图可以是采用如图1和图2所示自动化测试方法探索得到的。且较之采用猴子测试得到的界面有向网络图,采用图1和图2所示自动化测试方法得到的界面有向网络图更为全面,能够更好的满足应用程序自动化探索测试在广度和深度上的要求。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
在本实施方案中,“自动化探索遍历”是指对应用程序进行深度以及广度上的遍历探索。其方法可以通过adb命令获取层次结构文件(hierarchy xml)以及界面快照,然后获取界面中的可操作元素、布局和可操作元素对应的图标,最后针对这些可操作元素和布局进行点击(click)、长按(long-click)、滑动(swipe)、滚动条(scroll)等操作,并通过一些算法和策略确保自动化探索遍历到应用程序的所有界面。其中,滑动操作包括上下左右四个方向,滚动条操作根据滚动条分为左右或上下滚动。针对应用程序的单个界面上的元素,主要执行点击和长按操作;针对界面上的布局,主要执行滑动和滚动条操作。
在本实施方案中,被执行自动化测试的应用程序可以是智能终端中的应用程序。所述智能终端可以为智能手机、IPAD、智能手环等。
在本实施方案中“深度遍历”是指尽可能地探索应用程序的更多界面。
在本实施方案中“广度遍历”是指探索应用程序的某个界面时,尽可能对该界面中所有的可操作元素和布局进行操作。
在本实施方案中,“子元素的text组合”是指某些元素或布局包含多个子元素,但子元素是不可操作的,则在确定界面唯一标识时用最底层的子元素的标识表征父节点的区域。例如,界面中某个按钮包含图标和文字描述,图标和文字描述在层次结构文件(hierarchy xml)中是两个元素,而可操作的元素是包含这两个元素的父元素,则该界面对应的界面唯一标识中用图标和文字的标识作为该按钮的标识。其中,所述层次结构文件用于记录应用程序中各个元素的属性和位置,所述层次结构文件包括层次排布的节点。一个节点代表一个元素,这里的元素包括布局元素和可操作元素。
在本实施方案中,“可操作元素或布局”是指根据层次结构文件中元素的对用户可见“visible-to-user”,可滚动“scrollable”,可点击“clickable”,可长按“long-clickable”等属性确定该元素是否可操作;布局是指一组元素所在的区域,通常以横轴进行划分布局即把整个界面以行为单位进行拆分。布局也有属性,如某个布局的滚动属性记录为真(true)则表示该布局可以做滑动操作,又如不带滚动条的布局只做点击操作不做滑动操作。在实际应用中,层次结构文件中对元素和布局的属性描述不是绝对的,因而在本实施方案中,层次结构文件中各元素和布局的属性是真(true)还是假(false)的描述仅供参考,本实施方案在探索时会对所有可操作元素尝试所有可操作类型。在本实施方案中,对用户可见属性描述为真的元素均确定为可操作元素。
在本实施方案中,“活动(activity)”是安卓(Android)组件中最基本也是最为常见用的四大组件之一。用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。每个活动都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。一个应用通常由多个彼此松散联系的活动组成。一般会指定应用中的某个活动为“主”活动,即首次启动应用时呈现给用户的那个活动。而且每个活动均可启动另一个活动,以便执行不同的操作。每次新活动启动时,前一活动便会停止,但系统会在堆栈(“返回栈”)中保留该活动。当新活动启动时,系统会将其推送到返回栈上,并取得用户焦点。返回栈遵循基本的“后进先出”堆栈机制,因此,当用户完成当前活动并按“返回”按钮时,系统会从堆栈中将其弹出(并销毁),然后恢复前一活动。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例一种应用程序的自动化测试方法的流程图。
本实施方案可以由安装有所述应用程序的智能终端执行,以对安装的所述应用程序进行自动化测试。所述智能终端可以是专门进行程序测试的测试机,也可以是面向市场销售的商用机。
具体地,参考图1,本实施例所述应用程序的自动化测试方法可以包括如下步骤:
在101处,执行步骤A,根据当前界面中的元素、布局以及当前界面对应的活动生成所述当前界面的界面唯一标识,其中,所述界面唯一标识用于唯一地表征所述应用程序的界面;
在102处,执行步骤B,选择所述当前界面上未探索过的测试项进行探索,其中,所述测试项包括所述当前界面上的元素或布局,以及针对所述元素或布局的操作类型;
在103处,执行步骤C,基于本次探索跳转得到的目标界面更新界面有向网络图,其中,所述界面有向网络图用于描述所述应用程序的各个界面之间的跳转路径及触发跳转的操作信息。
进一步,所述界面唯一标识可以根据界面上可操作元素和布局的唯一标识以及界面对应的活动组合而成。
在一个具体实施中,所述步骤A可以进一步包括步骤:至少根据所述当前界面的层次结构文件,确定所述元素和布局的唯一标识;根据所述元素和布局的唯一标识以及所述当前界面对应的活动,生成所述当前界面的界面唯一标识。
具体地,可以通过adb命令获取所述当前界面的层次结构文件和界面快照。进一步,可以通过相应命令获取当前界面对应的活动。
进一步,解析所述层次结构文件以得到所述当前界面中元素和布局的属性信息;将所述属性信息组合得到所述元素和布局的唯一标识。例如,可以优选地根据层次结构文件中的节点(node)属性以及相应的组合策略确定当前界面中的可操作元素,并获取确定的可操作元素的属性信息和布局的属性信息。例如,布局的宽度以智能终端的屏幕宽度为准,当存在多个宽度相同的布局时,取最底层的布局。
进一步,所述属性信息可以包括以下任一项或任多项:元素的类型(class);元素在所述层次结构文件中的标识(resource-id);元素在所述层次结构文件中的层级(level);布局在所述层次结构文件中的标识(resource-id);文本元素的文本信息(text);文本元素的子元素的文本(text)组合。
例如,元素的类型可以包括文本和图标。
例如,文本信息可以是文本的文字描述,对应层次结构文件中“content-desc=”开头的内容。
进一步,当所述元素为图标时,还可以根据所述元素在当前界面上的区域范围从所述界面快照中截取得到所述元素对应的图标。进而将所述属性信息和所述图标组合得到所述元素和布局的唯一标识。以摄像应用程序为例,基于本实施方案,闪光灯开和闪光灯关时的图标是不同的,对应的闪光灯开时的界面和闪光灯关时的界面会对应不同的界面唯一标识。
进一步,用于组合形成所述元素和布局的唯一标识的属性信息的数量和内容是可调的,以能够与应用程序的其他界面区分开为准。
在一个具体实施中,多个界面可以属于同一界面组并对应一个界面组唯一标识(group ID),所述界面组唯一标识可以是取所述多个界面各自界面唯一标识的共同内容生成的。例如,界面组唯一标识可以由元素的类型、元素或布局在层次结构文件中的标识以及元素在所述层次结构文件中的层级组合而成。
界面组可以用于解决应用程序的记忆功能导致的跳转路径计算偏差问题。具体而言,很多应用程序都有记忆功能,具体体现在应用程序界面上有些元素的图标或文字在不同场景中是可变的,但基于本实施方案这些场景下的界面可以认为是不同界面(即对应不同的界面唯一标识)。例如,拍照应用程序(camera)中的闪光灯图标有打开、关闭、自动等状态,也即闪光灯的图标是可变的。而拍照应用程序通常是具备记忆功能的,也即每次退出拍照界面前所处界面的闪光灯图标状态与重新进入拍照界面时到达界面的闪光灯图标状态保持一致。在此情况下,闪光灯处于不同状态的这些界面可以认为是一个界面组。
例如,假设当前界面的界面快照中最下方一行有3个可操作元素,且这3个可操作元素在层次结构文件中主要是以下三个节点:
resource-id="com.android.camera2:id/rounded_thumbnail_view"
resource-id="com.android.camera2:id/shutter_button"
resource-id="com.android.camera2:id/btn_mode_switch"
假设这3个元素所在布局是:
resource-id="com.android.camera2:id/bottom_bar"
基于以上可操作元素和布局可以各自对应的生成唯一标识:
android.view.View@com.android.camera2:id/rounded_thumbnail_view@11@1_0.png
android.widget.ImageView@com.android.camera2:id/shutter_button@11@2_0.png
android.widget.ImageView@com.android.camera2:id/btn_mode_switch@11@3_0.png
其中,@是各个属性之间的连接符;这3个元素的文本属性是空的,所以没有记录在内;倒数第2个属性“11”是该元素在整个节点树形结构中的层级;最后一个属性是图标的名称,该图标是从界面快照中根据元素的区域(bounds属性)截取出来的。
该界面快照所对应的活动是“com.android.camera.CameraActivity”。
最终得到的当前界面的界面唯一标识可以是一个数值,也就是上面三个字符串在数组中的下标值。其中,所述数组是指存储探索期间生成的所有界面的所有元素和布局的唯一标识的列表,所述下标值是指在列表中的排序。
或者,在得到上述字符串后,可以对字符串进行哈希算法处理或散列函数处理等操作,以得到唯一的值作为界面唯一标识。
相应的,所述界面组唯一标识可以是删除上述字符串中图标名称相关属性后组合而成的。例如,上述示例中3个界面唯一标识所述界面组的界面组唯一标识可以为下述3个字符串的组合:
android.view.View@com.android.camera2:id/rounded_thumbnail_view@11
android.widget.ImageView@com.android.camera2:id/shutter_button@11
android.widget.ImageView@com.android.camera2:id/btn_mode_switch@11
在一个具体实施中,本实施例所述自动化测试方法还可以包括步骤:将所述目标界面确定为所述当前界面并重复执行步骤A至步骤C,直至所述应用程序的所有界面的所有测试项均探索完成。由此,基本能探索测试应用程序的所有界面,以及各界面上所有的可操作元素和布局。
在一个具体实施中,在步骤A之后,本实施例所述自动化测试方法还可以包括步骤:根据所述当前界面的层次结构文件判断所述当前界面是否属于所述应用程序;如果判断结果为所述当前界面属于所述应用程序,则选择所述当前界面上未探索过的测试项进行探索。
例如,层次结构文件中的封装(package)属性用于表征当前界面所述应用程序,相应的,可以根据封装属性来判断当前界面是否属于需要测试的应用程序。
进一步,如果判断结果为所述当前界面不属于所述应用程序,则直接根据所述当前界面更新所述界面有向网络图,并重启所述应用程序以重新获得所述当前界面。
在一个具体实施中,所述操作信息可以包括:测试项;操作的奖励;界面跳转等待时间。
例如,当所述目标界面不属于所述应用程序时,所述操作的奖励为-1。例如,当所述目标界面与当前界面的界面唯一标识相同时,所述操作的奖励为0。例如,当所述目标界面为所述应用程序的其他界面时,所述操作的奖励为1。
例如,界面跳转等待时间可以指,从当前界面(称作源界面)跳转到另一界面(称作目标界面)时,需要等待多少时间才能操作所述目标界面。所述界面跳转等待时间通常是由于目标界面上存在悬浮窗、广告等导致的。具体而言,应用程序中有些界面会有一些干扰的信息如弹出窗口(例如提醒窗口),这些在进行自动化测试时是需要忽略的。另外,界面A点击元素A1跳转到界面B时,不是说点击元素A1后过1秒(second,简称s)或0.5s就能看到界面B的,而且不同性能的手机上操作同一应用程序的同一界面后的界面跳转等待时间是不同的。在自动化测试期间,该参数可以是在第一次触发从界面A跳转到界面B时计算获取并记录的,下次再从界面A跳转到界面B时就会按这个时间来等待。
基于本实施方案,能够根据探索得到的界面形成界面有向网络图,图中各节点是应用程序的每个界面,两个节点之间的有向路径记录所述操作信息。所述操作信息可以包括被操作的元素或布局(即触发本次跳转的元素或布局)和操作类型(即触发本次跳转的操作),即测试项。所述操作信息还可以包括源界面的界面唯一标识、被操作元素或布局的唯一标识、操作的索引以及目标界面的界面唯一标识。
在一个具体实施中,本实施例所述自动化测试方法还可以包括步骤:如果所述当前界面上的所有测试项均探索完成,则将所述应用程序的未探索完成的界面确定为当前界面并重复执行步骤A至步骤C。
具体地,进入到某个界面时可以随机或指定选择某个元素或布局和某个操作,并记录下该探索过程,下次不会执行相同的探索操作。该界面的所有元素和布局的所有相关操作都遍历过一遍就表示该界面已探索完成。
在一个具体实施中,如果在当前界面探索过程中因执行某个测试项而跳转到应用程序的其他界面(称作目标界面),就开始探索该目标界面。
进一步,如果目标界面已经探索完成,则查找并跳转到应用程序的其他未探索完成的界面。
由此,基于本实施方案,能够确保广度遍历优先,然后实现深度遍历。
假设界面A有5个元素(A.E.1,…,A.E.5)和2个布局(A.L.1,A.L.2),且点击A.E.1时跳转到界面B。此时,界面有向网络图就有两个节点(节点A和节点B),且节点A向节点B的有向路径A→B是通过A.E.1+点击动作实现跳转的。
在一个典型的应用场景中,参考图2,本实施例所述应用程序的自动测试过程可以包括:
首先,执行操作s21以启动需要测试的应用程序1,并执行操作s22以获取当前进入的界面(即当前界面)的层次结构文件、界面快照和对应的活动。
然后,执行操作s23以解析所述层次结构文件和界面快照以生成当前界面的界面唯一标识。
接下来,执行操作s24以判断所述当前界面是否属于应用程序1以外的其他应用程序。
如果当前界面属于其他应用程序,则执行操作s25,以确定本次操作的奖励为-1,并继续执行操作s26,以记录本次探索过程并更新所述应用程序1的界面有向网络图。所述界面有向网络图可以包括所述当前界面的节点以及从应用程序1的界面跳转过去的有向路径,虽然该当前界面不属于应用程序1。同时,执行操作s27,以重启应用程序1并重新自步骤s22开始执行自动化测试进程。
如果当前界面不属于其他应用程序,即属于应用程序1,则可以进一步执行操作s28,以判断本次是否为第一次进入所述应用程序1。
如果本次是第一次进入应用程序1,则可以执行操作s29,以随机选择或指定当前界面的某个未探索过的测试项(即元素或布局+操作的组合)执行测试。将执行测试后跳转到的目标界面确定为新的当前界面进行重新自操作s22开始执行自动化测试进程。
如果本次不是第一次进入应用程序1,则可以执行操作s30,以判断应用程序1的所有界面是否都已经完成探索。
如果应用程序1的所有界面都已经完成探索,则结束本次自动化测试进程。
如果应用程序1尚有界面没有探索完成,则执行操作s31,若当前界面与前一个界面(即触发跳转至当前界面前的界面)是一样的,即两者的界面唯一标识相同,则确定本次对当前界面的操作的奖励为0;否则确定本次对当前界面的操作的奖励为1。同时,执行操作s32,以记录本次探索过程,并更新界面有向网络图。
接下来,执行操作s33,以判断当前界面是否已经探索完成。如果当前界面尚存未探索的测试项,则执行操作s29;否则,即如果当前界面已经完成探索,则执行操作s34,以跳转到应用程序1未探索完成的界面然后跳转至操作s22,并重新开始执行自动化测试进程。
本实施方案能够兼顾对应用程序进行自动化探索遍历时的广度和深度,极大地提高应用程序自动化测试的覆盖率。具体而言,以界面唯一标识来区分应用程序的不同界面,界面上的元素、布局和对应的活动(activity)中的任一个发生变化即认为是不同的界面。通过标识应用程序的界面,能够在探索时记录各界面的探索结果,以便区分各界面上已经探索的测试项和未探索过的测试项。在此基础上,以基于界面唯一标识表征的界面为单位,对应用程序进行自动化探索遍历,且每次探索的是当前界面上未探索过的测试项,使得对应用程序的自动化探索遍历不再是完全随机的,利于兼顾测试的广度和深度。进一步,通过形成界面有向网络图来记录自动化探索遍历结果,以记录应用程序各界面之间的有向路径,能够辅助测试和研发快速定位和复现问题出现的场景。
进一步,所述界面有向网络图可以是随着对所述应用程序的不断测试而逐渐丰富、扩充的。相应的,将所述目标界面确定为所述当前界面并重复执行步骤A至步骤C,直至所述应用程序的所有界面的所有测试项均探索完成。由此,基本能探索测试应用程序的所有界面,以及各界面上所有的可操作元素和布局。
进一步,采用本实施方案,除了能支持稳定性测试目的外,还能兼顾覆盖率和通用性的遍历测试、检测各类界面的和应用程序异常问题。本实施方案能够提升应用程序自动化测试的覆盖率,大大节省了测试投入和维护成本。
进一步,本实施方案所述自动化探索遍历测试无需编写测试脚本,并支持跨平台/跨版本/跨应用程序测试。
进一步,本实施方案所述自动化探索遍历测试还能检测应用程序版本演进过程中的界面上变化的差异,从中分析新版本可能引入的问题。
由此,采用图1和图2所示实施方案,可以生成所述界面有向网络图,连接所述界面有向网络图的节点是界面唯一标识,节点之间的跳转方向(或跳转路径)包括以下参数:被操作元素或布局的唯一标识;操作(点击、长按、滑动等)的索引;操作的奖励;界面跳转等待时间。
在获得所述界面有向网络图的基础上,可以存储所述界面有向网络图以供后续应用程序测试时调用。例如,从应用程序的界面中选取两个界面分别作为源界面和目标界面,探索测试从源界面跳转到目标界面的应用程序运行情况。在此场景中,基于本实施方案可以根据界面有向网络图、最短路径算法和相应策略计算得到最优路径,然后按所述最优路径从源界面快速且准确的跳转到目标界面,从而进行深度和广度的应用程序自动化探索测试。而在实际测试场景中,在按前述逻辑计算得到的最优路径进行跳转期间,界面的动态变化可能导致最优路径中的部分路径不可达,此时,需要根据界面动态变化情况及时纠正当前执行的跳转路径,以确保最终能够正确、顺利地到达目标界面。
所述源界面和目标界面可以是从应用程序的界面中随机选取得到的。
所述源界面和目标界面可以是指定的所述应用程序的两个界面,如为了复现应用程序的问题(bug)而指定的。
接下来结合图3对本实施例所述应用程序界面跳转的路径纠正方法进行详细阐述。图3示出的在从给定的源界面跳转到目标界面期间根据界面动态变化实时纠正跳转路径的过程,可以是在图1和图2所示自动化测试生成完整的界面有向网络图之后执行的。或者,图3所示实施例可以是在图1和图2所示实施例执行期间执行的,也即执行图1和图2所示实施例以探索生成部分界面有向网络图后,即可基于当前生成的界面有向网络图执行图3所示方案,以从不同角度丰富和优化界面有向网络图。
图3示出本发明实施例一种应用程序界面跳转的路径纠正方法的流程图。
具体地,参考图3,本实施例所述应用程序界面跳转的路径纠正方法可以包括如下步骤:
步骤S301,根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径;
步骤S302,在按照所述跳转路径进行跳转期间,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则根据本次跳转结果和所述界面有向网络图纠正所述跳转路径;
步骤S303,按照纠正后的跳转路径继续进行跳转,直至到达所述目标界面。
在一个具体实施中,所述步骤S301计算得到的跳转路径可以是从源界面到目标界面的最短路径。相应的,所述步骤S301可以包括步骤:根据所述界面有向网络图计算从所述源界面跳转到目标界面的最短路径。
具体地,所述最短路径可以指从源界面跳转到目标界面所需跳转次数最少的跳转路径,也即,所述最短路径是指界面有向网络图中从源界面到目标界面所需途径节点最少的跳转路径。
在一个具体实施中,所述最短路径的计算过程可以包括步骤:先对所述界面有向网络图进行广度优先搜索,以得到主从关系字典,其中,所述主从关系字典用于记录所述源界面能够达到的所有路径;结合所述主从关系字典,对所述界面有向网络图进行深度优先搜索,以得到所述最短路径。
也就是说,基于界面有向网络图,先用广度优先搜索源界面到界面有向网络图中各个节点的跳转路径,再用深度优先搜索找到源界面到目标界面的最短路径。
具体地,所述广度优先搜索可以是通过循环方式搜索源界面在界面有向网络图中对应的源节点的所有下一级节点,然后循环搜索下一级节点的所有下下一级节点。广度优先搜索的目的是生成一个带主从关系的节点字典,即所述主从关系字典,以提供给深度优先搜索使用。例如,主从关系字典的格式可以为{key:[],…,[]},其中,key是源界面的界面唯一标识,[]存放可跳转的下一个界面的界面唯一标识。
进一步,深度优先搜索可以是指通过递归方式搜索某条路径每个节点直到最后一个节点,如最后一个节点未能找到目标界面在界面有向网络图中对应的目标节点,则返回上一级节点并搜索其他路径。
例如,可以结合所述主从关系字典按照递归方式搜索所述界面有向网络图,以得到多条从所述源界面到达所述目标界面的候选路径;然后,选取跳转次数最少的候选路径作为所述最短路径。
在一个变化例中,界面有向网络图中的界面唯一标识、被操作元素、操作的奖励和界面跳转等待时间等操作信息也可以作为计算最短路径的参考参数。也即,除了跳转次数这一指标外,还可以根据操作信息确定不同路径的推荐度,推荐度越高的路径越优先选择。由此,步骤S301计算得到的最短路径不是单纯意义上的跳转次数最少、途径节点最少的跳转路径,而是综合界面跳转等待时间等因素后计算得到的更优的跳转路径。
具体地,不同的操作信息可以对应不同的加权值,累加单个跳转路径上所有操作信息的加权值得到该条跳转路径的推荐度。如,操作的奖励为1的路径是可用的,该跳转路径对应的加权值大于操作的奖励为0或-1的路径的加权值。又如,界面跳转等待时间越长,对应路径的加权值越小甚至为负数。
相应的,在进行深度优先搜索时,可以结合所述主从关系字典按照递归方式搜索所述界面有向网络图,以得到多条从所述源界面到达所述目标界面的候选路径;然后,根据所述操作信息确定每条候选路径的加权值,其中,所述加权值用于表征所述候选路径的推荐度;最后,选取跳转次数最少且加权值最高的候选路径作为所述最短路径。
在一个变化例中,在采用上述具体实施所述方案计算得到最短路径基础上,所述步骤S301还可以进一步包括如下步骤:
步骤x,根据所述应用程序的历史测试数据判断所述最短路径是否包含不可达路径,其中,所述不可达路径至少是因为所述最短路径途径的界面具有记忆功能导致的,所述历史测试数据记录历史测试时所述应用程序各界面之间的实际跳转结果;
步骤y,若判断结果表明所述最短路径包含不可达路径,则根据所述历史测试数据和所述界面有向网络图调整所述最短路径,以将其中的不可达路径替换为可达路径;
步骤z,将调整后的最短路径确定为所述最优路径。
具体地,所述历史测试数据可以包括:界面组字典,用于记录所述应用程序的一个或多个界面所属界面组。例如,界面组字典包括界面组唯一标识(group ID)、界面唯一标识列表以及界面组唯一标识与界面唯一标识列表的关联关系。
界面组唯一标识可以根据该界面组包括的各界面上可操作元素组和布局组的唯一标识,以及界面对应的活动组合而成。可操作元素组和布局组的唯一标识可以根据元素的类型、元素在所述层次结构文件中的标识以及元素在所述层次结构文件中的层级等组合而成。
所述界面唯一标识列表包括属于同一界面组的各界面的界面唯一标识。
进一步,所述历史测试数据还可以包括:界面跳转限制映射字典,用于记录所述界面组字典中的界面组是否具有记忆功能。记忆功能会导致同一个界面组里的界面不会同时存在,从其他界面组的界面跳转到该界面组时只会跳转到某个特定的界面。
例如,界面跳转限制映射字典可以包括上一个界面(属于其他界面组)的界面唯一标识、当前界面所在界面组的界面组唯一标识、变更界面唯一标识列表和未变更界面唯一标识列表。其中,变更界面唯一标识列表表示离开该界面组前的界面与再次进入该界面组时的界面不同(change),未变更界面唯一标识列表表示离开该界面组前的界面与再次进入该界面组时的界面相同(no-change)。通过界面跳转限制映射字典用来记录应用程序界面切换过程中,所属某组的界面列表是否有记忆功能。判断方式上次离开该界面组时所在界面与再次进入该界面组中某一界面是否相等,相等则表示有记忆功能。也即,未变更界面唯一标识列表包含的界面具有记忆功能。
由此,通过界面组字典记录界面唯一标识和界面组唯一标识之间的关联关系,通过界面跳转限制映射字典预判界面有向网络图中连通的路径实际上是否能走通。
进一步,所述步骤x可以包括步骤:将所述最短路径途径的界面称作途径界面,对于每一途径界面,若所述历史测试数据表明所述途径界面所属界面组具有记忆功能,且所述途径界面并非其所属界面组的记忆界面,则确定所述最短路径中指向所述途径界面的路径为不可达路径。
例如,可以判断途径界面是否属于对应界面跳转限制映射字典中的未变更界面唯一标识列表。如果途径界面属于未变更界面唯一标识列表,则确定该途径界面存在记忆功能,采用上述具体实施所述方案计算得到最短路径中指向该途径界面的路径为不可达路径。
进一步,在步骤y中,当记忆界面能够直接跳转到途径界面时,可以简单地用记忆界面跳转到途径界面的跳转路径替换掉采用上述具体实施所述方案计算得到最短路径中的不可达路径,以使得调整后的最短路径是能够顺利走通的。
进一步,如果无法从记忆界面直接跳转到途径界面,则进一步根据界面跳转限制映射字典和界面有向网络图查找中转界面,并以中转界面为跳板从记忆界面多级跳转到途径界面。
由此,在本变化例中,可以在初步计算得到最短路径后,根据界面有向网络图和历史测试结果先对路径计算结果进行一次筛查,以在正式执行跳转之前先排除掉其中的不可达路径。换言之,采用本变化例的方案,所述步骤S301输出的跳转路径即为最优路径,且所述最优路径是对基于界面有向网络图计算得到的最短路径的优化结果。理论上,所述最优路径是能够顺利到达目标界面的,但仍无法排除按所述最优界面实际跳转期间因界面的动态变化而导致某些路径不可达。因此,在按步骤S301计算得到的最短路径或最优路径进行跳转期间,采用图3所示方案来根据界面的实时变化动态调整界面有向网络图,从而及时纠正步骤S301计算得到的最短路径或最优路径,确保成功到达目标界面。
在一个具体实施中,参考图4,所述步骤S302可以包括如下步骤:
步骤S3021,根据本次跳转结果更新所述界面有向网络图;
步骤S3022,以本次跳转到达的实际界面为起始界面,根据更新后的界面有向网络图计算从所述起始界面到所述目标界面的跳转路径作为纠正后的跳转路径。
也就是说,在按照步骤S301计算得到的最短路径或最优路径执行跳转过程中,若当前跳转到达的界面不是路径期望跳转界面,则进行路径纠正并更新界面有向网络图。然后,以当前到达的界面为起始界面重新计算最短路径或最优路径。
所述步骤S3022中,计算从所述起始界面到所述目标界面的跳转路径作为纠正后的跳转路径的具体过程可以参考上述关于步骤S301的相关描述。
在一个具体实施中,所述步骤S3021可以包括步骤:将所述界面有向网络图中,执行本次跳转之前的界面到所述期望界面之间的跳转路径标记为不可达,以得到更新后的界面有向网络图。
具体而言,可以将上一个界面(即执行本次跳转前所处界面)、本次跳转所操作的元素或布局、本次跳转本来期望跳转的界面这一条跳转路径记做不可达。
在一个具体实施中,在按照所述跳转路径进行跳转期间,每次跳转到达实际界面之后,本实施例所述路径纠正方法还可以包括步骤:查找所述界面有向网络图中以所述实际界面为目标界面的跳转路径;将查找得到的跳转路径中被标记为不可达的跳转路径恢复成可达路径。
也即,若当前界面作为目标界面,在界面有向网络图中有其他界面作为源界面,且从这些作为源界面的其他界面到所述当前界面的跳转路径已被标记不可达,则应恢复这些跳转路径为可达。这些路径被标记为不可达可能是以其他界面为源界面、当前界面为目标界面执行跳转期间因执行图3所示具体实施方案而被标记的。
由此,可以避免历史上执行图3所示路径纠正方案时更新的界面有向网络图对本次的路径纠正策略造成限制。
在一个具体实施中,在所述步骤S302中,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则在根据本次跳转结果和所述界面有向网络图纠正所述跳转路径之前,本实施例所述路径纠正方法还可以包括步骤:根据所述界面有向网络图判断是否存在替代路径,其中,所述替代路径为从其他界面跳转到所述期望界面的跳转路径,所述其他界面是指所述界面有向网络图中除了本次跳转之前的界面之外的界面;当判断结果表明存在所述替代路径时,根据本次跳转结果和所述界面有向网络图纠正所述跳转路径。
也就是说,在执行路径纠正之前,可以判断是否有其他界面跳转到期望界面的路径;如果没有,则表明当前确定为不可达的路径是单向路径,没有替代路径能够到达期望路径因而不能执行路径纠正操作;反之,如果有,则继续执行路径纠正操作。
在一个变化例中,若不存在替代路径,则可以针对当前确定不可达的单向路径执行单向路径锚点记忆方法。所述单向路径锚点记忆方法在单向路径不可达时通过仿照人的思维方式探索出满足单向路径跳转目标的各种操作的有效组合,使得应用程序界面自动化探索时能够正确地从源界面跳转到目标界面。
具体而言,将实际探索时发现不可达的单向路径记录为锚点,通过以此锚点进行一轮或多轮的操作来尝试不同操作所带来的界面变化和界面间跳转情况。通过历次跳转操作结果指导计算下一轮跳转操作的跳转路径,最终找到能够连通至终点界面的路径。
由此,通过仿照人的操作思维方式,针对界面的可操作元素或布局进行相关操作,并记录操作带来的正向或反向的变化,从而探索出满足单向路径跳转目标的各种操作的有效组合。
在一个具体实施中,在执行步骤S302之后,本实施例所述路径纠正方法还可以包括步骤:判断所述界面有向网络图中从其他界面跳转至所述期望界面的所有跳转路径是否均被标记为不可达,其中,所述其他界面是指所述界面有向网络图中除了本次跳转之前的界面之外的界面;当判断结果表明从其他界面跳转至所述期望界面的所有跳转路径均被标记为不可达时,将从其他界面跳转至所述期望界面的所有跳转路径全部恢复成可达路径。
具体而言,若所有其他界面跳转到期望界面的路径都已被标记为不可达,则应恢复路径,以避免下次计算最短路径会最优路径时无可达路径。
在一个典型的应用场景中,参考图5,本实施例所述应用程序界面跳转的路径纠正过程可以包括:
首先,执行操作s51,以计算界面S(即源界面)到界面E(即目标界面)的最优路径。例如,根据界面有向网络图计算界面S到界面E的最优路径。操作s51可以对应步骤S301。
然后,执行操作s52,从当前界面按最优路径跳转到下一个期望界面。
接下来,执行操作s53,以恢复界面有向网络图中其他界面跳转到实际界面且被标记为不可达的路径。其中,实际界面为执行操作s52后实际跳转到达的界面。操作s53恢复的是界面有向网络图中以实际界面为目标界面的跳转路径中被标记为不可达的路径。
接下来,执行操作s54,以判断实际界面是否与期望界面相一致。
若操作s54的判断结果为肯定的,也即实际界面与期望界面一致,则进一步执行操作s55,以判断实际界面是否为界面E。
若操作s55的判断结果为肯定的,则表明已经成功跳转到目标界面(即界面E),整个路径纠正流程结束。
若操作s55的判断结果为否定的,则表明尚未到达目标界面(界面E),则跳转至操作s52以按最优路径继续跳转。
若操作s54的判断结果为否定的,也即实际界面不是期望界面,则进一步执行操作s56,以判断是否有其他界面跳转到期望界面的路径。也即,判断是否存在替代路径。
若操作s56的判断结果为否定的,也即不存在替代路径,则无法执行路径纠正策略,本次跳转流程结束。
若操作s56的判断结果为肯定的,也即存在替代路径,则进一步执行操作s57,以在界面有向网络图上将上一个界面到期望界面的路径设为不可达。所述操作s57可以对应步骤S3021,所述上一个界面即为操作52中所述的当前界面。
在执行操作s57之后,进一步执行操作s58,若由其他界面跳转到期望界面的路径都已经被标记为不可达,则在界面有向网络图上恢复这些路径为可达路径。
然后,执行操作s59,以当前界面为起始界面重新计算路径。操作s59可以对应步骤S303。
在一个变化例中,若操作s56的判断结果为否定的,则可以执行单向路径锚点记忆方法,以通过不断的尝试最终到达界面E。
在一个典型的应用场景中,假设执行图1和图2所示自动化测试过程探索一段时间后生成的界面有向网络图如图6所示,图中省略了操作元素、操作类型、界面跳转等待时间等操作信息。
参考图6,经过探索生成的界面有向网络图包括界面1至界面6共六个界面,各界面之间的跳转如图中各界面间的连线所示,连线的箭头方向表示跳转方向。
假设当前在界面6,想跳转到界面4,那么执行步骤S301确定的跳转路径是6→4。
但实际跳转时,从界面6跳转到达的是界面1。相应的,将6→4的路径设置为不可达,然后以界面1为起始界面重新计算后的跳转路径是1→5→4。
从界面1再次跳转时又回到界面6。相应的,将1→5的路径设置为不可达,然后以界面6为起始界面重新计算后的跳转路径是1→2→3→4。
从界面6再次跳转时到达的期望界面与实际界面一致,最终跳转到了界面4。
由上,采用本实施方案,能够根据应用程序运行时界面的动态变化实时调整跳转路径,使得应用程序界面自动化探索时能够正确地从源界面跳转到目标界面。
具体而言,基于界面有向网络图,以及最短路径算法和策略,寻找两个界面之间的跳转最优路径。进一步,考虑应用程序在某些界面有记忆功能或因在上一个界面执行了特定操作而导致的界面动态变化,根据界面动态变化情况及时纠正当前执行的跳转路径,从而避免获取的路径是不可达的。
由此,本实施方案能够根据界面的实时变化动态调整界面有向网络图,然后根据变化后的界面有向网络图重新计算最短或最优路径,确保从源界面正确、快速地跳转到目标界面。
图7是本发明实施例一种应用程序界面跳转的路径纠正装置的结构示意图。本领域技术人员理解,本实施例所述应用程序界面跳转的路径纠正装置7可以用于实施上述图3至图6所述实施例中所述的方法技术方案。
具体地,参考图7,本实施例所述应用程序界面跳转的路径纠正装置7可以包括:处理模块71,用于根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径,其中,所述界面有向网络图用于描述所述应用程序的各个界面之间的跳转路径及触发跳转的操作信息;纠正模块72,用于在按照所述跳转路径进行跳转期间,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则根据本次跳转结果和所述界面有向网络图纠正所述跳转路径;测试模块73,用于按照纠正后的跳转路径继续进行跳转,直至到达所述目标界面。
关于所述应用程序界面跳转的路径纠正装置7的工作原理、工作方式的更多内容,可以参照上述图3至图6中的相关描述,这里不再赘述。
进一步地,本发明实施例还公开一种存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述图1和图2所示实施例中所述的方法技术方案。或者,所述计算机程序被处理器运行时执行上述图3至图6所示实施例中所述的方法技术方案。优选地,所述存储介质可以包括诸如非挥发性(non-volatile)存储器或者非瞬态(non-transitory)存储器等计算机可读存储介质。所述存储介质可以包括ROM、RAM、磁盘或光盘等。
进一步地,本发明实施例还公开一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述图1和图2所示实施例中所述的方法技术方案。或者,所述处理器运行所述计算机程序时执行上述图3至图6所示实施例中所述的方法技术方案。具体地,所述终端可以为安装有所述应用程序的终端设备。
进一步地,本发明实施例还公开一种终端,所述终端包括如图7所示应用程序界面跳转的路径纠正装置7。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (14)

1.一种应用程序界面跳转的路径纠正方法,其特征在于,包括:
根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径,其中,所述界面有向网络图用于描述所述应用程序的各个界面之间的跳转路径及触发跳转的操作信息;
在按照所述跳转路径进行跳转期间,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则根据本次跳转结果和所述界面有向网络图纠正所述跳转路径;
按照纠正后的跳转路径继续进行跳转,直至到达所述目标界面;
其中,所述根据本次跳转结果和所述界面有向网络图纠正所述跳转路径包括:
根据本次跳转结果更新所述界面有向网络图;
以本次跳转到达的实际界面为起始界面,根据更新后的界面有向网络图计算从所述起始界面到所述目标界面的跳转路径作为纠正后的跳转路径。
2.根据权利要求1所述的路径纠正方法,其特征在于,所述根据本次跳转结果更新所述界面有向网络图包括:
将所述界面有向网络图中,执行本次跳转之前的界面到所述期望界面之间的跳转路径标记为不可达,以得到更新后的界面有向网络图。
3.根据权利要求1所述的路径纠正方法,其特征在于,每次跳转到达实际界面之后,还包括:
查找所述界面有向网络图中以所述实际界面为目标界面的跳转路径;
将查找得到的跳转路径中被标记为不可达的跳转路径恢复成可达路径。
4.根据权利要求1所述的路径纠正方法,其特征在于,在根据本次跳转结果和所述界面有向网络图纠正所述跳转路径之前,还包括:
根据所述界面有向网络图判断是否存在替代路径,其中,所述替代路径为从其他界面跳转到所述期望界面的跳转路径,所述其他界面是指所述界面有向网络图中除了本次跳转之前的界面之外的界面;
当判断结果表明存在所述替代路径时,根据本次跳转结果和所述界面有向网络图纠正所述跳转路径。
5.根据权利要求1所述的路径纠正方法,其特征在于,在根据本次跳转结果和所述界面有向网络图纠正所述跳转路径之后,还包括:
判断所述界面有向网络图中从其他界面跳转至所述期望界面的所有跳转路径是否均被标记为不可达,其中,所述其他界面是指所述界面有向网络图中除了本次跳转之前的界面之外的界面;
当判断结果表明从其他界面跳转至所述期望界面的所有跳转路径均被标记为不可达时,将从其他界面跳转至所述期望界面的所有跳转路径全部恢复成可达路径。
6.根据权利要求1所述的路径纠正方法,其特征在于,所述根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径包括:
根据所述界面有向网络图计算从所述源界面跳转到目标界面的最短路径。
7.根据权利要求6所述的路径纠正方法,其特征在于,所述根据所述界面有向网络图计算从所述源界面跳转到目标界面的最短路径包括:
对所述界面有向网络图进行广度优先搜索,以得到主从关系字典,其中,所述主从关系字典用于记录所述源界面能够达到的所有路径;
结合所述主从关系字典,对所述界面有向网络图进行深度优先搜索,以得到所述最短路径。
8.根据权利要求7所述的路径纠正方法,其特征在于,所述结合所述主从关系字典,对所述界面有向网络图进行深度优先搜索,以得到所述最短路径包括:
结合所述主从关系字典按照递归方式搜索所述界面有向网络图,以得到多条从所述源界面到达所述目标界面的候选路径;
选取跳转次数最少的候选路径作为所述最短路径。
9.根据权利要求7所述的路径纠正方法,其特征在于,所述结合所述主从关系字典,对所述界面有向网络图进行深度优先搜索,以得到所述最短路径包括:
结合所述主从关系字典按照递归方式搜索所述界面有向网络图,以得到多条从所述源界面到达所述目标界面的候选路径;
根据所述操作信息确定每条候选路径的加权值,其中,所述加权值用于表征所述候选路径的推荐度;
选取跳转次数最少且加权值最高的候选路径作为所述最短路径。
10.根据权利要求1或9所述的路径纠正方法,其特征在于,所述操作信息包括:测试项;操作的奖励;界面跳转等待时间。
11.根据权利要求1所述的路径纠正方法,其特征在于,所述界面有向网络图是历史上对所述应用程序进行自动化测试得到的,所述自动化测试包括如下步骤:
A.根据当前界面中的元素、布局以及当前界面对应的活动生成所述当前界面的界面唯一标识,其中,所述界面唯一标识用于唯一地表征所述应用程序的界面;
B.选择所述当前界面上未探索过的测试项进行探索,其中,所述测试项包括所述当前界面上的元素或布局,以及针对所述元素或布局的操作类型;
C.基于本次探索跳转得到的目标界面更新界面有向网络图;
D.将所述目标界面确定为所述当前界面并重复执行步骤A至步骤C,直至所述应用程序的所有界面的所有测试项均探索完成。
12.一种应用程序界面跳转的路径纠正装置,其特征在于,包括:
处理模块,用于根据界面有向网络图计算从所述应用程序的源界面跳转到目标界面的跳转路径,其中,所述界面有向网络图用于描述所述应用程序的各个界面之间的跳转路径及触发跳转的操作信息;
纠正模块,用于在按照所述跳转路径进行跳转期间,若本次跳转到达的实际界面不同于本次跳转期望到达的期望界面,则根据本次跳转结果和所述界面有向网络图纠正所述跳转路径;
测试模块,用于按照纠正后的跳转路径继续进行跳转,直至到达所述目标界面;
其中,所述纠正模块执行如下步骤:
根据本次跳转结果更新所述界面有向网络图;
以本次跳转到达的实际界面为起始界面,根据更新后的界面有向网络图计算从所述起始界面到所述目标界面的跳转路径作为纠正后的跳转路径。
13.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1至11任一项所述方法的步骤。
14.一种终端,包括如权利要求12所述的装置,或者包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序时执行权利要求1至11任一项所述方法的步骤。
CN202110025149.5A 2021-01-08 2021-01-08 应用程序界面跳转的路径纠正方法及装置、存储介质、终端 Active CN112835787B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110025149.5A CN112835787B (zh) 2021-01-08 2021-01-08 应用程序界面跳转的路径纠正方法及装置、存储介质、终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110025149.5A CN112835787B (zh) 2021-01-08 2021-01-08 应用程序界面跳转的路径纠正方法及装置、存储介质、终端

Publications (2)

Publication Number Publication Date
CN112835787A CN112835787A (zh) 2021-05-25
CN112835787B true CN112835787B (zh) 2022-09-27

Family

ID=75929045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110025149.5A Active CN112835787B (zh) 2021-01-08 2021-01-08 应用程序界面跳转的路径纠正方法及装置、存储介质、终端

Country Status (1)

Country Link
CN (1) CN112835787B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113687901B (zh) * 2021-08-26 2024-04-30 海信电子科技(武汉)有限公司 界面显示方法及界面显示装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294167A (zh) * 2016-08-16 2017-01-04 济南大学 Android应用程序界面自动遍历方法及系统
CN107122295A (zh) * 2017-03-30 2017-09-01 腾讯科技(深圳)有限公司 测试用例脚本的生成方法和装置
CN107168705A (zh) * 2017-05-11 2017-09-15 电子科技大学 图形界面语义描述系统及其建立方法和操作路径生成方法
CN111309622A (zh) * 2020-02-27 2020-06-19 中国平安人寿保险股份有限公司 应用程序测试方法、装置、终端设备以及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108415932B (zh) * 2018-01-23 2023-12-22 思必驰科技股份有限公司 人机对话方法及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294167A (zh) * 2016-08-16 2017-01-04 济南大学 Android应用程序界面自动遍历方法及系统
CN107122295A (zh) * 2017-03-30 2017-09-01 腾讯科技(深圳)有限公司 测试用例脚本的生成方法和装置
CN107168705A (zh) * 2017-05-11 2017-09-15 电子科技大学 图形界面语义描述系统及其建立方法和操作路径生成方法
CN111309622A (zh) * 2020-02-27 2020-06-19 中国平安人寿保险股份有限公司 应用程序测试方法、装置、终端设备以及存储介质

Also Published As

Publication number Publication date
CN112835787A (zh) 2021-05-25

Similar Documents

Publication Publication Date Title
US8464221B2 (en) Visualization tool for system tracing infrastructure events
CN109189469B (zh) 基于反射的安卓应用微服务化方法及系统
JP5264898B2 (ja) 遅延バインディングのプログラム補助
CN109240666B (zh) 基于调用栈和依赖路径的函数调用代码生成方法及系统
US20220374339A1 (en) Techniques for visual software test automation management
CN105468529A (zh) 一种安卓应用ui控件精准遍历方法和装置
CN112783764B (zh) 应用程序的自动化测试方法及装置、存储介质、终端
US10365905B1 (en) Systems and methods for evaluating application performance changes via comparative call graphs
US20220374334A1 (en) Techniques for visual software test automation management
CN109189374A (zh) 基于对象引用链的对象构造代码生成方法及系统
CN112529206A (zh) 一种模型运行方法和系统
CN112835787B (zh) 应用程序界面跳转的路径纠正方法及装置、存储介质、终端
US20220374338A1 (en) Techniques for visual software test automation management
CN112835786B (zh) 应用程序界面跳转的最优路径计算方法及装置、存储介质、终端
US20120319983A1 (en) Method and system for revising user input position
CN109240678B (zh) 代码生成方法及装置
CN116931933B (zh) 一种应用适配自由缩放的自动判断方法
CN107786869B (zh) 一种电视设备菜单路径生成方法、装置及存储介质
JP4675639B2 (ja) データ処理システム、アプリケーションプログラムのカスタマイズパラメータを表示する方法およびコンピュータプログラム製品
CN112835785B (zh) 应用程序界面跳转的单向路径锚点记忆方法及装置、存储介质、终端
CN113220564A (zh) 页面的自动化测试方法、装置、设备以及存储介质
CN113553268A (zh) 一种ai智能软件测试方法
CN107807993B (zh) 一种网页历史记录功能的实现方法及装置
CN113254315B (zh) 埋点信息的上报方法、埋点方法、装置、介质、电子设备
CN110209593B (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