CN113986768A - 应用程序稳定性测试方法、装置、设备及介质 - Google Patents

应用程序稳定性测试方法、装置、设备及介质 Download PDF

Info

Publication number
CN113986768A
CN113986768A CN202111445290.7A CN202111445290A CN113986768A CN 113986768 A CN113986768 A CN 113986768A CN 202111445290 A CN202111445290 A CN 202111445290A CN 113986768 A CN113986768 A CN 113986768A
Authority
CN
China
Prior art keywords
test
page
target
scene
target test
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
Application number
CN202111445290.7A
Other languages
English (en)
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.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China 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 Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN202111445290.7A priority Critical patent/CN113986768A/zh
Publication of CN113986768A publication Critical patent/CN113986768A/zh
Pending legal-status Critical Current

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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • 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

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

应用程序稳定性测试方法、装置、设备及介质
技术领域
本申请涉及应用软件测试技术领域,具体而言,涉及一种应用程序稳定性测试方法、装置、设备及介质。
背景技术
随着互联网的发展,移动端软件(application,简称app)的开发及使用越来越多,目前移动端软件由于碎片化的问题以及移动端软件自身原因,需要进行稳定性测试,即在移动端软件上进行不符合逻辑的高频率操作,以验证移动端软件在不同终端上能否在强度乱点情况下不出现崩溃情况。
但是,因为稳定性测试本身机制的随机性,随时都有可能跳出当前在测场景,无法针对性地对某业务场景进行长时间测试,且无法针对移动端软件里的某个模块或者界面进行指定测试。
因此,如何提高对移动端软件进行稳定性测试的效率是当前亟需解决的问题。
发明内容
为解决上述技术问题,本申请的实施例提供了一种应用程序稳定性测试方法、装置、设备及介质,以提高对移动端软件进行稳定性测试的效率。
第一方面,本申请提供一种应用程序稳定性测试方法,包括:启动待测应用程序,并进入待测应用程序对应的目标测试场景;对目标测试场景进行随机压力测试,并在随机压力测试过程中监测当前测试场景是否为目标测试场景;若当前测试场景不为目标测试场景,则获取随机压力测试的历史执行记录,并获取目标测试场景的每个页面之间的页面跳转关系;根据历史执行记录以及页面跳转关系,获取目标测试场景的入口页面,以根据入口页面进入目标测试场景。
在一种可选的实施方式中,进入待测应用程序对应的目标测试场景,包括:获取目标测试场景对应的脚本文件;根据脚本文件对待测应用程序进行用户界面自动化测试,以进入目标测试场景。
在一种可选的实施方式中,对目标测试场景进行随机压力测试,包括:获取目标测试场景的预设配置文件;根据预设配置文件获取测试配置信息;其中,测试配置信息包括测试方法以及测试方法对应的配置参数;根据测试配置信息对目标测试场景进行随机压力测试。
在一种可选的实施方式中,根据测试配置信息对目标测试场景进行随机压力测试,包括:识别目标测试场景中每个页面包含的控件;获取控件的控件信息,以及获取预设的配置映射表;其中,配置映射表用于表明控件信息与测试配置信息之间的映射关系;根据控件信息查询配置映射表,得到控件对应的测试配置信息;根据测试配置信息生成伪输入操作集合,根据伪输入操作集合对控件进行随机压力测试。
在一种可选的实施方式中,根据控件信息为控件匹配对应的测试配置信息,包括:根据控件信息判断控件是否存在可执行操作;若控件存在可执行操作,则将控件作为目标控件;根据目标控件的控件信息为目标控件匹配对应的测试配置信息。
在一种可选的实施方式中,根据历史执行记录以及页面跳转关系,获取目标测试场景的入口页面,包括:根据历史执行记录判断随机压力测试是否正常运行;若随机压力测试正常运行,则根据历史执行记录获取随机压力测试跳出目标测试场景时所在的跳出页面,将跳出页面作为入口页面;若随机压力测试不正常运行,则根据页面跳转关系获取目标测试场景对应的起始页面,将起始页面作为入口页面。
在一种可选的实施方式中,根据页面跳转关系获取目标测试场景对应的起始页面,包括;根据页面跳转关系确定每个页面的页面路径信息;根据页面路径信息,获取目标测试场景对应的起始页面。
第二方面,本申请提供一种应用程序稳定性测试装置,包括:启动模块,用于启动待测应用程序,并进入待测应用程序对应的目标测试场景;测试模块,用于对所述目标测试场景进行随机压力测试,并在所述随机压力测试过程中监测当前测试场景是否为所述目标测试场景;参数获取模块,用于若所述当前测试场景不为所述目标测试场景,则获取所述随机压力测试的历史执行记录,并获取所述目标测试场景的每个页面之间的页面跳转关系;跳转模块,用于根据所述历史执行记录以及所述页面跳转关系,获取所述目标测试场景的入口页面,以根据所述入口页面进入所述目标测试场景。
第三方面,本申请提供一种计算机设备,计算机设备包括存储器和处理器;存储器,用于存储计算机程序;处理器,用于执行的计算机程序并在执行的计算机程序时实现上述应用程序稳定性测试方法的步骤。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时使处理器实现上述应用程序稳定性测试方法的步骤。
本申请实施例公开的应用程序稳定性测试方法、装置、设备及介质,通过启动待测应用程序,并进入待测应用程序对应的目标测试场景;对目标测试场景进行随机压力测试,以对待测应用程序进行针对性的稳定性测试,进而满足待测应用程序不同的测试要求,提高测试效率。在随机压力测试过程中监测当前测试场景是否为目标测试场景;若当前测试场景不为目标测试场景,则获取随机压力测试的历史执行记录,并获取目标测试场景的每个页面之间的页面跳转关系;根据历史执行记录以及页面跳转关系,获取目标测试场景的入口页面,以根据入口页面进入目标测试场景。通过实时检测当前测试场景是否为目标测试场景,以在发现随机压力测试跳出目标测试场景后,再次进入该目标测试场景继续进行随机压力测试,以保证在该目标测试场景中的压力测试可以顺利完成,提高随机压力测试的稳定性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本申请实施例提供的应用程序稳定性测试方法的应用环境示意图;
图2是本申请实施例提供的应用程序稳定性测试方法的流程图;
图3是本申请实施例提供的待测应用程序的页面的有向路径连通图;
图4是本申请另一实施例提供的应用程序稳定性测试方法的流程图;
图5是本申请实施例提供的应用程序稳定性测试装置的示意性框图;
图6是本申请实施例提供的计算机设备的示意性框图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
还需要说明的是:在本申请中提及的“多个”是指两个或者两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
图1示出了本申请示例性实施例的运行环境的一种系统架构示意图,参考图1所示,该系统可以包括测试终端110、网络以及服务器120。测试终端110以及服务器120之间通过网络通信连接,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
测试终端110可以是硬件,也可以是软件。当测试终端110为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、智能手环和台式计算机等等。当测试终端110为软件时,可以安装在上述所列举的电子设备中。其中,测试终端110上安装有待测应用程序。
服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,本申请实施例提供的应用程序稳定性测试方法可以使用于应用程序稳定性测试装置中,该应用程序稳定性测试装置可以集成在计算机设备中,该计算机设备可以是服务器120也可以是测试终端110。
应该理解,图1中的终端设备和服务器的数目仅仅是示意性的,仅用于理解本申请实施例,具体终端设备和服务器的数量均应当结合实际情况灵活确定。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图2,图2为本申请实施例提供的应用程序稳定性测试方法的一个流程示意图。如图2所示,该方法包括步骤S210至步骤S240。
步骤S210、启动待测应用程序,并进入待测应用程序对应的目标测试场景。
目标测试场景指的是待测应用程序中特定的一个或多个页面,可以将整个待测应用程序作为目标测试场景,也可以将待测应用程序中的某一个功能模块作为目标测试场景,还可以是将待测应用程序中的某一个功能模块中的几个选定的控件组合起来作为目标测试场景。
目标测试场景可以是技术人员根据测试目标进行预先设置的,测试目标指的是需要测试的内容。目标测试场景也可以是测试程序自动获取的,例如,监测待测应用程序是否存在功能更新,功能更新指的是待测应用程序存在某一个功能模块的改变或功能模块的增加,若存在功能更新,则将功能更新对应的功能模块作为目标测试场景进行测试。
示例性地,在接收到应用程序测试请求时,根据该应用程序测试请求获取待测应用程序以及该待测应用程序的目标测试场景,进入对应的Activity。以便后续对该目标测试场景进行测试和实时监控,确保所有的有效测试操作均是针对该目标测试场景来进行的。其中,Activity是一个应用程序组件,提供一个具有用户界面的屏幕,用户可以通过该屏幕与应用程序进行交互,每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满屏幕或者小于屏幕并浮动在其他窗口之上。
需要说明的是,一个应用程序通常是由多个彼此松散联系的Activity组成,一般会指定应用程序中的某个Activity为主活动,也就是说首次启动应用程序时给用户呈现的Activity,而本实施例中待测应用程序对应的Activity,指的是根据目标测试场景获取到的所有Activity中的一个或多个Activity。
在一些实施方式中,进入待测应用程序对应的目标测试场景,包括:获取目标测试场景对应的脚本文件;根据脚本文件对待测应用程序进行用户界面自动化测试,以进入目标测试场景。
可以根据需要测试的目标测试场景得到该目标测试场景对应的脚本文件,脚本文件用于在对待测应用程序执行用户界面(User Interface,简称UI)自动化测试时,指定用户界面自动化测试需要进入的目标测试场景。其中,脚本文件可以是测试人员基于目标应用程序的目标测试场景中包括的页面元素或模块元素预先编写的,脚本文件也可以是测试程序根据目标测试场景自动生成的,本申请对此不做限定。
用户界面自动化测试主要是基于JAVA\PYTHON等语言来编写,执行用户界面自动化测试的脚本文件时,可以使用任一款用户界面自动化测试框架,例如UIAutomator框架,Robotium框架或Monkeyrunner框架等。应用程序的每个测试场景都有特定的程序入口,通过执行用户界面自动化测试的脚本进入目标测试场景,按照特定的顺序遍历特定页面的元素或者特定功能模块的元素。
用户界面自动化测试的对象为测试终端上安装的待测应用程序,在对待测应用程序进行测试时,首先打开测试终端上安装的待测应用程序,然后根据脚本文件的测试指令对测试终端上显示的待测应用程序的页面进行测试,以运行待测应用程序进入目标测试场景。其中,测试指令可以根据预设的自然语言语法编写,预设的自然语言语法可以是根据自然语言语法预先设置的支持用户界面自动化测试的全部语法,例如,可以通过创建自然语言语法库,利用自然语言语法库编写测试指令,在此对根据预设的自然语言语法编写测试时令的实现方式不作限定。
在一些实施方式中,还可以是测试程序将目标测试场景对应的入口页面作为启动待测应用程序时对应的测试启动页,然后启动待测应用程序,根据测试启动页进入待测应用程序对应的目标测试场景。测试启动页指的是启动待测应用程序后首先打开的页面,启动测试程序后,可以直接进入测试启动页,以测试待测应用程序在目标测试场景的运行情况。
通过启动待测应用程序后进入目标测试场景,以对指定的目标测试场景进行测试,节省了测试时间,提高了测试效率。
步骤S220、对目标测试场景进行随机压力测试,并在随机压力测试过程中监测当前测试场景是否为目标测试场景。
示例性地,在待测应用程序进行用户界面自动化测试时,获取记载用户界面自动化测试活动状态的任务堆栈,通过获取任务堆栈的信息来判断当前测试场景是否处于目标测试场景中。任务堆栈记载的当前运行环境中的活动,包括宿主活动或宿主活动的继承,按照活动被记载的顺序,位于栈顶的活动可以是宿主活动,也可以是宿主活动的继承。
当检测到被测应用程序的当前测试场景为目标测试场景时,对该目标测试场景进行随机压力测试。
在一些实施方式中,对目标测试场景进行随机压力测试,包括:获取目标测试场景的预设配置文件;根据预设配置文件获取测试配置信息;其中,所述测试配置信息包括测试方法以及测试方法对应的配置参数;根据测试配置信息对目标测试场景进行随机压力测试。
测试程序进入到待测应用程序的目标测试场景之后,可以利用随机压力测试工具对目标测试场景进行随机压力测试,其中,随机压力测试工具包括但不限于集成在测试程序上的压力测试工具Monkey等。
示例性地,获取Monkey测试工具的预设配置文件,预设配置文件可以是技术人员根据目标测试场景中包含的页面元素或控件元素预先编写的,也可以是测试程序根据目标测试场景自动生成的,本申请对此不做限定。测试配置信息包括测试方法以及测试方法对应的配置参数。测试方法指的是执行随机压力测试的具体实施步骤,例如对按钮、文本框执行点击和拖动等操作,配置参数指的是执行随机压力测试的执行参数,例如每次点击操作的间隔时间;自动化随机压力测试的时间、是否需要录屏、是否需要截图以及截图的数量、随机压力测试触发时间类型和比率等。需要说明的是,测试配置信息可以根据待测应用程序的实际需要进行设置,也可以根据历史测试数据动态生成,此处不做限定。
Monkey测试是自动化测试的一种手段,通过模拟用户的按键输入、触摸屏输入以及手势输入等,检测待测应用程序对应的设备多长时间会出异常,当Monkey程序在模拟器或设备运行的时候,如果用户触发了比如点击、触摸、手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey测试工具随机重复的方法去负荷测试开发的待测应用程序。
在一些实施方式中,可以根据目标测试场景中测试对象的不同,匹配不同测试对象对应的配置文件,以根据配置文件对多个测试对象分别进行测试,其中,测试对象指的是待测页面或待测页面中的具体控件。例如,可以通过对Monkey测试工具的测试方法和配置参数进行设置,从而对Monkey测试工具添加针对测试对象的约束限制,以对不同的测试对象进行不同压力测试。
以待测应用程序的登录界面中用户名输入框和密码输入框以及登录按钮为测试对象为例,在进行压力测试时,Monkey测试工具获取每个测试对象对应的配置文件,以得到每个测试对象的测试方法以及配置参数。然后,该Monkey测试工具通过分析每个测试对象的测试方法可以得到,对用户名输入框和密码输入框自动进行长时间大量数据输入的操作,以及对登录按钮则自动进行长时间高频率的点击操作,同时该Monkey测试工具通过分析每个测试对象的配置参数可以得到,对用户名输入框和密码输入框分别输入用户名和密码以及点击登录按钮操作的测试次数为8万次,而对其它的功能测试为2万次,其它的功能测试可以是登录界面上其它的控件,例如对登录界面中的分享按钮的点击操作的测试次数为2万次。通过Monkey测试工具对不同的测试对象分别进行针对性的压力测试,可以提高发现待测应用程序的性能问题的几率,有效减少无用操作的次数,缩短测试时间,提高测试效率。
在一些实施方式中,根据测试配置信息对目标测试场景进行随机压力测试,包括:识别目标测试场景中每个页面包含的控件;获取控件的控件信息,以及获取预设的配置映射表;其中,配置映射表用于表明控件信息与测试配置信息之间的映射关系;根据控件信息查询配置映射表,得到控件对应的测试配置信息;根据测试配置信息生成伪输入操作集合,根据伪输入操作集合对控件进行随机压力测试。
Monkey测试可以主要是针对目标测试场景中各个页面的各个控件进行测试,故而需要识别目标测试场景中各个页面包含的控件,以便于后续对识别的各个控件进行测试,从而通过检测该控件是否存在应用无响应、崩溃等异常问题,来判断该版本的待测应用程序是否存在漏洞。
可以根据待测页面中的每个元素的类名(classname)和进程ID(processid)来对各页面中的所有控件进行识别。然后,可以根据配置映射表以及各个控件的控件信息匹配对应的测试配置信息,以根据测试配置信息生成伪输入操作。
其中,配置映射表可以是技术人员预先存储的,也可以是通过分析历史测试用例自动生成的,用于表明控件信息与测试配置信息之间的映射关系,控件信息可以包括但不限于控件属性、控件之间逻辑关系、可执行操作等信息。该控件属性信息可以包括控件名称和控件描述信息,当然还可包括控件类名、位置坐标、是否可操作、文本等等其他控件属性信息;控件之间逻辑关系用于反映控件之间的关系属性,例如控件之间的上下级关系、控件之间的同级关系等;可执行操作用于反映控件可以接收的操作,例如鼠标点击、键盘输入等相关操作。
例如,控件为按钮A,按钮A的可执行操作包括点击与拖动,根据按钮A的可执行操作查询配置映射表,得到对应的测试方法包括“对按钮A进行点击操作”以及“对按钮A进行拖动操作”。然后根据按钮A的控件,为该按钮A包括的测试方法配置对应的配置参数,如测试方法为“对按钮A进行点击操作”时,通过按钮A的位置信息查询配置映射表得到该测试方法对应的配置参数包括:对按钮进行8万次点击操作,且点击时间为2秒,点击操作之间的间隔时间为1秒。进而根据按钮A包括的测试方法以及测试方法对应的配置参数生成伪输入操作,以得到按钮A对应的伪输入操作集合。
根据测试配置信息对各个控件进行随机压力测试,以保证测试的准确性,提高测试效率。
在一些实施方式中,由于提取了每个待测页面中的所有控件,但是绝大部分控件并不是有意义的控件,因此,根据控件信息判断控件是否存在可执行操作;若控件存在可执行操作,则将控件作为目标控件;根据目标控件的控件信息为目标控件匹配对应的测试配置信息。
通过对控件做进一步的筛选过滤处理,可以筛选得到存在可执行操作的控件,即具有伪输入操作意义的控件。这个过滤过程可以通过递归的方式去进行迭代筛选。在实际应用中,可以通过过滤页面中的布局(layout)层,过滤掉一些不可见的控件,得到有意义的目标控件。通过对控件进行筛选过滤处理,可以减少不必要的控件查找和测试操作,进一步提高应用测试效率。
根据目标控件的控件信息匹配该目标控件对应的测试配置信息,以根据测试配置信息对该目标控件进行伪输入操作。通过测试配置信息对各个目标控件执行不同的测试操作,例如对于伪输入操作次数需求较多的目标控件可以设置更高的测试次数,对于伪输入操作次数需求较少的目标控件可以设置更低的测试次数。如此,可以根据控件的实际操作情况进行差异化的Monkey测试,更符合用户实际操作需求。
示例性地,可以通过为控件设置优先级,根据各个控件的优先级对各个控件进行伪输入操作,以在进行随机压力测试时,总是尽量尝试去点击更高优先级的控件,然后再对低优先级的控件进行操作。
由于Monkey测试是可以运行在模拟器里或实际设备中的程序,通过向系统发送随机的伪输入事件流,比如按键输入、触摸屏输入以及手势输入等,从而实现对的待测应用程序的测试,这里每对控件进行一次伪输入操作相当于对控件执行一次Monkey测试。
可选地,伪输入操作包括但不限于为单双击、键盘输入、右键、滑动、拖拽等操作类型,伪输入操作的具体操作类型根据测试配置信息而确定。仅作为示例,若选取的控件为输入框,则根据测试配置信息确定对应的伪输入操作为键盘输入,若选取的控件为滑块,则根据测试配置信息确定对应的伪输入操作为滑动。
根据测试配置信息对各个控件进行伪输入操作,直至满足测试结束条件。可选地,测试结束条件包括达到预设测试时间、测试完所有控件以及达到预设测试次数中至少一种。
其中,预设测试时间可以根据待测应用程序中控件的复杂程度来确定,例如预设测试时间可以为10小时,且在对新的待测应用程序进行应用测试时,可以初始化该预设测试时间为匹配数值。预设测试次数可以为待测应用程序中每个控件执行Monkey测试的平均次数,或者待测应用程序执行Monkey测试的总次数。
然后,根据获得的每次伪输入操作对应的测试信息,生成待测应用程序的测试报告。其中,测试报告可以包括异常控件的属性信息及其异常信息,测试报告还可以包括控件出现异常的测试次数、控件操作路径等信息。
示例性的,当待测应用程序为Windows应用时,可以通过检测bugreport进程来检测待测应用程序是否发生了崩溃,即是否发生了Crash。若检测发生了崩溃则去获取对应的crash文件,crash文件是指记录待测应用程序在系统压力或性能测试过程中,有时出现因某种原因出现持续无响应、功能失常或程序停止工作等情况的信息。
进一步地,在对待测应用程序的目标测试场景进行随机压力测试时,实时监测当前测试场景是否为目标测试场景,即监测是否发生页面跳转行为而导致随机压力测试跳出了目标测试场景。
步骤S230、若所述当前测试场景不为所述目标测试场景,则获取所述随机压力测试的历史执行记录,并获取所述目标测试场景的每个页面之间的页面跳转关系。
在对待测应用程序进行随机压力测试过程中,一些组件事件被触发后,可能会跳转到目标测试场景之外的场景中去,例如跳转到待测应用程序中的其它页面,或跳转到待测应用程序之外的程序中去,如浏览器、支付工具或者第三方登录验证程序等,使得后续测试无法顺利进行,造成需要反复测试。
为避免这种情况导致测试效率低下,可以按照预设的时间间隔,对待测应用程序的Activity进行检测,得到当前Activity,再通过当前Activity与目标测试场景的目标Activity对比,判断当前测试的页面是否属于目标测试场景,若不是,则触发重定向操作,获取随机压力测试的历史执行记录以及每个页面之间的页面跳转关系。
随机压力测试的历史执行记录指的是在随机压力测试过程中的操作记录,如点击控件的记录,点击次数的记录等。存在页面跳转关系的两个页面之间可以单向跳转或双向跳转,以从一个页面到达另外一个页面。
示例性地,根据目标测试场景的每个页面的跳转链接,确定目标测试场景的页面和跳转链接对应的页面之间具有页面跳转关系。其中,目标测试场景的页面作为跳转链接对应的页面的来源页面,跳转链接对应的页面作为目标测试场景的页面的目标页面。来源页面指的是页面跳转关系中跳转前的起始页面,目标页面指的是页面跳转关系中跳转后的终点页面。
每个目标测试场景可以由多个页面或窗口组成的,多个页面或窗口可以同时存在,但通常只有一个页面或窗口处于激活状态。每个页面中可以包括至少一个控件,比如点击框、按钮、滑块、输入框、下拉菜单等,控件上可以对应设置有跳转链接,通过触发该当前待测页面的一个控件可以跳转至下一级或上一级页面。
各个页面上可以设置有不同的跳转链接,跳转链接可以为页面按钮,也可以为图片,还可以为文字,在此不对跳转链接的具体表现形式进行限定。例如,第一页面上部署有第二页面按钮,第二页面按钮设置有第二页面的跳转链接,当用户在第一页面点击第二页面按钮时,就可以从第一页面跳转到跳转链接对应的第二页面,即第一页面和第二页面之间具有页面跳转关系,且第一页面为来源页面,第二页面为目标页面。
可以理解的是,一个页面上可以存在多个跳转链接,即一个页面可以和多个其它页面存在页面跳转关系。
步骤S240、根据历史执行记录以及页面跳转关系,获取目标测试场景的入口页面,以根据入口页面进入目标测试场景。
根据历史执行记录可以获知随机压力测试在发生跳转前的测试情况,判断跳转前的随机压力测试发生跳转的原因,进而根据跳转的原因匹配对应的跳转策略。根据跳转策略以及待测应用程序的页面跳转关系获取跳回目标测试场景的入口页面,以根据入口页面进入目标测试场景。
在一些实施方式中,根据历史执行记录以及页面跳转关系,获取目标测试场景的入口页面,包括:根据历史执行记录判断随机压力测试是否正常运行;若随机压力测试正常运行,则根据历史执行记录获取随机压力测试跳出目标测试场景时所在的跳出页面,将跳出页面作为入口页面;若随机压力测试不正常运行,则根据页面跳转关系获取目标测试场景对应的起始页面,将起始页面作为入口页面。
根据历史执行记录判断随机压力测试发生跳转行为时该随机压力测试是否正常运行。当发生跳转行为时随机压力测试是正常运行的情况下,则表明跳出为意外事件,例如,是测试人员手动点出了当前的待测应用程序的页面。在跳出时随机压力测试是正常运行的情况下,可以根据历史执行记录获取跳出待测应用程序时所在的跳出页面,将跳出页面作为入口页面,继续完成之前的测试。
当跳出时随机压力测试不正常运行的情况下,说明跳出是因为测试程序出现错误或者安装待测应用程序的设备宕机等故障事件,此前的测试数据可能未被存储或者测试数据存在错误。因此,在跳出时随机压力测试不是正常运行的情况下,为了保证测试结果的准确性,可以根据页面跳转关系获取目标测试场景对应的起始页面,将起始页面作为入口页面,根据入口页面跳回目标测试场景,重新对该目标测试场景进行测试。通过该方式,使得随机压力测试跳回时的页面满足实际情况需求,同时避免不必要的重复测试,提高测试效率。
在一些实施方式中,根据页面跳转关系,获取目标测试场景对应的入口页面的步骤可以包括:根据页面跳转关系确定每个页面的页面路径信息;根据页面路径信息,获取目标测试场景对应的起始页面。
目标测试场景可以包括多个页面,可以理解的是,目标测试场景中包含的一个页面至少与其它页面中的至少一者存在跳转关系。因此,根据目标测试场景的每个页面的页面跳转关系,可以获得页面路径信息。通过每个页面的页面路径信息,可以得到目标测试场景中各个页面之间的有向路径连通图,有向路径连通图中各个节点代表各个页面。
示例地,请参阅图3,目标测试场景包括页面A、页面B、页面C以及页面D,根据对每个页面的跳转链接进行分析,得到页面A与页面B之间存在页面跳转关系,可以由页面A跳转到页面B,页面B和页面C以及页面D之间存在页面跳转关系,可以由页面B跳转到页面C以及页面D。将页面A、页面B、页面C以及页面D分别作为节点,如图3所示,根据页面之间的连接关系可以得到有向路径连通图,其中,有向路径连通图中连接线的方向代表页面跳转的方向。可以理解的是,目标测试场景包括页面还可以跳转到其他页面,其他页面可以是待测应用程序中的目标测试场景之外的页面,其他页面也可以是其他应用程序中的页面,本申请对此不做限定。
获取路径连通图的起始节点,起始节点指的是在路径连通图中仅存在指向其它节点的连线的节点,将该起始节点对应的页面作为该目标测试场景的起始页面。例如,如图3所示,该路径连通图的起始节点为页面A,则页面A为目标测试场景的起始页面。
请参阅图4,图4为本申请另一个实施例提供的应用程序稳定性测试方法的流程示意图。如图4所示,该方法包括步骤S410至步骤S460。
步骤S410、启动待测应用程序,并进入待测应用程序对应的目标测试场景。
可以根据需要测试的目标测试场景得到该目标测试场景对应的脚本文件,脚本文件用于在对待测应用程序执行用户界面自动化测试时,指定用户界面自动化测试需要进入的目标测试场景。
还可以是测试程序将目标测试场景对应的入口页面作为启动待测应用程序时对应的测试启动页,然后启动待测应用程序,根据测试启动页进入待测应用程序对应的目标测试场景。测试启动页指的是启动待测应用程序后首先打开的页面,启动测试程序后,可以直接进入测试启动页,以测试待测应用程序在目标测试场景的运行情况。
步骤S420、对目标测试场景进行随机压力测试。
测试程序进入到待测应用程序的目标测试场景之后,可以利用随机压力测试工具对目标测试场景进行随机压力测试,其中,随机压力测试工具包括但不限于集成在测试程序上的压力测试工具Monkey等。
步骤S430、判断当前测试场景是否为目标测试场景,若当前测试场景是目标测试场景,则继续执行步骤S420;若当前测试场景不是目标测试场景,则执行步骤S440。
可以按照预设的时间间隔,对待测应用程序的当前测试场景进行检测,将当前测试场景与目标测试场景的进行对比,判断当前测试的页面是否属于目标测试场景,若是,则继续执行步骤S420;若不是,则执行步骤S440。
步骤S440、获取目标测试场景的入口页面,以根据入口页面进入目标测试场景。
重定向到目标测试场景的入口页面,以根据入口页面进入目标测试场景。其中,入口页面可以是目标测试场景中包含的页面,如目标测试场景的起始页面或跳转出目标测试场景时对应的跳出页面,通过直接重定向至该入口页面进入目标测试场景;入口页面也可以是目标测试场景中不包含的页面,如入口页面包含有入口跳转链接,该入口跳转链接可以跳转到目标测试场景中任一页面或指定页面,通过重定向至该入口页面后,执行点击该入口跳转链接的操作,以进入目标测试场景。
步骤S450、检测随机压力测试是否达到测试结束条件,若否,则继续执行步骤S420;若是,则执行步骤S460。
根据测试配置信息对各个控件进行伪输入操作,直至满足测试结束条件。可选地,测试结束条件包括达到预设测试时间、测试完所有控件以及达到预设测试次数中至少一种。
其中,预设测试时间可以根据待测应用程序中控件的复杂程度来确定,例如预设测试时间可以为7-10小时,且在对新的待测应用程序进行应用测试时,可以初始化该预设测试时间为匹配数值。预设测试次数可以为待测应用程序中每个控件执行Monkey测试的平均次数,或者待测应用程序执行Monkey测试的总次数。
步骤S460、生成测试报告。
根据获得的每次伪输入操作对应的测试信息,生成待测应用程序的测试报告。其中,测试报告可以包括异常控件的属性信息及其异常信息,测试报告还可以包括控件出现异常的测试次数、控件操作路径等信息。
本申请提供的应用程序稳定性测试方法,通过启动待测应用程序,并进入待测应用程序对应的目标测试场景;对目标测试场景进行随机压力测试,以对待测应用程序进行针对性的稳定性测试,进而满足待测应用程序不同的测试要求,提高测试效率。在随机压力测试过程中监测当前测试场景是否为目标测试场景;若当前测试场景不为目标测试场景,则获取随机压力测试的历史执行记录,并获取目标测试场景的每个页面之间的页面跳转关系;根据历史执行记录以及页面跳转关系,获取目标测试场景的入口页面,以根据入口页面进入目标测试场景。通过实时检测当前测试场景是否为目标测试场景,以在发现随机压力测试跳出目标测试场景后,再次进入该目标测试场景继续进行随机压力测试,以保证在该目标测试场景中的压力测试可以顺利完成,提高随机压力测试的稳定性。
请参阅图5,图5是本申请一实施例提供的一种应用程序稳定性测试装置的示意框图,该应用程序稳定性测试装置可以配置于服务器或计算机设备中,用于执行前述的应用程序稳定性测试方法。
如图5所示,应用程序稳定性测试装置500包括:启动模块510、测试模块520、参数获取模块530以及跳转模块540。
启动模块510,用于启动待测应用程序,并进入待测应用程序对应的目标测试场景;
测试模块520,用于对目标测试场景进行随机压力测试,并在随机压力测试过程中监测当前测试场景是否为目标测试场景;
参数获取模块530,用于若当前测试场景不为目标测试场景,则获取随机压力测试的历史执行记录,并获取目标测试场景的每个页面之间的页面跳转关系;
跳转模块540,用于根据历史执行记录以及页面跳转关系,获取目标测试场景的入口页面,以根据入口页面进入目标测试场景。
在一些实施方式中,进入待测应用程序对应的目标测试场景,包括:获取目标测试场景对应的脚本文件;根据脚本文件对待测应用程序进行用户界面自动化测试,以进入目标测试场景。
在一些实施方式中,对目标测试场景进行随机压力测试,包括:获取目标测试场景的预设配置文件;根据预设配置文件获取测试配置信息;其中,测试配置信息包括测试方法以及测试方法对应的配置参数;根据测试配置信息对目标测试场景进行随机压力测试。
在一些实施方式中,根据测试配置信息对目标测试场景进行随机压力测试,包括:识别目标测试场景中每个页面包含的控件;获取控件的控件信息;根据控件信息为控件匹配对应的测试配置信息;根据测试配置信息对控件进行随机压力测试。
在一些实施方式中,根据控件信息为控件匹配对应的测试配置信息,包括:根据控件信息对控件进行过滤处理,得到目标控件;根据目标控件的控件信息为目标控件匹配对应的测试配置信息。
在一些实施方式中,根据历史执行记录以及页面跳转关系,获取目标测试场景的入口页面,包括:根据历史执行记录判断随机压力测试是否正常运行;若随机压力测试正常运行,则根据历史执行记录获取随机压力测试跳出目标测试场景时所在的跳出页面,将跳出页面作为入口页面;若随机压力测试不正常运行,则根据页面跳转关系获取目标测试场景对应的起始页面,将起始页面作为入口页面。
在一些实施方式中,根据页面跳转关系获取目标测试场景对应的起始页面,包括;根据页面跳转关系确定每个页面的页面路径信息;根据页面路径信息,获取目标测试场景对应的起始页面。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请的方法、装置可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
示例性地,上述的方法、装置可以实现为一种计算机程序的形式,该计算机程序可以在如图6所示的计算机设备上运行。
请参阅图6,图6是本申请实施例提供的一种计算机设备的示意图。该计算机设备可以是服务器或终端。
如图6所示,该计算机设备600包括通过系统总线620连接的处理器610、存储器630和网络接口640,其中,存储器630可以包括非易失性存储介质和内存储器。
非易失性存储介质可存储操作系统650和计算机程序660。该计算机程序660包括程序指令,该程序指令被执行时,可使得处理器610执行任意一种应用程序稳定性测试方法。
处理器610用于提供计算和控制能力,支撑整个计算机设备600的运行。
内存储器630为非易失性存储介质中的计算机程序660的运行提供环境,该计算机程序660被处理器610执行时,可使得处理器610执行任意一种应用程序稳定性测试方法。
该网络接口640用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,该计算机设备600的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备600的限定,具体地计算机设备600可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,处理器610可以是中央处理单元(Central Processing Unit,CPU),该处理器610还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器610可以是微处理器或者该处理器610也可以是任何常规的处理器等。
其中,处理器610用于运行存储在存储器中的计算机程序660,以实现本申请实施例提供的任一种应用程序稳定性测试方法。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序中包括程序指令,程序指令被执行时实现本申请实施例提供的任一种应用程序稳定性测试方法。
其中,计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如计算机设备的硬盘或内存。计算机可读存储介质也可以是计算机设备的外部存储设备,例如计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种应用程序稳定性测试方法,其特征在于,所述方法包括:
启动待测应用程序,并进入所述待测应用程序对应的目标测试场景;
对所述目标测试场景进行随机压力测试,并在所述随机压力测试过程中监测当前测试场景是否为所述目标测试场景;
若所述当前测试场景不为所述目标测试场景,则获取所述随机压力测试的历史执行记录,并获取所述目标测试场景的每个页面之间的页面跳转关系;
根据所述历史执行记录以及所述页面跳转关系获取所述目标测试场景的入口页面,以根据所述入口页面进入所述目标测试场景。
2.根据权利要求1所述的方法,其特征在于,所述进入待测应用程序对应的目标测试场景,包括:
获取所述目标测试场景对应的脚本文件;
根据所述脚本文件对所述待测应用程序进行用户界面自动化测试,以进入所述目标测试场景。
3.根据权利要求1所述的方法,其特征在于,所述对所述目标测试场景进行随机压力测试,包括:
获取所述目标测试场景的预设配置文件;
根据所述预设配置文件获取测试配置信息;其中,所述测试配置信息包括测试方法以及所述测试方法对应的配置参数;
根据所述测试配置信息对所述目标测试场景进行随机压力测试。
4.根据权利要求3所述的方法,其特征在于,所述根据所述测试配置信息对所述目标测试场景进行随机压力测试,包括:
识别所述目标测试场景中每个页面包含的控件;
获取所述控件的控件信息,以及获取预设的配置映射表;其中,所述配置映射表用于表明所述控件信息与测试配置信息之间的映射关系;
根据所述控件信息查询所述配置映射表,得到所述控件对应的测试配置信息;
根据所述测试配置信息生成伪输入操作集合,根据所述伪输入操作集合对所述控件进行随机压力测试。
5.根据权利要求4所述的方法,其特征在于,所述根据所述控件信息为所述控件匹配对应的测试配置信息,包括:
根据所述控件信息判断所述控件是否存在可执行操作;
若所述控件存在可执行操作,则将所述控件作为目标控件;
根据所述目标控件的控件信息为所述目标控件匹配对应的测试配置信息。
6.根据权利要求1所述的方法,其特征在于,所述根据所述历史执行记录以及所述页面跳转关系,获取所述目标测试场景的入口页面,包括:
根据所述历史执行记录判断所述随机压力测试是否正常运行;
若所述随机压力测试正常运行,则根据所述历史执行记录获取所述随机压力测试跳出所述目标测试场景时所在的跳出页面,将所述跳出页面作为所述入口页面;
若所述随机压力测试不正常运行,则根据所述页面跳转关系获取所述目标测试场景对应的起始页面,将所述起始页面作为入口页面。
7.根据权利要求6所述的方法,其特征在于,所述根据所述页面跳转关系获取所述目标测试场景对应的起始页面,包括;
根据所述页面跳转关系确定每个页面的页面路径信息;
根据所述页面路径信息,获取所述目标测试场景对应的起始页面。
8.一种应用程序稳定性测试装置,其特征在于,所述装置包括:
启动模块,用于启动待测应用程序,并进入待测应用程序对应的目标测试场景;
测试模块,用于对所述目标测试场景进行随机压力测试,并在所述随机压力测试过程中监测当前测试场景是否为所述目标测试场景;
参数获取模块,用于若所述当前测试场景不为所述目标测试场景,则获取所述随机压力测试的历史执行记录,并获取所述目标测试场景的每个页面之间的页面跳转关系;
跳转模块,用于根据所述历史执行记录以及所述页面跳转关系,获取所述目标测试场景的入口页面,以根据所述入口页面进入所述目标测试场景。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述的计算机程序并在执行所述的计算机程序时实现如权利要求1至7中任一项所述的应用程序稳定性测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如权利要求1至7中任一项所述的应用程序稳定性测试方法。
CN202111445290.7A 2021-11-30 2021-11-30 应用程序稳定性测试方法、装置、设备及介质 Pending CN113986768A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111445290.7A CN113986768A (zh) 2021-11-30 2021-11-30 应用程序稳定性测试方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111445290.7A CN113986768A (zh) 2021-11-30 2021-11-30 应用程序稳定性测试方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN113986768A true CN113986768A (zh) 2022-01-28

Family

ID=79732702

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111445290.7A Pending CN113986768A (zh) 2021-11-30 2021-11-30 应用程序稳定性测试方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN113986768A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115687162A (zh) * 2023-01-03 2023-02-03 北京集度科技有限公司 软件测试设备、方法、电子设备及计算机程序产品

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115687162A (zh) * 2023-01-03 2023-02-03 北京集度科技有限公司 软件测试设备、方法、电子设备及计算机程序产品

Similar Documents

Publication Publication Date Title
US10169206B2 (en) Simultaneous multi-platform testing
US8533532B2 (en) System identifying and inferring web session events
US20200034281A1 (en) System and method for automated intelligent mobile application testing
US8332765B2 (en) Problem reporting system based on user interface interactions
CN101877696B (zh) 在网络应用环境下重构错误响应信息的设备和方法
US8024453B2 (en) Monitoring performance of dynamic web content applications
CN111124919A (zh) 一种用户界面的测试方法、装置、设备及存储介质
US10095599B2 (en) Optimization for application runtime monitoring
CN109815119B (zh) 一种app链接渠道的测试方法及装置
Vos et al. testar–scriptless testing through graphical user interface
CN111198797B (zh) 操作监控方法及装置、操作分析方法及装置
US20180321997A1 (en) Issue detection and signature generation
US11436133B2 (en) Comparable user interface object identifications
US20190079854A1 (en) Systems and methods for executing tests
CN111654495B (zh) 用于确定流量产生来源的方法、装置、设备及存储介质
US11169910B2 (en) Probabilistic software testing via dynamic graphs
CN113014445A (zh) 用于服务器的运维方法、装置、平台及电子设备
Sayagh et al. Multi-layer software configuration: Empirical study on wordpress
CN113590454A (zh) 测试方法、装置、计算机设备和存储介质
CN113986768A (zh) 应用程序稳定性测试方法、装置、设备及介质
US10706108B2 (en) Field name recommendation
US9104573B1 (en) Providing relevant diagnostic information using ontology rules
WO2024097232A1 (en) Systems and methods for providing a timeline view of log information for a client application
US20180219752A1 (en) Graph search in structured query language style query
US20170123959A1 (en) Optimized instrumentation based on functional coverage

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