第 1 章 自动化测试简介 Selenium 3+Python 3 自动化测试

本书如提供示例代码及资源文件,下载地址的页面入口http://www.broadview.com.cn/37270

在 2018 年7月毕业之后,笔者从事的第一份工作与软件开发相关从刚入行时接触的功能测试,再到 QTP、Selenium 等自动化测试工具,时间已经过去了 2 年之久。软件测试技术在不断完善和发展——从早年完全基于GUI的自动化测试,到现如今前端GUI自动化测试和后端API自动化测试并驾齐驱。从测试分层体系的设计上看,目前很多测试都被逐渐从前端GUI向后端API或者接口迁移。

Python 语言语法简单且功能强大,有丰富和强大的第三方类库支持。对编程能力较弱的初学者来说,Python 语言更容易学习和使用;对有编程经验的读者来说,学习 Python 语言的成本很低。

本书的初衷是提高读者的技术学习深度与广度,从而向测试开发工程师的道路迈进。为此,在本书的最后一篇介绍了Git、Docker容器的使用,以及持续集成工具Jenkins的使用等。

本书的知识体系

本书分为 4 篇,共 14 章

第一篇 环境篇(第 1~3 章:主要介绍本书所涉及的基础知识、自动化测试的发展状况、Selenium IDE 的使用,以及环境搭建等基础性工作

第二篇 基础篇(第 4~7 章:主要介绍自动化所必需的前端知识、Python 基础、Selenium 八大定位、常用方法及高级特性

第三篇 项目篇(第 8~12 章:主要介绍如何从零开始做一个自动化测试项目。首先从需求分析入手并熟悉业务流程,其次编写脚本,实现整个流程的功能,最后不断地对脚本进行重构,如函数、文件、数据驱动、PageObject 设计模式、BDD(行为驱动开发)等

第四篇 平台篇(第 13~14 章:主要介绍自动化测试平台,包含 Git、Jenkins、多线程并发测试及 Docker 容器等技术


第一篇 环 境 篇

本篇主要介绍本书所涉及的基础知识(比如 Selenium 的发展与简介、Python 语言基础知识、前端技术等,自动化测试及环境搭建等基础性工作。本篇对应的章节如下

第 1 章 自动化测试简介

第 2 章 Selenium IDE 的使用

第 3 章 Python 与 Selenium 环境搭建

第 1 章 自动化测试简介

本章主要讲解自动化测试的含义、分类、项目使用,以及自动化测试工具 Selenium 的优势

1.1 什么是自动化测试

随着软件产业的不断发展,市场对软件周期的要求越来越高,于是催生了各种开发模式,如大家熟知的敏捷开发,从而对测试提出了更高的要求。此时,产生了自动化测试,即利用工具或者脚本来达到软件测试的目的,没有人工或极少人工参与的软件测试活动称为自动化测试。自动化测试的优势如下

· 更方便对系统进行回归测试。当软件的版本发布比较频繁时,自动化测试的效果更加明显。
· 可以自动处理原本烦琐、重复的任务,提高测试的准确性和测试人员的积极性。
· 自动化测试具有复用性和一致性,即测试脚本可以在不同的版本上重复运行,且可以保障测试内容的一致性。

1.2 自动化测试的分类

维度不同,自动化测试的分类方式也不同,以下是笔者认为比较常见的方式

从软件开发周期或者分层的角度来分类

(1)单元自动化测试

单元自动化测试是指自动化地完成对代码中的类或方法进行测试,主要关注代码实现细节及业务逻辑等方面

(2)接口自动化测试

接口自动化测试用于测试系统组件间接口的请求与返回。接口测试稳定性高,更适合开展自动化测试

(3)UI 自动化测试

用自动化技术对图形化界面进行流程和功能等方面验证的过程

从测试目的的角度来分类

(1)功能自动化测试

功能自动化测试主要检查实际功能是否符合用户的需求,主要以回归测试为主,涉及图形界面、数据库连接,以及其他比较稳定而不经常发生变化的元素

(2)性能自动化测试

性能自动化测试是依托自动化平台自动地执行性能测试、收集测试结果,并能分析测试结果的一种可以接近无人值守的性能测试。性能自动化测试有以下特性

· 对脚本创建和优化提供类库和其他模块支撑

· 可以设定自动化任务(比如每天根据特定场景执行一轮性能测试

· 自动收集测试结果并存储

· 事中监控(比如场景执行过程中的异常错误自动预警邮件功能

· 成熟的平台可以进行自动分析功能(比如哪些事务有问题、哪些资源消耗异常等

(3安全自动化测试

类似于性能自动化测试,可以将安全测试的活动自动化,比如可以定期自动扫描安全预警或威胁并上报

1.3 自动化测试项目的适用条件

上线自动化测试项目是需要「天时、地利、人和」的,为什么这么说呢?因为自动化测试项目的评估需要各方面的考虑,但总体来说还是有一些规律可循的

· 软件系统界面稳定、变动少。页面变更频繁会导致代码维护成本增加。
· 项目进度压力不太大。项目时间安排比较紧迫,不适合进行自动化测试。
· 自动化测试的脚本可以重复使用。代码复用率高可以降低开发和维护的成本。
· 测试人员具备较强的编程能力。

1.4 自动化测试总结

目前,在软件测试领域,自动化测试已成趋势。然而没有一种自动化方案可以满足 100% 的需求。在评估项目及自动化模式、工具、框架设计等方面都需要认真对待,综合各种利弊得失,寻找合适的解决方案

自动化测试最近几年的发展也很迅猛,各种工具、框架有很多,比如 Selenium、UFT、Ruby Watir 等

自动化测试涉及一个重要名称,即「框架。百度百科对框架的解释是「框架是一个框子(指其约束性,也是一个架子(指其支撑性。在软件工程中,框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。同时,框架也可以理解为可被应用开发者定制的应用骨架」为什么很多时候要强调框架呢?主要原因如下

· 框架的产生是为了解决某一类重要的问题。
· 框架有可扩展性和可集成性。可扩展性即框架可以很容易地扩展功能和改写功能。可集成性是指可以通过暴露出一些接口等方式去和其他系统进行交互。

1.5 为什么选择 Selenium

市场上自动化测试的工具有很多,选择的面也比较广,笔者为什么推荐 Selenium 呢

1.5.1 Selenium 的特性

Selenium 在自动化测试领域非常受欢迎,主要与其本身的一些特性有关系:

· Selenium 是免费开源的框架。
· 支持多种浏览器。如 Chrome、Firefox、IE 等。
· 支持多种开发语言。如 Java、Python、Ruby 等,这就使得测试人员在选择的时候会有更多的空间。
· 支持并发测试。Selenium 支持在多台机器上并发执行测试,可以提升自动化测试的执行效率和增强资源的使用率。

1.5.2 Selenium 的发展

2004 年 Selenium 的雏形 Selenium 1.0 以 JavaScript 库为后台核心

目前 Selenium 已经发展到 3.0 版本,Selenium 3.0 是对 Selenium 1.0 的继承和发展,如图 1.1 所示展示了 Selenium 框架的演化过程

图 1.1

其中 Selenium IDE 是 Firefox 浏览器的一个插件,依附于浏览器运行,实现对浏览器操作的录制与回放功能,录制的脚本可以转化为多种脚本语言(Java、Python、Ruby 等,后续章节对此会有详细的介绍

Selenium RC 是 Selenium 的核心组成部分,它由两个组件构成:一个是 Selenium Server(解释执行测试代码或者脚本,也是 HTTP 代理服务器的角色,用于侦测处理浏览器与应用服务器之间的 HTTP 请求通信;另一个是 Client Library,它提供了接口,用于编程语言连接 Selenium Server,主要负责发送命令给 Selenium Server,接收测试结果

Selenium Grid 组件的主要作用是实现并发测试,它可以实现多台测试机器和多个浏览器并发测试。每一个测试环境上的机器称为 Node 节点。工作模式由一个 Hub 节点和若干个 Node 节点组成。Hub 用来管理和收集 Node 节点的注册信息和状态信息,接受远程调用,并把请求分发给代理节点来执行

从图 1.1 中可以看到,Selenium 2.0 在 1.0 版本的基础上添加了对 WebDriver 的支持。WebDriver 提供了更简单、更简洁的 API,大幅提高了脚本代码编写的效率,其原理是通过调用浏览器的 API 来定位并操作页面上的对象。并在 1.0 版本的基础上扩展了很多功能,如键盘和鼠标事件、文件上传和下载等

Selenium 和 WebDriver 原本属于两个不同的项目。关于 Selenium 与 WebDriver 合并的原因,WebDriver 项目的创建者 Simon Stewart 在 2009 年 8 月的邮件中给出了一些两个项目合并的看法:一部分原因是 WebDriver 弥补了 Selenium 存在的缺点(有出色的 API,另一部分原因是 Selenium 解决了 WebDriver 存在的问题(例如支持广泛的浏览器。Selenium 3.0 对 2.0 版本主要做了如下修改

· 去除 Selenium RC 组件。
· 遵循 W3C 的标准。
· 扩展 WebDriver API 的功能,提供移动端的测试套件。
· 只有下载官方提供的 GeckopDriver 驱动,才可以使用 Firefox 浏览器(47.0.1 之后的版本)。
· 执行 IE 9.0 以上的版本及 Windows Edge 浏览器。
· 支持 Java 8 及以上版本。

通过本章的学习,读者对自动化测试的概念及如何选择工具或者框架会有一个初步的认识,也会对 Selenium 框架的发展轨迹、特性等有一定的了解

 

部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
原文地址:https://www.cnblogs.com/MarlonKang/p/13666302.html