一种基于语义路径搜索的Web应用测试修复方法
文献发布时间:2023-06-19 11:35:49
技术领域
本发明属于软件工程中软件分析与测试领域,尤其是Web应用测试领域,具体涉及一种基于语义路径搜索的Web应用测试修复方法。
背景技术
近年来,随着网络技术的普及和Web应用开发新技术的发展,Web应用的使用日益广泛,从最初简单的信息发布和信息共享,到电子商务、信息管理、搜索引擎、服务计算、多媒体等,Web应用已逐步渗透到人们的生产、生活的各个领域之中,发挥着越来越重要的作用。随着Web应用的快速发展,Web应用的质量问题也随之产生,对人们的生产生活产生重要影响。作为一种重要的软件质量保证手段,Web应用测试已成为一个重要的研究方向。
通过测试可发现Web应用中的错误,发现错误后需进行修改,修改后为验证修改的正确性,还需进行回归测试。事实上,Web应用版本的演化过程可视为一个不断发现错误、修改并进行回归测试的过程。在Web应用回归测试过程中,大部分测试脚本可从原有测试脚本集中选择,但由于Web应用的变化,特别是某些页面的结构和内容的变化,使得部分测试脚本不能直接运行,需要经过一定程度的修复才能使用,而目前脚本修复工作一般由人工分析完成,其成本高、自动化程度低。因此,迫切需要Web应用测试修复方法、技术和工具的支持,以提高Web应用软件的质量和生产率。
经验性研究表明,Web应用测试脚本失效的主要原因,包括图形化用户接口(Graphical User Interface, 简称GUI)元素定位失败、值异常、页面重载、用户会话异常、动态脚本弹框异常等,其中最主要的原因是元素定位失败,占总失效脚本数的74%。目前,Web 应用测试脚本修复研究主要集中在因GUI元素定位失败引起的脚本失效修复方面,其Web应用修复方法大多采用差异性测试策略,即基于应用新旧版本版本页面中GUI元素信息的比较,如比较GUI元素本身的属性信息,或者比较GUI元素在DOM树上的编辑距离,或者比较GUI元素的视觉图像,来定位目标GUI元素。Choudhary 等提出一种基于GUI元素属性对比的Web 应用失效修复方法以及相应的工具—WATER,该方法通过分析测试脚本在新旧版本执行过程中GUI元素属性的差异,可半自动化地提供修复脚本的建议。Stocco 等提出一种基于GUI元素图像对比的Web应用修复方法以及工具—VISTA,该方法一定程度上提高了修复率,但如果遇到元素样式改变较大或者页面布局有很大的修改,该方法几乎失效。
在Web应用在演化过程中,往往会发生增加新页面或删除过时页面的情形。由于现有方法仅考虑在当前页面中查找相似GUI元素,因此无法解决因页面增加或删除造成的脚本失效修复等问题。考虑到简单增加页面路径不能保证修复的有效性等,为此,需融合业务流程的语义信息引导路径搜索,改善修复效果,进而提高Web应用测试脚本的修复率。
发明内容
针对上述修复方法的不足,本发明提出了一种基于语义路径搜索的Web应用测试修复方法。与现有方法相比,本发明方法在测试脚本修复过程中,通过融合待测业务流程的语义信息引导路径搜索新页面,在新页面上查找、定位目标GUI元素。本发明方法可有效解决因页面增加或删除造成的GUI元素定位失效问题,显著提高Web应用测试脚本的修复率。
本发明的技术方案为:
一种基于语义路径搜索的Web应用测试修复方法,该方法包含以下步骤:
步骤(1)给定某Web应用测试脚本,在原版本上运行该测试脚本,依次分析、抽取每个脚本语句操作的GUI元素以及页面中描述待测业务流程的关键词序列信息;
步骤(2)在新版本上运行该测试脚本,对其操作的每一个GUI元素是否正确定位进行检查,若定位失败,则先采用基于元素相似度计算的方法在当前页面上查找、定位目标GUI元素;
步骤(3)若步骤(2)失败,则融合关键词序列语义信息,采用回溯试探法引导路径搜索新的相关页面,并在新版本上采用基于元素相似度计算的方法查找、定位目标GUI元素;
步骤(4)根据目标GUI元素以及语义路径信息,修复、生成并验证Web应用新版本的测试脚本。
进一步地,所述步骤(1)具体包括以下步骤:
2.1给定某Web应用测试脚本,在原版本应用上运行该测试脚本,对每个测试脚本语句操作的GUI元素的主要属性及其文本信息,主要属性具体包括tag、id、class、name、value、type、title、text 以及 XPath 路径;
2.2对测试脚本中每一个可点击事件,记录相应GUI元素的text、title、name、value、id和class属性值中文本作为关键词文本信息,并将这些信息按事件的执行顺序生成一个关键文本序列。
进一步地,所述步骤(2)具体包括以下步骤:
3.1 在新版本Web应用上运行原测试脚本,对出现GUI元素定位失败的脚本语句,计算原GUI元素与当前页面中各GU I元素的结构和语义综合相似度,并将相似度得分最高的当前页面GUI元素作为候选元素;
3.2 若当前页面中的候选GUI元素在结构和语义上的相似度大于给定的阈值,则将之返回,并作为目标GUI元素。
进一步地,所述步骤(3)具体包括以下步骤:
4.1 若在应用当前页面中未找到目标GUI元素时,则从关键词序列中取出当前页面对应的关键词,采用回溯试探法搜索与当前关键词语义相关的用户接口页面状态;
4.2在搜索过程中,选择待扩展页面状态中与当前关键词语义相似度最高的事件进行扩展,生成新页面,更新事件执行序列,计算原GUI元素与新页面中各GUI元素的结构和语义综合相似度,并据此查找相似度高于给定的阈值的GUI元素作为候选GUI元素;若找到候选GUI元素,则返回;
在搜索过程中,若当前待扩展页面中所有事件都已触发,则回溯至上一个页面,搜索其他路径;若所生成的新页面与当前关键词语义相关,则进行试探,当试探相似度大于某阈值时,试探成功,根据事件执行序列修复路径;否则,回溯至上一个页面,重新试探;
若当前事件与前一个关键词语义相关,且当前事件扩展后的新页面与该关键词也相关,则沿新页面继续搜索,即将新页面置为当前待扩展页面;若当前事件扩展后的新页面与前一个关键词不相关,则回溯至上一个页面,选择其他路径进行搜索;
4.3 若没有可以继续搜索的页面,则采用广度优先搜索策略继续进行页面状态搜索,当达到设定的最大搜索时间或者最大搜索深度仍然没有找到相似元素时,则认为路径已被删除,此时返回并继续对下一条语句进行修复。
进一步地,所述步骤(4)具体包括以下步骤:
5.1 对修复过程中找到的目标GUI元素和路径信息,获取路径上的事件序列,并将其转换为Selenium脚本语句格式,重新生成Web应用测试脚本;
5.2 对重新生成的Web应用测试脚本进行验证,若其能在Selenium自动化测试框架上成功运行,则表明修复成功。
本发明的有益效果为:本发明通过记录、分析点击事序列件的文本信息,生成描述业务流程的关键词序列,在此基础上融合业务流程语义信息引导路径搜索新页面,在新页面上定位目标GUI元素,由此可有效解决因页面增加或删除造成的GUI元素定位失效问题,改善修复效果,提高Web应用测试脚本的修复率。
附图说明
图1为本发明方法的实施流程图。
图2为PPMA v5.12和v5.13的"新增账户"业务流程的测试脚本。
具体实施方式
本发明通过抽取GUI元素以及点击事件的文本序列,生成描述业务流程的关键词序列,然后融合业务流程语义信息引导路径搜索新页面,在新页面上定位目标GUI元素,由此有效解决因页面增加或删除造成的GUI元素定位失效问题,改善修复效果,提高Web应用测试脚本的修复率。
本发明主要包括嵌入浏览器模块、信息抽取模块、GUI元素定位模块、脚本修复验证模块和语义路径搜索模块等。嵌入浏览器模块用于模拟用户与浏览器进行交互,信息抽取模块用于抽取GUI元素和待测业务流程的关键词序列等信息,GUI元素定位模块用于定位目标GUI元素,脚本修复验证模块用于修复脚本并验证其有效性,语义路径搜索模块用于搜索与待测业务流程相关的新页面。信息抽取模块通过在原版本V上执行测试用例脚本,利用面向切面编程技术拦截抽取相关结构和语义信息,输出记录了GUI元素信息和待测业务关键词序列信息的XML文件。元素定位模块通过计算GUI元素的结构和语义综合相似度在新版本V'中的页面中查找相似GUI元素,若找到相似GUI元素,则输出目标GUI元素用于修复失效脚本。脚本修复验证模块用目标GUI元素替换原GUI元素,用语义搜索得到的路径信息补充相关测试脚本语句,修复失效脚本,并在新版本V'上单步执行测试脚本,验证测试修复脚本的有效性。语义路径搜索模块融合待测业务关键词序列信息,采用回溯试探法引导路径搜索新的相关页面。
Password Manager(PPMA)是一个典型Web应用,主要功能为密码管理系统,包括新增账户、删除账户、修改账户密码等功能。下面"新增账户"业务流程为例说明本发明方法。图2(a)和(b)分别为PPMA v5.12和PPMA v5.13版本中"新增账户"业务流程的测试脚本。在原版本PPMA v5.12版本中,测试人员验证登录后,进入主功能界面输入相关信息,点击提交按钮,即完成"新增账户"功能。而在新版本PPMA v5.13版本中,主功能界面布局发生了很大变化,点击页面上方“添加条目”菜单按钮后,进入新增加的信息填写页面,在该页面中输入相关信息,再点击添加按钮,才完成"新增账户"功能。采用原测试脚本在新版本上运行失败。采用本发明方法对脚本修复的具体过程如下:
1. 抽取GUI元素信息以及点击事件的文本信息
将原测试脚本在PPMA v5.12版本上运行,记录每个脚本语句操作的GUI元素信息,包括元素的属性及其文本信息,属性包括 tag、id、class、name、value、type、title、text以及 XPath 路径。
对每个脚本语句中的可点击事件,记录其中GUI元素的text、title、name、value、id和class属性值中文本作为关键词文本信息,经过滤后的关键词序列为
2. 在当前页面查找、定位候选目标GUI元素
(1)在新版本应用上运行原测试脚本,运行脚本语句5时,由于增加了新页面,无法在当前页面上定位到id为newiteminput的GUI元素,测试运行中止。
(2)利用在v5.12版本上运行收集的id为newiteminput的GUI元素的信息,计算原GUI元素与当前主功能界面中各GUI元素的综合相似度,由于相似度值较低,未找到候选GUI元素。
3. 采用回溯试探法引导路径搜索新页面,在新页面上定位目标GUI元素
从关键词序列中取出当前测试脚本语句对应的关键词{add, new, account}作为当前关键词,并将当前页面设为待扩展页面状态,获取当前页面中所有可点击事件的DOM元素,抽取每个DOM元素中文本信息,并进行分词、过滤处理,然后分别计算这些文本与当前关键词{add, new, account}的语义相似度,并进行排序,选择语义相似度最高的可点击事件“添加条目”,模拟点击该事件,进入新增的信息填写页面。此时,计算原GUI元素与当前页面中各GUI元素的综合相似度,查找到id为newiteminput的GUI元素。
4. 修复失效脚本,并验证
根据步骤5中搜索的路径信息,获取该路径上的事件序列,并将其保存为Selenium脚本格式,修复语句5,并重新运行,运行成功。
5.依次检查脚本剩余语句,运行正常。
实验结果表明,与现有修复方法WATER和VISTA相比,采用本发明方法可显著改善Web语义测试有效性,提高修复率。
上述实施例仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和等同替换,这些对本发明权利要求进行改进和等同替换后的技术方案,均落入本发明的保护范围。
- 一种基于语义路径搜索的Web应用测试修复方法
- 一种基于深度语义路径搜索的短文本聚类方法