Selenium自动化测试完全指南 基于Python

978-7-115-55716-2
作者: 赵卓
译者:
编辑: 谢晓芳

图书目录:

详情

本书共有19章。第1~10章介绍Selenium IDE、Selenium WebDriver、Selenium Grid、Appium等工具的应用。第11~16章介绍自动化测试实战的组织及模式优化,包括如何通过Selenium进行功能测试和非功能测试,如何完善功能测试驱动,如何设置功能测试的逻辑组织结构,如何优化功能测试的物理组织结构,如何增强功能测试的运行反馈机制。第17~19章讲述自动化实战的落实及实践优化。 本书适合测试人员和开发人员阅读。

图书摘要

版权信息

书名:Selenium自动化测试完全指南:基于Python

ISBN:978-7-115-55716-2

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    赵 卓

责任编辑 谢晓芳

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


本书共有19章。第1~10章介绍Selenium IDE、Selenium WebDriver、Selenium Grid、Appium等工具的应用。第11~16章介绍自动化测试实战的组织及模式优化,包括如何通过Selenium进行功能测试和非功能测试,如何完善功能测试驱动,如何设置功能测试的逻辑组织结构,如何优化功能测试的物理组织结构,如何增强功能测试的运行反馈机制。第17~19章讲述自动化实战的落实及实践优化。

本书适合测试人员和开发人员阅读。


软件测试技术在不断发展:最开始没有专门的测试人员,到后来人们终于认可了测试人员的价值;一开始测试人员仅执行复杂的手工测试,又逐渐发展到使用自动化测试。而对于自动化测试,开始有了大大小小的分类,各种自动化测试工具如雨后春笋般涌现。如今软件行业对测试质量和效率的要求已经与多年前有天壤之别。在追求敏捷开发和DevOps的今天,自动化测试的成效已经成为成功实施敏捷开发或DevOps的决定因素之一。

要成功实施自动化测试,工具是其中一个要素。在Web功能测试领域,Selenium是一个免费、开源、跨平台的重要工具,它可以对Chrome、Firefox、Safari等浏览器进行测试,支持多种语言(如Python、Java、C#、Ruby、JavaScript等),它足以胜任一切Web功能测试任务。而在移动端应用程序流行的今天,基于Selenium WebDriver协议的Appium开始崭露头角,它可以用于iOS或Android系统,不仅支持在移动设备上测试Web应用程序,还支持原生应用程序的测试。Selenium的这一系列工具支持几乎所有主流应用程序的自动化功能测试。

脚本语言的兴起在一定程度上促进了自动化测试的发展。作为一种面向对象的脚本语言,Python简单易学,免费、开源,拥有相当多的功能库,极易扩展。仅从自动化测试的角度而言,Selenium与Python的组合比其他组合更具优势。本书基于Python进行讲解。

然而,工具本质上只是工具,并不能真正发挥价值。要让自动化测试在测试体系中发挥真正的功效,不仅需要有强大的工具,还需有有效的策略。测试人员不仅要了解如何使用Selenium,还要学习如何充分发挥这个工具的作用,实现自动化测试的价值。重点是如何更好地用工具来实施自动化测试,如何真正让自动化变得越来越有成效。即使未来的主流测试工具不再是Selenium,Python风光不再,核心问题也不会改变。

本书不仅会由浅入深地详述Selenium系列工具的全部功能,还将探讨自动测试的核心问题,讲述如何更好地在实际项目中实施自动化测试,如何真正让自动化测试取得成效,充分发挥其价值。不管是刚刚入门的读者,还是想要进一步提高的读者,都能从本书中有所收获。

本书不仅适合测试人员、质量保证工程师、软件过程改进人员以及计算机相关专业的师生阅读,还适合开发人员阅读。

本书共19章,共分为3部分,由浅至深介绍各个知识点。

第一部分(第1~10章)主要介绍Selenium系列工具集(Selenium IDE、Selenium WebDriver、Selenium Grid和Appium)的应用,完整覆盖Web应用程序及原生应用程序的测试。该部分还展示了Selenium 4内测版,大致介绍了Selenium 4未来的变化。对于不是特别熟练Selenium的读者,建议完整阅读各个章节;对于已经非常熟悉Selenium的读者,建议直接从第3章开始阅读。

第二部分(第11~16章)主要介绍如何在实际项目中组织和优化测试。对于功能测试,使用Pytest作为测试框架,以实际项目为例一步一步优化测试的物理结构与逻辑结构,引入测试驱动,不断规划、改善测试文件与测试代码,并完善测试的运行机制,达成最佳测试模式。关于非功能测试,该部分主要介绍了Selenium爬虫与性能测试的用法。建议读者多花精力进行研究。

第三部分(第17~19章)主要介绍如何让自动化测试取得成功,而不仅仅是一个“秀技术的工程”。该部分先介绍自动化测试目标和测试设计,再讲解执行流程(涉及持续集成),最后描述如何对自动化测试进行评估和改善,其中涉及较多的经验之谈。建议读者不仅要阅读,还要结合实际的项目多加思考。

首先,感谢全体Selenium的制作人员,造就了如此强大易用的工具,为整个软件行业的发展做出了极大的贡献。

同时,非常感谢人民邮电出版社的各位编辑。尤其感谢谢晓芳编辑,在本书写作过程中给予的信任、支持和鼓励。正是有了各位编辑的帮助,本书才有机会与广大读者见面。

感谢我的家人,正是由于他们默默的支持,我才能静下心来写作。

在编写本书的过程中难免会有疏漏或不当之处,敬请广大读者及同行批评指正,谢谢各位!

赵 卓


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关服务。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮(见下图)即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区投稿(直接访问www.epubit.com/contribute即可)。

如果您所在学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发送给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https:// www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社几十年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、人工智能、测试、前端、网络技术等。

异步社区

微信服务号


Selenium 是一系列自动化工具集的统称,其官方工具有Selenium IDE、Selenium WebDriver、Selenium Grid,它们主要用于桌面端Web应用程序的自动化,由不同的工具处理不同的运用场景。

随着移动端应用程序的流行,Appium应运而生,它基于Selenium WebDriver协议,不仅支持在移动设备上运行Web应用程序,还支持运行App,进一步扩展了Selenium工具集。

Selenium的这一系列工具可用于所有主流应用程序的自动化测试,满足不同场景下的自动化测试需要。

本书这一部分将详细介绍Selenium系列工具的运用。


即使是经验非常丰富的程序员,在开发编码时也很容易犯错,这些错误也许是由于需求不明确,也许是由于设计问题,也许是编码中出现了失误等。但无论是怎样的错误,若不及时处理,都会降低软件的可靠性,严重时甚至会导致整个软件的失败。

为了排除这些错误,人们引入了软件测试的概念。通俗地说,软件测试就是为了发现程序中的错误而分析或执行程序的过程。

测试和修正的活动可以在软件生命周期的任何阶段进行。然而,随着开发的不断进行,找出并修正错误的成本也会急剧增加。在需求阶段就能发现问题并进行修改,成本就会很低。如果代码已经编写完毕,再进行更改,则成本将会高许多。

随着行业的蓬勃发展,开发周期不断缩短,人们对软件研发效率和质量的要求越来越高,于是自动化测试开始登上历史舞台,代替人来高效地执行大量重复的手工劳动。自动化测试的定义很简单:软件测试一般是由测试人员执行的,如果由机器来代替人执行软件测试,那么这种测试就叫自动化测试。例如,由计算机代替人来单击被测试软件的界面,执行一系列操作并进行验证。

然而,并不是所有测试类型都适合自动化。哪些测试更适合自动化?哪些更适合手工测试?根据Brain Marick提出的测试四象限,我们可以对测试进行归类,将其划分到4个象限中,以解答这些问题,如图1-1所示。

接下来对各个象限进行简单的介绍。

图1-1 自动化测试四象限

第一象限中的测试类型全都可以自动化,包括单元测试、组件测试等。第二象限中的测试类型大部分可以自动化,例如功能验收测试。第四象限中的测试类型受工具的限制,且测试场景具有一定局限性,所以只有小部分可以做成可复用的自动化测试,而第三象限的测试通常只能以手工方式进行。

显然,自动化测试不可能完全取代手工测试。事实上,两者的定位并不相同,分别从不同的层面去保证软件的质量。第一象限、第二象限中的测试是自动化测试的重点,通常我们所说的自动化测试都是在第一象限、第二象限中的自动化测试。

然而,第一象限、第二象限中的测试也并不是全部需要实现自动化的。关于自动化测试的比例,需要有一个健康的模式,才能得到最佳成本收益比。这里引入Mike Cohn提出的自动化测试金字塔的概念,合理的自动化测试用例的分布应如图1-2所示。

图1-2 合理的自动化测试用例的分布

合理的自动化测试的分布中,顶部以少而精的用户界面(UI)测试为主,中间由适量的API测试组成,而底部由大量的单元测试组成。在测试金字塔中,越往上就越接近真实的业务,其自动化成本越大,运行速度比较缓慢,反馈周期变长,而越往下则越偏向技术层面,虽然离具体业务较远,但运行速度快,实施成本低,反馈周期短。自动化测试的整体搭配越接近 图1-2所示的金字塔形,自动化程度越高,收益越高。

在测试金字塔的顶端,强调少而精的测试,作为整个测试体系的点睛之笔,它们必须拥有强力的策略及工具才能支撑。本书将着重介绍策略部分。对于工具,到底要用什么样的工具才能完成这项艰巨的任务呢?

接下来,本书的主角Selenium闪亮登场。唯有它能真正胜任这项艰巨的任务。

Selenium(其图标见图1-3)是一系列基于Web的自动化工具。它提供了一系列操作函数,用于支持Web自动化。这些函数非常灵活,能够通过多种方式定位界面元素、操作元素并获取元素的各项信息。

图1-3 Selenium的图标

Selenium作为一款强大的工具,具有以下几个特性。

在目前Web应用为主流应用的情况下,正是由于以上这些特性,通过Selenium实施自动化工作才能起到事半功倍的效果,而这是其他任何工具无法比拟的。

很明显,Selenium是一种自动化操作工具,有多种自动化方面的用途。基于良好的测试用例设计,Selenium自然也可以用于自动化测试的执行。

Selenium最早发布于2004年,主要用来将Web前端应用程序的测试自动化,缩短手工验证需要的时间。Selenium包含Selenium IDE(录制回放工具)、Selenium RC(多语言编程接口)及Selenium Grid(在多机器上执行并行测试的平台)。

Selenium 1的核心工具为Selenium RC,测试的原理主要为将JavaScript注入待测试的Web页面来模拟用户的交互。这种方式在当时并不完美,它首先受制于各浏览器的JavaScript引擎及其执行速度,其次被JavaScript安全模型限制,而它本质上只是模拟用户操作,和用户的真正操作有一定区别。虽然当时的Selenium并不完美,但已经具备很好的发展潜力。

Selenium 2开始着手解决Selenium 1的遗留难题,引入了WebDriver,从JavaScript模拟操作,逐渐转变为由浏览器厂商基于一定规范提供原生级别的操作实现。WebDriver对于界面的操作将基于这些原生的操作实现,就相当于用户在真实操作浏览器,高度还原了真实的测试场景。Selenium 2同时保留了Selenium RC和WebDriver。一方面,大量仍在使用Selenium RC的用户需要一定的时间迁移到WebDriver;另一方面,WebDriver还未完全成熟,并非每个浏览器都提供了原生操作实现。对于尚不支持的浏览器,还需要Selenium RC。

Selenium 3发布时,WebDriver已经非常成熟,它定义的协议和标准已经逐渐发展为W3C统一标准,各主流浏览器厂商都已基于该标准制作了各个浏览器的WebDriver驱动程序,实现了完全原生的浏览器操作,运行更稳定,性能更优良。落后于时代的Selenium RC遭到淘汰,不再包含到Selenium 3当中。

时至今日,Selenium 4也蓄势待发,对Selenium 3进行了大量的改进,并支持更多新的功能。

整个Selenium的发展史可以用图1-4概括。

图1-4 Selenium的发展史

截至目前,Selenium 4已发布了Beta版本,距离正式版本还有一定时间,相对于Selenium 3来说,它的核心功能没有任何变化,拥有相同的工具集,使用方式和Selenium 3几乎一致,但进行了一些改进并且增加了新功能。

Selenium 4的主要改进如下。

Selenium 4的主要新增功能如下。

对于不同的语言绑定,Selenium 4支持的功能不尽相同。关于Selenium 4在Python语言下的新增功能将在后续章节详细介绍。

Selenium本质上是由多种工具组合在一起的多功能测试工具集,在最新的版本中,它包含以下4个工具。

Selenium IDE(其图标见图1-5)是Chrome和Firefox的扩展工具,用于在浏览器中进行便捷的录制与回放测试的操作。

图1-5 Selenium IDE的图标

Selenium IDE的特点如下。

Selenium WebDriver(其图标见图1-6)可以在本地或远程计算机上以原生方式驱动浏览器,就好像用户在真实操作浏览器一样。

图1-6 Selenium WebDriver的图标

Selenium WebDriver的特点如下。

Selenium Grid(其图标见图1-7)支持在多台机器上同时运行多个基于WebDvrier的测试,减少在多浏览器和多操作系统上测试耗费的时间。

图1-7 Selenium Grid的图标

Selenium Grid的特点如下。

除此以外,根据WebDriver的实现思路,还诞生了另一个强大的开源工具。它完全基于WebDriver标准,通过不同的WebDriver,不仅实现了对iOS、Android、Windows平台的原生应用程序、Web应用程序及混合应用程序的支持,还实现了对以上3个平台的跨平台支持,达成了高度的自动化复用。这个开源工具就是Appium。

Appium(其图标见图 1-8)是基于WebDriver标准的开源工具,主要用于移动设备原生App及Web应用程序的自动化测试。

图1-8 Appium的图标

Web应用程序自不必多言,但原生应用程序需要一提。虽然Appium也支持Windows的原生应用,但目前Windows的原生应用和其他平台并没有什么共通性和复用性可言,且有其他更成熟的工具代替。而由于React Native的出现,iOS和Android原生应用拥有了更多共通点及可复用之处,因此Appium在移动设备上将发挥更大的作用。

以上这些工具组成了强大的Selenium工具集,它们可以满足不同场景下的自动化需要。接下来,我们将一步步介绍这些工具的使用。


相关图书

现代软件测试技术之美
现代软件测试技术之美
渗透测试技术
渗透测试技术
JUnit实战(第3版)
JUnit实战(第3版)
深入理解软件性能——一种动态视角
深入理解软件性能——一种动态视角
云原生测试实战
云原生测试实战
Android自动化测试实战:Python+Appium +unittest
Android自动化测试实战:Python+Appium +unittest

相关文章

相关课程