一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

页面测试方法、装置及电子设备与流程

2022-12-13 23:23:40 来源:中国专利 TAG:


1.本技术涉及软件测试技术领域,尤其涉及页面测试方法、装置及电子设备。


背景技术:

2.目前,页面的自动化测试,通常使用selenium、cypress等工具模拟用户操作,操作完之后获取页面中的特定用户界面(user interface,ui)元素确定是否符合预期。但是,此种测试方式的测试效率低。


技术实现要素:

3.有鉴于此,本技术提供了一种页面测试方法、装置及电子设备,用以解决传统的测试方式测试效率低的问题,其公开的技术方案如下:
4.一方面,本技术提供了一种页面测试方法,包括:
5.获取页面功能对应的测试用例,所述测试用例包括至少一个交互动作集及对应的预期数据,且至少存在一个所述交互动作集包括相关联的至少两个交互动作;
6.依次执行所述至少一个交互动作集,并依次获取执行完每个所述交互动作集后页面的页面状态数据,所述页面状态数据包括表征页面状态的信息;
7.根据与所述交互动作集对应的所述页面状态数据及相匹配的所述预期数据,得到所述页面功能对应的测试结果。
8.在一种可能的实现方式中,所述页面状态数据包括页面的页面元素信息及页面的事件信息。
9.在另一种可能的实现方式中,所述依次执行所述至少一个交互动作集,并依次获取执行完每个所述交互动作集后页面的页面状态数据,包括:
10.在执行任一所述交互动作集内的交互动作后,获取页面对应的页面快照;
11.将所述页面快照中表征页面状态的数据进行转译,得到所述页面的页面状态数据。
12.在另一种可能的实现方式中,所述将所述页面快照中表征页面状态的数据进行转译,得到所述页面的页面状态数据,包括:
13.从所述页面快照中提取与所述被测功能相匹配的目标页面元素信息及目标页面事件信息;
14.将所述目标页面元素信息及所述目标页面事件信息转换为目标格式数据,得到所述页面状态数据。
15.在又一种可能的实现方式中,所述从所述页面快照中提取与所述被测功能相匹配的目标页面元素信息及目标页面事件信息,包括:
16.确定与所述被测功能相匹配的目标页面元素及目标页面事件;
17.利用与所述目标页面元素相匹配的测试工具接口,从所述页面快照中获取目标页面元素信息和目标页面事件信息,或者,利用爬虫脚本从所述页面快照中获取目标页面元
素信息和目标页面事件信息。
18.在另一种可能的实现方式中,所述根据与所述交互动作集对应的所述页面状态数据及相匹配的所述预期数据,得到所述页面功能对应的测试结果,包括:
19.比较与所述交互动作集对应的页面状态数据,以及与所述页面状态数据相匹配的预期状态数据,得到第一比较结果;
20.比较执行顺序相邻的两个所述交互动作集对应的页面状态数据之间的差异数据,以及与所述差异数据相匹配的预期差异数据,得到第二比较结果;
21.若所述第一比较结果和所述第二比较结果均为符合相应的预期,确定所述页面功能符合预期;
22.若所述第一比较结果或所述第二比较结果为不符合相应的预期,确定所述页面功能不符合预期。
23.在另一种可能的实现方式中,所述比较执行顺序相邻的两个所述交互动作集对应的页面状态数据之间的差异数据,以及与所述差异数据相匹配的预期差异数据,得到第二比较结果,包括:
24.获取目标交互动作集对应的页面状态数据,以及与所述目标交互动作集相邻的上一个交互动作集对应的页面状态数据之间的差异信息;
25.比较所述差异信息,以及与所述目标交互动作集相匹配的预期差异数据是否一致;
26.若所述差异信息与所述预期差异数据一致,确定所述差异数据符合预期;
27.若所述差异信息与所述预期差异数据不一致,确定所述差异数据不符合预期。
28.在又一种可能的实现方式中,根据与所述交互动作集对应的所述页面状态数据及相匹配的所述预期数据,得到所述页面功能对应的测试结果,包括:
29.针对任一所述交互动作集,比较执行完任一所述交互动作集后页面对应的页面状态数据,以及与所述交互动作集相匹配的预期状态数据是否一致;
30.若所述页面状态数据与相匹配的所述预期状态数据一致,确定所述页面功能符合预期;
31.若所述页面状态数据与相匹配的所述预期状态数据不一致,确定所述被页面功能不符合预期。
32.另一方面,本技术还提供了一种页面测试装置,包括:
33.测试用例获取模块,用于获取页面功能对应的测试用例,所述测试用例包括至少一个交互动作集及对应的预期数据,且至少存在一个所述交互动作集包括相关联的至少两个交互动作;
34.页面数据获取模块,用于依次执行所述至少一个交互动作集,并依次获取执行完每个所述交互动作集后页面的页面状态数据,所述页面状态数据包括表征所述页面状态的信息;
35.断言模块,用于根据与所述交互动作集对应的所述页面状态数据及相匹配的所述预期数据,得到所述页面功能对应的测试结果。
36.在一种可能的实现方式中,所述页面数据获取模块包括:
37.页面快照获取子模块,用于在执行任一所述交互动作集内的交互动作后,获取所
述页面对应的页面快照;
38.数据转译子模块,将所述页面快照中表征页面状态的数据进行转译,得到所述页面的页面状态数据。
39.又一方面,本技术还提供了一种电子设备,包括:
40.处理器和存储器;
41.其中,所述处理器用于执行所述存储器中存储的程序;
42.所述存储器用于存储程序,所述程序至少用于:
43.获取页面功能对应的测试用例,所述测试用例包括至少一个交互动作集及对应的预期数据,且至少存在一个所述交互动作集包括相关联的至少两个交互动作;
44.依次执行所述至少一个交互动作集,并依次获取执行完每个所述交互动作集后页面的页面状态数据,所述页面状态数据包括表征页面状态的信息;
45.根据与所述交互动作集对应的所述页面状态数据及相匹配的所述预期数据,得到所述页面功能对应的测试结果。
46.再一方面,本技术还提供了一种计算机可读存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上任一种可能的实现方式所述的页面测试方法。
47.本技术提供的页面测试方法,获取页面功能对应的测试用例,该测试用例包括至少一个交互动作集以及对应的预期数据;依次执行交互动作集后并获取表征页面状态的页面状态数据。最后根据页面状态数据及相匹配的预期数据,确定页面功能是否符合预期。该方案将测试用例所包含的交互动作划分为至少一个交互动作集,且至少存在一个交互动作集包括相关联的至少两个交互动作。并在执行完一组交互动作后获取此时页面的页面状态数据,无需每一个交互动作执行完成后获取一次页面状态数据,减少了获取页面状态数据的次数,同时也减少了页面状态数据与预期数据比较的次数,缩短了测试过程的耗时,因此,提高了整个页面测试过程的效率。
附图说明
48.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
49.图1示出了相关技术中一种页面测试的示意图;
50.图2a示出了本技术实施例提供的一种页面测试方法的流程图;
51.图2b示出了本技术实施例提供的一种页面状态数据获取过程的流程图;
52.图3示出了一种执行用户交互动作后页面所执行操作的示意图;
53.图4示出了本技术实施例提供的执行交互动作集到获得页面状态数据过程的示意图;
54.图5示出了本技术实施例提供的一种搜索页面测试过程的页面示意图;
55.图6示出了本技术实施例提供的另一种页面测试方法的流程图
56.图7示出了本技术实施例提供的一种交互动作执行后影响页面状态实例的示意
图;
57.图8示出了本技术实施例提供的一种页面测试场景的示意图;
58.图9示出了本技术实施例提供的另一种页面测试场景的示意图;
59.图10示出了本技术实施例提供的一种页面测试装置的结构示意图;
60.图11示出了本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
61.相关技术中,对页面进行自动化测试时,使用selenium、cypress等工具模拟用户进行操作,操作完之后再获取特定dom元素变化来确定页面是否符合预期。例如,以图1所示的页面测试过程为例,首先加载a页面,然后寻找名为“type”的超链接并点击,接着对跳转后的页面(如,b页面)url做断言,即校验跳转的页面对应的url是否正确;然后,又在b页面中寻找email输入框并输入邮箱地址fake@email.com,并对输入的邮箱地址做断言,以判断邮箱地址是否正确。由上述过程可知,此种测试方法每一次交互动作执行之后都进行一次断言,测试过程的耗时较长,而且,每个断言的检查项非常少,导致测试场景受限。
62.为了解决上述问题,本技术提供了一种页面测试方法,该方案将一个完整测试过程中的多个交互动作,按其关联关系划分成不同的交互动作集。然后执行交互动作集,每执行完一个交互动作集后获取此时页面的页面状态数据,从而减少了获取页面状态数据的次数,同时也减少了对页面状态数据进行断言的次数,因此,降低了整个测试过程消耗的时间,提高了测试效率。
63.本技术提供的页面测试方法对应的代码可以存储至数据共享系统中,数据共享系统是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节点,多个节点可以是指数据共享系统中各个客户端。每个节点在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
64.数据共享系统中的每个节点均存储一条相同的区块链。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。例如,本技术提供的页面测试方法对应的代码可以存储到基于区块链的数据共享系统中。
65.在介绍本技术的页面测试方法之前,先将本技术涉及的概念及技术术语进行说明。
66.交互动作(action),是指用户与ui界面之间进行交互的动作,例如,可以包括等待页面元素出现、点击操作、页面跳转、输入等。
67.交互动作集(action collection),即交互动作的集合,包括一个或多个交互动作,具体包括的交互动作可以根据测试目的设定。
68.页面快照(page snapshot),与传统意义的网页快照类似,是某一时刻页面的状态信息,反映某一个时间段交互动作执行完成之后的结果,可以包括页面ui元素信息,还可以包括页面的事件信息,如网络请求和jsruntime中的变量等信息。例如,网页的页面快照为页面的xml文件。
69.数据快照(data snapshot),即将页面快照转译而成的数据。
70.转译,即通过自动化测试工具api或爬虫脚本,将页面快照中的ui元素、网络请求和jsruntime等信息转为计算机可识别的数据。
71.断言,本技术中的断言是指判断页面的数据快照是否符合预期,还包括了不同页面的数据快照之间差异的比对。
72.请参见图2a,示出了本技术实施例提供的一种页面测试方法的流程图,该页面测试方法主要通过模拟用户在ui界面上进行操作,判断的页面功能是否符合预期功能。
73.该方法应用于电子设备中,该电子设备可以是终端设备,如,pc机、手机、pda等;电子设备还可以是服务器、云服务器等,其中,服务器或云服务器可以是独立服务器,或者多台服务器构成的服务器集群。
74.如图2a所示,该方法可以主要包括以下步骤:
75.s110,获取页面功能对应的测试用例。
76.页面功能可以是应用程序的页面或网页所能实现的任一业务功能。
77.在一种应用场景中,页面可以是终端上安装的应用程序的ui界面,终端可以是pc机、手机、pda等。在另一应用场景中,页面还可以web网页。
78.测试用例(test case),是指对一项特殊的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。简而言之,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
79.实际应用中,一个页面通常包括多个业务功能,通常针对一个业务功能设计编写一个测试用例。
80.测试用例包括至少一个交互动作集及对应的预期数据,且至少存在一个交互动作集包括相关联的至少两个交互动作。
81.预期数据即执行交互动作集后页面应具备的预期结果,例如,用户在搜索框输入相应的搜索词,并点击页面上的“搜索”控件后,页面应该跳转至与搜索词相对应的搜索结果页,该示例中,预期数据是页面跳转至搜索结果页。又如,在某个状态某一按钮的颜色应该是灰色(表示不可点击),当验证该按钮的颜色是否符合预期时,相应的预期数据即该按钮应该呈现的颜色,如灰色。
82.在一示例性实施例中,对交互动作进行分组可以包括以下规则:
83.1)如果至少两个交互动作属于同一维度,且其对测试目的不会造成影响,则可以划分成一个交互动作集,例如,在对“搜索”功能的页面进行测试的过程中“等待搜索框出现”和“等待搜索按钮出现”,这两个交互动作并未对页面的功能带来变化,因此,可以将这两个交互动作划分为一组。
84.而如果两个交互动作明显可以独立、是页面功能的两个部分,则不能将这两个交互动作划分为一组,例如,“输入搜索词”和“点击搜索按钮”这两个交互动作对应的相对独立,是“搜索”功能的两个不同的组成部分,因此,这两个交互动作不能划分为一组。
85.2)如果至少两个交互动作存在明显的因果关系或者依赖关系,则可以划分成一个交互动作集,例如,“点击搜索”和“等待搜索结果出现”,前者是导致后者出现的原因,而后者是前者的结果反馈,将这两个交互动作划分为一个交互动作集,更容易进行后续的断言。
86.s120,依次执行测试用例中的至少一个交互动作集,并获取执行完每个交互动作集后页面的页面状态数据。
87.所述页面状态数据包括表征页面状态的信息,表征页面状态的信息可以包括页面ui元素信息及页面的事件信息中的至少一种,可以根据测试场景需求获取该测试场景所需的页面状态数据。
88.ui元素是指可满足交互需求的软件或系统界面所包含的满足用户交互要求的一系列元素,如各类控件,图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏等可视的界面元素。ui元素信息可以包括各类控件的相关信息,例如,控件样式如控件的颜色,以及控件所显示的内容等信息。
89.页面的事件信息包括用户对页面进行交互操作时页面发生的事件的信息,例如,页面中的网络请求和jsruntime等信息。
90.例如,在某个状态某一按钮的颜色应该是灰色(表示不可点击),当需要验证按钮的颜色是否符合预期时,需要获取的页面状态数据是页面元素信息,即该按钮的颜色。
91.又如,当用户点击某些按钮的操作后,页面实际会产生网络请求,需要验证发送的请求参数是否符合预期,此时,需要获取页面状态数据是页面的事件信息,即页面发送的网络请求参数。
92.在一示例性实施例中,如图2b所示,s120所示的获取执行完每个交互动作集后页面的页面状态数据的过程可以包括:
93.s121,针对页面执行完一个交互动作集后,获取该页面对应的页面快照。
94.页面快照类似于网页快照,是页面在某个时间段的完整状态,对人而言,页面快照很容易识别,例如,点击搜索按钮之后,会出现搜索结果,如果有搜索结果,则认为该功能正常,此过程人很容易识别。但是,对机器而言,要达到人识别的程度很难,因此,需要一种方式能够将页面快照转译成机器可以识别的数据,该数据即页面状态数据。
95.在一种可能的实现方式中,执行完一个交互动作集内的所有交互动作后,获取一个页面快照,即该页面快照包含了执行交互动作集中所有交互动作的过程中,页面的状态信息。
96.在另一种可能的实现方式中,执行完一个交互动作集内的部分交互动作后,获取相应的页面快照,即该页面快照包含执行完该部分交互动作后,页面所对应的状态信息。
97.s122,将页面快照中表征页面状态的数据进行转译得到该页面的页面状态数据。
98.无论是web页面,还是终端安装的应用程序的页面,都是利用某种描述语言编写进而显示,而转译过程就是从页面的描述语言中提取目标对象的数据,并将该数据转换为计算机可识别的数据。
99.在一示例性实施例中,将页面快照转译得到页面状态数据的过程可以包括:
100.1)从页面快照中提取与所述被测功能相匹配的目标ui元素信息及目标页面事件信息。
101.根据需要测试的功能确定需要验证的ui元素信息及页面事件信息,即目标ui元素
信息及目标页面事件信息。
102.对于同一页面的不同测试目标,获得的页面快照相同,只是针对不同的测试目的,在转译过程中分别获取不同的页面状态数据。
103.2)将目标页面元素信息及目标页面事件信息转换为目标格式数据,得到页面状态数据。
104.在一示例性实施例中,利用自动化测试工具模拟用户与ui界面进行交互操作,因此可以利用自动化测试工具提供的应用程序接口(application programming interface,api)从页面的描述语言中获取相应的信息。
105.以web页面为例,可以利用“page.gettext(selector)”这种api接口能够获取页面上按钮的文本;利用“page.cssvalue()”这种api接口能够获取页面上按钮的颜色。
106.例如,一个按钮可以点击时是绿色,不可点击时是灰色,因此,判断按钮是否可点击可以判断按钮的颜色。
107.在另一示例性实施例中,可以利用页面爬虫脚本,利用爬虫脚本从页面中爬取需要的信息。
108.在某些场景下,不仅需要对页面的ui元素做断言,还需要对页面中的其他类型数据做断言。用户点击某些按钮的操作,页面实际会产生网络请求,此时,需要验证发送的请求参数是否符合预期。
109.例如,如图3所示,用户点击“抽奖”按钮之后,页面实际会向服务器端发送一条请求抽奖的公共网关接口(commongateway interface,cgi)请求,此种场景下需要验证发送的cgi请求参数是否符合预期。其中,cgi是web服务器运行时外部程序的规范,cgi应用程序能与浏览器进行交互,还可通过数据api与数据库服务器等外部数据源进行通信,从数据库服务中获取数据。
110.又如,页面可能同时还向服务器端发送一条数据上报的cgi请求,为确保数据上报字段符合预期,需要验证该数据上报请求的参数是否符合预期。因此,页面状态数据不仅要包括页面的ui元素信息,例如,ui元素的位置、样式等信息,还应该包括页面的事件信息,如,网络请求、js runtime中的变量。
111.例如,参见图4,示出了本技术实施例提供的执行交互动作集到获得页面状态数据过程的示意图。
112.如图4所示,在页面a上执行交互动作集a后,产生一个页面快照a,然后,继续执行交互动作集b,产生另一页面快照b。
113.对该页面快照a进行转译得到页面状态数据a。
114.假设页面b包括两个测试场景,即,需要对页面b中的不同页面状态数据进行测试,此种情况下,只需对页面快照b进行转译获得不同的页面状态数据,即,页面状态数据b1和页面状态数据b2。
115.由上述过程可知,根据不同的测试目标,一个页面快照可以转译获得多个页面状态数据,如不仅可以用于测试页面的ui元素是否符合预期,还可以用于测试网络请求等页面中的事件信息是否符合预期。因此,从同一页面快照中获得的页面状态数据可以应用于不同的测试场景。
116.此外,由于将交互动作分组后,针对一组交互动作只需获取一次页面状态数据,无
需针对每个交互动作都获取一次页面状态数据,减少了整个测试过程的数据获取次数,即缩短了获取页面状态数据所需的时间,因此,缩短了整个测试过程的耗时。
117.s130,根据与交互动作集对应的页面状态数据及相匹配的预期数据,得到页面功能对应的测试结果。
118.测试用例中包括与被测功能相对应的预期数据,在获得每个交互动作集对应的页面状态数据后,将页面状态数据与对应的预期数据进行对比,判断被测功能是否符合预期。如果页面状态数据与预期数据一致,则确定被测功能符合预期;如果页面状态数据与预期数据不一致,则确定被测功能不符合预期。
119.在一种应用场景中,在执行交互动作后只关注该交互动作后页面所显示的信息是否正确,例如,一交互动作集包括“等待搜索框出现”和“等待搜索按钮出现”,这两个交互动作不会引起页面功能变化,因此,只关注这两个交互动作执行后页面的状态即可,无需关注执行交互动作之前与执行交互动作之后页面的变化情况,因此,只需单独对执行该交互动作集后的页面状态数据进行断言,判断该页面是否符合预期。
120.下面将以一个“搜索”功能的web页面为例说明本技术提供的页面测试过程:
121.一个完整的搜索过程涉及五个用户交互动作,分别是:等待搜索框出现、等待搜索按钮出现、输入搜索词、点击搜索按钮和等待搜索结果出现。
122.首先,将这五个用户交互动作划分成不同的交互动作集。
123.由于“等待搜索框出现”和“等待搜索按钮出现”这两个交互动作未对页面功能产生影响,因此这两个交互动作可以划分为一个交互动作集。
124.而“输入搜索词”和“点击搜索按钮”这两个交互动作的功能相对独立,分别是搜索功能的两个部分,因此,这两个交互动作不能分为一组,即“输入搜索词”单独划分为一个交互动作集。
125.而“点击搜索按钮”和“等待搜索结果出现”这两个交互动作中,前者是导致后者出现原因,而后者是前者的结果反馈,因此可以将这两个交互动作划分为一组。
126.经划分上述的五个交互动作分别划分为三个交互动作集,分别命名为init、input和search,即,init包括等待搜索框出现和等待搜索按钮出现这两个交互动作;input包括输入搜索词这一交互动作;search包括点击搜索按钮和等待搜索结果出现这两个交互动作。
127.参见图5,示出了一种搜索页面测试过程的页面示意图。
128.如图5所示,首先根据搜索页面的页面地址,打开该页面,即执行交互动作集init,执行完该交互动作集后页面显示如图5中的(a)所示的页面,该页面记为页面a。以及获取页面a的页面快照,即页面快照a。
129.然后,执行交互动作集input,即在页面a的搜索框中输入搜索词“tencent”,页面如图5中的(b)所示,该页面记为页面b。以及获取页面b的页面快照b。
130.执行交互动作集search,即点击页面b中的搜索按钮,并等待搜索结果出现,最终显示页面如图5中的(c)所示,该页面记为页面c。以及获取页面c的页面快照c。
131.获得三个页面快照a、b和c之后,对页面快照进行转译得到页面状态数据,分别记为页面状态数据a、页面状态数据b和页面状态数据c。即,每执行完一个交互动作集后,立即获得此时页面对应的页面快照,最后,分别对各个页面快照进行转译得到相应的页面状态
数据。
132.最后,对三个页面状态数据做断言,即判断三个页面是否符合预期。
133.本实施例提供的页面测试方法,该方案将被测功能所需的交互动作划分为至少一个交互动作集,且至少存在一个交互动作集包括相关联的至少两个交互动作;并在执行完一组交互动作后获取此时页面的页面状态数据,无需每一个交互动作执行完成后获取一次页面状态数据,因此减少了获取页面状态数据的次数,同时也减少了页面状态数据与预期数据比较的次数,降低了测试过程的耗时,因此,提高了整个页面测试过程的效率。而且,该方案获得的页面状态数据包括了被测用户界面的不同类型的状态信息(如,页面的ui元素信息、页面的事件信息),因此,支持的测试场景更丰富。
134.参见图6,示出了本技术实施例提供的另一种页面测试方法的流程图,本实施例将着重介绍对页面状态数据做断言的过程,其他与图2所示实施例中相同的步骤不再赘述。
135.在一种应用场景中,交互动作对页面功能的影响极其重要,此种场景下,需要对比执行某一交互动作集之前与执行之后所对应页面的差异,如果差异符合预期,则确定该页面的测试结果成功且有效。如果页面之间的差异不符合预期,则确定页面的测试结果是失败。
136.如图6所示,该方法包括:
137.s210,获取页面功能对应的测试用例。
138.测试用例包括至少一个交互动作集及对应的预期数据,且至少存在一个交互动作集包括相关联的至少两个交互动作。
139.s220,依次执行测试用例中的至少一个交互动作集,并获取执行完每个交互动作集后页面的页面状态数据。
140.s230,比较执行完目标交互动作集后页面的页面状态数据,以及与目标交互动作集相匹配的预期状态数据是否一致;如果一致,则执行s240;如果不一致,则执行s270。
141.其中,目标交互动作集是对页面的页面状态数据产生影响的交互动作集。例如,上述图5所示实例中,search交互动作集执行完后,页面功能会发生变化,如搜索功能页面会从(b)所示的页面b变为(c)所示的页面c。
142.其中,页面b的title应该为搜索引擎的名字,如“百度一下,你就知道”,而页面c的title应该包括输入的搜索词,如“tencent_百度搜索”;而且,页面b中没有搜索结果,而页面c中包含搜索结果。因此,通过对比这两个页面之间的差异,可以判断在执行上述的search交互动作集执行完之后所显示页面是否符合预期。
143.s240,获取目标交互动作集以及与该目标交互动作集相邻的上一个交互动作集,分别对应的页面状态数据之间的差异信息。
144.s250,比较差异信息,以及与目标交互动作集相匹配的预期差异数据是否一致;如果一致,则执行s260;如果不一致,则执行s270。
145.判断页面c与页面b之间的差异信息是否符合预期差异数据,如果差异信息符合预期差异数据,则确定页面c符合预期;如果差异信息不符合预期差异数据,则确定页面c不符合预期。
146.s260,确定页面功能符合预期。
147.如果执行目标交互动作前后对应的两个页面之间的差异信息符合预期差异数据,
则判定这两个页面均符合预期。
148.s270,确定页面功能不符合预期。
149.如果执行目标交互动作前后分别对应的两个页面之间的差异信息不符合预期差异数据,则判定该页面功能不符合预期。
150.本技术实施例并不限定s230和s240的执行顺序,该两个步骤可以并行执行,也可以先执行s240再执行s230。
151.其中,执行s230后得到第一比较结果,执行s240后得到第二比较结果,如果第一比较结果和第二比较结果均为符合相应的预期,即第一比较结果符合预期,且第二比较结果符合预期,则确定该页面符合预期;如果第一比较结果不符合预期或第二比较结果不符合预期,则确定该页面不符合预期。
152.如上所述,若s230判断出页面状态数据与相应的预期状态数据一致,则第一比较结果符合预期;若s230判断出页面状态数据与相应的预期状态数据不一致,则第一比较结果不符合预期。同理,若s240判断出差异数据与相应的预期差异数据一致,则第二比较结果符合预期;若s240判断出差异数据与相应的预期差异数据不一致,则第二比较结果不符合预期。
153.例如,在一种应用场景中,某应用程序需要使用用户的历史数据形成用户在一段时间内的数据汇总。如图7所示,页面上会显示
“□
同意**使用您的历史数据开启记忆之旅”的内容,而且,该页面上“开启记忆”的按钮为不可点击。
154.当用户点击页面上的
“□”
表示同意,此时页面上显示“√同意**使用您的历史数据开启记忆之旅”,而且“开启记忆”的按钮为可点击。
155.如果在用户点击
“□”
表示同意后,仅验证该交互动作执行后页面上的按钮颜色是否是可点击的颜色,如绿色表示按钮可点击,灰色表示按钮不可点击。可能出现在用户点击
“□”
表示同意之前,页面上的“开启记忆”按钮就已经变为绿色,用户点击
“□”
表示同意之后,该按钮颜色依然为绿色,这种情况,仅通过验证某一页面的页面状态无法排查。
156.而采用本实施例提供的对比用户交互动作执行后与执行前的页面之间的差异,能够检查出此种错误,如果用户点击
“□”
表示同意之前,页面上的“开启记忆”按钮为绿色,而用户点击
“□”
表示同意之后,该按钮颜色依然为绿色,表明用户执行点击操作前后,该按钮的颜色没有变化,即没有差异,而预期差异是按钮颜色由灰色变为绿色,可见,这种情况下的差异信息不符合预期差异数据,因此,判定页面不符合预期。
157.本实施例提供的页面测试方法,在获得交互动作集执行完成后得到相应的页面状态数据之后,对于对页面的功能产生影响的交互动作集,即目标交互动作集。通过对比该目标交互动作集执行前与执行后对应的页面之间存在的差异信息,判断被测功能对应的页面是否符合预期。可见,该方案验证页面是否符合预期采用了不同页面进行对比的交叉验证方式,因此,该方案的测试结果更准确。
158.参见图8,示出了本技术实施例提供的一种页面测试场景的示意图。
159.在一种测试场景中,用户交互动作相同,但是,可能出现多种不同的交互错误,对于不同交互错误,所显示的页面的区别在于提示文本不同。
160.如图8所示,抽奖功能页面,即图8中的(a)所示的页面a,当用户点击该页面的“抽奖”按钮后,可能会出现不同的交互错误,分别显示不同的页面,如图8中的(b)所示的页面
b,以及图8中的(c)所示的页面c,其中,页面b和页面c的区别仅在于所提示的出错原因不同,其他ui元素均相同,例如,页面b和页面c都显示出错原因提示弹窗、“抽奖”按钮,且均显示“抽奖次数还剩1次”的提示信息。
161.针对此种测试场景,相关技术中,执行测试的动作和获取ui信息的脚本都需要重复编写,复用率低,导致测试代码的开发和维护成本高。为了解决该问题,本技术提供的页面测试方法中,一个完整的测试用例中多个页面快照转译为相应的页面状态数据,只需一份转译脚本。不同的测试用例之间,如果爬取的信息基本一致,也可以复用一个转译脚本。
162.例如,图9所示的兑换礼物功能的页面,兑换的礼物包括礼物a和礼物b,点击礼物a的操作和点击礼物b的操作不同,因此,需要分别构建两个测试用例,一个用于测试兑换礼物a的过程,另一个用于测试兑换礼物b的过程。
163.但是,兑换礼物a和兑换礼物b的ui展示一致,如图9中的(b)和(c)所示的页面都包括按钮、弹窗确认等,唯一区别在于弹窗中显示的文本不同。例如,(b)所示的页面中显示的文本是“确认兑换礼物a?”,而(c)所示的页面中显示的文本是“确认兑换礼物b?”,因此,可以复用同一个转译脚本。
164.因为无论转译脚本基于自动化测试工具的api接口实现,还是利用爬虫脚本实现,都可以将转译脚本进行模块化(或组件化),将实现相似功能的代码进行模块化或组件化,当需要实现该功能时,只需调用该功能模块即可,不需要重复编写相似的代码。
165.模块化(或组件化)的转译脚本之所以能够复用,原因在于:
166.1)各个转译脚本都按照commonjs规范编写,按此规范编写的脚本可以通过require方式被引用,这样就能在其他地方组装起来复用。
167.2)对于跨项目的场景,转译脚本可以被托管在包管理平台,需要使用某个转译脚本时,可以直接从该包管理平台下载并安装即可,开发人员无需重复编写转译脚本。
168.3)借助前端构建工具,例如,webpack工具、rollup工具等,能够将转译脚本进行构建编译,最后的构建产物被测试框架引入并执行。
169.转译脚本的复用提高了测试代码的复用率,同时,降低了开发人员的开发和维护测试代码的成本。
170.此外,由于本技术提供的页面测试方法,是将页面快照转译为页面状态数据后再做断言,因此,当页面的ui元素的某些样式(例如,按钮的形状)发生变化后,而最终反馈到页面状态数据中可能不会产生较大的影响,因此,提高了测试代码的稳定性,即降低了测试代码的维护成本。
171.相应于上述的页面测试方法实施例,本技术还提供了页面测试装置实施例。
172.请参见图10,示出了本技术实施例提供的一种页面测试装置的结构示意图,该装置应用于电子设备,如图10所示,该装置可以包括:
173.测试用例获取模块110,用于获取页面功能对应的测试用例,所述测试用例包括至少一个交互动作集及对应的预期数据,且至少存在一个所述交互动作集包括相关联的至少两个交互动作。
174.页面数据获取模块120,用于依次执行所述至少一个交互动作集,并依次获取执行完每个所述交互动作集后页面的页面状态数据,所述页面状态数据包括表征页面状态的信息。
175.在一示例性实施例中,页面数据获取模块120可以包括页面快照获取子模块和数据转译子模块。
176.页面快照获取子模块,用于在执行任一所述交互动作集内的交互动作后,获取所述页面对应的页面快照。
177.数据转译子模块,将所述页面快照中表征页面状态的数据进行转译,得到所述页面的页面状态数据。
178.在一示例性实施例中,数据转译子模块具体用于:
179.信息获取子模块,用于从所述页面快照中提取与所述被测功能相匹配的目标页面元素信息及目标页面事件信息;
180.数据格式转换子模块,用于将所述目标页面元素信息及所述目标页面事件信息转换为目标格式数据,得到所述页面状态数据。
181.在一示例性实施例中,信息获取子模块具体用于:
182.确定与所述被测功能相匹配的目标页面元素及目标页面事件;
183.利用与所述目标页面元素相匹配的测试工具接口,从所述页面快照中获取目标页面元素信息和目标页面事件信息,或者,利用爬虫脚本从所述页面快照中获取目标页面元素信息和目标页面事件信息。
184.断言模块130,用于根据与所述交互动作集对应的页面状态数据及相匹配的预期数据,得到页面功能对应的测试结果。
185.在一示例性实施例中,断言模块130具体用于:
186.比较与所述交互动作集对应的页面状态数据,以及与所述页面状态数据相匹配的预期状态数据,得到第一比较结果;
187.比较执行顺序相邻的两个所述交互动作集对应的页面状态数据之间的差异数据,以及与所述差异数据相匹配的预期差异数据,得到第二比较结果;
188.若所述第一比较结果和所述第二比较结果均为符合相应的预期,确定所述页面功能符合预期;
189.若所述第一比较结果或所述第二比较结果为不符合相应的预期,确定所述页面功能不符合预期。
190.在一示例性实施例中,断言模块130用于比较执行顺序相邻的两个所述交互动作集对应的页面状态数据之间的差异数据,以及与所述差异数据相匹配的预期差异数据,得到第二比较结果时,具体用于:
191.获取目标交互动作集对应的页面状态数据,以及与所述目标交互动作集相邻的上一个交互动作集对应的页面状态数据之间的差异信息;
192.比较所述差异信息,以及与所述目标交互动作集相匹配的预期差异数据是否一致;
193.若所述差异信息与所述预期差异数据一致,确定所述差异数据符合预期;
194.若所述差异信息与所述预期差异数据不一致,确定所述差异数据不符合预期。
195.在另一示例性实施例中,断言模块130具体用于:
196.针对任一所述交互动作集,比较执行完任一所述交互动作集后页面对应的页面状态数据,以及与所述交互动作集相匹配的预期状态数据是否一致;
197.若所述页面状态数据与相匹配的所述预期状态数据一致,确定所述页面功能符合预期;
198.若所述页面状态数据与相匹配的所述预期状态数据不一致,确定所述页面功能不符合预期。
199.本实施例提供的页面测试装置,获取页面功能对应的测试用例,该测试用例包括至少一个交互动作集以及对应的预期数据;依次执行交互动作集后并获取页面的页面状态数据,该页面状态数据包括该页面的状态信息。最后根据页面状态数据及相匹配的预期数据,确定页面功能是否符合预期。该方案将测试用例所包含的交互动作划分为至少一个交互动作集,且至少存在一个交互动作集包括相关联的至少两个交互动作。并在执行完一组交互动作后获取此时页面的页面状态数据,无需每一个交互动作执行完成后获取一次页面状态数据,因此减少了获取页面状态数据的次数,同时也减少了页面状态数据与预期数据比较的次数,缩短了测试过程的耗时,因此,提高了整个页面测试过程的效率。
200.进一步地,该方案获得的页面状态数据包括了表征页面状态的信息,以及页面的事件信息,不仅可以测试页面状态是否符合预期,还可以针对页面发生的事件进行测试,,因此,利用该方案获得的测试结果更全面,支持的测试场景更丰富。
201.另一方面,本技术还提供了一种电子设备,该电子设备可以是终端设备,如,pc机、手机、pda等;电子设备还可以是服务器、云服务器等,其中,服务器或云服务器可以是独立服务器,或者多台服务器构成的服务器集群。
202.如参见图11,其示出了本技术的电子设备的一种组成结构示意图,本实施例的电子设备可以包括:处理器210和存储器220。
203.可选的,该终端还可以包括通信接口230、输入单元240和显示器250和通信总线260。
204.处理器210、存储器220、通信接口230、输入单元240、显示器250、均通过通信总线260完成相互间的通信。
205.在本技术实施例中,该处理器210,可以为中央处理器(central processing unit,cpu),特定应用集成电路,数字信号处理器、现成可编程门阵列或者其他可编程逻辑器件等。
206.该处理器可以调用存储器220中存储的程序。具体的,处理器可以执行以下消息发送方法的实施例中应用服务器侧所执行的操作。
207.存储器220中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本技术实施例中,该存储器中至少存储有用于实现上述任一种页面测试方法。
208.在一种可能的实现方式中,该存储器220可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、以及至少一个功能(比如图像播放功能等)所需的应用程序等;存储数据区可存储根据计算机的使用过程中所创建的数据,比如,用户数据及图像数据等等。
209.此外,存储器220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
210.该通信接口230可以为通信模块的接口,如gsm模块的接口。
211.本技术还可以包括显示器240和输入单元250等等。
212.当然,图11所示的终端的结构并不构成对本技术实施例中终端的限定,在实际应用中终端可以包括比图11所示的更多或更少的部件,或者组合某些部件。
213.另一方面,本技术实施例还提供了一种计算机可读存储介质,该存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上任意一个实施例中页面测试方法。
214.再一方面,本技术实施例还提供了一种计算机程序产品,当该计算机程序产品在电子设备上执行时,适于执行初始化有上述任一项所述的页面测试方法。
215.需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
216.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
217.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
218.以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献