本书2020年由清华大学出版社出版 ,是《软件测试技术实战 设计、工具及管理》一书的姊妹书,是一本全面介绍全面软件测试的书籍。分为上下两篇,上篇为技术篇(第1章——第5章),主要介绍软件测试技术;下篇为工具篇(第6章——第12章),主要介绍软件测试工具。本书适合于有3年以上经验的软件测试从业人员,也适合于在校的本科生和研究生作为参考资料。
上篇技术篇
第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
本书2020年由清华大学出版社出版 ,是《软件测试技术实战 设计、工具及管理》一书的姊妹书,是一本全面介绍全面软件测试的书籍。分为上下两篇,上篇为技术篇(第1章——第5章),主要介绍软件测试技术;下篇为工具篇(第6章——第12章),主要介绍软件测试工具。本书适合于有3年以上经验的软件测试从业人员,也适合于在校的本科生和研究生作为参考资料。
实践出真知,本书全文贯穿测试实践,涵盖了测试基本知识,测试工具,测试案例等内容,对于一线工程师的测试实践具有良好的指导作用。
——蔡立志,ISO/IEC JT1 SC7 注册专家全国信标委委员、上海计算机学会软件工程专委会主任、上海计算机软件技术开发中心副主任
这不是一本单纯的工具书或者理论书。首先。它是一本可以随时查一查的指南,当测试工程师接受一项全新的任务的时候,可以在这里找到从概念到方法、从范畴到工具的全部内容,快速构建做好这项工作的能力框架。其次,它是一本“桥梁书”,书中大量的案例、实例和相关背景知识,可以使测试工程师正确理解每一个概念或问题的源头,解决问题的思路,在每个细分领域帮助测试工程师跨越最初的障碍、少走弯路,直接联接到相关专业更深、更广的知识体系。最后,它还是一本“新”书,即使随手翻一翻,也可以了解软件测试在新业务领域遇到的新挑战,目前工具和方法的最新进展等。感谢顾翔对测试领域的知识做了如此完整、细致的梳理和加工!
——杨晓慧 前华为首席软件测试专家
随着敏捷软件开发的普及,测试不再作为一个独立的阶段存在,测试人员也不再存在于一个独立的测试部门中,一些问题自然而言的涌现出来:测试是否还有其价值?测试人员是否还有其价值?顾翔的这本《全栈软件测试工程师宝典》告诉我们,测试是一个专业性很强、不可或缺的职能:测试的模型、分析、设计、方法、技术、工具等是一个系统工程。测试仍然有其价值,而保持专业性是测试人员的生存之道。
——王国良,广发银行高级敏捷教练、真北敏捷社区发起人
全栈软件测试是一种能力,强调快速学习不断更新测试的思维、方法、技术,本书知识面广,有理论也有丰富的实践,对于想领略全栈测试风景的所有人员,都能从书中找到需要的知识与答案。
——肖利琼,《软件测试之魂》作者
软件研发是快速变化的领域,开发与测试,相辅相成,共同进步。做好软件测试,不仅要求有坚实的基础,更要求不断学习和实践,甚至与编码开发互相融合,协同共生。今天的软件测试,已不能像过往的“铁路警察”,只管一段。软件测试工程师,面临着“全栈”的要求。
《全栈软件测试工程师宝典》一书,在内容上全面覆盖了单元测试、集成测试(今天的持续集成和持续交付)、系统测试等主要测试阶段,还重点分析了性能测试、安全测试等重点测试类型, 并介绍了“精准测试”、微服务测试等测试新方向、新技术。《全栈软件测试工程师宝典》一书与他的姊妹篇,《软件测试技术实战设计、工具及管理》,具有同样的特点,突出操作与实践。书中系统介绍了各个测试阶段中的典型测试框架和测试工具,供测试专业人士参考。
——陈晟 软通动力 测试专家
软件测试在中国不仅仅是个岗位,也不仅仅是个行业,未来还会形成一个巨大的经济市场。学习软件测试将是对未来进行投资,全面掌握测试的技能技巧,认真的钻研测试的专业知识才能赶上发展的浪潮。本书是顾老师集多年的工作和培训经验全面总结的产物,里面由浅入深的阐述了软件测试的基本知识、环境搭建、专业工具以及测试的不同类型和领域。不同的人读这本书都会有不同的收获,对于初学者来说是入门的手杖,对于有工作经验的人又是非常实用的工具参考书。相信这本书读完以后,你会收获满满,也会对其中提到的一些新概念,新理论引起共鸣,这种思维碰撞对您的软件测试认知将会是一个极大的提升。
——吴如伟 安徽绿舟科技有限公司 总经理
很荣幸为顾老师的新书推荐。近年来软件测试从思想和技术都有长足的发展,但质量保证始终是软件测试的核心,软件测试始终还是在软件行业中占有重要的席位。顾老师新书能与时俱进,提出很多新的观点,又能着眼实践。从本书的内容来看,本书更更适合有一定经验的测试者阅读,这样读起来会更更有感觉一些。
——梅子,绿盟科技,研发经理
本书是顾翔老师在《软件测试技术实战设计、工具与管理》上的升级,内容在保留了原本测试理论基础知识的基础上,对测试工具与实践部分的内容进行了较大幅度的更新,书中的实例讲解也都全部基于新版本的测试工具进行了重写,使读者在学习完理论部分后可以很方便地进行实践。本书几乎涵盖了软件测试的方方面面,即有代码级别的单元测试,也有API测试和GUI测试,同时还详细讲解了安全测试和性能测试,全书知识脉络清晰,理论联系实际,工具使用讲解详细,不愧为全栈软件测试工程师的宝典之作。
——茹炳晟 DELL EMC中国研发集团 资深架构师、《测试工程师全栈技术进阶与实践》作者、《软件测试52讲:从小工到专家的实战心法》专栏作者
本书是顾翔老师多年企业实践和培训经验的精华,在软件测试分析和设计方面,归纳总结的模型和方法适用于大部分企业测试工程师直接套用、快速上手,结合各类测试工具的基本应用知识,能辅助初学者快速进入工作状态。
——广州亿能测试技术服务有限公司 技术总监 陈能技
与顾翔老师结识多年,可谓我的良师益友。无论是其学术研究,还是在方法实践上都有着很深刻的理解。同时他也是国内不可多得的全栈型软件测试专家。本书有别于其他测试书籍,其行文安排和编著视角上别具特色:整体分为上下篇。上篇除了我们熟悉的基本理论、测试设计、性能测试外,还重点介绍了安全测试以及二十几种攻击方式,测试方法和防御措施,并辅以案例解析;下篇工具篇更是帮助广大测试同行,能够响应各类型测试工作的快速落地。同时本书还将时下最新测试技术(如AI测试、大数据测试、甚至持续集成工具等)做出了阐述。无愧为对“全栈”二字的定义。本书由浅入深、脉络清晰,阅读本书时更是感到生动和实用,值得推荐给广大软件测试读者。
——金鑫 测试窝网(TestWo.com)主编
广州紫鲸互联网科技有限公司 CEO
这是一个全新的时代,因为新概念遍布行业;这是一个倒退的时代,因为很多岗位的基础胜任水平都在发生倒退。测试是受此影响严重的细分岗位之一,大量从业者认为软件测试就是在待测产品上点点点的操作,而对测试岗位要求所知不多,对职业生涯前景感到忧虑。在此背景下,顾翔老师的《全栈软件测试工程师宝典》是一本可以帮测试从业人员,尤其是非科班出身的测试人员系统重塑职业认知的好书。书中结合大量实例,从基础概念、人员胜任力、测试工具的配置和使用、环境性能监控方法等方面,帮助读者塑造一个严谨的测试能力栈。
——吴言 咨询师、培训师、隆正信息敏捷顾问
提供快而全面的质量反馈,是测试工程师的价值所在。提供一时的质量反馈容易,长期持续性地保持快速全面的反馈,需要扎实的基本功和全面的知识体系,要在业务理解和专业技能方面下苦功。
发现一个缺陷不难,难的是有能力多维度低成本地发现更多的缺陷。一本涵盖了分析设计,性能测试,安全测试,自动化测试等多维度的测试技术书籍,应该可以在帮助同行开拓视野的同时,掌握傍身之技,获得知识带来的成就感,享受测试工作带来的乐趣。
——吴子腾 《Selenium自动化测试之道》第一作者
清华大学出版社成立于1980年6月,是教育部主管、清华大学主办的综合性大学出版社。2009年4月由国有独资全民所有制企业改制为有限责任公司。2014年10月成立清华大学出版集团。作为国内领先的综合性教育与专业出版机构,清华社先后荣获 “先进高校出版社”“全国优秀出版社”“全国百佳图书出版单位”“中国版权最具影响力企业”“首届全国教材建设奖全国教材建设先进集体”等荣誉。