Selenium3自动化测试实战--第1章 自动化测试基础--分层自动化测试,Selenium简介和Appium简介
第1章 自动化测试基础
1.1 分层的自动化测试
测试金字塔:
传统自动化测试:基于产品UI层的自动化测试,是将黑盒功能测试转化为由程序或工具执行的一种自动化测试。
分层自动化测试:倡导从墨盒UI到黑盒和白盒多层的自动化测试,即从全面黑盒自动化测试到对系统的不同层次进行的自动化测试。
1 单元自动化测试
测试人员的优势是具备测试思维,在设计测试用例时考虑更全面;但劣势是,不如开发人员熟悉被测代码。
2 接口自动化测试
Web应用的接口自动化测试大体分为两类:模块接口测试,和协议接口测试(也就是上面分层图中的Web接口测试?)
3 UI自动化测试
以实现手工测试用例为主,可降低系统功能回归测试的成本(人力成本和时间成本)(项目管理三要素:时间,成本和质量)
1.2 适合自动化测试的项目
满足3个条件就可以展开自动化测试:
(1)软件需求变动不频繁
(2)项目周期长
(3)自动化测试脚本可重复使用
这里想到一个问题,敏捷项目是否也适合自动化测试?如果适合,如何展开自动化测试?
关于敏捷项目,敏捷测试,敏捷测试是否适合展开自动化测试,另起一文学习。
1.3 如何学习UI自动化测试
从3个方面入手:
1. 编程语言
2. Selenium/Appium API
3. 单元测试框架
如何定义一条测试用例
如何组织和运行测试用例
如何统计测试用例的运行结果(总测试用例数,成功数,失败数)
1.4 Selenium简介
Selenium1.0 =IDE + Grid + RC
Selenium2.0 = Selenium1.0+Webdriver
Selenium3.0 = Selenium2.0 - Selenium RC
IDE: 提供简单的脚本录制,编辑和回放功能
Grid: 用来对测试脚本做分布式处理,现在已经集成到selenium server中了。分布式不是并行。分布式是指B电脑的浏览器执行A电脑的用例。而并行的同时执行多条用例,是由编辑语言的多线程技术实现的。
RC:分Client libraries和Selenium server. Client libraries主要用于编写测试脚本,负责控制Selenium server的库。
Selenium server负责控制浏览器的行为。分为 launcher (启动浏览器), http proxy(将浏览器的代理设置为http proxy), Core(javascript函数集合,控制浏览器)。
说了这么多,其实Selenium3已经删除了RC,被webdriver完全代替。
Webdriver: 通过原生浏览器支持,或者浏览器扩展来直接控制浏览器。避免了javascript安全模型导致的限制。是一套协议规范。只提供了web页面操作的相关规范,比如元素定位方法,浏览器操作,获取web元素属性等,还利用操作系统级的调用模拟用户输入,但不支持组织和执行用例,这些是由编辑语言的单元测试框架(python语言的unittest, pytest)去完成。( java语言是junit和testng,了解一下,否则别人说了连是什么都不清楚)
旧版的IDE不支持Firefox新版本支持的API,所以开发了新版IDE
项目地址: https://github.com/SeleniumHQ/selenium-ide
了解selenium,可以使用下面网址:
http://www.selenium.org.cn/
https://www.selenium.dev/zh-cn/documentation/webdriver/
Selenium4.0
现在最新的selenium版本是4.0,已经于2021年10月发布。其更新在另一篇随笔中记录。
1.5 Appium简介
不清楚这个词怎么发音?这里有个IT词汇标准发音的网址:https://tool.lu/pronounce/
Appium支持IOS和Android平台上的原生应用、Web应用和混合应用。
Appium是一个跨平台的测试工具,允许测试人员在不同的平台(IOS,Android)使用同一套API编写自动化测试脚本,增加了代码复用性。
Appium与Selenium:
1 appium类库,额外多了移动设备控制相关的命令,如多点触控手势和屏幕方向等操作
2 appium API,实现了Mobile JSON Wire Protocol 和 W3C WebDriver spec
3 扩展协议,为appium用户提供接口来执行设备动作,如安装和卸载。(和第1条不一样?)
但Appium仍可以用来运行通用的Selenium会话。
以上内容,是学习虫师的书--《Selenium3自动化测试实战-基于Python语言》的笔记。后面其它章节都是这样,不再多述。