CN107544902A - 程序测试方法、装置和设备 - Google Patents

程序测试方法、装置和设备 Download PDF

Info

Publication number
CN107544902A
CN107544902A CN201610500831.4A CN201610500831A CN107544902A CN 107544902 A CN107544902 A CN 107544902A CN 201610500831 A CN201610500831 A CN 201610500831A CN 107544902 A CN107544902 A CN 107544902A
Authority
CN
China
Prior art keywords
test
interface block
page
measured
software under
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.)
Granted
Application number
CN201610500831.4A
Other languages
English (en)
Other versions
CN107544902B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610500831.4A priority Critical patent/CN107544902B/zh
Publication of CN107544902A publication Critical patent/CN107544902A/zh
Application granted granted Critical
Publication of CN107544902B publication Critical patent/CN107544902B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种程序测试方法、装置和设备。该方法包括:获取待测软件的至少一个待测界面区块;其中,所述至少一个待测界面区块包括一个预设的测试点;采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果。本申请实施例的方法,大大减少了待测软件的测试目标的个数,提高了待测软件稳定性测试的测试效率。

Description

程序测试方法、装置和设备
技术领域
本申请涉及软件测试技术,尤其涉及一种程序测试方法、装置和设备。
背景技术
Monkey测试(猴子测试)是Android(安卓)软件自动化测试的重要手段之一,它通过模拟用户按键、触摸屏幕、滑动轨迹球等操作,来对软件进行压力测试,检测软件的稳定性和健壮性。
在具体测试时,Monkey测试程序针对是屏幕中的所有像素点,当Monkey测试程序在设备(即安装待测软件的设备)启动后,Monkey测试程序针对待测软件中的每个Activity页面会随机产生一定数量的随机模拟用户操作的操作事件流,然后基于这些操作对待测软件中的每个Activity页面上的像素点(即测试点)随机进行测试,判断待测软件是否会出现问题以及多长时间出现问题。
但是,现有技术中Monkey测试程序在测试程序稳定性时,其测试效率低下。
发明内容
本申请提供一种程序测试方法、装置和设备,以解决现有技术中的monkey程序测试应用程序的稳定性时测试效率低下的技术问题。
一个方面,本申请提供一种程序测试方法,包括:
获取待测软件的至少一个待测界面区块;其中,所述至少一个待测界面区块包括一个预设的测试点;
采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果。
上述所提供的程序测试方法,通过获取待测软件的至少一个待测界面区块,基于该至少一个待测界面区块,采用所生成的用户模拟操作事件,对至少一个待测界面区块上的测试点进行测试,得到测试结果,其无需对待测软间在屏幕上的所有像素点进行测试,而是有针对性的对所划分的待测界面区块上的一个测试点进行测试,其大大减小了测试目标的个数,也减少了测试时所执行的用户模拟操作事件数,大大提高了测试程序稳定性时的效率。
作为一种可实现的方式,所述采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果,具体包括:
根据页面访问轨迹判断所述待测软件的待测界面区块是否均已测试;其中,所述页面访问轨迹包括所述待测软件中已测试界面区块的信息;
若否,则采用所生成的用户模拟操作事件,对所述待测软件的每个未测试界面区块的测试点进行测试,获得测试结果。
上述所提供的程序测试方法,通过根据页面访问轨迹确定待测软件的待测界面区块是否均已测试,如果待测软件中存在未测试的区块,则终端设备采用所生成的用户模拟操作事件,对待测软件的每个未测试界面区块上的测试点进行测试,获得测试结果,从而使得测试过程不会重复,有据可依,使得测试效率得以提高;另外,上述每个待测界面区块上的测试点均是根据应用程序的实际测试情况进行预设的,该测试点的位置可以保证终端设备在对测试点执行用户模拟操作事件时不会脱离被测对象;同时,终端设备可以根据页面访问轨迹获知待测软件的已测试界面区块的个数,进而获知测试覆盖范围,从而根据该测试覆盖范围确定当前的测试结果是否准确,大大提高了测试结果的有效性判断。
作为一种可实现的方式,所述获取待测软件的至少一个待测界面区块,具体包括:
根据当前设备的屏幕分辨率,对所述待测软件的每个页面所在的屏幕进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的大小;
根据每个所述页面的待测界面区块,获取所述至少一个待测界面区块,并进行缓存。
作为一种可实现的方式,所述根据当前设备的屏幕分辨率,对所述待测软件的每个页面进行划分,获取每个页面的待测界面区块,具体包括:
根据所述屏幕分辨率和预设的核心区域位置信息,对所述待测软件的每个页面所在的屏幕的核心区域进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的核心区域的大小。
上述实现方式所提供的程序测试方法,通过根据屏幕分辨率对待测软件的每个页面所在的屏幕进行划分,得到每个页面的待测界面区块,进而获得待测软件的至少一个待测界面区块,使得终端设备可以基于这些待测界面区块中的测试点对该待测软件进行测试,其大大减小了测试目标的个数,也减少了测试时所执行的用户模拟操作事件数,提高了测试程序稳定性时的效率;并且基于不同的待测界面区块的划分方式,待测界面区块中预设的测试点的位置,可以保证基于待测界面区块的测试点进行测试时,不会出现脱离被测对象的情况,从而使得测试过程有效。
作为一种可实现的方式,所述采用所生成的用户模拟操作事件,对所述待测软件的每个所述未测试界面区块的测试点进行测试之后,所述方法还包括:
若所述待测软件的类型为操作类型的应用软件,则根据预设的选择策略从所述待测软件的已测试界面区块中获取至少一个核心界面区块;
采用所生成的用户模拟操作事件对每个所述核心界面区块的测试点再次进行测试。
作为一种可实现的方式,所述获得测试结果,具体包括:
根据所述页面访问轨迹,获取所述待测软件的测试覆盖范围信息;其中,所述测试覆盖范围信息包括:所述待测软件中已测试界面区块的个数、所述待测软件的每个页面中已测试界面区块的个数、被测试的页面的数量中的至少一个;
根据所述测试覆盖范围信息,确定所述待测软件的测试结果。
上述实现方式所提供的程序测试方法,当终端设备对每个未测试界面区块进行测试之后,并且在确定待测软件的类为操作类型的应用软件时,终端设备根据预设的选择策略从待测软件的已测试界面区块中获取至少一个核心界面区块,并且采用用户模拟操作事件对每个核心界面区块进行测试,从而提升monkey测试的覆盖范围,增加发现问题的概率;另一方面,在获取测试结果时,终端设备可以根据页面访问轨迹确定待测软件的测试覆盖范围信息,从而根据该测试覆盖范围信息确定待测软件的测试结果,其根据量化的标准衡量测试结果是否准确,提高了测试结果的可依据性和准确性。
作为一种可实现的方式,所述采用所生成的用户模拟操作事件,对所述待测软件的每个所述未测试界面区块的测试点进行测试,具体包括:
步骤A:在当前未测试界面区块测试完成后,将所述当前未测试界面区块的信息记录至所述页面访问轨迹中,并根据当前的页面访问轨迹从缓存列表中获取下一未测试界面区块;
步骤B:从所生成的用户模拟操作事件流中获取所述下一未测试界面区块对应的用户模拟操作事件,并采用所述下一未测试界面区块对应的用户模拟操作事件对所述下一未测试界面区块进行测试;所述用户模拟操作事件流包括多个用户模拟操作事件;
步骤C:若判断所述缓存列表中存在未测试界面区块,且所述用户模拟操作事件流中存在未执行的用户模拟操作事件,以及,所述待测软件的测试时间未超过预设的时间阈值,则返回执行所述步骤A,直至所述用户模拟操作事件流中不存在未执行的用户模拟操作事件,或者,所述待测软件的测试时间超过所述时间阈值,或者,测试过程出错为止。
上述实现方式所提供的程序测试方法,通过页面访问轨迹确定缓存列表中是否存在未测试界面区块,并在存在未测试界面区块时,对每个未测试界面区块进行测试,避免了盲目的重复测试,提高了测试效率。
另一方面,本申请提供一种程序测试装置,包括:
第一获取模块,用于获取待测软件的至少一个待测界面区块;其中,所述至少一个待测界面区块包括一个预设的测试点;
测试模块,用于采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果。
上述所提供的程序测试装置,其有益效果可以参照上述各可实现方式中的程序测试方法所带来的有益效果,在此不再赘述。
另一方面,本申请提供一种程序测试设备,包括处理器和存储器,所述处理器耦合至所述存储器;
所述处理器,用于执行上述的程序测试方法。
上述所提供的程序测试设备,其有益效果可以参照上述各可实现方式中的程序测试方法所带来的有益效果,在此不再赘述。
在本申请中,通过获取待测软件的至少一个待测界面区块,基于该至少一个待测界面区块,采用所生成的用户模拟操作事件,对至少一个待测界面区块上的测试点进行测试,得到测试结果,其无需对待测软间在屏幕上的所有像素点进行测试,而是有针对性的对所划分的待测界面区块上的一个测试点进行测试,其大大减小了测试目标的个数,也减少了测试时所执行的用户模拟操作事件数,大大提高了测试程序稳定性时的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种程序测试方法的流程示意图;
图2为本申请一实施例提供的一种程序测试方法的流程示意图;
图3为本申请一实施例提供的应用程序的页面的待测界面区块的示意图;
图4为本申请一实施例提供的程序测试方法的流程示意图;
图5为本申请一实施例提供的现有技术中的测试目标示意图;
图6为本申请一实施例提供的待测界面区块的示意图一;
图7为本申请一实施例提供的待测界面区块的示意图二;
图8为本申请一实施例提供的程序测试方法的流程示意图;
图9为本申请一实施例提供的程序测试方法的流程示意图;
图10为本申请一实施例提供的程序测试方法的流程示意图;
图11为本申请一实施例提供的程序测试方法的流程示意图;
图12为本申请一实施例提供的程序测试装置结构示意图;
图13为本申请一实施例提供的程序测试装置结构示意图;
图14为本申请一实施例提供的程序测试装置结构示意图;
图15为本申请一实施例提供的程序测试设备硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
为了清楚起见,首先说明本发明使用的特定词或短语的定义。
monkey程序:用来测试应用程序稳定性和健壮性的测试工具,当monkey程序在设备上运行时,monkey程序会模拟用户的按键输入、触摸屏输入、手势输入等,从而生成一系列的随机模拟操作事件,基于这些操作事件测试应用程序,判断设备多长时间会出异常,从而得到应用程序是否稳定的测试结果。
本申请实施例涉及的程序测试方法,可以适用于任一应用程序的稳定性测试,例如手机上的应用程序、电脑上的应用程序、以及其他终端设备上的应用程序,本申请实施例对应用程序的类型并不做限定。本申请涉及到的方法的程序语言包括但不限于java、python、shell等或者其它可实现同等功能的编程语言。
现有技术在利用monkey程序测试应用程序的稳定性和健壮性时,其通常是将monkey程序安装在终端设备上,然后触发monkey程序测试,monkey程序随机生成一些用户操作事件(即生成一操作序列),这些用户操作事件针对的是应用程序的页面所在屏幕上的像素点的操作,基于这些用户操作事件对应用程序的页面进行测试(实际上是通过对应用程序的页面所在屏幕上的像素点的测试来实现对应用程序的测试)。但是,现有技术经常存在以下几种问题:
第一:在进行monkey测试时,由于monkey程序生成的用户模拟操作事件针对的屏幕的像素点是没有规则的,经常会出现对一个已经测试过的像素点重复进行测试,或者对一些无效的像素点进行测试,测试效率低下;
第二:在进行monkey测试时,假设monkey程序当前选取的屏幕的像素点为屏幕的顶部,且monkey程序当前要执行的用户操作事件(即测试动作)为下拉滑动动作,以安卓手机上的应用程序来说,位于屏幕顶部的通常是通知栏,应用程序的页面一般位于通知栏的下部,这样当monkey程序模拟用户对屏幕的顶部执行下拉操作时,则恰好会将通知栏下拉下来从而覆盖应用程序的页面,这样在monkey程序对屏幕上的其他像素点执行下一个用户操作事件时,monkey程序就会脱离被测对象,出现测试无效的现象;
第三:现有技术中的monkey测试,其在执行用户操作事件时,针对屏幕的像素点的选取是杂乱无章的,这样就会导致屏幕上的部分区域像素点测试密集,另一部分区域测试零散甚至完全没有被测试到(即产生测试死角),从而使得针对整个屏幕上的像素点的测试不均匀,这样即使在获得最终的测试结果后,研发人员无法获知整个屏幕的像素点是否已经全部覆盖到,故使得研发人员无法确定该测试结果是否准确。
基于此,本申请实施例提供了一种程序测试方法、装置和设备,用以解决现有技术中的monkey程序测试应用程序的稳定性时测试效率低下、容易产生测试死角导致测试结果无法衡量、以及测试时容易脱离被测对象导致测试无效的技术问题。
可选的,本申请实施例的执行主体可以是安装应用程序和本申请中的monkey程序的装置,该装置可以是独立的终端设备,还可以是集成在终端设备上的测试装置,该测试装置可以通过软件或者软硬结合的方式实现,例如可以是android手机设备或者android手机模拟器或者其它手机模拟器。下述实施例以执行主体为终端设备为例。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图1为本申请一实施例提供的一种程序测试方法的流程示意图。本实施例涉及的是终端设备通过对所获取的待测软件的待测界面区块进行测试,实现对待测软件的稳定性测试的具体过程。如图1所示,该方法可以包括如下步骤:
S101:获取待测软件的至少一个待测界面区块;其中,所述至少一个待测界面区块包括一个预设的测试点。
具体的,本申请实施例中,终端设备在对待测软件的稳定性进行测试时,需要获取该待测软件上的至少一个待测界面区块。可选的,该待测软件可以包括多个页面,每个页面可以包括多个待测界面区块,可选的,该待测界面区块可以是面积大于像素点的圆形区块、正方形区块、长方形区块或者梯形区块、三角形区块等,本申请实施例对待测界面区块的形状并不做限制。其中,每一个待测界面区块可以包括多个像素点,在这些像素点中,可以预设一个测试点,该测试点为待测界面区块的有效区域的测试点,该测试点的预设位置用于保证在对该测试点执行某一用户模拟操作事件时,不会脱离被测对象。可选的,应用程序的页面可以是native类型的页面,还可以是html5类型的页面,还可以是二者的结合,本申请实施例对应用程序的页面类型并不做限定。
S102:采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果。
可选的,终端设备上可以具有一用户操作操作事件流,该用户模拟操作事件流可以包括多个用户模拟操作事件,终端设备可以采用所生成的用户模拟操作事件对上述至少一个待测界面区块的测试点进行测试,获得测试结果。可选的,该用户模拟操作事件可以是具体的滑动事件、点击时间、下拉事件等,本申请实施例对用户模拟操作事件的类型并不做限定,只要其能够测试待测软件的稳定性即可。
由上述描述可知,终端设备仅需要对待测软件的待测界面区块上的预设的一个测试点进行测试,无需对待测软件在屏幕上的所有像素点进行测试,其大大减少了测试目标的个数,同样也减少了测试时所执行的用户模拟操作事件数,提高了测试程序稳定性时的效率。
图2为本申请一实施例提供的一种程序测试方法的流程示意图。本实施例涉及的是终端设备通过页面访问轨迹确定待测软件存在未测试界面区块时,继续对未测试界面区块进行测试,以完成整个待测软件的测试的具体过程。如图2所示,该方法可以包括:
S201:根据页面访问轨迹判断所述待测软件的待测界面区块是否均已测试;其中,所述页面访问轨迹包括所述待测软件中已测试界面区块的信息。
S202:若否,则采用所生成的用户模拟操作事件,对所述待测软件的每个未测试界面区块的测试点进行测试,获得测试结果。
具体的,本申请实施例中,在进行monkey测试时,终端设备从所生成的用户模拟操作事件流中获取当前要执行的用户模拟操作事件,然后终端设备从待测软件的各待测界面区块中获取当前要测试的待测界面区块,并采用当前所获取的用户模拟操作事件对当前选取的待测界面区块进行测试;当该待测界面区块测试完成后,终端设备会将该待测界面区块的信息进行记录,形成页面访问轨迹(即终端会在页面访问轨迹中记录当前已经测试过的区块的信息)。可选的,页面访问轨迹中所记录的已测试界面区块的信息可以是已测试界面区块的标识、已测试界面区块的序号、还可以是其他能够标识已测试界面区块的信息。
当终端设备对当前待测界面区块测试完成后,终端设备会根据页面访问轨迹中所记录的待测软件的已测试界面区块的信息,确定当前待测软件的各待测界面区块是否均已完成测试,即确定当前待测软件中是否存在未测试界面区块。若终端设备确定待测软件中存在未测试界面区块时,终端设备会根据页面访问轨迹中已测试界面区块的信息,从待测软件的所有待测界面区块中获取未测试界面区块作为当前待测试区块,并且终端设备从用户模拟操作事件流中再次获取当前要执行的用户模拟操作事件(这里所获取的用户模拟操作事件可以与之前获取的用户模拟操作事件相同,也可以不同),采用该用户模拟操作事件对当前所选取的未测试界面区块进行测试,并在测试完成后将当前的区块信息记录至页面访问轨迹中,依次类推,直至待测软件中所有待测界面区块均完成测试、或者直至用户模拟操作事件流中的多个用户模拟操作事件均已执行完、或者测试过程出错为止。
由上述描述可知,终端设备在通过monkey程序对终端设备上的应用程序进行稳定性测试时,通过页面访问轨迹可以获知当前已测试界面区块的信息,从而使得终端设备根据页面访问轨迹获取未测试界面区块进行测试,测试过程不会重复,有据可依,使得测试效率得以提高;另外,上述每个待测界面区块上的测试点均是根据应用程序的实际测试情况进行预设的,该测试点可以位于待测界面区块的中心位置,还可以位于距离中心位置在误差范围内的其他位置,即每个待测界面区块的测试点的位置可以保证monkey程序在对测试点执行用户模拟操作事件时不会脱离被测对象,例如,参见图3所示的应用程序的页面的待测界面区块的示意图(图3中待测界面区块的形状只是一种示例),针对该页面中位于顶部的待测界面区块,该待测界面区块包含了页面的部分内容和通知栏,则可以将待测界面区块的测试点设置在位于该待测界面区块的中心位置或者中心偏下位置,这样在对该待测界面区块执行模拟的下拉动作时,就不会出现脱离被测对象的情况;另一方面,上述页面访问轨迹中可以包括待测软件的已测试界面区块的信息,因此当待测软件结束测试时,终端设备可以根据页面访问轨迹获知待测软件的已测试界面区块的个数,进而获知测试覆盖范围,从而根据该测试覆盖范围确定当前的测试结果是否准确,例如,当待测软件的测试覆盖范围大于预设的覆盖阈值(例如大于90%),则表明当前得到的测试结果准确。
本申请实施例提供的程序测试方法,通过根据页面访问轨迹确定待测软件的待测界面区块是否均已测试,如果待测软件中存在未测试界面区块,则终端设备采用所生成的用户模拟操作事件,对待测软件的每个未测试界面区块上的测试点进行测试,获得测试结果,从而使得测试过程不会重复,有据可依,使得测试效率得以提高;另外,上述每个待测界面区块上的测试点均是根据应用程序的实际测试情况进行预设的,该测试点的位置可以保证终端设备在对测试点执行用户模拟操作事件时不会脱离被测对象;同时,终端设备可以根据页面访问轨迹获知待测软件的已测试界面区块的个数,进而获知测试覆盖范围,从而根据该测试覆盖范围确定当前的测试结果是否准确,大大提高了测试结果的有效性判断。
图4为本申请一实施例提供的程序测试方法的流程示意图。本实施例涉及的是终端设备获取待测软件的待测界面区块的具体过程。在上述实施例的基础上,进一步地,在上述S101之前,该方法还可以包括如下步骤:
S301:根据当前设备的屏幕分辨率,对所述待测软件的每个页面所在的屏幕进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的大小。
具体的,本实施例中,待测界面区块为面积大于屏幕像素点的区块,以待测界面区块为矩形区块为例,终端设备可以获取应用程序的多个页面,针对每个页面,根据当前终端设备的屏幕分辨率w*h,将每个页面所在的屏幕进行划分,得到每个页面的待测界面区块,其中,w为屏幕的宽度,h为屏幕的高度,这样可以根据公式T'=(w*h)/(wb*hb)将每个页面的monkey测试对象由现有技术中的T=w*h个减小为T'个,其中wb为待测界面区块的宽度,hb为待测界面区块的高度,这样针对应用程序中的每个页面,即使将每个页面的待测界面区块全部测试到(即测试全覆盖),其最多可执行的操作数为:
由此可知,针对每个页面来说,测试目标的个数减小,测试操作数(即执行用户模拟操作事件数)减小,测试效率得到了很大的提高。需要说明的是,上述wb小于w,上述hb小于h。参见图5所示的现有技术的测试目标示意图和图6所示的待测界面区块的示意图一。可选的,每个待测界面区块的测试点可以为该待测界面区块的中心点位置,确保在测试时不会出现脱离被测对象的情况。并且可选的,终端设备在对当前所获取的待测界面区块进行测试时,仅需要针对当前待测界面区块中预设的测试点进行测试即可,无需对当前待测界面区块上的所有像素点进行测试,提高了程序的测试效率。
可选的,上述在根据屏幕分辨率划分每个页面所在的屏幕时,针对的是整个屏幕,本申请实施例还可以提供另一种获得待测界面区块的方式,该划分方式针对的是屏幕上的核心区域,该核心区域可以仅包括页面的信息,不包含屏幕顶部的通知栏信息和屏幕下部的虚拟回车键、返回键、home键等信息,具体为:
终端设备可以根据终端设备的屏幕分辨率和预设的核心区域位置信息,对待测软件的每个页面所在的屏幕的核心区域进行划分,获取每个页面的待测界面区块,即上述公式中的w即为核心区域的屏幕宽度,h为核心区域的屏幕高度,每个页面的待测界面区块的大小小于核心区域的大小,参见图7所示的待测界面区块示意图二,图7中,由于所划分的待测界面区块均是基于核心区域划分的,每个待测界面区块并不包含通知栏或者底部的虚拟控件信息,因此,待测界面区块的测试点可以位于待测界面区块的任意位置。这样针对每个页面来说,其划分的待测界面区块减少,在每个页面测试全覆盖时,执行的最大操作数也减少,测试效率得到进一步提高;另外,针对这种划分方式,由于核心区域不包含屏幕顶部的通知栏信息和屏幕下部的虚拟回车键、返回键、home键等信息,因此,该核心区域中的待测界面区块上的测试点可以为待测界面区块中的任意位置的测试点,基于该测试点进行测试时不会出现测试时脱离被测对象的情况。
S302:根据每个所述页面的待测界面区块,获取所述待测软件的至少一个待测界面区块,并进行缓存。
具体的,当终端设备得到每个页面的待测界面区块之后,就可以获得该待测软件的待测界面区块的个数,例如可以将每个页面的待测界面区块进行简单的相加,或者,还可以根据公式获取待测软件的待测界面区块的总数total;其中,n为待测软件的页面的个数,p为第i个页面的待测界面区块的个数,λ为区块测试覆盖率常数。这样,当终端设备测试完成后,可以根据页面访问轨迹中已测试界面区块的信息,获知已测试界面区块的个数,然后基于已测试界面区块的页数和待测软件的待测界面区块的总数total,确定当前的测试结果是否准确。当终端设备获得待测软件的所有待测界面区块之后,将这些待测界面区块进行缓存,形成缓存列表。
本申请实施例提供的程序测试方法,通过根据屏幕分辨率对待测软件的每个页面所在的屏幕进行划分,得到每个页面的待测界面区块,进而获得待测软件的所有待测界面区块,使得终端设备可以基于这些待测界面区块中的测试点对该待测软件进行测试,其大大减小了测试目标的个数,也减少了测试时所执行的用户模拟操作事件数,提高了测试程序稳定性时的效率;并且基于不同的待测界面区块的划分方式,待测界面区块中预设的测试点的位置,可以保证基于待测界面区块的测试点进行测试时,不会出现脱离被测对象的情况,从而使得测试过程有效的提高。
图8为本申请一实施例提供的程序测试方法的流程示意图。本实施例涉及的是终端设备采用用户模拟操作事件对待测软件的每个未测试界面区块的测试点进行测试后,选取核心界面区块重点进行测试,以提升monkey测试的覆盖范围,增加发现问题的概率的具体过程。在上述实施例的基础上,该方法还可以包括如下步骤:
S401:若所述待测软件的类型为操作类型的应用软件,则根据预设的选择策略从所述待测软件的所有已测试界面区块中获取至少一个核心界面区块。
具体的,待测软件的类型可以包括操作类型的应用软件,还可以包括网页类型的应用软件。该操作类型的应用软件可以是与用户的触摸交互比较多的软件,例如,手机上的购物软件、外卖软件、社交软件等。当终端设备在对每个未测试界面区块进行测试之后,终端设备会确定当前待测软件的类型。当终端设备确定待测软件的类型为操作类型的应用软件之后,终端设备会根据预设的选择策略从待测软件的所有已测试界面区块中获取至少一个核心界面区块,可选的,终端设备可以根据选择策略选取已测试界面区块中用户操作过多的区块,例如,终端设备会选取屏幕中下方的区块作为核心界面区块,因为对于操作类型的应用软件来说,无论是待测软件的哪一个页面,与用户交互较多的位置是位于屏幕的中下方位置的。
S402:采用所生成的用户模拟操作事件对每个所述核心界面区块的测试点再次进行测试。
具体的,当终端设备确定了至少一个核心界面区块之后,对每个核心界面区块采用用户模拟操作事件再次进行重点测试,从而提升monkey测试的覆盖范围,增加发现问题的概率。可选的,每个核心界面区块所采用的用户模拟操作事件可以相同,可以不同,本申请实施例对此并不做限定。
进一步地,当终端设备对核心界面区块进行测试之后,其可以获得相应的测试结果,可选的,本申请另一实施例提供了获得测试结果的具体过程,参见图9所示,该获得测试结果的具体过程如下:
S501:根据所述页面访问轨迹,获取所述待测软件的测试覆盖范围信息;其中,所述测试覆盖范围信息包括:所述待测软件中已测试界面区块的个数、所述待测软件的每个页面中已测试界面区块的个数、被测试的页面的数量中的至少一个。
S502:根据所述测试覆盖范围信息,确定所述待测软件的测试结果。
具体的,当终端设备对核心界面区块测试完成之后,终端设备可以根据页面访问轨迹中所包含的已测试界面区块的信息,获得待测软件的测试覆盖范围信息。可选的,页面访问轨迹中的所包含的已测试界面区块的信息,可以包括已测试界面区块在屏幕上的坐标位置信息、所述已测试界面区块所在的页面的标识和所述已测试界面区块被测试的次数。例如,假设一个待测软件有两个页面A和B,有可能出现这一个情况:在对A页面进行测试时,还没将A页面的所有待测界面区块测试完,因为生成的用户模拟操作事件触发了页面切换,则monkey程序可以将页面A已经测过的界面区块进行记录并且记录页面A的标识和已测试界面区块的坐标位置信息,然后当页面再次因为用户的模拟操作事件再次切换到A页面时,就可以根据页面访问轨迹中的已测试界面区块信息,对A页面中的其他未测试界面区块进行测试了。
当终端设备获取了测试覆盖范围信息之后,可以根据该测试覆盖范围信息获取准确的测试结果,例如可以根据当前已测试界面区块的个数与待测软件的待测界面区块的总数进行比值,判断获得的百分比是否大于预设的测试覆盖范围阈值,若大于或者等于该预设的测试覆盖范围阈值,则确定当前的测试结果准确,若小于该预设的测试覆盖范围阈值,则确定待测软件的已测试界面区块较少,当前的测试结果不准确。又例如,可以根据当前已测试的页面的数量和待测软件的页面的总数量进行比值,判断所获得的百分比是否大于测试覆盖范围阈值,若大于或者等于该预设的测试覆盖范围阈值,则确定当前的测试结果准确;再例如,还可以根据每个页面已测试界面区块的个数和该页面中的待测界面区块的总数量进行比值,判断所获得的百分比是否大于测试覆盖范围阈值,若大于或者等于该预设的测试覆盖范围阈值,则确定当前的测试结果准确。可选的,上述测试覆盖范围信息还可以包括已测试界面区块的被测试次数,故而,终端设备还可以根据该信息,确定每个页面的核心界面区块是否再次进行了测试,如果没有,则也可以确定测试结果有待商榷。
本申请实施例提供的程序测试方法,当终端设备对每个未测试界面区块进行测试之后,并且在确定待测软件的类为操作类型的应用软件时,终端设备根据预设的选择策略从待测软件的已测试界面区块中获取至少一个核心界面区块,并且采用用户模拟操作事件对每个核心界面区块进行测试,从而提升monkey测试的覆盖范围,增加发现问题的概率;另一方面,在获取测试结果时,终端设备可以根据页面访问轨迹确定待测软件的测试覆盖范围信息,从而根据该测试覆盖范围信息确定待测软件的测试结果,其根据量化的标准衡量测试结果是否准确,提高了测试结果的可依据性和准确性。
图10为本申请一实施例提供的程序测试方法的流程示意图。本实施例涉及的是终端设备采用所生成的用户模拟操作事件对每个未测试界面区块的测试点进行测试的具体过程。在上述实施例的基础上,进一步地,上述S202具体可以包括如下步骤:
步骤A:在当前未测试界面区块测试完成后,将所述当前未测试界面区块的信息记录至所述页面访问轨迹中,并根据当前的页面访问轨迹从缓存列表中获取下一未测试界面区块。
具体的,当终端设备对当前未测试界面区块测试完成之后,可以将当前未测试界面区块的信息(当前未测试界面区块在测试完成之后已经成为已测试界面区块)记录至页面访问轨迹中,在记录时,会记录该界面区块的坐标位置信息、该界面区块所在的页面标识以及该界面区块的被测试次数。之后,终端设备可以根据当前的页面访问轨迹获知哪一些待测界面区块已经被测试过,进而终端设备可以根据这些信息从缓存列表中获取下一未测试界面区块,该缓存列表包括待测软件的所有待测界面区块的信息,即包括每个待测界面区块的坐标位置信息和该待测界面区块所在的页面标识。可选的,缓存列表中的所有待测界面区块可以是按照待测软件的页面的标识顺序以及待测界面区块在页面的坐标位置进行排列。
步骤B:从所生成的用户模拟操作事件流中获取所述下一未测试界面区块对应的用户模拟操作事件,并采用所述下一未测试界面区块对应的用户模拟操作事件对所述下一未测试界面区块进行测试;所述用户模拟操作事件流包括多个用户模拟操作事件。
具体的,终端设备在测试待测软件之前,会根据待测软件生成用户模拟操作事件流,该用户模拟操作事件流包括多个用户模拟操作事件,然后在测试时,终端设备在获取到下一未测试界面区块时,终端设备会从用户模拟操作事件流获取所述下一未测试界面区块对应的用户模拟操作事件,对所获取的所述下一未测试界面区块进行测试。需要说明的是,这里所说的“对应”并不是真正意义的对应,而是随机的一种时刻对应关系,即终端设备在获取到下一未测试界面区块时,用户模拟操作事件流中当前恰好轮到执行该用户模拟操作事件,因此,该用户模拟操作事件即就和所述下一未测试界面区块对应。基于此,终端设备就可以采用当前所获取的用户模拟操作事件对所述下一未测试界面区块进行测试,在测试完毕后,将该区块的信息记录至当前的页面访问轨迹中。
步骤C:若判断所述缓存列表中存在未测试界面区块,且所述用户模拟操作事件流中存在未执行的用户模拟操作事件,以及,所述待测软件的测试时间未超过预设的时间阈值,则返回执行所述步骤A,直至所述用户模拟操作事件流中不存在未执行的用户模拟操作事件,或者,所述待测软件的测试时间超过所述时间阈值,或者,测试过程出错为止。
具体的,停止测试的条件一般分为以下几种情况:第一、用户模拟操作事件流中的所有用户模拟操作事件均已执行完毕;第二、待测软件测试时间超过所述时间阈值;第三、测试过程出错。因此,当终端设备判断缓存列表中存在未测试界面区块,且用户模拟操作事件流中存在未执行的用户模拟操作事件,以及,待测软件的测试时间未超过预设的时间阈值时,则再次返回执行步骤A,以对新的未测试界面区块进行测试,依次类推,直至满足上述停止测试的条件为止。
本申请实施例提供的程序测试方法,通过页面访问轨迹确定缓存列表中是否存在未测试界面区块,并在存在未测试界面区块时,对每个未测试界面区块进行测试,避免了盲目的重复测试,提高了测试效率。
图11为本申请一实施例提供的程序测试方法的流程示意图。本实施例涉及的是终端设备采用所生成的用户模拟操作事件对待测软件进行monkey测试的整体过程。如图11所示,该方法可以包括:
S601:根据触发指令,在设备上自动安装所述待测软件。
S602:清空所述待测软件的日志信息,并登录所述待测软件;其中,所述日志信息用于记录测试进程信息和测试是否出错的信息。
具体的,当终端设备上没有安装待测软件时,终端设备可以根据用户输入的触发指令,在终端设备上自动安装待测软件,并且还涉及一些测试环境初始化的工作,即在接收到触发指令后,终端设备执行的动作包括但不限于:a)待测软件的安装,比如:adbinstall;b)应用日志清理,比如:adb logcat–c;c)App登录等,比如:shell脚本或者monkeyrunner脚本。
S603:根据当前设备的屏幕分辨率,对所述待测软件的每个页面所在的屏幕进行划分,获取每个页面的待测界面区块,并根据每个所述页面的待测界面区块,获取所述待测软件的至少一个待测界面区块,并进行缓存。
具体的,S603的具体过程可以参见图4所示的实施例的具体描述,在此不再赘述。可选的,一种待测界面区块的划分实现逻辑具体可以包括:
S604:启动监控线程。
具体的,该监控线程可以包括页面轨迹监控线程、日志收集线程和事件推荐及统计线程;其中,页面轨迹监控线程用于记录终端设备的页面访问轨迹,日志收集线程用户收集测试过程中的日志信息,事件推荐线程用于在测试过程中为终端设备推荐下一测试区块或者下一用户模拟操作事件,统计线程用于统计测试覆盖范围。
S605:启动monkey测试,即对待测软件进行测试。
具体为:根据页面访问轨迹确定待测软件的各待测界面区块是否均已测试;其中,每个所述待测界面区块均包括一个预设的测试点;其中,所述页面访问轨迹包括所述待测软件的已测试界面区块的信息。
其中,每一个monkey测试操作(即每一个用户模拟操作事件)的作用点均是基于S603的划分结果推荐出尚未执行测试的区块(确定该区块后,优选的,可以选取区块中心点作为monkey测试的测试点,具体动作执行可以使用adb shell input或者通过monkeyrunner来执行。
S606:当缓存列表中存在未测试界面区块时,则在当前未测试界面区块测试完成后,将所述当前未测试界面区块的信息记录至所述页面访问轨迹中,并根据当前的页面访问轨迹从缓存列表中获取下一未测试界面区块。
S607:从所生成的用户模拟操作事件流中获取所述下一未测试界面区块对应的用户模拟操作事件,并采用所述下一未测试界面区块对应的用户模拟操作事件对所述下一未测试界面区块进行测试;所述用户模拟操作事件流包括多个用户模拟操作事件。
S608:判断缓存列表中是否存在未测试界面区块,且判断所述用户模拟操作事件流中是否存在未执行的用户模拟操作事件,以及,判断所述待测软件的测试时间是否超过预设的时间阈值;若判断结果均为是,则执行S609至S612,若否,则执行S614。
S609:若判断所述缓存列表中存在未测试界面区块,且所述用户模拟操作事件流中存在未执行的用户模拟操作事件,以及,所述待测软件的测试时间未超过预设的时间阈值,则返回执行所述步骤S606,直至所述用户模拟操作事件流中不存在未执行的用户模拟操作事件,或者,所述待测软件的测试时间超过所述时间阈值,或者,测试过程出错为止。
S610:当待测软件中的每个未测试界面区块均被测试完成时,在终端设备确定待测软件的类型为操作类型的应用软件时,根据预设的选择策略从所述待测软件的所有已测试界面区块中获取至少一个核心界面区块。
S611:采用所生成的用户模拟操作事件对每个所述核心界面区块的测试点再次进行测试。
S612:测试完成后,根据当前的页面访问轨迹,统计获取所述待测软件的测试覆盖范围信息。
其中,所述测试覆盖范围信息包括:所述待测软件中已测试界面区块的个数、所述待测软件的每个页面中已测试界面区块的个数、被测试的页面的数量中的至少一个;可选的,还可以包括:每个已测试界面区块被测试的次数。
S613:根据所述测试覆盖范围信息,确定所述待测软件的测试结果。
S614:结束测试。
具体的,上述S606至S614的具体过程可以参见上述实施例的描述,在此不再赘述。
以下将详细描述根据本申请的一个或多个实施例的程序测试装置。该程序测试装置可以被实现在终端设备或者安卓系统的手机模拟器或者其他系统的手机模拟器上,该终端设备可以是手机、平板电脑、iPaD、个人数字助理等。本领域技术人员可以理解,该程序测试装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。例如,下述实施例中的涉及测试、处理功能的模块可以使用来自德州仪器公司、英特尔公司、ARM公司等企业的单片机、微控制器、微处理器等组件实现。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图12为本申请一实施例提供的程序测试装置结构示意图,该程序测试装置,可以通过软件或者软硬件结合的方式实现。如图12所示,该程序测试装置可以包括:第一获取模块10和测试模块11。
其中,第一获取模块10,用于获取待测软件的至少一个待测界面区块;其中,所述至少一个待测界面区块包括一个预设的测试点;
测试模块11,用于采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果。
本申请实施例提供的程序测试装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图13为本申请一实施例提供的程序测试装置结构示意图,在上述图12所示实施例的基础上,进一步地,上述测试模块11,具体可以包括判断单元111和测试单元112。
具体的,判断单元111,用于根据页面访问轨迹判断所述待测软件的各待测界面区块是否均已测试;其中,所述页面访问轨迹包括所述待测软件中已测试界面区块的信息;
测试单元112,用于在所述判断单元111判断所述待测软件的各待测界面区块并未全部测试时,采用所生成的用户模拟操作事件,对所述待测软件的每个未测试界面区块的测试点进行测试,获得测试结果。
进一步地,参见图14所示的本申请另一实施例提供的程序测试装置结构示意图,在上述图13所示实施例的基础上,上述第一获取模块10,具体可以包括划分单元101和获取单元102。
具体的,划分单元101,用于在所述判断单元111根据页面访问轨迹判断待测软件的各待测界面区块是否均已测试之前,根据当前设备的屏幕分辨率,对所述待测软件的每个页面所在的屏幕进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的大小;
获取单元102,用于根据每个所述页面的待测界面区块,获取所述至少一个待测界面区块,并进行缓存。
进一步地,所述划分单元101,具体用于根据所述屏幕分辨率和预设的核心区域位置信息,对所述待测软件的每个页面所在的屏幕的核心区域进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的核心区域的大小。
更进一步地,继续参照上述图14所示,该程序测试装置还可以包括第二获取模块12;
该第二获取模块12,用于在所述测试单元112采用所生成的用户模拟操作事件,对每个所述未测试界面区块的测试点进行测试之后,并在所述待测软件的类型为操作类型的应用软件时,根据预设的选择策略从所述待测软件的已测试界面区块中获取至少一个核心界面区块;
则上述测试单元112,还可以用于采用所生成的用户模拟操作事件对每个所述核心界面区块的测试点再次进行测试。
更进一步地,上述测试单元112,用于获得测试结果,具体包括:
所述测试单元112,具体用于根据所述页面访问轨迹,获取所述待测软件的测试覆盖范围信息,并根据所述测试覆盖范围信息,确定所述待测软件的测试结果;其中,所述测试覆盖范围信息包括:所述待测软件中已测试界面区块的个数、所述待测软件的每个页面中已测试界面区块的个数、被测试的页面的数量中的至少一个。
更进一步地,所述测试单元112,用于采用所生成的用户模拟操作事件,对所述待测软件的每个所述未测试界面区块的测试点进行测试,具体包括:
所述测试单元112,具体用于在当前未测试界面区块测试完成后,将所述当前未测试界面区块的信息记录至所述页面访问轨迹中,并根据当前的页面访问轨迹从缓存列表中获取下一未测试界面区块,并从所生成的用户模拟操作事件流中获取所述下一未测试界面区块对应的用户模拟操作事件,并采用所述下一未测试界面区块对应的用户模拟操作事件对所述下一未测试界面区块进行测试;并在判断所述缓存列表中存在未测试界面区块,且所述用户模拟操作事件流中存在未执行的用户模拟操作事件,以及,所述待测软件的测试时间未超过预设的时间阈值,则获取新的未测试界面区块进行测试,直至所述用户模拟操作事件流中不存在未执行的用户模拟操作事件,或者,所述待测软件的测试时间超过所述时间阈值,或者,测试过程出错为止;所述用户模拟操作事件流包括多个用户模拟操作事件。
本申请实施例提供的程序测试装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图15为本申请一实施例提供的程序测试设备硬件结构示意图。如图15所示,该程序测试设备可以包括处理器21、存储器22和至少一个通信总线23。通信总线23用于实现元件之间的通信连接。存储器22可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,存储器22中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。可选的,该程序测试设备还可以包括输入设备24,该输入设备24耦合至处理器21,用于接收用户输入的触发指令,该触发指令用于指示程序测试设备开始测试。
可选的,上述处理器21例如可以为中央处理器(Central Processing Unit,简称CPU)、应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现。
可选的,上述输入设备24,例如可以是面向用户的接口设备或者软件编程接口,该面向用户的接口设备可以是供用户输入指令的键盘、可以是接收键盘输入的接口设备、还可以是其他供用户输入触发指令设备。
在本申请实施例中,所述处理器21耦合至所述存储器22;所述处理器21,用于获取待测软件的至少一个待测界面区块,并采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果;其中,所述至少一个待测界面区块包括一个预设的测试点;
可选的,所述处理器21,具体用于根据页面访问轨迹确定待测软件的各待测界面区块是否均已测试,并在确定所述待测软件的待测界面区块并未全部测试时,采用所生成的用户模拟操作事件,对所述待测软件的每个未测试界面区块的测试点进行测试,获得测试结果;其中,所述页面访问轨迹包括所述待测软件的已测试界面区块的信息。
可选的,所述处理器21,还可以用于根据当前设备的屏幕分辨率,对所述待测软件的每个页面所在的屏幕进行划分,获取每个页面的待测界面区块,并根据每个所述页面的待测界面区块,获取所述待测软件的所有待测界面区块,并进行缓存;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的大小。
进一步地,所述处理器21,具体用于根据所述屏幕分辨率和预设的核心区域位置信息,对所述待测软件的每个页面所在的屏幕的核心区域进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的核心区域的大小。
可选的,所述处理器21,还可以用于在所述待测软件的类型为操作类型的应用软件时,根据预设的选择策略从所述待测软件的已测试界面区块中获取至少一个核心界面区块,并采用所生成的用户模拟操作事件对每个所述核心界面区块的测试点再次进行测试。
可选的,所述处理器21,在获得测试结果时,具体可以是:根据所述页面访问轨迹,获取所述待测软件的测试覆盖范围信息,并根据所述测试覆盖范围信息,确定所述待测软件的测试结果;其中,所述测试覆盖范围信息包括:所述待测软件中已测试界面区块的个数、所述待测软件的每个页面中已测试界面区块的个数、被测试的页面的数量中的至少一个。
可选的,所述处理器21,具体可以用于在当前未测试界面区块测试完成后,将所述当前未测试界面区块的信息记录至所述页面访问轨迹中,并根据当前的页面访问轨迹从缓存列表中获取下一未测试界面区块,并从所生成的用户模拟操作事件流中获取所述下一未测试界面区块对应的用户模拟操作事件,并采用所述下一未测试界面区块对应的用户模拟操作事件对所述下一未测试界面区块进行测试;并在判断所述缓存列表中存在未测试界面区块,且所述用户模拟操作事件流中存在未执行的用户模拟操作事件,以及,所述待测软件的测试时间未超过预设的时间阈值,则获取新的未测试模块进行测试,直至所述用户模拟操作事件流中不存在未执行的用户模拟操作事件,或者,所述待测软件的测试时间超过所述时间阈值,或者,测试过程出错为止;所述用户模拟操作事件流包括多个用户模拟操作事件。
本申请实施例提供的程序测试设备,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
一种计算机/处理器可读存储介质,所述存储介质中存储有程序指令,所述程序指令用于使所述计算机/处理器执行:
获取待测软件的至少一个待测界面区块;其中,所述至少一个待测界面区块包括一个预设的测试点;
采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果。
上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (15)

1.一种程序测试方法,其特征在于,包括:
获取待测软件的至少一个待测界面区块;其中,所述至少一个待测界面区块包括一个预设的测试点;
采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果。
2.根据权利要求1所述的方法,其特征在于,所述采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果,具体包括:
根据页面访问轨迹判断所述待测软件的待测界面区块是否均已测试;其中,所述页面访问轨迹包括所述待测软件中已测试界面区块的信息;
若否,则采用所生成的用户模拟操作事件,对所述待测软件的每个未测试界面区块的测试点进行测试,获得测试结果。
3.根据权利要求2所述的方法,其特征在于,所述获取待测软件的至少一个待测界面区块,具体包括:
根据当前设备的屏幕分辨率,对所述待测软件的每个页面所在的屏幕进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的大小;
根据每个所述页面的待测界面区块,获取所述至少一个待测界面区块,并进行缓存。
4.根据权利要求3所述的方法,其特征在于,所述根据当前设备的屏幕分辨率,对所述待测软件的每个页面进行划分,获取每个页面的待测界面区块,具体包括:
根据所述屏幕分辨率和预设的核心区域位置信息,对所述待测软件的每个页面所在的屏幕的核心区域进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的核心区域的大小。
5.根据权利要求2-4任一项所述的方法,其特征在于,所述采用所生成的用户模拟操作事件,对所述待测软件的每个所述未测试界面区块的测试点进行测试之后,所述方法还包括:
若所述待测软件的类型为操作类型的应用软件,则根据预设的选择策略从所述待测软件的已测试界面区块中获取至少一个核心界面区块;
采用所生成的用户模拟操作事件对每个所述核心界面区块的测试点再次进行测试。
6.根据权利要求2所述的方法,其特征在于,所述获得测试结果,具体包括:
根据所述页面访问轨迹,获取所述待测软件的测试覆盖范围信息;其中,所述测试覆盖范围信息包括:所述待测软件中已测试界面区块的个数、所述待测软件的每个页面中已测试界面区块的个数、被测试的页面的数量中的至少一个;
根据所述测试覆盖范围信息,确定所述待测软件的测试结果。
7.根据权利要求5所述的方法,其特征在于,所述采用所生成的用户模拟操作事件,对所述待测软件的每个所述未测试界面区块的测试点进行测试,具体包括:
步骤A:在当前未测试界面区块测试完成后,将所述当前未测试界面区块的信息记录至所述页面访问轨迹中,并根据当前的页面访问轨迹从缓存列表中获取下一未测试界面区块;
步骤B:从所生成的用户模拟操作事件流中获取所述下一未测试界面区块对应的用户模拟操作事件,并采用所述下一未测试界面区块对应的用户模拟操作事件对所述下一未测试界面区块进行测试;所述用户模拟操作事件流包括多个用户模拟操作事件;
步骤C:若判断所述缓存列表中存在未测试界面区块,且所述用户模拟操作事件流中存在未执行的用户模拟操作事件,以及,所述待测软件的测试时间未超过预设的时间阈值,则返回执行所述步骤A,直至所述用户模拟操作事件流中不存在未执行的用户模拟操作事件,或者,所述待测软件的测试时间超过所述时间阈值,或者,测试过程出错为止。
8.一种程序测试装置,其特征在于,包括:
第一获取模块,用于获取待测软件的至少一个待测界面区块;其中,所述至少一个待测界面区块包括一个预设的测试点;
测试模块,用于采用所生成的用户模拟操作事件,对所述至少一个待测界面区块的测试点进行测试,获得测试结果。
9.根据权利要求8所述的装置,其特征在于,所述测试模块,包括:
判断单元,用于根据页面访问轨迹判断所述待测软件的待测界面区块是否均已测试;其中,所述页面访问轨迹包括所述待测软件中已测试界面区块的信息;
测试单元,用于在所述判断单元判断所述待测软件的待测界面区块并未全部测试时,采用所生成的用户模拟操作事件,对所述待测软件的每个未测试界面区块的测试点进行测试,获得测试结果。
10.根据权利要求9所述的装置,其特征在于,所述第一获取模块,包括:
划分单元,用于在所述判断单元根据页面访问轨迹判断待测软件的待测界面区块是否均已测试之前,根据当前设备的屏幕分辨率,对所述待测软件的每个页面所在的屏幕进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的大小;
获取单元,用于根据每个所述页面的待测界面区块,获取所述至少一个待测界面区块,并进行缓存。
11.根据权利要求10所述的装置,其特征在于,所述划分单元,具体用于根据所述屏幕分辨率和预设的核心区域位置信息,对所述待测软件的每个页面所在的屏幕的核心区域进行划分,获取每个页面的待测界面区块;其中,每个所述页面的待测界面区块的大小小于每个所述页面所在的屏幕的核心区域的大小。
12.根据权利要求9-11任一项所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于在所述测试单元采用所生成的用户模拟操作事件,对每个所述未测试界面区块的测试点进行测试之后,并在所述待测软件的类型为操作类型的应用软件时,根据预设的选择策略从所述待测软件的已测试界面区块中获取至少一个核心界面区块;
所述测试单元,还用于采用所生成的用户模拟操作事件对每个所述核心界面区块的测试点再次进行测试。
13.根据权利要求9所述的装置,其特征在于,所述测试单元,用于获得测试结果,具体包括:
所述测试单元,具体用于根据所述页面访问轨迹,获取所述待测软件的测试覆盖范围信息,并根据所述测试覆盖范围信息,确定所述待测软件的测试结果;其中,所述测试覆盖范围信息包括:所述待测软件中已测试界面区块的个数、所述待测软件的每个页面中已测试界面区块的个数、被测试的页面的数量中的至少一个。
14.根据权利要求12所述的装置,其特征在于,所述测试单元,用于采用所生成的用户模拟操作事件,对所述待测软件的每个所述未测试界面区块的测试点进行测试,具体包括:
所述测试单元,具体用于在当前未测试界面区块测试完成后,将所述当前未测试界面区块的信息记录至所述页面访问轨迹中,并根据当前的页面访问轨迹从缓存列表中获取下一未测试界面区块,并从所生成的用户模拟操作事件流中获取所述下一未测试界面区块对应的用户模拟操作事件,并采用所述下一未测试界面区块对应的用户模拟操作事件对所述下一未测试界面区块进行测试;并在判断所述缓存列表中存在未测试界面区块,且所述用户模拟操作事件流中存在未执行的用户模拟操作事件,以及,所述待测软件的测试时间未超过预设的时间阈值,则获取新的未测试界面区块进行测试,直至所述用户模拟操作事件流中不存在未执行的用户模拟操作事件,或者,所述待测软件的测试时间超过所述时间阈值,或者,测试过程出错为止;所述用户模拟操作事件流包括多个用户模拟操作事件。
15.一种程序测试设备,其特征在于,包括处理器和存储器,所述处理器耦合至所述存储器;
所述处理器,用于执行上述权利要求1至权利要求7任一项所述的方法。
CN201610500831.4A 2016-06-29 2016-06-29 程序测试方法、装置和设备 Active CN107544902B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610500831.4A CN107544902B (zh) 2016-06-29 2016-06-29 程序测试方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610500831.4A CN107544902B (zh) 2016-06-29 2016-06-29 程序测试方法、装置和设备

Publications (2)

Publication Number Publication Date
CN107544902A true CN107544902A (zh) 2018-01-05
CN107544902B CN107544902B (zh) 2021-05-04

Family

ID=60965580

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610500831.4A Active CN107544902B (zh) 2016-06-29 2016-06-29 程序测试方法、装置和设备

Country Status (1)

Country Link
CN (1) CN107544902B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109324802A (zh) * 2018-09-29 2019-02-12 北京百度网讯科技有限公司 用于配置服务器的方法和装置
CN109490319A (zh) * 2018-12-29 2019-03-19 苏州精濑光电有限公司 一种测试设备的检测装置和检测方法
CN110794999A (zh) * 2019-10-28 2020-02-14 珠海格力电器股份有限公司 基于界面分割的自动控制方法、装置及终端
CN111459823A (zh) * 2020-04-01 2020-07-28 网易(杭州)网络有限公司 游戏软件的测试方法和装置、存储介质、处理器
CN112835757A (zh) * 2021-02-08 2021-05-25 深圳市鼎盛光电有限公司 屏幕测试方法及装置
CN114185788A (zh) * 2021-12-11 2022-03-15 麒麟软件有限公司 一种基于Linux平台图形化桌面和应用的稳定性测试方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102420712A (zh) * 2010-09-28 2012-04-18 中国移动通信集团公司 一种测试方法和设备
CN104820634A (zh) * 2014-12-25 2015-08-05 平安科技(深圳)有限公司 页面测试轨迹的检测方法和装置
CN105487966A (zh) * 2014-09-17 2016-04-13 腾讯科技(深圳)有限公司 程序测试方法、装置及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102420712A (zh) * 2010-09-28 2012-04-18 中国移动通信集团公司 一种测试方法和设备
CN105487966A (zh) * 2014-09-17 2016-04-13 腾讯科技(深圳)有限公司 程序测试方法、装置及系统
CN104820634A (zh) * 2014-12-25 2015-08-05 平安科技(深圳)有限公司 页面测试轨迹的检测方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109324802A (zh) * 2018-09-29 2019-02-12 北京百度网讯科技有限公司 用于配置服务器的方法和装置
CN109490319A (zh) * 2018-12-29 2019-03-19 苏州精濑光电有限公司 一种测试设备的检测装置和检测方法
CN109490319B (zh) * 2018-12-29 2024-02-20 苏州精濑光电有限公司 一种测试设备的检测装置和检测方法
CN110794999A (zh) * 2019-10-28 2020-02-14 珠海格力电器股份有限公司 基于界面分割的自动控制方法、装置及终端
CN110794999B (zh) * 2019-10-28 2021-01-15 珠海格力电器股份有限公司 基于界面分割的自动控制方法、装置及终端
CN111459823A (zh) * 2020-04-01 2020-07-28 网易(杭州)网络有限公司 游戏软件的测试方法和装置、存储介质、处理器
CN111459823B (zh) * 2020-04-01 2023-05-26 网易(杭州)网络有限公司 游戏软件的测试方法和装置、存储介质、处理器
CN112835757A (zh) * 2021-02-08 2021-05-25 深圳市鼎盛光电有限公司 屏幕测试方法及装置
CN114185788A (zh) * 2021-12-11 2022-03-15 麒麟软件有限公司 一种基于Linux平台图形化桌面和应用的稳定性测试方法

Also Published As

Publication number Publication date
CN107544902B (zh) 2021-05-04

Similar Documents

Publication Publication Date Title
CN107544902A (zh) 程序测试方法、装置和设备
CN106776245B (zh) 一种异常应用处理方法、装置及移动终端
Taroni et al. Prospective CSEP evaluation of 1‐day, 3‐month, and 5‐yr earthquake forecasts for Italy
US10353789B1 (en) Analog fault simulation control with multiple circuit representations
CN108399124A (zh) 应用测试方法、装置、计算机设备和存储介质
WO2018072580A1 (zh) 一种非法交易检测方法及装置
Thornton et al. Body size and spatial scales in avian response to landscapes: a meta‐analysis
CN103853640B (zh) 触摸屏测试方法以及装置
CN107506300A (zh) 一种用户界面测试方法、装置、服务器和存储介质
US8230382B2 (en) Model based simulation of electronic discharge and optimization methodology for design checking
CN110624241A (zh) 信息处理方法及装置、电子设备、存储介质
CN107145782A (zh) 一种异常应用程序的识别方法、移动终端及服务器
CN107506073A (zh) 触摸屏检测方法、装置、移动终端及计算机可读存储介质
CN108664380A (zh) 一种带性能显示的执行后软件调试系统及调试方法
CN105988934A (zh) 手游自动化检测方法及装置
CN107515716B (zh) 看板卡片管理方法、装置、计算机设备和存储介质
CN107909141A (zh) 一种基于灰狼优化算法的数据分析方法及装置
CN108769175A (zh) 远程真机访问控制方法、装置、存储介质及电子设备
CN105183302A (zh) 一种控制应用的方法及终端
CN113076257A (zh) 测试脚本录制方法、装置、介质及计算机设备
CN111190826B (zh) 一种虚拟现实沉浸式追踪环境的测试方法、装置、存储介质及设备
CN108009073A (zh) 由日志复现触控轨迹的方法、终端及计算机可读存储介质
CN111160394A (zh) 分类网络的训练方法、装置、计算机设备和存储介质
CN103809954A (zh) 实现界面元素选定的方法和装置
CN111703590A (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