¥ 132.03 7.9折 ¥ 168 全新
库存5件
作者顾翔
出版社清华大学出版社
ISBN9787302555254
出版时间2020-09
装帧平装
开本16开
定价168元
货号29143243
上书时间2024-11-07
推 荐 语实践出真知。本书贯穿测试实践,涵盖了测试基本知识、测试工具和测试案例等内容,对于一线工程师的测试实践具有良好的指导作用。
——蔡立志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日于上海
本书是作者总结十几年的软件测试的实践经验写成的,希望通过来自一线的实践知识和技能,帮助读者打开一扇通往软件测试之路的大门,寻找到解决测试问题的技术、技巧和方法,体验到测试工作中“逮”Bug犹如“寻宝”的乐趣。全书分为“设计”“工具”和“管理”3篇,共14章,每章的内容虽有一定的联系,但也可各自独立,读者可以根据自己的需求,按照书的内容顺序阅读,也可以根据自己的兴趣选取相关章节阅读。
顾翔,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
— 没有更多了 —
以下为对购买帮助不大的评价