全栈软件测试工程师宝典pdf下载pdf下载

全栈软件测试工程师宝典百度网盘pdf下载

作者:
简介:本篇主要提供全栈软件测试工程师宝典pdf下载
出版社:清华大学出版社
出版时间:2020-09
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

内容简介

本书是是《软件测试技术实战 设计、工具及管理》一书的姊妹书,是一本全面介绍全面软件测试的书籍。分为上下两篇,上篇为技术篇(第1章——第5章),主要介绍软件测试技术;下篇为工具篇(第6章——第12章),主要介绍软件测试工具。通过对本书的阅读可以使您尽快从一位软件菜鸟变为测试领域的达人,当然这里需要您的努力和天赋。另外阅读此书后,您对于软件测试工作不会变得枯燥,让您可以在工作中享受逮BUG的乐趣。本书适合于有3年以上经验的软件测试从业人员,也适合于在校的本科生和研究生作为参考资料。

作者简介

顾翔,CCF会员,《软件测试技术实战-设计、工具及管理(第一版)》《基于Django的电子商务网站设计》作者。安卓绿色联盟2018年最受欢迎的讲师获得者。bugreport2script开源项目作者。

目录

目录

上篇技术篇

第1章软件测试的基本知识/3

1.1软件测试的定义/3

1.2软件测试术语/3

1.2.1场景测试法/4

1.2.2探索式测试/5

1.2.3快速测试/7

1.2.4基于模型的测试/8

1.2.5语境驱动学派/8

1.2.6肥皂剧测试/9

1.2.7DevOps/9

1.3软件工程模型/9

1.3.1瀑布模型及其衍生模型/10

1.3.2敏捷软件开发/11

1.4软件测试模型/12

1.4.1V模型/12

1.4.2W模型/13

1.4.3X模型/13

1.4.4敏捷测试模型/14

1.5软件测试方法/14

1.6软件测试步骤/16

1.7软件分析方法/16

1.7.16W2H法则/16

1.7.2CPIE模型/17

1.7.3SBTM/18

1.7.4HTSM/18

1.7.5ACC模型/20

1.8软件测试设计方法/21目录1.8.1基于传统的测试设计方法/21

1.8.2基于质量的测试设计方法/21

1.8.3基于经验的测试设计方法/21

1.9项目的质量三角形/21

1.10本章总结/22

1.10.1介绍内容/22

1.10.2案例/23


第2章软件测试分析与设计/24

2.1软件测试分析与设计重要性分析/24

2.2做好软件测试分析与设计工作需要的能力/25

2.2.1思维能力/25

2.2.2学习能力/28

2.2.3其他能力/31

2.3如何做好软件测试分析与设计/33

2.3.1探索式测试/33

2.3.2头脑风暴/33

2.3.3阅读测试用例与缺陷报告/33

2.3.4学好IT知识/33

2.3.5锻炼思维的游戏/34

2.4如何处理时间短、任务重的情形/34

2.5软件测试分析与设计的最高境界/34

2.6本章总结/35

介绍内容/35


第3章软件性能测试/36

3.1性能测试介绍/36

3.1.1性能测试的定义/36

3.1.2由于性能测试没做到位而发生的缺陷/36

3.1.3性能测试类型/37

3.1.4性能测试指标/40

3.1.5性能测试环境/46

3.1.6观察性能的4个维度/47

3.1.7性能测试的判断标准/49

3.1.8性能测试的场景/49

3.1.9性能测试的干系人/49

3.1.10负载测试的二分法找拐点的方法/50

3.1.11全链路压测/51

3.2性能监控/52

3.2.1Windows的性能监控/52

3.2.2Linux的性能监控/55

3.2.3Tomcat的性能监控/96

3.2.4MySQL监控/96

3.2.5JVM性能监控/97

3.2.6APM工具简介/102

3.3性能调优/103

3.3.1分析方法/103

3.3.2前端优化/104

3.3.3程序优化/104

3.3.4配置优化/104

3.3.5数据库优化/104

3.3.6结构优化/105

3.3.7JVM调优/111

3.4本章总结/113

3.4.1介绍内容/113

3.4.2案例/115


第4章软件安全测试/116

4.1软件安全知识概要/116

4.1.1软件安全分类/116

4.1.2软件的安全性与便捷性/116

4.1.3白帽子黑客和黑帽子黑客/116

4.1.4白帽子兵法/117

4.1.5软件安全三要素/119

4.1.6Web软件安全威胁OWASP Top 10/119

4.1.7同源策略/119

4.1.8HTTP简介/120

4.2软件安全测试/122

4.2.1XSS注入/122

4.2.2CSRF注入/139

4.2.3点击劫持/142

4.2.4HTML5的安全/146

4.2.5SQL注入/156

4.2.6其他代码注入/171

4.2.7HTTP参数污染/176

4.2.8信息侦探/179

4.2.9文件上传漏洞/181

4.2.10命令行漏洞/183

4.2.11XXE漏洞/187

4.2.12文件包含漏洞/191

4.2.13逻辑漏洞/195

4.2.14加密与认证/198

4.2.15DDoS攻击/213

4.2.16钓鱼和网页跳转/215

4.2.17ARP欺骗/217

4.2.18安全响应头信息/218

4.2.19其他高级技术/219

4.3App安全测试概要/220

4.3.1逆向工程反编译测试/220

4.3.2键盘劫持/221

4.3.3信息泄露/223

4.4安全测试流程/224

4.4.1需求阶段/224

4.4.2设计阶段/225

4.4.3开发阶段/227

4.4.4测试阶段/228

4.5本章总结/228

4.5.1介绍内容/228

4.5.2案例/231


第5章最新软件测试技术/232

5.1精准测试/232

5.1.1错误代码的跟踪/232

5.1.2回归用例的选取/232

5.1.3测试人员的绩效考核/233

5.2蜕变测试/233

5.3基于微服务的契约测试/234

5.4通过大数据分析软件测试日志/234

5.5AI测试/234

5.6本章总结/235

5.6.1介绍内容/235

5.6.2案例/235

下篇工具篇


第6章第6章软件测试工具与自动化测试/239

6.1软件测试工具与自动化测试介绍/239

6.1.1普通软件测试工具/239

6.1.2App移动端测试工具/240

6.1.3接口测试工具/240

6.1.4软件自动化测试框架/240

6.1.5软件测试工具的类型/241

6.2软件自动化测试基础知识/243

6.2.1软件自动化测试方法及实践/243

6.2.2自动化测试工具的分类和选择/254

6.2.3自动化测试数据的准备/255

6.3JDK和Python环境安装/257

6.3.1JDK环境安装/257

6.3.2Python环境安装/258

6.4本章总结/258

6.4.1介绍内容/258

6.4.2案例/259


第7章第7章单元测试框架/260

7.1Java单元测试框架JUnit 4 /260

7.1.1JUnit 4环境的配置/260

7.1.2JUnit 4测试用例的运行和调试/263

7.1.3对基本代码的详细介绍/266

7.1.4对JUnit 4的高级操作/267

7.1.5断言/271

7.1.6使用Ant来运行JUnit/272

7.1.7使用Java脚本发送测试报告/274

7.2Java单元测试框架TestNG/280

7.2.1在Eclipse中安装TestNG/280

7.2.2Maven安装以及在Eclipse中的配置/281

7.2.3建立基于Maven的单元测试项目/284

7.2.4TestNG的装饰器/288

7.3Python单元测试框架unittest/289

7.3.1unittest概述/289

7.3.2unittest的测试覆盖率分析/293

7.3.3unittest的断言/295

7.3.4unittest批量运行及报告产生/296

7.3.5使用Python脚本发送测试报告/297

7.4Python单元测试框架Pytest/298

7.4.1Pytest概述/298

7.4.2Pytest装饰器/302

7.4.3Pytest 常用命令行选项/303

7.4.4Pytest 运行并发测试/304

7.4.5配合allure生成Pytest 测试报告/305

7.4.6参数化/310

7.4.7用Pytest最终实现简易计算器测试用例/313

7.5本章总结/316

7.5.1介绍内容/316

7.5.2案例/317


第8章性能测试工具/318

8.1LoadRunner工具介绍/318

8.1.1LoadRunner简介/318

8.1.2LoadRunner 12性能测试工具架构/318

8.1.3LoadRunner 12 测试HTTP基本功能使用技巧/319

8.1.4用LoadRunner 12实现App压力测试/366

8.1.5案例分析/370

8.2JMeter工具介绍/374

8.2.1JMeter安装/374

8.2.2JMeter基本结构介绍/375

8.2.3JMeter的录制/376

8.2.4JMeter主要组件介绍/378

8.2.5案例分析/396

8.3Locust工具介绍/403

8.3.1设置/404

8.3.2书写代码及运行/404

8.4性能分析监控工具/407

8.4.1Linux性能监控工具nmon/407

8.4.2Tomcat监控工具Probe/409

8.5本章总结/411

8.5.1介绍内容/411

8.5.2案例/413


第9章软件功能测试工具/414

9.1UiAutomator工具介绍/414

9.1.1使用UiAutomator工具的优点/415

9.1.2下载和配置/415

9.1.3配置开发测试代码/416

9.1.4建立虚拟设备/419

9.1.5UiAutomator API详解/421

9.1.6案例分析/460

9.2Selenium 3.x介绍/464

9.2.1Selenium历史演变/464

9.2.2环境安装/465

9.2.3Selenium 3.x对浏览器的支持/469

9.2.4API介绍/470

9.2.5测试程序的优化/496

9.2.6批量运行/508

9.3Appium工具介绍/510

9.3.1系统安装/510

9.3.2运行第一个Appium测试程序/511

9.3.3Appium Server Capabilities/512

9.3.4API介绍/515

9.3.5案例分析/530

9.3.6BDD技术概要/532

9.4Espresso工具介绍/541

9.4.1环境的搭建/541

9.4.2API介绍/546

9.4.3案例分析/548

9.5基于Python的requests类的接口测试/549

9.5.1接口测试的初始阶段/549

9.5.2测试带有CSRF Token防护的接口/552

9.5.3利用Excel封装数据,基于数据驱动的接口自动化测试/553

9.5.4通过测试数据优化接口测试代码/554

9.5.5相对复杂的接口测试/561

9.5.6用Pytest框架来实现requests类的测试自动化/566

9.6其他自动化接口测试工具/572

9.6.1Postman/572

9.6.2HttpRunner/575

9.7本章总结/577

9.7.1介绍内容/577

9.7.2案例/579


第10章Jenkins的使用/583

10.1CI/CD/583

10.2安装/584

10.3初始化配置/586

10.4建立任务/588

10.4.1General/589

10.4.2源码管理/589

10.4.3构建触发器/591

10.4.4构建环境/591

10.4.5构建/591

10.4.6构建后操作/593

10.5运行/595

10.5.1自动构建/595

10.5.2构建结果说明/595

10.6本章总结/596

10.6.1介绍内容/596

10.6.2案例/597


第11章软件安全测试工具/598

11.1安全扫描工具/598

11.1.1Burp Suite/598

11.1.2AWVS/609

11.1.3AppScan/612

11.2专业测试工具/619

11.2.1CSRFTester/619

11.2.2SQL Map/620

11.2.3Pangolin/628

11.3信息侦探工具/629

11.3.1nmap/629

11.3.2DirBuster/634

11.4App反向编译工具/635

11.4.1Dex2jar、ProGuard和jdgui/635

11.4.2apktool/638

11.5本章总结/639

11.5.1介绍内容/639

11.5.2案例/640


第12章精准测试及其工具/641

12.1星云测试工具部署说明/641

12.1.1系统配置要求/641

12.1.2星云压缩包中的文件/641

12.1.3星云测试工具部署与启动/642

12.2星云工具插装编译说明/654

12.2.1星云测试脚本插装编译说明/654

12.2.2在Eclipse工具插装编译及打包Java项目/656

12.2.3在Tomcat中配置agent服务/658

12.2.4区分用户测试(设置用户标识)/658

12.2.5星云客户端示波器操作说明/659

12.3星云客户端功能说明/662

12.3.1函数列表功能说明/663

12.3.2函数调用图/666

12.3.3控制流程图/669

12.3.4简易控制流程图/670

12.3.5星云客户端测试台功能说明/671

12.3.6Bug与崩溃代码捕获/673

12.3.7多版本与累计覆盖率/675

12.4星云客户端企业项功能说明/677

12.4.1智能的回归测试用例选取分析算法/677

12.4.2测试用例的聚类分析算法/679

12.4.3缺陷定位算法/681

12.4.4最小测试用例集/681

12.4.5下载报表/682

12.5星云工具云报表平台说明/683

12.5.1登录Web平台/683

12.5.2项目信息/683

12.5.3测试用例——测试用例列表/684

12.5.4测试缺陷——Bug信息汇总/686

12.5.5覆盖率列表/688

12.5.6复杂度统计信息/689

12.5.7复杂度列表/690

12.6本章总结/691

介绍内容/691


附录A电子商务系统/693

A.1用户信息模块/693

A.2商品信息模块/693

A.3购物车模块/694

A.4送货地址模块/694

A.5订单模块/694

A.6订单支付模块/695

A.7数据库结构/695


参考文献/696


前言/序言

推 荐 语实践出真知。本书贯穿测试实践,涵盖了测试基本知识、测试工具和测试案例等内容,对于一线工程师的测试实践具有良好的指导作用。

——蔡立志ISO/IEC JT1 SC7 注册专家全国信标委委员、上海市计算机学会软件

工程专委会主任、上海市计算机软件技术开发中心副主任这不是一本单纯的工具书或者理论书。首先,它是一本可随时查阅的指南,当测试工程师接受一项全新的任务时,可以在这里找到从概念到方法、从范畴到工具的全部内容,快速构建做好这项工作的能力框架。其次,它是一本“桥梁书”,书中大量的案例、实例和相关背景知识,可以使测试工程师正确理解每一个概念或问题的源头,解决问题的思路,在每个细分领域帮助测试工程师跨越最初的障碍、少走弯路,直接连接相关专业更深、更广的知识体系。最后,它还是一本“新”书,即使随手翻一翻,也可以了解软件测试在新业务领域遇到的新挑战,目前工具和方法的最新进展等。感谢顾翔对测试领域的知识做了如此完整、细致的梳理和加工!

——杨晓慧曾任华为首席软件测试专家随着敏捷软件开发的普及,测试不再作为一个独立的阶段存在,测试人员也不再存在于一个独立的测试部门中,一些问题自然而然地涌现出来: 测试是否还有其价值?测试人员是否还有其价值?顾翔的这本《全栈软件测试工程师宝典》告诉我们,测试是一个专业性很强、不可或缺的职能: 测试的模型、分析、设计、方法、技术和工具等是一个系统工程。测试仍然有其价值,而保持专业性是测试人员的生存之道。

——王国良广发银行高级敏捷教练、真北敏捷社区发起人全栈软件测试是一种能力,强调快速学习不断更新测试的思维、方法、技术。本书知识面广,有理论也有丰富的实践,对于想领略全栈测试风景的所有人员,都能从书中找到需要的知识与答案。——肖利琼《软件测试之魂》作者软件研发是快速变化的领域,开发与测试相辅相成,共同进步。做好软件测试,不仅要求有坚实的基础,还要求不断学习和实践,甚至与编码开发互相融合,协同共生。今天的软件测试,已不能像过往的“铁路警察”,只管一段。软件测试工程师面临着“全栈”的要求。本书内容全面覆盖了单元测试、集成测试(今天的持续集成和持续交付)、系统测试等主要测试阶段,并重点分析了性能测试、安全测试等重点测试类型,还介绍了精准测试、微服务测试等测试新方向、新技术。本书与其姊妹篇《软件测试技术实战——设计、工具及管理》具有同样的特点,突出操作与实践。书中系统介绍了各个测试阶段中的典型测试框架和测试工具,供测试专业人员参考。

——陈晟软通动力测试专家推荐语软件测试在中国不仅仅是个岗位,也不仅仅是个行业,未来还会形成一个巨大的经济市场。学习软件测试将是对未来进行投资,全面掌握测试的技能技巧,认真地钻研测试的专业知识才能赶上发展的浪潮。本书是顾翔老师集多年的工作和培训经验全面总结的产物,里面由浅入深地阐述了软件测试的基本知识、环境搭建、专业工具以及测试的不同类型和领域。不同的人读这本书会有不同的收获,对于初学者来说是入门的手杖,对于有工作经验的人又是非常实用的工具参考书。相信读完这本书以后,你会收获满满,也会对其中提到的一些新概念、新理论引起共鸣,这种思维碰撞对您的软件测试认知将会是一个极大的提升。

——吴如伟安徽绿舟科技有限公司总经理 很荣幸为顾翔老师的新书写推荐语。近年来软件测试从思想和技术都有长足的发展,但质量保证始终是软件测试的核心,软件测试始终在软件行业中占有重要的席位。顾翔老师的新书不但能与时俱进,提出很多新的观点,而且能着眼于实践。从本书的内容来看,本书更适合有一定经验的测试者阅读,这样读起来会更有感觉一些。

——梅子绿盟科技研发经理本书是顾翔老师在《软件测试技术实战——设计、工具及管理》上的升级,内容在保留了原本测试理论基础知识的基础上,对测试工具与实践部分的内容进行了较大幅度的更新,书中的实例讲解也都全部基于新版本的测试工具进行了重写,使读者在学习完理论部分后可以很方便地进行实践。本书几乎涵盖了软件测试的方方面面,既有代码级别的单元测试,也有API测试和GUI测试,同时还详细讲解了安全测试和性能测试。全书知识脉络清晰,理论联系实际,工具使用讲解详细,不愧为全栈软件测试工程师的宝典之作。

——茹炳晟DELL EMC中国研发集团资深架构师、《测试工程师全栈技术进阶与

实践》作者、《软件测试52讲: 从小工到专家的实战心法》专栏作者本书是顾翔老师多年企业实践和培训经验的精华,在软件测试分析和设计方面,归纳总结的模型和方法适用于大部分企业测试工程师直接套用、快速上手,结合各类测试工具的基本应用知识,能辅助初学者快速进入工作状态。

——陈能技广州亿能测试技术服务有限公司技术总监与顾翔老师结识多年,他可谓我的良师益友。他无论是在学术研究,还是在方法实践上对软件测试都有着很深刻的理解。同时他也是国内不可多得的全栈型软件测试专家。本书有别于其他测试书籍,其行文安排和编著视角都别具特色: 整体分为上篇和下篇。上篇技术篇除了我们熟悉的基本理论、测试设计、性能测试外,还重点介绍了安全测试以及20多种攻击方式、测试方法和防御措施,并辅以案例解析;下篇工具篇更是帮助广大测试同行,能够响应各类型测试工作的快速落地。同时本书还将时下最新测试技术(如AI测试、大数据测试和持续集成工具等)做出了阐述。无愧为对“全栈”二字的定义。本书由浅入深、脉络清晰,阅读时更是感到生动和实用,值得推荐给广大软件测试读者。

——金鑫测试窝网(TestWo.com)主编、

广州紫鲸互联网科技有限公司CEO这是一个全新的时代,因为新概念遍布行业;这是一个倒退的时代,因为很多岗位的基础胜任水平都在发生倒退。测试是受此影响严重的细分岗位之一,大量从业者认为软件测试就是在待测产品上点、点、点的操作,而对测试岗位要求所知不多,对职业生涯前景感到忧虑。在此背景下,顾翔老师的《全栈软件测试工程师宝典》是一本可以帮测试从业人员,尤其是非科班出身的测试人员系统重塑职业认知的好书。书中结合大量实例,从基础概念、人员胜任力、测试工具的配置和使用、环境性能监控方法等方面,帮助读者塑造一个严谨的测试能力栈。

——吴言咨询师、培训师、隆正信息敏捷顾问提供快而全面的质量反馈,是测试工程师的价值所在。提供一时的质量反馈容易,长期持续性地保持快速全面的反馈,需要扎实的基本功和全面的知识体系,要在业务理解和专业技能方面下苦功。

发现一个缺陷不难,难的是有能力多维度低成本地发现更多的缺陷。一本涵盖了分析设计、性能测试、安全测试和自动化测试等多维度的测试技术书籍,应该可以在帮助同行开阔视野的同时,掌握傍身之技,获得知识带来的成就感,享受测试工作带来的乐趣。

——吴子腾《Selenium自动化测试之道》作者序 言 1C++之父Bjarne Stroustrup深刻地指出: “人类文明运行在软件之上。”随着20多年的高速发展,软件应用与软件服务已经渗透到人们衣食住行的方方面面,各行各业都对软件高度依赖。这给计算机行业带来了前所未有的机遇和空前激烈的竞争。为了应对快速变化的市场、满足用户日益增强的需求,“全栈工程师”的概念广受推崇。所谓“全栈工程师”,通俗地说就是掌握多种技术,能够独立设计并实现产品重要功能的工程师。其中,通晓多种技术是能力基础,独立工作并获得实质进展是核心目标。作为独立开发者,全栈工程师能够快速开发出功能齐备的软件;加入软件团队,他能够提升团队的研发效率,以更高的机动性应对变化的市场。

大型软件团队往往设置软件测试工程师的角色。随着行业的发展,团队也希望拥有“全栈软件测试工程师”: 他掌握多种测试技术和工具,能够综合应用于一个业务领域,并通过与开发工程师的有效协作来确保该领域的质量。全栈测试工程师的意义不仅是提升软件测试的绩效,更在于提升团队的整体实力。

全栈软件测试工程师需要在3个方面努力,以提升自己的实力。

(1) 妥善的测试设计。测试工程师需要仔细分析软件的业务领域和实现技术,针对其特点与风险,选择合理的测试技术,设计出缜密的测试方案。这要求测试工程师掌握业务知识、开发技术和测试方法,并合理利用。

(2) 高效的测试执行。良好的测试方案需要落实到有效的测试执行,而且在测试过程中不断演化。测试工程师需要掌握开发技术和测试工具,快速实施好的测试想法,通过持续测试,发现软件的问题。好的设计配合实用的工具,测试执行便如虎添翼。

(3) 坚持不懈地学习。在高速发展的软件业,新思想、新技术、新工具层出不穷。测试工程师需要敞开心胸,积极学习各种知识。“学习”包含“学”(吸纳知识)和“习”(应用知识)两个部分。测试工程师需要让两者相互促进,在实际工作中应用所学,一方面提高工作成绩,另一方面完善自身知识体系。

顾翔老师在软件测试领域耕耘20余年,积累了丰硕的理论成果和实践经验。《全栈软件测试工程师宝典》是顾翔老师近年来研究与实践的结晶,为测试人员进阶发展提供了扎实的建议和方法。

本书上篇重点介绍测试分析和设计的核心方法。以高难度的性能测试和安全测试为切入点,详细地展示了高效测试的方法和实践。作者多年的实战经验都沉淀其中,值得仔细品味。

下篇详细介绍多种测试工具和测试框架,并分享了测试自动化的实作与技巧。内容翔实,可操作性强。建议读者学习切合自身项目的工具,积极应用,通过实际测试来提升测试能力。

我衷心推荐本书给追求进步的软件测试工程师。希望读者在阅读时能结合自身领域仔细思考,并积极应用其中的思想、方法和工具,通过思考、实践、再思考、再实践的螺旋过程,稳步提升自身能力,在测试领域获得长足的进步。


史亮微软高级软件工程师2020年春节于西雅图软件测试的重要性序 言 2谷歌拥有大量优秀的软件工程师,但是优秀的工程师本身并不能保证产生优秀的产品和可靠的服务。我们需要高质量的程序,并且要确定它的运行与人们所预期的是一致的。软件产品早晚是要被测试的,或者是在软件上线之前由内部测试,或者是在软件上线之后被用户测试。很明显,软件最好在上线之前经过完美的测试,这样才能给用户带来美好的体验。

谷歌内部并没有正式的软件测试部门,所以对程序进行严格的测试是每个软件工程师的责任。这其中包括编写测试程序,建立测试所需要的软件架构以及与其他工程师合作进行系统测试等。人们最常用的就是自动测试,因为人工测试效率不高而且覆盖率比较低。自动测试技术是软件开发过程的一个重要组成部分,也是每个软件工程师必须掌握的一项基本技能。

下面简单地介绍一下在工作当中经常使用到的软件测试方法。

从测试的大小来分,首先是单元测试。它的特点是测试速度非常快,而且测试结果有确定性,因为所有不确定的部分通常都会被分离出来。软件工程师在写程序的同时必须写单元测试,而且必须与程序同时提交。有专门的程序健康工具来检测单元测试对所写程序的覆盖率。其次是集成测试。大多数产品或者服务都有多于一个模块进行互动,集成测试的目的是测试几个模块之间的互动。通常工程师在发出程序给同事审核的同时,单元测试和集成测试会被自动启动,而测试结果会自动发到你的邮箱。然后是端对端测试,它介于集成测试和系统测试之间。可以认为它是一种特殊的而且更大规模的集成测试。 端对端测试会启动整个系统,使它尽量接近于上线状态,每个用例(Use Case)都会测试这个系统是否满足产品的要求。由于它的运行时间较长,通常是在程序提交后运行。

从测试的目的来分,有回归测试,主要为了确定软件增加或者改变的部分没有影响软件中没有改变的部分。通常也是在程序发出审核的同时被自动启动。还有性能测试,是为了确保软件的整体性能达到设计要求,如响应时间和吞吐量。负载测试是常用的一种性能测试方法。人们还经常进行灾难测试,就是模拟各种灾难情况的发生,来测试软件是否能够应对。例如,服务器损坏,某个数据中心失去电源, 数据库损坏等。

顾翔所著的《全栈软件测试工程师宝典》非常全面,是一本不可多得的参考资料。书中引用大量实例,深入浅出地讲解了各种概念,阐述了软件测试的分析与设计,详细讲解了各种软件测试方法和各种软件测试工具的使用方法。无论是刚入职场的年轻人,还是有一定工作经验的软件工程师或软件测试师,都能从书中获得收获或者受到启发。特别是做过一些完整的软件项目,或者是有几年工作经验之后,再回过头来读这本书,你一定会有不同的感受。

无论是要成为一名优秀的软件工程师或者软件测试师,都需要不断地学习和积累,不断地思考与实践。最好工作中能有一位能不断指点自己的导师,这样能够进步更快。好的书籍,也像好的导师一样,能够让读者成长得更快。“世上无难事,只怕有心人。”也许每个人的天赋不尽相同,不是每个人都能成为天才,但是通过自己的努力,我们都能够成为优秀的软件人才!


王隗谷歌高级软件工程师2019年12月29日晚于纽约前言2017年6月,笔者的第一本书《软件测试技术实战——设计、工具及管理》出版后,在业界受到了好评。2年多过去了,随着笔者在各个软件企业中的内训和咨询工作的展开,更加了解软件企业在实际生产过程中的痛点,企业对自动化测试、性能测试以及安全性测试的需求日益增加。另外,软件测试技术特别是软件自动化测试工具得到迅猛发展,在2017年,LoadRunner 11.0(运行在Windows 9平台)、UiAutomator 1.0、Selenium 2.0,测试工具语言主要还是Java。现在LoadRunner已经升级到了12.0,可以运行在Windows 10平台;UiAutomator升级到了2.0版本;Selenium升级到了3.0版本,并且,在2019年12月25日,Selenium 4.0隆重推出(计划赶不上变化,本书仍以Selenium 3.0为基础进行介绍)。开发语言也逐步转向Python语言。从2020年1月1日开始,官方宣布不再支持Python 2.x。于是笔者产生了对《软件测试技术实战——设计、工具及管理》进行更新的想法,原本想作为《软件测试技术实战——设计、工具及管理》的第2版进行出版,但是在写作过程中,笔者发现需要增加的内容还是比较多的,且原书的许多内容还是比较有用的。如果既保留原书有用的部分,再加上新内容,这本书会变厚。所以在清华大学出版社白立军的建议下,新书命名为《全栈软件测试工程师宝典》,作为《软件测试技术实战——设计、工具及管理》的姊妹篇。从内容上看,《全栈软件测试工程师宝典》更适合于中高级用户使用。

本书分为上下两篇,上篇为技术篇(第1~5章),主要介绍软件测试技术;下篇为工具篇(第6~12章),主要介绍软件测试工具。

第1章软件测试的基本知识。主要介绍软件测试的基本知识,包括软件测试的定义、软件测试术语、软件工程模型、软件测试模型和软件测试方法等内容。

第2章软件测试分析与设计。比软件测试知识更重要的是软件测试思想。本章没有介绍具体的软件测试分析与设计的方法,而是介绍如何培养软件测试分析与设计的思想。

第3章软件性能测试。介绍软件性能测试的技术和方法,主要包括性能测试知识、性能监控和性能调优。

第4章软件安全测试。介绍基于Web的软件安全测试的技术和方法,主要包括软件安全知识、软件安全测试、安全测试流程。“20多种Web软件安全技巧”是本章的重点,主要分为原理、测试技巧和防御方式。

第5章最新软件测试技术。简要地介绍5种最新软件测试技术,包括精准测试、蜕变测试、基于微服务的契约测试、通过大数据分析软件测试日志和AI测试。前言第6章软件测试工具与自动化测试。主要介绍软件测试工具与自动化测试的理论基础、方法论以及JDK和Python环境安装。

第7章单元测试框架。现在几乎所有的自动化测试都是基于单元测试框架进行开发的。本章主要介绍基于Java的JUnit、TestNG和基于Python的unittest、Pytest单元测试框架。

第8章性能测试工具。介绍软件性能测试的工具LoadRunner、JMeter和Locust以及两种性能分析监控工具。

第9章软件功能测试工具。介绍5类基于功能的自动化测试工具,它们分别是UiAutomator、Selenium、Appium、Espresso和接口自动化测试工具。UiAutomator和Espresso分别是基于安卓的集成测试和单元测试工具;Appium是基于安卓和iOS的自动化功能测试工具,它既可以测试原生态App,也可以测试基于HTML5的App;接口自动化测试工具分为基于Python的requests类、Postman和HttpRunner,重点介绍基于Python的requests类。

第10章Jenkins的使用。主要介绍实现CI/CD的Jenkins工具的基本使用方法。

第11章软件安全测试工具。介绍现在业界主要使用的安全测试工具,分为安全扫描工具、专业测试工具、信息侦探工具和App反向编译工具。

第12章精准测试及其工具。介绍精准测试创始人创建的开发平台——星云测试平台。

本书内容可以从头到尾顺序阅读,也可以分章单独阅读。建议第3章和第8章结合阅读,第4章和第11章结合阅读。

本书所有代码和配套讲座文件,读者可以从清华大学出版社网站本书页面的“资源下载”处获得下载信息。作者的个人邮件和微信号信息也可从此处下载。

在此感谢周辰晨、马鸿翔、沈晓静、吴雨青、陈玉毅、孙华琳、陈杰、郑达、李盛原,他们帮我审核了原稿;也要感谢白立军的热情鼓励支持;同样也感谢家人对我的支持,由于写这本书,失去了许多陪伴你们的时光。

说明: 书中程序运行的结果表示存储空间大小的k在程序中是小写,在正文中是大写。

由于本人水平以及时间有限,书中难免存在错误或者不足之处,请广大读者不吝指正。另外,可以加入我的微信公众号“软件测试培训”,共同享受软件测试给大家带来的乐趣。


顾翔2020年4月7日于上海