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

基于关键字驱动自动化测试平台的用例录制方法

文献发布时间:2024-04-18 20:01:30


基于关键字驱动自动化测试平台的用例录制方法

技术领域

本发明属于软件测试技术领域,具体涉及XPath、CSS选择器、JavaScript、Chrome扩展程序开发。基于关键字驱动自动化测试平台的用例录制方法。

背景技术

Selenium是目前最流行的web应用自动化测试框架。各公司对其应用场景、应用方式不尽相同,无论是基于编码还是关键字驱动的模式,测试用例的编写始终是web自动化测试的痛点和难点,用例编写耗时甚巨,往往因其编写、维护效率远低于手工测试而饱受诟病。 基于selenium关键字驱动测试框架的用例核心包括元素定位和用例编写两部分。对于基于编码模式的自动化测试,selenium提供了IDE插件,可以准确地录制出代码脚本;但是对于更为流行、高效的关键字、数据驱动模式,这类插件并无法满足用户的需求。

自动化测试中,elements定位是最重要的一环,定位的方法有多种,较为常见的有XPath和CSS选择器。XPath即为XML路径语言(XML Path Language),基于XML的树状结构,提供在数据结构树中寻找节点,并对元素和属性进行遍历的能力;CSS选择器可以对HTML页面中的元素实现一对一,一对多或者多对一的控制。两种定位在自动化测试中起着重要作用。通常定位元素都是由测试人员进行手工编制,由于测试人员的经验、技术能力存在较大差异,加之测试需求的多样性及多变性,web自动化测试脚本也要随之发生变化,因此手工编写的元素定位表达式存在不稳定、难维护、健壮性差等缺点。

发明内容

为解决上述问题,本发明提供了一种基于Chrome扩展开发的数据关键字驱动框架的录制装置,使得用户可以无需进行手工编写元素定位表达式和关键字,仅通过对用户行为的记录自动生成适用于关键字驱动测试框架的用例,本发明结合关键字驱动自动化测试平台组成一套完整的自动化测试工具。

本发明采用的技术方案是:关键字驱动自动化测试用例录制装置,所述装置的实现原理如下:

步骤1、Chrome扩展插件是自定义的小型软件程序。它允许用户以多种方式定制Chrome的功能和行为,扩展是基于HTML、JavaScript和CSS等Web技术构建的,在单独的沙盒执行环境中运行,它能够与网页脚本共享DOM文档,通过chrome.* API调用浏览器提供的功能和服务,由此来对网页进行定制化的处理。基于浏览器扩展的这些特性可以将事件监听、元素定位等脚本注入到被测系统页面中实现自动化录制功能。

步骤2、当用户安装插件并打开自动化测试平台的Web用例编辑页面后(以开源自动化测试平台LuckyFrame为例,进入平台后进入UI测试用例步骤新增页面),由插件将定制的JavaScript脚本注入到页面中,脚本控制的页面DOM元素在页面的指定位置生成一个录制按钮。

步骤3、当用户点击录制按钮后,通过浏览器提供的chrome.runtime.sendMessage服务,将启动录制指令发送至插件的后台控制页面(background.js),background.js在接收到指令后记录指令发送窗口 的tabId(该Id由浏览器自动生成,每个标签页的Id不相同),同时打开一个新的浏览器窗口,填入被测系统入口地址,并记录新开窗口的windowId(该Id同样由浏览器自动生成,每个窗口的Id不相同)。

步骤4、开启窗口后页面中注入的JavaScript代码通过后台记录的windowId进行判断当前页面是否属于被测窗口的页面,如果是则通过JavaScript在页面上生成暂停录制、停止录制等功能按钮。

步骤5、用户对被测系统进行操作,通过装置中封装好的关键字监听代码,将用户的操作转化为关键字驱动模式的测试用例。用例中重点包括了元素定位、操作数据及关键字,这些监听及生成用例的代码通过content_scripts方式进行注入,其中元素定位通过XPath进行定位,通过用户自定义的XPath生成规则生成操作元素的XPath路径,通过JavaScript提供的evaluate方法对生成结果进行验证,如果唯一则XPath路径正确;此处用户可添加多种Xpath生成方法,并对生成的路径进行优先级的指定从中获取最优写法,具体实施方案参照本公司专利《一种Xpath自动生成的方法》。关键字的封装需要匹配于所依赖的自动化测试平台,以LuckyFrame为例,用户可在注入脚本中添加click、dalclick、mousedown、mouseup等监听,监听用户的操作链,当操作链与LuckyFrame平台中关键字相匹配时即可确定用户操作从而生成对应用例中的操作关键字。操作数据可以使用元素的text、value等属性获取。通过上述方法获取到元素操作的XPath定位、对应的关键字以及操作数据后,一条完整的测试步骤就可以生成了。

步骤6、当一个关键字操作完成后,注入代码将其生成的用例数据发送到装置后台,装置后台通过发送指令的windowId判断当前操作是否为被测系统的操作,如果是则将用例发送到已记录tabId的页面中,否则丢弃已经录制好的用例。

步骤7、页面中inject.js在收到数据后将其整理为自动化测试平台步骤展示在页面中,用户若要对录制结果进行调整即可在自动化测试平台编辑页面中对数据进行修改,以LuckyFrame平台为例,用户可以在装置中设计自动填写的JavaScript方法,该方法主要是通过修改测试平台编辑页面DOM元素的属性,将录制到的步骤填写在页面中,若录制数据不符合用户的需求,用户还可以手动在该编辑页面中对录制的数据进行修改。

步骤8、用户若要暂停录制,即不对被测平台中后续的操作经行记录,则点击录制窗口的暂停录制按钮,注入的JavaScript会将指令发送到装置后台将录制状态设置为暂停,此后录制到的所有用例都不会被返回到自动化测试平台编辑页面中。

步骤9、用户录制完成后在被测系统中点击停止录制按钮,指令会发送到装置后台,监听到停止录制指令后,关闭记录的windowId的窗口并清空记录的windowId,等待下次录制。录制结束后用户点击自动化测试平台编辑页面中的保存按钮即可对录制好的用例进行保存。

本发明的有益效果为:可以直接记录用户操作而完全无需编写自动化测试用例,用户只需要根据需求去对录制好的用例进行必要的调整即可执行测试。用户无需掌握XPath等元素定位的相关知识,不仅降低了学习成本,而且还提升了用例编写效率。降低了UI自动化测试的门槛。以实际使用效果来看用户通过手动方式编写一个XPath的时间至少在20秒钟以上,但是通过该装置,用户仅需要鼠标点击即可获取到点击元素的XPath,整个处理时间不会超过2秒,极大地节省了编写时间。

该发明区别于其他录制插件,对测试的兼容性有着良好的保证,本装置完全基于用户操作系统所安装的浏览器,即用户实际使用的浏览器,不使用单独内核进行录制,避免了浏览器版本不同等导致的兼容性问题。以国产自动化测试平台奇林测试平台(kylinTOP)为例,其录制端使用的浏览器是chromeuim定制版本,与用户实际操作的浏览器存在差异,因此可能会存在一定兼容性差异,而该装置完全基于用户使用的浏览器,避免了上述的兼容性问题。

该发明是基于关键字驱动的自动化测试录制装置,录制出的用例是关键字+数据的模式,而非代码形式的测试用例,配合关键字驱动的测试框架达到编写速度快、复用性高的目的。

附图说明

图1为装置录制原理流程图。

具体实施方式

基于关键字驱动自动化测试平台的用例录制方法,其特征在于包括如下步骤:

步骤1、Chrome扩展插件是自定义的小型软件程序,允许用户以多种方式定制Chrome的功能和行为,扩展是基于HTML、JavaScript和CSS等Web技术构建的,在单独的沙盒执行环境中运行,它能够与网页脚本共享DOM文档,通过chrome.* API调用浏览器提供的功能和服务,由此来对网页进行定制化的处理,基于浏览器扩展特性将事件监听、元素定位等脚本注入到被测系统页面中实现自动化录制功能;

步骤2、当用户安装插件并打开自动化测试平台的Web用例编辑页面后,由插件将定制的JavaScript脚本注入到页面中,脚本控制的页面DOM元素在页面的指定位置生成一个录制按钮;

步骤3、当用户点击录制按钮后,通过浏览器提供的chrome.runtime.sendMessage服务,将启动录制指令发送至插件的后台控制页面background.js,background.js在接收到指令后记录指令发送窗口 的tabId,该Id由浏览器自动生成,每个标签页的Id不相同,同时打开一个新的浏览器窗口,填入被测系统入口地址,并记录新开窗口的windowId;

步骤4、开启窗口后页面中注入的JavaScript代码通过后台记录的windowId进行判断当前页面是否属于被测窗口的页面,如果是则通过JavaScript在页面上生成暂停录制、停止录制等功能按钮;

步骤5、用户对被测系统进行操作,通过装置中封装好的关键字监听代码,将用户的操作转化为关键字驱动模式的测试用例,用例中重点包括了元素定位、操作数据及关键字,这些监听及生成用例的代码通过content_scripts方式进行注入,其中元素定位通过XPath进行定位,通过用户自定义的XPath生成规则生成操作元素的XPath路径,通过JavaScript提供的evaluate方法对生成结果进行验证,如果唯一则XPath路径正确;此处用户可添加多种Xpath生成方法,并对生成的路径进行优先级的指定从中获取最优写法,关键字的封装需要匹配于所依赖的自动化测试平台,以LuckyFrame为例,用户可在注入脚本中添加click、dalclick、mousedown、mouseup等监听,监听用户的操作链,当操作链与LuckyFrame平台中关键字相匹配时即可确定用户操作从而生成对应用例中的操作关键字。操作数据可以使用元素的text、value等属性获取。通过上述方法获取到元素操作的XPath定位、对应的关键字以及操作数据后,一条完整的测试步骤就完成生成;

步骤6、当一个关键字操作完成后,注入代码将其生成的用例数据发送到装置后台,装置后台通过发送指令的windowId判断当前操作是否为被测系统的操作,如果是则将用例发送到已记录tabId的页面中,否则丢弃已经录制好的用例;

步骤7、页面中inject.js在收到数据后将其整理为自动化测试平台步骤展示在页面中,用户若要对录制结果进行调整即可在自动化测试平台编辑页面中对数据进行修改,以LuckyFrame平台为例,用户在装置中设计自动填写的JavaScript方法,该方法主要是通过修改测试平台编辑页面DOM元素的属性,将录制到的步骤填写在页面中,若录制数据不符合用户的需求,用户还可以手动在该编辑页面中对录制的数据进行修改;

步骤8、用户若要暂停录制,即不对被测平台中后续的操作经行记录,则点击录制窗口的暂停录制按钮,注入的JavaScript会将指令发送到装置后台将录制状态设置为暂停,此后录制到的所有用例都不会被返回到自动化测试平台编辑页面中;

步骤9、用户录制完成后在被测系统中点击停止录制按钮,指令会发送到装置后台,监听到停止录制指令后,关闭记录的windowId的窗口并清空记录的windowId,等待下次录制,录制结束后用户点击自动化测试平台编辑页面中的保存按钮即可对录制好的用例进行保存。

下面结合附图1详细说明本发明的实施方式,包括以下内容:

inject.js是通过文件注入方式被注入到自动化测试平台的编辑页面中,由于页面中的JavaScript与content.js中的JavaScript运行在两个相互独立的环境中,但是共享DOM文档,inject.js被注入后可以修改页面中的布局及元素,通过appendChild 方法添加按钮后对其绑定单击事件,用户点击后通过postMessage方法与content.js之间建立通信;content.js监听inject.js发送的开始录制指令,接收到指令后将指令转发到装置后台;content.js可直接访问DOM树,可在此监听用户操作,生成关键字、元素信息等数据。

1、通过监听事件,记录操作元素,并对元素内容进行解析,记录元素的所有属性,元素解析完成后通过元素的各项信息用户可自定义生成XPath、CSS选择器的定位表达式,表达式生成后通过JavaScript中的查找元素方法对表达式定位结果的唯一性进行验证,若符合需求则记录生成的定位表达式;

2、在记录元素信息的同时记录用户操作链,与自动化测试平台中所封装的关键字进行匹配,将监听到的click、dblClick、focus、blur、input等一系列的事件转化为自动化测试平台对应的关键字;

3、将获取到的元素属性、定位表达式、关键字转化为自动化测试平台的测试用例步骤并将测试步骤发送到装置后台。

为装置后台,负责不同窗口之间的通信转发以及一些全局变量值的存储;在接收到开始录制的指令后装置后台首先记录发送信息的tabId,然后控制浏览器打开新窗口并打开被测系统地址,开启成功后记录新开启的windowId,同时更新录制状态(status)为录制中。

background.js监听到S4发送的用例信息后首先使用windowId对发送方经行验证,并且对录制状态(status)进行判断,若为被测系统窗口所发送的数据且状态为录制中则将信息转发到S5中记录的tabId的页签,即自动化测试平台的录制页面。

content.js在接收到用例数据后同样使用postMessage方法将用例信息转发,inject.js在监听到转发的数据后调用页面中的步骤新增方法,将数据添加到自动化测试平台的录制页面中。

当点击被测页面的暂停录制和停止录制时,content.js将指令转发到装置后台,修改录制状态(status)。停止录制时background.js控制关闭已记录的windowId的窗口并清除记录,录制结束。

相关技术
  • 数据库集中监控方法、计算机装置及存储介质
  • 数据库的日志分析处理方法及装置、DDL同步方法及装置
  • 图床数据库系统、图床数据库运行方法及装置
  • 通过模拟数据库连接驱动包扫描数据库类型的方法及装置
  • 视频监控方法、装置及视频监控设备
  • 监控数据库的方法、数据库监控装置及系统
  • 监控数据库的系统、方法及数据库监控装置
技术分类

06120116565966