Web自动化系列--一个基于关键字驱动的自动化测试Library
来源:互联网 发布:登录到mysql服务器端 编辑:程序博客网 时间:2024/06/08 02:36
首先说明下,这里采用的关键字驱动框架是RobotFramework,Web自动化测试框架是Selenium2。该Library是对自动化测试的一个初步探索,并不完善,欢迎大家一起讨论。
这个自动化Library的初衷是:
- 简化用例编写,脱离Eclipse环境(不使用TestNG)
- 提高用例的可维护性
- 提高用例的可读性
- 提供较高的可扩展性
针对上述目的采用的实现方法是:
- 使用类似表格填充的方式编写用例,带关键字自动提示功能(RobotFramework IDE)
- 对自动化用例根据进行分层,每层提供对外统一关键字(采用POM思想分层)
- 元素管理和测试业务逻辑分离
- 除基础关键字外,其他所有层级的关键字采用中文统一规范命令,用例呈现形式接近自然语言
- 提供分布式部署
那么,在上述的实现方法之下,用例的可读性、可维护性和可扩展性有哪些提高呢?
可读性
上层关键字规范的中文命名方式使用例的呈现方式接近于自然语言,可读性大大增强,一个具体的用例写出来的形式如下图所示:
可维护性
- 可读性增强的情况下,可维护性也会随之得到提升
- 在用例运行报错的情况下,关键字驱动和中文命名的优势就体现出来了,可以通过定位出问题的关键字找到出错位置
- 采用分层设计,用例组织逻辑清晰,管理起来更加方便,如下图所示
可扩展性
这里只提一下RobotFramework提供的关键字驱动的可扩展性还是十分优秀的,把需要的功能或者操作封装成关键字即可;除此之外,Selenium2自身的扩展性是完整保留的,Grid也是支持的
RFUI对Selenium2的二次封装
RobotFramework提供上层的关键字驱动支持,底层的关于 元素/页面/窗口 各种操作的基础关键字,例如,click/input_text/maximize_browser_window,还是由Selenium2提供支持,所以需要将Selenium2封装成RobotFramework支持的TestLibrary。
通过下图可以看出对Selenium2做了哪些封装,例如,支持文本定位点击(Web Click TextButton)、支持Windows下Flash上传控件(Web Upload File)、相同元素根据序号定位操作(Web Click Element)、支持Hover and Click(Web Hover And Click)、获取匹配指定Locator的元素个数(Web Get Elements Num)、文本框输入完成后按下Enter键(Web Input Text)。当然包括这些特有的操作,所有的操作中都添加了加载保护(Wait Until Element Is Enabled/Visible),等元素到了可操作状态才进行下一步操作,所以可以省去用例中的Sleep。图片太小可以右键->“新标签页打开”。
有了封装好的WebLibrary和RobotFramework,那么我们的框架结构是这样的:
具体到实现原理的框架结构其实是这个样子的(需要结合前两篇博客来看):
总体来讲,框架功能的完善性很多可以加强的地方,不过先前提出的几个问题基本上得到了解决。这种基于关键字驱动的自动化用例编写方式是否可行,通过在实际项目中的使用之后得出的结论是肯定的,不过还有许多有待完善的地方,比如RobotFramework IDE还不够成熟,WebLibrary提供的基础关键字不够全面不够智能等等,这些会在后续的对自动化测试的学习中逐渐完善。
- Web自动化系列--一个基于关键字驱动的自动化测试Library
- 基于Android平台应用程序的关键字驱动自动化测试
- 基于数据驱动的web UI自动化测试
- appium 关键字驱动自动化测试
- 基于模型驱动的自动化测试设计
- 基于RF的web自动化测试
- 软件测试中基于关键字的自动化测试
- 自动化测试关键字驱动的原理及实现
- 关键字+数据驱动自动化测试框架
- 软件测试中基于Web的自动化测试方法
- 基于数据驱动的接口自动化测试解决方案
- web自动化测试第1步:配置基于python语言的自动化测试环境
- 如何建立一个基于事件驱动的全自动化交易系统
- 基于 SSL 的 ASP.NET Web 应用程序测试自动化
- 基于selenium与VSTS的Web自动化测试(初级)
- 使用 Selenium 实现基于 Web 的自动化测试
- 基于Sahi和Twist搭建的Web自动化测试框架
- 使用 Selenium 实现基于 Web 的自动化测试
- 让DIV水平和垂直居中
- Guava库学习:学习使用Preconditions工具类进行代码的校验
- JAVA中String类深度探究
- 无人机为什么偏爱多旋翼?这里有最全的解释
- MongoDB数据分析之MapReduce
- Web自动化系列--一个基于关键字驱动的自动化测试Library
- .htaccess详解
- 爱Linux、爱开源的微软正式发布了.NET Core 1.0
- iOS 圆角跟随屏幕尺寸变化,字体跟随屏幕尺寸变化
- ReactJS学习系列课程
- Markdown 简介
- RecyclerView总结学习(二)
- 简单触发的创建和调用
- Xml和json接口