Selenium能做什么?
Selenium是基于HTML代码的前端网页自动化工具。能自动点击、等待、输入、获取网页元素信息、生成测试报告等功能。如果网站基于Rest协议,则无法获得网页源码。或者网页是纯JavaScript或者Flash动画,则无法定位元素,这些情况都不能使用Selenium进行自动化。
什么时候使用Selenium?
以下10点满足3点即可使用selenium。
- SRS明确且稳定,不会频繁变动。
- 自动化使用频繁,比如自动化每日构建daily测试。
- 回归测试工作量巨大。
- 软件界面稳定,变动少。
- 多平台同步测试。
- 软件维护周期长。
- 项目进度压力小,不赶着上线。
- 网站开发得较为规范。
- 测试平台太多。
- 测试人员编程能力较强。
Selenium
Selenium 1.0
Selenium 1.0 = Selenium IDE +Selenium Grid + Selenium RC
- Selenium IDE:
是火狐浏览器的一个插件(从商店搜索下载),可以录制你在浏览器上的操作,自动转化成各种语言的脚本(C、Java、Python、Ruby等)。在写自动化前通常使用此工具录制,转化出来的原始脚本作为开发基线,所以这个工具非常实用,大大提高生产效率。
2.Selenium Grid:
一款自动化辅助工具,能方便的实现多台机器和异构环境下运行脚本。为并发提供方便。
3.Selenium RC:
selenium RC = Client Library+ Selenium Server
selenium server = launcher + http Proxy + Core
RC,即remote control,负责控制浏览器。内部有一个Javascript的核心、http组件,以及浏览器函数库。本质上说,Selenium 1.0 是通过Javascript来控制浏览器,实现自动化的。这样会带来很大问题。浏览器种类很多,每种浏览器版本也很多。光靠一个版本的Selenium RC不可能兼容这么多版本的浏览器。实际使用中出现各种兼容性问题。
Selenium 2.0
Selenium 2.0 = Selenium 1.0 + Webdriver
为了彻底解决版本兼容问题,从2.0开始采用Webdriver方式,即一个版本的浏览器对应一个驱动,selenium通过调用驱动完美地操作浏览器。为了向下兼容,依然保留RC。
Selenium 3.0
Selenium 3.0 = Selenium 2.0- RC
从3开始全面移除RC,将某些Client Library函数取消或优化,例如switch_to_frame等等。
功能测试模型
金字塔模型
对于任何一个软件,都有一个个功能函数组成,函数间通过接口调用,其中的一部分接口映射到用户操作页面(GUI)的元素。
用户操作页面元素—>信息通过接口传递—>功能函数处理用户数据—>接口返回用户想要的结果
从数量上讲,函数的数量>接口的数量>GUI图像元素的数量。
形成一个金字塔的关系:
UI测试:黑盒测试。
API测试:灰盒测试。
Unit测试:白盒测试
3个级别的功能测试在数量上成金字塔形,所以过去几十年一致认为测试的工作量分配上,给白盒测试更多的测试时间,放在UI上的测试量最小。
功能测试项 | 实现人员 | 方式 | 工具 |
---|---|---|---|
UI | 测试 | 手动 | 鼠标点点点 |
测试 | 自动 | selenium 、appium、桌面软件自动化 | |
接口 | 测试 | 手动 | postman、soupUI |
测试 | 自动 | requests | |
单元 | 开发 | 自动 | 各种计算机语言自身的单元测试框架 |
菱形模型
近几年,菱形模型为大多数企业认可,能减少生产成本,提高效率。菱形模型中间大,两头小。其中心思想是重点进行集成测试,因为只要充分测试了接口,就能很好的暴露出单元测试中的缺陷,减小单元测试工作量。另外好的接口测试能减少GUI测试量,毕竟接口都是好的,网页就不会出现性能问题。