开源自动化测试平台LuckyFrame
作者:cai.ruiying [ZSK]
一、LuckyFrame简介
LuckyFrame自动化测试平台是一款采用 AGPL 3.0开源协议的测试平台,目前已做到全纬度覆盖了接口自动化、WEB UI自动化、APP自动化,并且可以支持分布式测试。LuckyFrame采用测试关键字驱动方式,可以简单高效的实现测试自动化,这在很大程度上解决了测试同学代码基础薄弱的问题。
同时也集成了质量管理相关的一些功能,适用于QA的日常项目过程数据的收集,并且可以展示一些基础的质量报表。
最新发布版本,实现客户端服务端之间使用 netty 进行通信,突破了内外网的限制,将全面支持服务端部署在云端,客户端部署在本地,并且本地启动客户端后,将会在服务端自动注册,只需要配置客户端项目,即可使用,方便快捷。
1. LuckyFrame使用流程
二、Web UI自动化
1. Web页面元素定位
(1) 定位工具
直接使用浏览器中的查看元素功能(F12),Firefox也可使用定位工具(对版本有要求)。Chrome、Firefox、Edge、高版本IE等主流浏览器均支持元素搜索功能,低版本IE不支持元素搜索。 我们自动化测试,主要通过获取Web页面元素,并对元素对象进行操作来实现。因此,编写自动化脚本需要一定的HTML/CSS前端知识,帮助实现定位Web页面元素。
(2) 定位示例
说明:LuckyFrame支持六种定位语法,包括:id/name/xpath/linktext/tagname/cssselector。
示例1-id定位:
id定位表达式(包路径|定位路径):id=username
id定位表达式(包路径|定位路径):id=username
示例2-name定位:
name定位表达式(包路径|定位路径):name=username
name定位表达式(包路径|定位路径):name=username
示例3-xpath定位:
说明:xpath定位功能非常强大,几乎可以找到页面上的所有元素。
语法://tag[@attribute='value'] 或 //tag[text()='value’] 或 //tag[contains(@attribute,’value’)]
(1) “//”表示相对路径。下级任何子节点或者任何嵌套子节点中的一个,中间可以跳级;
(2) “@”表示选区标签的属性;
(3) “text()”表示可见文本值,文本的内容要完全匹配,包括空格等特殊符号;
(4) 定位“class”标签属性时,表达式中属性值的内容要与页面“class”属性值内容完全匹配,包括空格等特殊符号。
①
xpath定位表达式(包路径|定位路径):xpath=//input[@id='username']
xpath定位表达式(包路径|定位路径):xpath=//input[@id='username']
②
xpath定位表达式(包路径|定位路径):xpath=//a[text()='注册'] 或 xpath=//a[contains(text(),'注册')]
xpath定位表达式(包路径|定位路径):xpath=//a[text()='注册'] 或 xpath=//a[contains(text(),'注册')]
2. Web UI自动化用例语法
LuckyFrame是时下主流的一款开源自动化测试平台,能够实现Web UI、移动端、接口等多类型自动化测试。但其官方使用手册内容有限,在此根据使用经验,总结出关于Web UI用例编写的常用语法详解。(1)说明:本语法使用范围:【测试管理】→【用例管理】→【用例步骤】,用于编写用例步骤,制定的语法规范。编写用例步骤界面如下图。
用例步骤编写要素:包|定位路径、方法|操作、参数、步骤动作、预期结果、类型、扩展字段、操作。
“操作”可对步骤进行以下操作,如下图:
(2)关键字语法结构
关键字就是LuckyFrame平台中编写自动化测试用例时的页面使用说明,以Web UI自动化测试用例为例,关键字包括:步骤、包|定位路径、方法|操作、参数、步骤动作、预期结果、类型、扩展字段、操作。
下表对每个关键字用法做说明。
(3) 常用Web UI定位
Web UI自动化测试,是通过对Web页面元素的抓取,再对元素进行操作的方法,实现对Web UI人工测试的模拟的,因此,围绕“方法|操作”总结部分常用的方法使用语法。对于以上9个关键字,在编写Web UI自动化测试用例时,需要使用到的包括2-6,其中5、6两项,不是必填项,等待时间、预期结果断言 可根据步骤需要灵活添加。此外,“类型”固定选择“Web UI”即可,操作中的”备注“可用于对操作步骤进行备注,以便用例调试。下面对2-4:包|定位路径、方法|操作、参数,这三项进行常用的语法说明,以供大家在编写用例时,遇到不确定的方法,可以进行查阅。
1 打开URL:
包|定位路径 | 方法|操作 | 参数 |
/ | open | 要打开的URL |
包|定位路径 | 方法|操作 | 参数 |
Web元素定位 | sendkeys | 要输入的值 |
包|定位路径 | 方法|操作 | 参数 |
Web元素定位 | clear | / |
包|定位路径 | 方法|操作 | 参数 |
Web元素定位 | click | / |
包|定位路径 | 方法|操作 | 参数 |
Web元素定位 | gettext | / |
包|定位路径 | 方法|操作 | 参数 |
/ | closewindow | / |
包|定位路径 | 方法|操作 | 参数 | 说明 |
iframe标签所在元素定位 | gotoframe | / | 跳转到iframe |
/ | gotodefaultcontent | / | 跳转回默认iframe |
/ | gotoparentframe | / | 跳转到上一级iframe |
包|定位路径 | 方法|操作 | 参数 | 说明 |
/ | alertaccept | / | 确定 |
/ | alertdismiss | / | 取消 |
/ | alertgettext | / | 获取文本值 |
包|定位路径 | 方法|操作 | 参数 | 说明 |
下拉框元素定位 | selectbyvisibletext | 选项文本值 | 根据可见文本选择 |
下拉框元素定位 | selectbyvalue | 选项value标签属性值 | 根据value属性选择 |
下拉框元素定位 | selectbyindex | 选项index值 | 根据index值选择,初始值为0 |
下拉框元素定位 | isselect | / | 判断是否被选中 |
包|定位路径 | 方法|操作 | 参数 | 说明 |
/ | getwindowhandle | 要获取的窗口序号 | 初始值为1 |
/ | gotowindow | 要跳转的窗口序号/句柄值 |
包|定位路径 | 方法|操作 | 参数 |
Web元素定位 | mouseto | / |
包|定位路径 | 方法|操作 | 参数 |
Web元素定位 | scrollto | / |
包|定位路径 | 方法|操作 | 参数 |
Web元素定位 | pagerefresh | / |
包|定位路径 | 方法|操作 | 参数 |
/ | runcase | 用例编号 |
LuckyFrame为我们封装的方法很多,具体方法的使用,我们可以通过开源源码,进行查看。
Web UI的方法在客户端代码中,代码路径为:luckyclient.execution.webdriver,在EncapsulateOperation.class这个类文件中,我们可以查看到封装方法的使用规则。
三、HTTP接口自动化
说明:
关键字语法构建:
至此,一个完整的HTTP接口自动化测试用例便完成了,结果直观。
1. HTTP接口自动化用例语法
说明:
(1)HTTP接口自动化测试,每个步骤都必须要关联协议模板,去构造消息头以及消息体;
(2)在步骤动作栏中,点击输入框会自动联想当前项目下所有的协议模板,选择对应的模板即可;
(3)请求的参数都必须在模板里面先构造,不能直接在用例步骤的参数列里面去构造,步骤的参数列只能去替换模板里面的默认参数值。也就是说必须得在模板里面有的参数,步骤参数才能生效去替换默认值。
关键字语法构建:
(1)包|定位路径:请求URL;
(2)方法|操作:请求方法;
(3)参数:参数栏可以修改模板中的默认值,如果参数为空,则默认使用模板中定义好的默认参数,参数栏填写示例:参数名#参数值|参数名#参数值|参数名#参数值|……|;
(4)步骤动作:1#Wait表示当前步骤暂停1秒;
(5)预期结果:① 精确匹配,将用例里面【方法|操作】执行的结果,与【预期结果】字段里面的字符串进行精确匹配,直接在预期结果里面填写需要匹配的字符串即可;② 模糊匹配,将用例里面【方法|操作】执行的结果,与【预期结果】字段里面的字符串进行模糊匹配,模糊匹配: %=value;(6)类型:HTTP接口;(7)扩展字段:关联协议模板。
用例编写步骤:
Step1:配置协议模板
(1)新增协议模板:选择菜单 测试管理->协议模板->【添加】;
(2)输入协议模板信息:项目名称、模板名称、编码格式等信息,注意:消息头域、证书路径可根据需要填写;
(3)配置模板参数:在协议模板列表中勾选刚才新增的协议模板,点击【模板参数】进入编辑界面,输入请求报文,点击【保存】即可。
Step2:编写测试用例
(1)新增用例:选择菜单 测试管理->用例管理->【添加】;
(2)输入用例信息:项目名称、用例名称、用例类型、备注等信息;
(3)编写用例步骤 及 用例调试:在用例列表中勾选刚才新增的用例,点击【用例步骤】进入用例编辑界面,编辑完成后,点击【调试】,选择配置好的有效客户端,即可进行单次用例调试;
(4)调试结果查看:调试完成后,可在调试界面查看到执行日志及执行结果。
Step3:测试任务执行及结果查看
(1)新增测试计划:选择菜单 测试管理->测试计划->【添加】;
(2)添加计划用例:在计划列表中勾选刚才新增的计划,点击【计划用例】进入计划用例界面,勾选要执行的用例,再【保存】即可完成计划用例添加;
(3)新增测试任务:选择菜单 测试执行->任务调度->【添加】,并完成以下信息填写,包括 调度名从、项目名称、测试计划、客户端、任务类型、Cron执行表达式等;
(4)执行测试任务:在任务列表中,选择刚才新增的测试任务,点击相应的【执行】,即可执行该任务;
(5)测试结果查看:选择菜单 测试执行->任务执行,在列表中可查看刚才执行的任务结果,或者 选择菜单 测试执行->用例明细,在列表中点击刚才执行任务左侧的“➕”按钮展开查看向西直行步骤及结果。
以上就是对LuckyFrame入门使用的简介,希望能够帮助大家快速入门LuckyFrame自动化测试。