描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302490241
本书面向的主要读者群为软件测试工程师、测试主管、测试架构师和对自动化测试开发有浓厚兴趣的爱好者。本书也可以作为整个研发团队提升测试技术和质量意识的参考书。希望通过本书的学习,能为读者建立起一套完整的、有竞争力的自动化测试技术体系化思维。
项目1自动化测试体系及环境准备1
1.1预备知识2
1.1.1软件工程与“没有银弹”2
1.1.2理解自动化测试6
1.1.3自动化测试实施过程9
1.1.4软件测试专业术语14
1.2核心实验18
1.2.1Eclipse开发环境的配置与使用18
1.2.2安装XAMPP并配置数据库及应用系统24
项目2WoniuATM模拟系统32
2.1预备知识33
2.1.1Java程序设计基础——变量与类型33
2.1.2Java程序设计基础——控制结构37
2.1.3Java程序设计基础——数组44
2.2核心实验: 实现WoniuATM的注册与登录50
2.3预备知识56
2.3.1Java面向对象——类与实例56
2.3.2Java面向对象——静态与非静态61
2.3.3Java面向对象——构造方法63
2.3.4Java面向对象——失血模型66
2.3.5Java面向对象——继承与多态69
2.4核心实验: 重构WoniuATM并完善其功能77
2.5预备知识86
2.5.1Java异常处理机制86
2.5.2Java数据持久化——文本文件91
2.5.3Java数据持久化——Excel文件95
2.5.4Java数据持久化——JDBC数据库99
2.6核心实验102
2.6.1利用文本文件重构WoniuATM102
2.6.2利用数据库重构WoniuATM108
2.6.3利用正则表达式检验用户输入113项目3代码级接口测试自动化118
3.1预备知识: 深入理解接口测试及白盒测试119
3.2核心实验122
3.2.1实现被测程序ArrayCompare代码122
3.2.2基于Java实现TDD测试驱动开发127
3.2.3基于Java实现代码级接口测试132
3.2.4基于Java实现代码级集成测试135
3.2.5基于JUnit实现代码级接口测试137
3.2.6基于TestNG实现代码级接口测试149
3.2.7基于EclEmma实现代码覆盖率统计157
3.2.8将被测程序导出为Jar包并完成测试161
项目4协议级接口测试自动化164
4.1预备知识165
4.1.1协议级接口测试的价值165
4.1.2网络通信过程与TCP/IP协议167
4.2核心实验173
4.2.1利用Wireshark完成协议监控与分析173
4.2.2利用Java实现TCP通信过程175
4.2.3利用Java对飞秋客户端实施可靠性测试177
4.3预备知识: Web系统通信协议HTTP179
4.4核心实验189
4.4.1利用协议分析工具监控Agileone通信过程189
4.4.2利用Java发送GET请求获取页面源文件193
4.4.3利用Java发送POST请求实现登录测试196
4.4.4使用Java对Agileone进行暴力破解200
4.4.5利用Java对需求提案模块进行测试202
4.4.6利用HttpClient实现需求提案的测试212
4.4.7利用Java对Phpwind论坛进行“灌水”216
4.4.8利用Java完成对Phpwind论坛的随机回帖223
4.4.9利用Java处理JSON格式的数据内容226
4.4.10利用Java实现文件的上传下载232
4.4.11利用Java实现HTTPS协议通信240
4.4.12利用Java完成对Web
Service协议接口测试247
4.5工具应用254
4.5.1利用SoupUI实现协议级接口测试254
4.5.2利用TesseractOCR实现验证码识别260
项目5界面级黑盒测试自动化265
5.1预备知识: 基于界面的自动化测试核心技术266
5.2核心实验271
5.2.1对象识别原理——Java实现Monkey测试271
5.2.2对象识别原理——Java操作Windows窗体对象276
5.2.3对象识别原理——Java操作Java窗体对象283
5.2.4对象识别原理——JavaScript操作Web窗体对象294
5.2.5Selenium IDE——测试Agileone的公告管理297
5.2.6Selenium WebDriver——配置与使用306
5.2.7Selenium WebDriver——代码结构优化310
5.2.8Selenium WebDriver——代码深度优化316
5.2.9Selenium WebDriver——对象识别机制327
5.2.10Selenium WebDriver——鼠标与键盘操作338
5.2.11Selenium WebDriver——对话框与窗口341
5.2.12Selenium WebDriver——其他重要对象344
5.2.13Selenium WebDriver——兼容性测试347
5.3工具应用: 使用Appium测试Android应用程序348
项目6协议级性能测试自动化356
6.1预备知识357
6.1.1性能测试核心原理与技术体系357
6.1.2性能测试工程体系与场景设计361
6.1.3性能测试指标体系与结果分析370
6.2核心实验375
6.2.1基于Java的多线程技术应用375
6.2.2利用Java的Executor框架运行多线程387
6.2.3利用Java开发Phpwind性能测试脚本392
6.2.4利用Java JSoup实现页面资源的下载407
6.2.5利用Java设计拱形场景及思考时间412
6.2.6监控并分析Windows和Linux关键性能指标417
6.2.7基于Web前端的性能测试分析430
6.3工具应用437
6.3.1使用JMeter实现Agileone的接口测试437
6.3.2使用JMeter实现Phpwind的性能测试444
项目7CBT自动化测试框架设计451
7.1预备知识: 理解自动化测试框架设计与CBT452
7.2核心实验454
7.2.1利用CBT的ATM模型实现基础框架454
7.2.2利用DDT模型重构CBT框架463
7.2.3在CBT中定制测试报告组件467
7.2.4对CBT测试报告组件进行测试479
7.2.5在CBT中定制公共组件模块485
7.2.6利用CBT完成与禅道管理系统集成495
7.2.7让CBT完成产品的持续集成500
参考文献509
01写作背景
IT及互联网行业在中国的发展已经超过20年,而软件测试在中国也发展了15年左右。在这15年中,软件测试经历了从粗放到精细的过程,自主研发的软件系统质量也越来越高。但是即使在大家非常重视产品质量和用户体验的今天,业内仍然存在着诸多对软件测试的偏见和误解,比如软件测试门槛低、没有技术含量、没有发展前途、吃青春饭、不懂编程才做软件测试等。很多软件测试从业者也是基于其门槛低的缘故进入该行业的,但是后来却发现事实并非如此,很多人都或多或少遇到了技术上的瓶颈。笔者从事软件测试工作的14年间,亲历了中国IT行业及软件测试的发展历程,从带项目、做管理,到做企业咨询和内训,再到专职培训讲师,整个过程中积累了很多经验和教训。因此,才萌发了编写本书的想法。从笔者所经历的项目经验和企业实践来看,软件测试工作做得好的企业不多,能把自动化测试成功实施的企业就更少了。究其原因,就是大家的质量意识不够高,对测试工作的认知不足,同时在技术和管理上缺乏系统思维。不过令人欣慰的是,这些问题目前已经得到了企业的足够重视,已经在慢慢好转。
作为一名软件测试行业的老兵,笔者一直在致力于推动国内软件测试行业的发展,并为此做过许多努力。笔者从来都没有觉得软件测试是一个门槛低、没有技术含量、没有发展前景的行业。之所以会这样,是由于一些人的误解以及一些企业在测试领域的不专业导致的,而不是行业本身的问题。笔者在经历了多年的技术沉淀之后,决定通过编写一本书去影响更多的人,展现更多的测试技术。所以在写作本书之前,笔者为这本书定下了5个写作目标。
(1) 一定要讲透自动化测试开发的核心原理及代码实现,而不依赖于工具。
(2) 一定要让这本书在未来10年甚至更长的时间内仍然具有指导价值。
(3) 一定要通过这本书证明软件测试技术的难度不亚于任何一门开发技术。
(4) 一定要让这本书成为自动化测试开发领域的一个技术标杆。
(5) 一定要让读者在完成本书的深入理解和全程实战以后,成为一名高级测试工程师并具备架构师能力。
为了达到上述目的,为了能写出一本对中国软件测试行业特别是自动化测试领域有影响力的书,笔者搜集了大量素材,整理讲解思路,设计专门实验,对代码进行调试,在教学过程中进行实践,与各领域专家讨论等,才最终得以完成本书的编写工作。虽然本书并非十全十美,但是至少笔者已经全力以赴、认真对待了。请读者在字里行间去感受笔者的良苦用心,感受笔者对行业的焦虑、对从业者的忠告。
本书特色
那么,有了这样的写作背景后,应该通过怎样的写作方式才能够更好地传播这些技术及思想呢?笔者通过这些年来的实际研发管理经验以及一线培训讲师的经验得到了启发。要有效地传播知识,特别是技术,最好的方式并非眉飞色舞地演讲,而是让读者实战,进而总结思路、优化思路,获得进一步突破。所以本书在写作之初就定了一个基调:以项目为导向,以实验为依托,进行全程实战。一切知识点的讲解和思路的梳理都是为书中的项目和实验做准备的。测试开发本来就是一门实战出真知的手艺,所以,如果读者只是单纯地抄写代码、使用工具,而没有形成一套解决问题的思路和方法,那也注定无法学习到本书的精髓。
也正是因为如此,笔者在经过长期的实践后,总结出了一套人才培养模式,我们称之为“PBET人才培养模式”。此模式由六大核心要素构成,并成功应用于笔者所在机构“蜗牛学院”的实际教学应用当中。笔者也希望以这样的方式结合本书的实际演练,为技术管理者提供一些关于团队培养的新思路,具体方式如下。
(1) 项目驱动。通过贯穿项目进行连续的学习,可以更好地帮助学习者积累实战经验。
(2) 任务驱动。项目的长期性将导致反馈周期变长,所以项目应分为诸多任务进行。
(3) 团队化培养。传统培养模式强调个人能力的培养,而实际项目更强调团队作战。
(4) 对比式教学。利用不同的技术手段实现相同的功能,帮助学习者理解技术细节。
(5) 可视化教学。面对空洞的概念或逻辑等,应让其可视化,进而帮助学习者理解。
(6) 场景式教学。通过设定特定场景下的特定问题,进而探求各种可能的解决方案。
本书内容
全书共分为7个项目,项目之间的内容贯穿始终。
项目1主要为读者讲解自动化测试体系、笔者在自动化测试领域的思考以及为了后续的项目能够顺利完成所必备的环境搭建内容。
项目2是基于一个ATM机模拟系统,通过对该项目的讲解,让读者了解Java开发的核心知识,为后续的测试开发项目打好编程基本功。
项目3是基于一个小规模的Java程序,为读者详细讲解代码级接口测试的核心知识,并配合JUnit/TestNG两个业界常用的单元测试框架为读者进行演示。
项目4是基于笔者多年前研发的一套管理系统,为读者深入讲解协议级接口测试技术,也是本书非常重要的内容之一。
项目5主要专注于界面级黑盒测试自动化,包括对象识别原理及代码实现、Selenium WebDriver的核心对象及使用,也同时为读者介绍Appium的用法。
项目6主要关注协议级性能测试,以及如何利用原生的Java代码开发一套性能测试脚本,同时为读者讲解JMeter这款接口性能测试工具的核心用法。
项目7主要为读者讲解笔者自主研发的一套自动化测试框架CBT的核心部分的实现思路,帮助读者对自动化测试框架有一个深入的理解和认识,并且能够在实际的项目中运用起来。
本书在写作过程中得到了清华大学出版社的大力支持。这里也要特别感谢我的同事李懿、陈南、陈华、胡平、程萃等。最后,我要感谢“蜗牛学院”的学员们。正是由于我们无数日夜的教学和讨论,才有了本书的案例和思路。另外,特别感谢杭州的甘丽平、上海的孙姣阳、成都的陈乐、上海的黄亮亮、深圳的黄小芮,他们在本书的写作过程中提出了宝贵的意见和建议。
当然,这里更要感谢我的家人,特别是我的夫人和孩子给予了我很大的理解和支持。特谨以此书献给我的夫人和孩子,希望他们能够为他们最亲的人感到骄傲。
读者对象
(1) 软件测试工程师、测试架构师和测试主管。
(2) 相关培训机构的老师和学员。
(3) 自动化测试开发爱好者和从业者。
(4) Java编程爱好者及研发人员。
(5) 大中专院校的老师和学生。
编著者2018年2月
评论
还没有评论。