掌桥专利:专业的专利平台
掌桥专利
首页

UI测试脚本的自动生成方法、电子设备及存储介质

文献发布时间:2024-04-18 20:02:40


UI测试脚本的自动生成方法、电子设备及存储介质

技术领域

本申请涉及软件测试技术领域,尤其是涉及一种UI测试脚本的自动生成方法、电子设备及存储介质。

背景技术

软件测试是使用人工操作(手动测试)或者软件自动运行的方式(自动化测试)来检验软件是否满足用户需求的过程。软件测试已成为一个专业,需要有专门的方法、手段和人才。用户界面(UI)测试也称之为用户界面测试,它是一种测试类型,通过该测试,我们检查应用程序的界面是否工作正常或是否存在任何妨碍用户行为且不符合书面规格的BUG。用户界面(UI)测试作为最贴近用户使用方式的测试方法,此方法几乎在市面上的所有软件公司都有使用,伴随着测试场景的复杂化,用户界面自动化测试技术应运而生。现有的用户界面自动化测试技术,一般通过测试人员编写脚本的方式完成。然而,现有用户界面自动化脚本生成方法多为根据测试人员经验方式生成,并不具备复现线上大多数用户真实使用场景及操作流程能力,自动化覆盖率不高,且存在着测试人员相关工作量高以及项目测试周期较长的问题,过程不够高效智能。

发明内容

为了有助于改善现有UI测试效率较低、且覆盖率不高的问题,本申请提供了一种UI测试脚本的自动生成方法、电子设备及存储介质。

第一方面,本申请提供一种UI测试脚本的自动生成方法,用于软件UI测试中,所述方法包括:

抓取服务器日志数据并进行预处理;

用书籍生成有向图;其中,网页作为有向图的节点,页面跳转过程作为有向图的有向边;

计算节点的入度和出度,进行流程分析;

根据有向图及其分析结果生成UI脚本。

进一步地,生成UI脚本的过程包括:

获取节点、节点属性和边的信息,解析流程图;

生成测试用例;其中,测试用例包括测试步骤、输入数据、预期结果信息;

使用自动化测试工具模拟用户操作,编写测试脚本。

进一步地,生成流程有向图时,包括:

创建有向图对象;

将软件的每个页面作为一个节点添加到有向图中;

将访问的页面作为有向边添加到有向图中;

使用绘图库将有向图转换为流程图。

进一步地,为有向图添加节点时,将该页面相关特征埋点以属性的形式加入到相关节点中。

进一步地,流程分析还包括:计算页面节点的度中心性、接近中心性和介数中心性,以判断该页面节点在流程中的重要性。

进一步地,日志数据采集时:使用自定义脚本,抓取线上服务器中的网页访问频率、页面跳转信息及用户埋点信息,并将数据保存到结构化的格式中。

进一步地,数据的预处理包括:数据清洗、处理缺失值、数据转换。

第二方面,本申请提供一种电子设备,采用如下的技术方案:

一种电子设备,该电子设备包括:

至少一个处理器;

存储器;

至少一个应用程序,其中至少一个应用程序被存储在存储器中并被配置为由至少一个处理器执行,所述至少一个应用程序配置用于:执行一种UI测试脚本的自动生成方法。

第三方面,本申请提供一种计算机可读存储介质,采用如下的技术方案:

一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令所述计算机执行第一方面提供的任一种UI测试脚本的自动生成方法。

综上所述,本申请技术方案,通过自动抓取网页访问的服务器日志数据,生成有向图,分析后自动生成UI测试脚本,实现了以用户实际访问为依据的UI测试样例。该方案具有高效率、自动化、样本覆盖率高且不过分依赖测试人员经验的优点,便于大范围推广。

附图说明

图1是本申请实施例提供的一种UI测试脚本的自动生成方法的流程示意图;

图2是附图1中的S20部分的详细流程示意图;

图3是本申请实施例提供的一种电子设备的原理示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图1-3及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。

本申请一实施例提供UI测试脚本的自动生成方法,用于软件测试系统中。

本实施例以APP软件为应用示例对上述方法进行具体说明。在实际实现时,上述方法也可以用于其它软件系统,本实施例对此不作限定。

具体参照图1及图2所示的,一种UI测试脚本的自动生成方法,用于软件UI测试中,方法包括:

S10:抓取服务器日志数据并进行预处理。日志数据采集时:使用自定义脚本抓取线上服务器中的网页访问频率、页面跳转信息及用户埋点信息,并将数据保存到结构化的格式中。数据的预处理包括:数据清洗、处理缺失值、数据转换等,以获得标准格式的数据用于后续工作中。

S20:用书籍生成有向图;其中,将网页作为有向图的节点,将页面跳转过程作为有向图的有向边;其中,

S21:生成有向图具体地过程包括:创建有向图对象;

S22:将软件的每个页面作为一个节点添加到有向图中;

S23:根据访问页面的频率作为有向边添加到有向图中;

S24:使用绘图库将有向图转换为流程图。

本实施例中,在为有向图添加节点时,将该页面相关特征埋点以属性的方式加入到相关节点中。

需要说明的是,有向图是一副具有方向性的图,是有一组顶点和一组有方向的边组成的,每条方向的边都连接着一对有序的顶点。与之对应的,全部由无向边构成图被称为无向图。

S30:计算节点的入度和出度,进行流程分析;

此外,分析过程还包括:计算页面节点的度中心性、接近中心性和介数中心性,以判断该页面节点在流程中的重要性。可以对于重要性较高的步骤流程予以更高的关注。

S40:根据有向图及分析结果生成UI脚本。

生成UI脚本的具体过程包括:

S41:获取节点、节点属性和边的信息,解析流程图;

S42:生成测试用例;其中,测试用例包括测试步骤、输入数据、预期结果信息;

S43:使用自动化测试工具模拟用户操作,编写测试脚本。

本申请技术方案,通过自动抓取网页访问的日志数据,生成有向图,分析后自动生成UI测试脚本,实现了以用户实际访问为依据的测试样例。该方案具有高效率、自动化、样本覆盖率高且不过分依赖测试人员经验的优点。

在本发明的另一实施例中,该脚本生成方法包括以下步骤:

1、日志抓取和分析

日志抓取和分析是本专利方案中的关键步骤之一,它涉及到对服务器生成的日志进行实时抓取和分析,以提取用户的访问路径信息。

基于访问频率、页面特征埋点等信息的路径分析和生成:本专利方案通过日志分析和客户端埋点信息生成具体的流程图,通过流程图以提取用户的访问路径信息。具体来说,可以使用以下步骤完成流程图的生成工作:

(1)数据采集:从线上服务器中采集访问频率、页面跳转信息以及用户埋点信息,本实施例中使用自定义脚本来抓取服务器日志,并提取所需信息。将这些数据保存到一个结构化的格式中,如CSV或数据库等。

(2)数据预处理:对采集到的数据进行预处理,以便后续的流程图生成。本实施例中预处理步骤包括数据清洗、处理缺失值、数据转换等,以确保数据的准确性和一致性。

(3)流程图生成:使用编程的方式来生成流程图。本实施例中流程图根据页面跳转关系和访问频率来构建,其中每个节点表示一个页面,节点带有该页面特征埋点,边表示页面之间的跳转。可以根据需要设置节点的相关属性,以反映页面间是如何进行的跳转。

(31)进一步地,首先创建一个有向图对象。有向图可以表示页面的跳转,其中每个节点代表一个页面,每个有向边代表一个页面跳转。以下是创建有向图对象的示例代码:

import networkx as nx

#创建有向图对象

graph=nx.MultiGraph()

(32)添加节点和边:根据预处理的数据,将每个页面作为一个节点添加到有向图中,并将该页面相关特征埋点以属性的方式加入到相关节点。然后,根据访问频率作为有向边添加到有向图中。以下是根据数据添加节点和边的示例代码:

#添加节点及节点属性

for page in pages:

graph.add_node(page,attr1=‘value1’,attr2=‘value2’)

#添加边

for page,frequency in data:

graph.add_edge(page,destination_page,weight=frequency)

(33)绘制流程图:使用绘图库,将有向图绘制成流程图。使用Matplotlib绘制流程图:

import matplotlib.pyplot as plt

#绘制流程图

plt.figure(figsize=(10,6))

pos=nx.spring_layout(graph)

nx.draw_networkx(graph,pos,with_labels=True,node_size=2000,node_color='lightblue',font_size=10,edge_color='gray')

plt.axis('off')

plt.show()

(4)流程图分析:对生成的流程图进行进一步计算,以了解用户的访问路径和行为模式。可以计算节点的入度和出度,以确定页面的流入和流出情况。本实施例汇总还计算节点的中心性指标(度中心性、接近中心性和介数中心性),以衡量页面在整个流程中的重要性。

(41)以下是相关代码示例

#计算入度和出度

in_degrees=graph.in_degree()

out_degrees=graph.out_degree()

#计算度中心性

degree_centrality=nx.degree_centrality(graph)

#计算接近中心性

closeness_centrality=nx.closeness_centrality(graph)

#计算介数中心性

betweenness_centrality=nx.betweenness_centrality(graph)

#计算页面之间的最短路径

shortest_path=nx.shortest_path(graph,'home','checkout')

(5)保存流程图:本实施例中将绘制好的流程图保存为图片或其他格式,以便后续解析流程图使用。

2、自动生成UI自动化脚本

(1)解析流程图:首先,我们需要解析流程图并提取其中的节点、节点属性和边信息。可使用networkx库来读取流程图文件,并使用其提供的函数来获取节点、节点属性和边的信息。以下是示例代码,说明解析流程图:

import networkx as nx

#读取流程图文件

graph=nx.read_graphml('flowchart.graphml')

#获取节点和边的信息

nodes=graph.nodes()

edges=graph.edges()

(2)生成测试用例:根据流程图中的节点、节点属性和边信息,我们可以生成相应的测试用例。测试用例可以包括测试步骤、输入数据和预期结果等信息。以下是示例代码,解释如何生成测试用例:

test_cases=[]

#遍历节点和边,生成测试用例

for node in nodes:

test_case={}

test_case['page_name']=node

#根据节点获取输入数据

test_case['input']=get_input_data(node)

#根据节点获取预期结果

test_case['expected_result']=get_expected_result(node)

test_cases.append(test_case)

(3)编写测试脚本根据生成的测试用例,我们编写相应的测试脚本。测试脚本可以使用Selenium或其他UI自动化测试工具来模拟用户操作和验证结果。以下是示例代码,说明如何编写测试脚本:

from selenium import webdriver

#初始化浏览器驱动

driver=webdriver.Chrome()

#执行测试用例

for test_case in test_cases:

step=test_case['step']

input_data=test_case['input']

expected_result=test_case['expected_result']

#根据测试步骤执行相应的操作

if step=='Step 1':

driver.get('http://example.com')

#执行其他操作...

elif step=='Step 2':

element=driver.find_element_by_id('username')

element.send_keys(input_data['username'])

#执行其他操作...

#验证结果

actual_result=get_actual_result()#根据实际情况获取实际结果assertactual_result==expected_result,"Test failed"

本发明提出的基于线上数据的自动生成UI自动化测试脚本的方案,实现了UI测试更加贴近线上用户真实操作的目的,有效的提高了UI自动化覆盖率,全面提升软件产品的质量,同时减轻测试人员相关工作量,缩短了项目发布整体周期。

本申请实施例还提供一种电子设备,如图3所示,图3所示的电子设备700包括:处理器701和存储器703。其中,处理器701和存储器703相连,如通过总线702相连。可选地,电子设备700还可以包括收发器704。需要说明的是,实际应用中收发器704不限于一个,该电子设备700的结构并不构成对本申请实施例的限定。

处理器701可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器701也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。

总线702可包括一通路,在上述组件之间传送信息。总线702可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线702可以分为地址总线、数据总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

存储器703可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

存储器703用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。处理器701用于执行存储器703中存储的应用程序代码,以实现前述方法实施例所示的内容。

其中,电子设备包括但不限于:移动电话、笔记本电脑、PDA(个人数字助理)、PAD(平板电脑)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。还可以为服务器等。图3示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当计算机程序在计算机中执行时,令计算机执行上述实施例提供的UI测试脚本的自动生成方法。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。

以上仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 闪购活动自动生成方法及装置、存储介质、电子设备
  • 试卷自动生成方法、电子设备及存储介质
  • 存储方法、存储系统、电子设备及存储介质
  • 引导电子设备系统开机的方法,电子设备,可读存储介质
  • 电子设备的操作响应方法、电子设备及存储介质
  • 测试脚本自动生成方法、装置、电子设备及存储介质
  • 测试脚本的自动生成方法、装置、存储介质及电子设备
技术分类

06120116588345