内容简介
《软件测试丛书:Selenium自动化测试指南》是使用Selenium实现Web自动化测试的指南。《Selenium自动化测试指南》共分为9章。第1章~第2章,介绍了Selenium自动化测试相关的基础知识和辅助工具;第3章~第5章,分别介绍了Selenium IDE、Selenium1(Remote ControL)以及Selenium2(WebDriver)的用法。第6章~第7章,主要介绍实际工作中如何使用Selenium来进行测试,介绍了自动化测试的流程和框架,并通过实例来讲解自动化测试用例和测试代码的实际编写。第8章~第9章介绍了Selenium测试难点和常见问题的解决。
《软件测试丛书:Selenium自动化测试指南》兼顾Selenium当前流行和应用的不同版本,包括丰富的示例和图解。本书适合于测试人员、测试组长、测试经理、质量保证工程师、软件过程改进人员以及相关专业学生阅读,以快速掌握并在实际工作中使用Selenium。
作者简介
赵卓,软件开发出身,项目开发经验丰富,同时兼修各种自动化测试技术。第4届中国成都国际软件设计大赛“上佳设计奖”得主。译作有《VisualStudio2010软件测试指南》和《快速编码:高效使用MicrosoftVisualStudio》。现就职于新蛋中国,负责推动整个部门的自动化测试。
内页插图
目录
第1章 Selenium自动化测试基础
1.1 自动化测试基础
1.1.1 软件测试概述
1.1.2 自动化测试简介
1.1.3 Selenium简介
1.2 HTML/XML/XPath基础
1.2.1 HTML简介
1.2.2 XML简介
1.2.3 使用XPath进行元素定位
第2章 必备辅助工具
2.1 FireBug
2.2 FirePath
第3章 Selenium IDE
3.1 Selenium IDE的安装
3.2 录制测试用例
3.3 编写测试用例
3.4 Command
3.4.1 Action
3.4.2 Accessor
3.4.3 Assertion
3.5 Target
3.5.1 identifier定位
3.5.2 id定位
3.5.3 name定位
3.5.4 XPath定位
3.5.5 链接文字定位
3.5.6 DOM定位
3.5.7 CSS定位
3.5.8 隐式定位
3.6 Value
3.6.1 带变量的字符串
3.6.2 带JavaScript的字符串
3.7 日志与引用
3.8 将命令复制或导出为代码
3.8.1 将命令复制为代码
3.8.2 将命令导出为代码
第4章 Selenium 1(Remote Control)
4.1 Selenium 1的工作原理
4.1.1 Selenium 1的组件
4.1.2 Selenium服务器
4.1.3 Selenium客户端库文件
4.2 安装并使用Selenium
4.2.1 在C# IDE中使用Selenium
4.2.2 在Java IDE中使用Selenium
4.3 下载并启动Selenium服务器
4.4 选择浏览器开始测试
4.5 浏览器导航操作
4.5.1 Open(url)
4.5.2 GoBack(url)
4.5.3 Refresh , WindowFocus , WindowMaximize 和Close
4.6 操作页面元素
4.6.1 Type(locator, value)
4.6.2 TypeKeys(locator, value)
4.6.3 Click(locator)
4.6.4 ClickAt(locator, coordString)
4.6.5 doubleClick(locator)
4.6.6 doubleClickAt(locator, coordString)
4.6.7 Select(selectLocator, optionLocator)
4.6.8 check(locator)/unCheck(locator)
4.6.9 focus(locator)
4.7 键盘鼠标模拟操作
4.8 获取页面元素的内容
4.8.1 getTitle
4.8.2 getLocation
4.8.3 getValue(locator)
4.8.4 IsEditable(locator)
4.8.5 getText(locator)
4.8.6 isChecked(locator)
4.8.7 getSelectedIndex(selectLocator)
4.8.8 getSelectedLabel(selectLocator)
4.8.9 getSelectedValue(selectLocator)
4.8.10 getSelectOptions(selectLocator)
4.8.11 getTable(tableCell Address)
4.8.12 getAttribute(attributeLocator)
4.8.13 isTextPresent(pattern)
4.8.14 isElementPresent(locator)
4.8.15 isVisible(locator)
4.8.16 getXpathCount(locator)
4.9 设置等待
4.9.1 WaitForPageToLoad(timeout)
4.9.2 setTimeOut(timeout)
4.9.3 setSpeed(value)
4.10 测试控制和调试类操作
4.10.1 captureEntirePage Screenshot(filename, kwargs)
4.10.2 captureEntirePage Screenshot(filename)
4.10.3 highlight(locator)
4.11 JavaScript弹出对话框的处理
4.11.1 IsAlertPresent
4.11.2 GetAlert
4.11.3 IsConfirmationPresent
4.11.4 GetConfirmation
4.11.5 ChooseOkOnNext Confirmation 和Choose CancelOnNext Confirmation
4.11.6 IsPromptPresent
4.11.7 GetPrompt
4.11.8 AnswerOnNextPrompt(answer)
4.12 浏览器多窗口处理
4.12.1 GetAllWindowIds 、GetAllWindowNames 和GetAllWindow Titles
4.12.2 WaitForPopUp(windowID, timeout)
4.12.3 SelectPopUp(windowID)和SelectWindow(windowID)
4.12.4 OpenWindow(url, windowID)
4.13 结束测试
4.13.1 Close 和Stop
4.13.2 shutDownSelenium Server
第5章 Selenium 2(WebDriver)
5.1 Selenium 2——基于对象的测试
5.2 安装并引用Selenium
5.2.1 在C# IDE中使用Selenium
5.2.2 在Java IDE中使用Selenium
5.3 选择浏览器开始测试
5.4 浏览器导航对象Navigation
5.4.1 GoToUrl /to
5.4.2 Back /Forward
5.4.3 Refresh
5.5 查找条件对象By
5.5.1 Id(idToFind)
5.5.2 Name(nameToFind)
5.5.3 LinkText(linkText ToFind)
5.5.4 PartialLinkText(partial LinkTextToFind)
5.5.5 ClassName(className ToFind)
5.5.6 TagName(TagName ToFind)
5.5.7 XPath(xPathToFind)
5.6 操作页面元素WebElement
5.6.1 Click
5.6.2 SendKeys(text)
5.6.3 Clear
5.6.4 Submit
5.7 获取页面及页面元素的内容
5.7.1 Title/getTitle
5.7.2 Url/getCurrentUrl
5.7.3 Text/getText
5.7.4 Selected/isSelected
5.7.5 TagName/getTagName
5.7.6 Enabled/isEnabled
5.7.7 Displayed/isDisplayed
5.7.8 GetAttribute(attribute Name)
5.8 弹出对话框的处理
5.8.1 Accept
5.8.2 Dismiss
5.8.3 SendKeys(keysToSend)
5.8.4 Text/getText
5.9 浏览器多窗口处理
5.9.1 WindowHandles/get WindowHandles
5.9.2 Window(windowName)
5.10 设置管理
5.10.1 Cookies/getCookies
5.10.2 Window/window
5.10.3 Timeouts
5.11 为测试操作添加事件
5.11.1 在C#中使用Event FiringWebDriver
5.11.2 在Java中使用Event FiringWebDriver
5.12 结束测试
第6章 自动化测试的流程和框架
6.1 自动化测试的流程
6.2 自动化测试框架
第7章 自动化测试的实施
7.1 设计自动化测试用例
7.1.1 登录功能的用例设计
7.1.2 搜索商品功能的用例设计
7.1.3 购买商品功能的用例设计
7.2 编写自动化测试代码
7.2.1 登录功能的测试代码
7.2.2 搜索商品功能的测试代码
7.2.3 购买商品功能的测试代码
7.3 设计自动化测试数据
7.3.1 登录功能的数据
7.3.2 搜索商品功能的数据
7.3.3 购买商品功能的数据
第8章 Selenium测试进阶
8.1 Opera/iPhone/Android测试
8.1.1 Opera测试
8.1.2 iPhone测试
8.1.3 Android测试
8.2 Selenium 1与Selenium 2的切换
8.2.1 从Selenium 1切换到Selenium 1
8.2.2 从Selenium 2切换到Selenium 2
8.3 对Selenium进行扩展
8.3.1 对Selenium IDE应用扩展
8.3.2 对Selenium 1应用扩展
8.3.3 对Selenium 2应用扩展
第9章 使用Selenium常见的问题
9.1 使用Selenium IDE常见的问题
9.2 使用Selenium 1常见的问题
9.3 使用Selenium 2常见的问题
前言/序言
《现代软件开发者的效率革命:探索未知领域的测试工具箱》 在飞速迭代的数字时代,软件开发的效率与质量成为决定项目成败的关键。我们身处一个信息爆炸的时代,每天都有无数的代码被编写、部署,又迅速演进。然而,伴随而来的是日趋复杂的系统、庞大的代码库,以及用户对稳定性和性能的严苛要求。传统的手工测试,早已无法跟上现代软件开发的步伐。它不仅耗时耗力,容易出错,更难以应对频繁的迭代和快速的版本更新。 因此,拥抱自动化测试,已经不再是一种选择,而是行业发展的必然趋势。这本《现代软件开发者的效率革命:探索未知领域的测试工具箱》,并非一本关于特定技术工具的教程,而是旨在为每一位追求卓越的软件开发者、测试工程师,乃至项目管理者,开启一扇通往更高效率、更优质量的全新大门。它将带领读者深入理解自动化测试的本质,掌握构建强大、可维护自动化测试体系的底层逻辑与核心思想,从而在瞬息万变的开发环境中,游刃有余地驾驭复杂性,释放前所未有的生产力。 第一章:破除迷思,重塑测试认知——自动化测试的战略高度 在本章,我们将首先拨开笼罩在自动化测试周围的层层迷雾,从战略的视角,审视它在整个软件生命周期中的核心价值。我们不会纠结于“某个具体的工具应该怎么用”,而是深入探讨“为什么要做自动化测试”以及“自动化测试能为我们带来什么”。 告别低效,“质”与“速”的悖论? 我们将剖析传统手工测试的痛点,例如重复性劳动带来的枯燥与倦怠,测试覆盖率的瓶颈,以及回归测试的巨大成本。通过对比分析,鲜明地展现自动化测试如何打破“质量与速度不可兼得”的僵局,实现两者的高度统一。我们将探讨自动化测试如何在早期发现缺陷,降低修复成本,提升交付信心,从而加速产品上市的进程。 不止于“查错”,自动化测试的价值多元化 自动化测试绝非仅仅是“找Bug”的工具。在本章,我们将拓展自动化测试的边界,阐释其在提升代码质量、促进重构、作为沟通桥梁、知识沉淀等方面的深远影响。例如,优秀的自动化测试用例本身就是一份活的文档,能够清晰地展现业务逻辑和预期行为,便于团队成员之间的理解与协作。它还能在代码重构时提供安全网,让开发者在修改代码时,不再畏手畏脚。 构建坚实的自动化基石:理念先行 在着手实践之前,建立正确的理念至关重要。我们将引导读者思考如何设计可维护、可扩展的自动化测试框架。这包括但不限于:如何选择合适的测试粒度(单元测试、集成测试、端到端测试)、如何组织测试用例、如何进行有效的数据管理,以及如何处理测试环境的隔离与配置。我们强调的不是“用什么框架”,而是“如何思考框架”。 第二章:从0到1,构建灵活强大的测试体系——设计原则与架构思维 一个优秀的自动化测试体系,如同摩天大楼的地基,其稳定性和扩展性决定了上层建筑的生命力。本章将聚焦于自动化测试体系的设计原则与架构思维,帮助读者构建一套能够适应不断变化需求的灵活体系。 可维护性的魔法:如何让测试用例“活”下去? 测试代码也是代码,它同样需要维护。我们将深入探讨如何通过良好的代码组织、模块化设计、 DRY (Don't Repeat Yourself) 原则来降低测试用例的冗余度,使其更易于理解和修改。我们将讨论命名规范、注释策略、以及如何将重复性的操作抽象成可复用的函数或方法。 数据的艺术:从静态到动态,从局部到全局 测试数据是自动化测试的血脉。本章将带领读者探索各种测试数据管理策略,包括如何生成随机数据、如何使用真实数据(并注意脱敏)、如何实现测试数据的持久化存储与版本控制,以及如何处理不同测试场景下的数据依赖。我们将强调数据驱动测试(Data-Driven Testing)的核心思想,以及如何将其有效地融入到自动化测试流程中。 环境的挑战与解法:隔离、稳定、可控 测试环境的稳定性是自动化测试能否可靠运行的关键。我们将分析常见的环境问题,如配置冲突、服务依赖、数据污染等,并提供相应的解决方案。这包括但不限于:Docker等容器化技术在环境隔离方面的应用,虚拟化技术的使用,以及如何设计一套自动化环境的部署与清理机制,确保测试的独立性和可重复性。 架构思维的渗透:分层、解耦、抽象 我们将引导读者将软件架构的理念应用到测试体系的设计中。通过分层设计,将UI层、业务逻辑层、数据层等清晰地分离,提高测试用例的可读性和可维护性。解耦思想的应用,可以减少测试用例之间的相互影响,提高测试的独立性。而抽象,则是将通用的操作封装起来,降低测试开发的复杂度。 第三章:拥抱变革,持续演进——自动化测试的未来之路 技术浪潮从未停歇,自动化测试领域也在不断发展。本章将放眼未来,探讨自动化测试的最新趋势与前沿技术,帮助读者保持敏锐的洞察力,引领测试能力的持续进化。 “AI+测试”:智能化的探索与实践 人工智能正在深刻地改变着软件开发和测试的格局。我们将探讨AI在测试用例生成、缺陷预测、智能UI定位、性能瓶颈分析等方面的潜力。重点将放在如何理解AI赋能测试的底层逻辑,以及如何为未来的智能化测试做好准备,而不是简单地介绍某个AI工具。 低代码/无代码测试:赋能更多参与者 降低自动化测试的门槛,让更多非技术背景的成员也能参与到测试环节,是行业发展的趋势。我们将分析低代码/无代码测试平台的优势与局限,以及如何利用这些平台来提升团队整体的测试效率,并探讨其在企业级应用中的最佳实践。 DevOps与CI/CD:自动化测试的生命线 自动化测试与DevOps、CI/CD流程的深度融合,是现代软件开发不可或缺的一环。我们将详细阐述自动化测试如何在持续集成、持续交付的流水线中扮演关键角色,如何实现自动化测试的快速反馈,以及如何通过自动化测试来保障部署的稳定性和可靠性。 安全与性能:不可忽视的维度 现代软件开发对安全性和性能的要求同样严苛。本章将触及如何将安全测试(如漏洞扫描、安全脚本编写)和性能测试(如负载测试、压力测试)纳入自动化测试体系,以及如何利用自动化手段来保障应用的安全性与高效性。 结语 《现代软件开发者的效率革命:探索未知领域的测试工具箱》并非一本“教你使用XX工具”的书,它是一场关于理念、思维、原则的深度探索。我们希望通过这本书,为读者构建起一套稳固的自动化测试知识体系,培养敏锐的洞察力,以及拥抱变革的勇气。让自动化测试不再是孤立的环节,而是融入整个软件开发生命周期的核心驱动力。掌握了这套“工具箱”中的思维与方法,你将能够自信地应对任何复杂的测试挑战,在软件开发的广阔天地中,开辟属于自己的高效之路。