CN108459967B - 基于用户接口状态流图的Web应用测试用例生成方法 - Google Patents
基于用户接口状态流图的Web应用测试用例生成方法 Download PDFInfo
- Publication number
- CN108459967B CN108459967B CN201810235202.2A CN201810235202A CN108459967B CN 108459967 B CN108459967 B CN 108459967B CN 201810235202 A CN201810235202 A CN 201810235202A CN 108459967 B CN108459967 B CN 108459967B
- Authority
- CN
- China
- Prior art keywords
- sfg
- state
- path
- web application
- node
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Abstract
本发明公开一种基于用户接口状态流图的Web应用测试用例生成方法,首先采用动态搜索技术生成用户接口状态流图作为Web应用测试模型,然后从终态节点出发逆向深度优先遍历SFG图,获取从初态至终态节点的完整路径上的事件序列,在此基础上生成Web应用测试用例;在逆向遍历SFG时,标记已访问节点,并在后续测试用例生成过程中采用初始节点到这些已标记节点的最短路径替换深度遍历。本发明可在保证SFG图边覆盖的前提下,减小测试用例集规模,降低Web应用测试成本,提高Web应用测试效率。
Description
技术领域
本发明属于软件工程中软件分析与测试领域,具体涉及一种基于用户接口状态流图的Web应用测试用例生成方法。
背景技术
随着网络技术的普及和实际应用需求的不断增加,Web应用的开发和使用日益广泛。随之而来的Web应用质量问题对人们的生产和生活产生重要影响,尤其在电子商务、信息管理等应用领域,Web应用的质量问题有时会给人们带来不可估量的损失。Web应用测试是一种重要的软件质量保证手段,其中如何有效地生成Web应用的测试用例是Web应用测试研究的关键技术。根据测试用例生成方式的不同,Web应用测试可分为捕捉-回放法、模型法、基于用户会话的方法、基于动态搜索的方法等。
捕捉-回放法是目前工业界普遍采用的Web应用自动化测试方法,该方法首先人工记录用户的操作过程并生成测试脚本,然后回放脚本、模拟用户操作,自动运行Web应用,相应工具包括LoadRunner、QTP以及IBM Rational Robot等。该方法因需人工录制脚本,测试成本高,覆盖路径少,测试不充分,且本质上,该方法仅重复运行人工生成的Web应用测试用例,不能生成新的测试用例。当Web应用软件发生变化时,原有的测试脚本一般无法运行,需重新录制脚本。
模型法一般通过分析源代码或者需求说明构造Web应用模型,根据模型再生成测试用例。模型法测试覆盖率较高,但一般需手工建立模型,代价很高,且因在建立模型时难以考虑Web应用的动态性和不确定性等特点,模型不够精确。当Web应用发生变化时,新模型需经人工重新分析和建立,模型的维护和更新困难、成本高。
基于用户日志的方法从用户日志中提取测试用例有关信息,生成Web应用测试用例。该方法所生成的测试用例代表了实际用户的使用情行,可覆盖用户的常用功能,但不能保证覆盖全部功能,测试不够充分。此外,因用户日志中主要包含用户与服务器之间的同步请求信息,缺乏完整的用户接口状态信息(如AJAX技术的普遍应用使得服务器端难以获得完整的用户交互信息),难以有效地生成Web应用测试用例。
基于动态搜索的方法一般通过动态分析和模拟潜在的用户接口行为,自动搜索Web应用状态空间,生成用户接口状态流图(SFG,其节点表示用户接口状态,边表示用户接口GUI上可触发的事件)作为Web应用的测试模型,然后遍历SFG图生成Web应用测试用例。基于搜索的Web应用测试不需人工干预,可自动生成Web应用测试用例,覆盖Web应用的大部分路径,测试充分。
目前,一般采用深度优先搜索(DFS)方法遍历SFG图,生成测试用例。但在DFS搜索SFG图的过程中,往往易陷入对相同子路径的重复搜索,所生成的Web应用测试用例集一般较大,由此造成Web应用测试成本较高,测试效率较低。
发明内容
发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种基于用户接口状态流图的Web应用测试用例生成方法,本发明可在保证对Web应用状态流图边覆盖的前提下,减小测试用例集规模,降低Web应用测试成本,提高测试效率。
技术方案:本发明所述的一种基于用户接口状态流图的Web应用测试用例生成方法,依次包括以下步骤:
(1)生成SFG图:
通过动态分析和模拟潜在的用户接口行为,采用动态搜索技术搜索Web应用状态空间,生成用户接口状态流图SFG,SFG图中的节点表示用户接口状态,SFG图中的边表示用户接口GUI上可触发的事件;
(2)获取终态集:
找出上述SFG图中无出边的状态作为SFG的终态集;
(3)逆向遍历SFG图,生成SFG完整路径集:
从每个终态开始,逆向深度优先遍历SFG,直至初态节点,在遍历过程中,对于各类相应节点(包括:初态节点(一条路径的首节点)、已访问节点以及其他节点)进行如下处理:
(3.1)若当前访问节点是初态节点,则当前路径为一个完整SFG路径,保存该路径;
(3.2)若当前节点标记为已访问,则采用Dijkstra算法找出从初态节点到该节点的最短路径,并用最短路径与已遍历路径进行拼接,生成一个完整的SFG路径,保存该路径;
(3.3)若当前节点既不是初态节点,也未标记已访问,则标记该节点已访问,获取该节点的入边集,并对其中的每个边进行逆向深度遍历;
(4)生成Web应用测试用例集
对SFG完整路径集中的每个完整路径,获取该路径上的事件序列(SFG的数据结构中保存了边的信息,每个边就是一个事件,根据上述步骤得到SFG路径,就是边的集合,可以自然地转换成边的序列,也就是事件序列),并将其保存为Selenium脚本格式,生成Web应用测试用例集。
上述用户接口状态流图的Web应用测试用例生成工具,包括嵌入浏览器模块、DOM分析模块、动态搜索模块和测试用例生成模块,所述嵌入浏览器模块、DOM分析模块、动态搜索模块生成用户接口状态流图SFG,所述测试用例生成模块通过逆向深度优先遍历SFG图生成Web应用测试用例集。给定一个待测网站的入口地址,嵌入浏览器模块与服务器进行交互,发送http请求并接受其响应,同时提供一个访问Javascript引擎和动态DOM对象的接口,将动态DOM对象发送给DOM分析模块;DOM分析模块一方面获取新DOM对象,增量式构造用户接口状态流图(SFG)作为Web应用测试模型,另一方面分析抽取当前DOM对象中与可点击事件相关的DOM元素,如超链接、按钮、表单以及包含事件标签等可能产生新状态的DOM元素,生成相应的可点击事件;动态搜索控制模块模拟用户点击事件,在嵌入浏览器上发送http请求,同时该模块采用深度优先策略动态搜索Web应用的用户接口状态空间;当完整的用户接口状态流图生成后,测试用例生成模块采用逆向深度优先搜索方法自动生成Web应用测试用例。
有益效果:本发明采用动态搜索技术生成用户接口状态流图(SFG)作为Web应用测试模型,通过逆向深度优先遍历SFG图生成Web应用测试用例,在遍历SFG图时标记已访问节点,并在后续测试用例生成过程中,对已访问节点采用初始节点至已标记节点的最短路径替换深度遍历生成的路径,从而在保证对SFG图边覆盖的前提下,减小测试用例集的规模,降低Web应用的测试成本。
总体来说,本发明在保证用户接口状态流图边覆盖的前提下,通过逆向深度优先遍历SFG生成Web应用测试用例,减小测试用例集规模,降低Web应用测试成本。
附图说明
图1为本发明的应用测试流程图;
图2为实施例中Web应用测试用例生成方法示意图。
具体实施方式
下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
本发明所述的一种基于用户接口状态流图的Web应用测试用例生成方法,依次包括以下步骤:
(1)生成SFG图:
通过动态分析和模拟潜在的用户接口行为,采用动态搜索技术搜索Web应用状态空间,生成用户接口状态流图SFG,SFG图中的节点表示用户接口状态,SFG图中的边表示用户接口GUI上可触发的事件;
(2)获取终态集:
找出上述SFG图中无出边的状态作为SFG的终态集;
(3)逆向遍历SFG图,生成SFG完整路径集:
从每个终态开始,逆向深度优先遍历SFG,直至初态节点,在遍历过程中,对于各类节点进行如下处理:
(3.1)若当前访问节点是初态节点,则当前路径为一个完整SFG路径,保存该路径;
(3.2)若当前节点标记为已访问,则采用Dijkstra算法找出从初态节点到该节点的最短路径,并用最短路径与已遍历路径进行拼接(即是指将两个路径的相应序列相加),生成一个完整的SFG路径,保存该路径;
(3.3)若当前节点既不是初态节点,也未标记已访问,则标记该节点已访问,获取该节点的入边集,并对其中的每个边进行逆向深度遍历(从初始节点进行遍历,逆向深度遍历就是从终态节点反向进行遍历到初始节点);
(4)生成Web应用测试用例集
对SFG完整路径集中的每个完整路径,获取该路径上的事件序列,并将其保存为Selenium脚本格式,生成Web应用测试用例集,
如图1所示,上述基于用户接口状态流图的Web应用测试用例生成工具,包括嵌入浏览器模块、DOM分析模块、动态搜索模块和测试用例生成模块,所述嵌入浏览器模块、DOM分析模块、动态搜索模块生成用户接口状态流图SFG,所述测试用例生成模块通过逆向深度优先遍历SFG图生成Web应用测试用例集;给定一个待测网站的入口地址,嵌入浏览器模块与服务器进行交互,发送http请求并接受其响应,同时提供一个访问Javascript引擎和动态DOM对象的接口,将动态DOM对象发送给DOM分析模块;DOM分析模块一方面获取新DOM对象,增量式构造用户接口状态流图(SFG)作为Web应用测试模型,另一方面分析抽取当前DOM对象中与可点击事件相关的DOM元素,如超链接、按钮、表单以及包含事件标签等可能产生新状态的DOM元素,生成相应的可点击事件;动态搜索控制模块模拟用户点击事件,在嵌入浏览器上发送http请求,同时该模块采用深度优先策略动态搜索Web应用的用户接口状态空间;当完整的用户接口状态流图生成后,测试用例生成模块采用逆向深度优先搜索方法自动生成Web应用测试用例。
实施例:
本实施例采用深度优先的动态搜索技术生成用户接口状态流图(SFG)作为Web应用测试模型,通过逆向遍历SFG图生成测试用例,SFG图中的一个完整路径对应Web应用的一个测试用例,具体实施步骤如下:
1.生成SFG图
1)初始时载入Web应用的入口地址,生成SFG的初始状态index;
2)分析index对象中与可点击事件相关的DOM元素,抽取可点击事件集合{e1,e5},选择其中某一未点击事件e1,模拟其触发,生成新状态s1,更新SFG图;
3)采用深度优先策略动态搜索新状态,更新SFG图,直至当前状态已无可点击事件,则进行回溯。如从s1出发选择e2模拟触发,生成新状态s2,如此反复,生成新状态s3和s6,直至到达终态s7。此时,回溯至s6,选择e9模拟触发,生成s8;继续回溯至index,沿s4、s5、s6动态搜索,此时所有可点击事件都触发完毕,由此生成完整的SFG图。
4)为避免陷入回路,采用栈结构记录当前搜索路径上的所有状态,在动态搜索过程中,当前生成的状态与栈中已生成状态进行对比,如当前生成的状态已在栈中,表明存在回路,结束当前状态的后续搜索,开始回溯。
2.获取终态集
找出SFG图中无出边的状态作为SFG的终态集,本实施例中终态集为{s7,s8}。
3.逆向遍历SFG图,生成SFG完整路径集
从每个终态开始,逆向深度优先遍历SFG,直至初态节点,在遍历过程中,对于各类节点进行如下处理:
a)若当前访问节点是初态节点,则当前路径为一个完整SFG路径,保存该路径;
b)若当前节点标记为已访问,则采用Dijkstra算法找出从初态节点到该节点的最短路径,并用最短路径与已遍历路径进行拼接,生成一个完整的SFG路径,保存该路径;
c)若当前节点既不是初态节点,也未标记已访问,则标记该节点已访问,获取该节点的入边集,并对其中的每个边进行逆向深度遍历。
如图2所示,初始选择终态s7开始在图2中逆向搜索,并置当前搜索路径path为空,标记s7为已访问,获取其入边集合{e8},将其添加到path中,此时path从空集变为{e8},然后获取e8的起始状态s6,标记s6为已访问,获取其入边集合{e4,e7},初始选择并标记e4的起始状态s3,则path变为{e4,e8},如此反复逆向遍历经e2和e1至初始状态index,则path记录了第一个从初态至终态的完整路径{e1,e2,e3,e4,e8},将该完整路径保存下来。
类似地,若选择并标记e7的起始状态s5,则当前path为{e7,e8},如此反复逆向遍历经e6和e5至初始状态index,则path记录了第二个完整路径{e5,e6,e7,e8},将该路径保存下来。其次,选择终态s8,将s8的入边e9加入path中,path为{e9},然后检查其起始状态s6,由于s6为已访问节点,因此不再向前遍历,而是直接使用从初始状态到s6的最短路径{e5,e6,e7}将当前的子路径补充完整,生成第三个完整路径{e5,e6,e7,e9}。此时所有的终态都已进行遍历,搜索过程结束。上述3个完整路径覆盖了图2中所有的边,3个测试路径事件总数为13。
若采用传统的深度优先搜索策略搜索图2中,则生成4个完整路径,分别是{e1,e2,e3,e4,e8},{e5,e6,e7,e8},{e1,e2,e3,e4,e9},{e5,e6,e7,e9},且这些路径之间存在较多的重复子路径,4个测试路径事件总数为18。
由此实例可见,本发明可在保证对用户接口状态流图边覆盖基础上,减少了测试用例数量和测试事件总数,从而降低测试代价,提高测试效率。
4.生成Web应用测试用例集
对上述测试路径集中的每个完整路径,获取该路径上的事件序列,并将其保存为Selenium脚本格式,生成Web应用测试用例集。
表1给出了采用本发明和现有的深度优先搜索方法(DFS)在6个Web应用上生成测试用例集的实验结果。表中的测试用例数表示测试用例总数,事件总数表示所有测试用例所包含的事件数量总和。与现有的DFS相比,采用本发明生成的测试用例数目减少了12.2%,测试事件总数减少了14.4%。实验结果表明,本发明可有效地减少测试用例集的规模,降低Web应用的测试成本,提高Web应用测试效率。
表1本发明方法与DFS方法的测试用例集
Claims (1)
1.一种基于用户接口状态流图的Web应用测试用例生成方法,其特征在于:依次包括以下步骤:
(1) 生成SFG图 :
通过动态分析和模拟潜在的用户接口行为,采用动态搜索技术搜索Web应用状态空间,生成用户接口状态流图SFG,SFG图中的节点表示用户接口状态,SFG图中的边表示用户接口GUI上可触发的事件;
所述生成用户接口状态流图SFG的步骤为:
(11)载入Web应用的入口地址,生成SFG的初态节点;
(12)分析并抽取初态节点对象中的可点击事件集合,模拟未点击事件e1的触发,生成新状态s1,更新SFG图;
(13)采用深度优先策略动态搜索新状态并更新SFG图,直至当前状态节点已无可点击事件时进行回溯;所述回溯的过程为:采用栈结构记录当前搜索路径上的所有状态节点,将当前生成的状态节点与栈中已生成状态节点进行对比,如当前生成的状态节点已在栈中则结束当前状态节点的后续搜索,开始回溯;
(2) 获取终态节点集:
找出上述SFG图中无出边的状态节点作为SFG的终态节点集;
(3) 逆向遍历SFG图,生成SFG完整路径集:
从每个终态节点开始,逆向深度优先遍历SFG,直至初态节点,在遍历过程中,对于相应节点进行如下处理:
(3.1)若当前访问节点是初态节点,则当前路径为一个完整SFG路径,保存该路径;
(3.2)若当前状态节点标记为已访问,则采用Dijkstra算法找出从初态节点到该状态节点的最短路径,并用最短路径与已遍历路径进行拼接,生成一个完整的SFG路径,保存该路径;
(3.3)若当前状态节点既不是初态节点,也未标记已访问,则标记该状态节点已访问,获取该状态节点的入边集,并对其中的每个边进行逆向深度遍历;
(4) 生成Web应用测试用例集
对SFG完整路径集中的每个完整路径,获取该路径上的事件序列,并将其保存为Selenium脚本格式,生成Web应用测试用例集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235202.2A CN108459967B (zh) | 2018-03-21 | 2018-03-21 | 基于用户接口状态流图的Web应用测试用例生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235202.2A CN108459967B (zh) | 2018-03-21 | 2018-03-21 | 基于用户接口状态流图的Web应用测试用例生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108459967A CN108459967A (zh) | 2018-08-28 |
CN108459967B true CN108459967B (zh) | 2021-04-06 |
Family
ID=63236568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810235202.2A Active CN108459967B (zh) | 2018-03-21 | 2018-03-21 | 基于用户接口状态流图的Web应用测试用例生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108459967B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831533B (zh) * | 2019-04-15 | 2022-09-27 | 西安邮电大学 | 一种基于导航图的Web应用测试用例生成方法 |
CN112148579B (zh) * | 2019-06-26 | 2023-10-03 | 腾讯科技(深圳)有限公司 | 一种用户界面的测试方法和装置 |
CN111324718B (zh) * | 2020-02-26 | 2023-06-30 | 网易(杭州)网络有限公司 | 一种对话流测试方法、装置、电子设备及可读存储介质 |
CN111694741B (zh) * | 2020-06-05 | 2023-09-29 | 中国工程物理研究院计算机应用研究所 | 一种基于路径深度覆盖的测试用例设计方法 |
CN111897739B (zh) * | 2020-08-21 | 2022-04-05 | 四川长虹电器股份有限公司 | 一种基于优化后深度优先算法的测试用例生成方法 |
CN112416761B (zh) * | 2020-11-11 | 2023-07-07 | 北京京航计算通讯研究所 | 一种基于广度优先搜索的测试用例生成方法及装置 |
CN112506766B (zh) * | 2020-12-02 | 2023-06-20 | 华南理工大学 | 交互式测试用例的自动生成方法 |
CN112559343B (zh) * | 2020-12-11 | 2022-11-15 | 腾讯科技(深圳)有限公司 | 测试路径生成方法及相关设备 |
CN114721932B (zh) * | 2021-01-06 | 2024-04-09 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929775A (zh) * | 2012-10-23 | 2013-02-13 | 中标软件有限公司 | 一种Web应用系统测试方法 |
CN103198012A (zh) * | 2013-04-25 | 2013-07-10 | 李姮乐 | 一种基于扩展状态机图的测试用例自动产生方法 |
CN104899136A (zh) * | 2015-05-15 | 2015-09-09 | 百度在线网络技术(北京)有限公司 | 一种用于生成测试用例的方法和装置 |
CN107301129A (zh) * | 2017-06-28 | 2017-10-27 | 百度在线网络技术(北京)有限公司 | 用于生成测试用例的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9026853B2 (en) * | 2012-07-31 | 2015-05-05 | Hewlett-Packard Development Company, L.P. | Enhancing test scripts |
US9864674B2 (en) * | 2015-01-23 | 2018-01-09 | Accenture Global Services Limited | Test case generation system |
-
2018
- 2018-03-21 CN CN201810235202.2A patent/CN108459967B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929775A (zh) * | 2012-10-23 | 2013-02-13 | 中标软件有限公司 | 一种Web应用系统测试方法 |
CN103198012A (zh) * | 2013-04-25 | 2013-07-10 | 李姮乐 | 一种基于扩展状态机图的测试用例自动产生方法 |
CN104899136A (zh) * | 2015-05-15 | 2015-09-09 | 百度在线网络技术(北京)有限公司 | 一种用于生成测试用例的方法和装置 |
CN107301129A (zh) * | 2017-06-28 | 2017-10-27 | 百度在线网络技术(北京)有限公司 | 用于生成测试用例的方法和装置 |
Non-Patent Citations (2)
Title |
---|
Crawling AJAX by Inferring User Interface State Changes;Ali Mesbah等;《Proceedings of the 8th International Conference on Web Engineering (ICWE’08)》;20080718;全文 * |
Crawling Ajax-based Web Applications through Dynamic Analysis of User Interface State Changes;AliMesbah等;《 ACM Transactions on the Web》;20120331;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108459967A (zh) | 2018-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459967B (zh) | 基于用户接口状态流图的Web应用测试用例生成方法 | |
CN109189684B (zh) | 基于Python的接口自动化测试方法 | |
CN106021079B (zh) | 一种基于用户频繁访问序列模型的Web应用性能测试方法 | |
US7877681B2 (en) | Automatic context management for web applications with client side code execution | |
US20170192882A1 (en) | Method and system for automatically generating a plurality of test cases for an it enabled application | |
US9417991B2 (en) | Translation verification testing | |
CN104794048A (zh) | 一种ui自动化测试方法和系统 | |
US11436133B2 (en) | Comparable user interface object identifications | |
US10528456B2 (en) | Determining idle testing periods | |
CN115080398A (zh) | 一种接口自动化测试系统及方法 | |
Soetens et al. | An initial investigation into change-based reconstruction of floss-refactorings | |
CN104636401B (zh) | 一种scada系统数据回滚的方法及装置 | |
CN110597704B (zh) | 应用程序的压力测试方法、装置、服务器和介质 | |
CN107526679A (zh) | 自动化测试框架、基于其上的自动化测试方法、存储介质和计算机设备 | |
CN100428153C (zh) | 一种生成测试脚本的方法及装置 | |
CN108399125A (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
US10417113B1 (en) | System, method, and computer program for web testing and automation offline storage and analysis | |
CN110147313B (zh) | 一种日志输出方法及装置 | |
CN107038117A (zh) | 一种基于事件处理函数间定义‑引用的web自动化测试方法 | |
Krishna et al. | Test automation of web application Login Page by using selenium ide in a web browser | |
JP7380851B2 (ja) | テストスクリプト生成装置、テストスクリプト生成方法及びプログラム | |
BELL et al. | Model-based mutation testing using pushdown automata | |
CN114416533A (zh) | 基于人工智能的车载电子产品的用例生成方法和系统 | |
CN113591147A (zh) | 一种数据抽取的方法、装置、计算机设备及存储介质 | |
CN115705297A (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 |