为什么要写这本书1)人不能像走兽那样活着,应该追求知识和美德。——但丁2)助人为乐,人生一美德。
我们4个作者加起来年龄过百,而且有着年超半百的工作经验,算起来也是测试领域的老鸟了。
根据上面的1)和2),我们得出一个很重要的结论:
经过这么多年在工作中不断总结经验,时不时与Bug斗智斗勇,最后提炼出来的经验,我们希望能分享给更多的人,更重要的是能抛砖引玉,引发对更优秀的工作方式和实践的思考。
为什么需要看这本书怎样判断你是否需要这本书?以下场景,如果8条以内你都似曾相识,那么请看这本书吧!
1)测试过程中,某个功能的测试除了依据需求文档编写测试用例,好像找不到别的测试点了。
2)按需求文档编写的测试用例,执行过后测试都通过了,但自己还是没有信心,总觉得还有没测到的地方。就像都出门了,还在怀疑自己究竟是否锁门了。
3)产品上线了,Bug出来了。为什么老是遗漏?4)当前测试的功能怎么和之前项目的很相似,当时还发现了一个很有意思、很难发现的问题,可现在居然想不起来了。接着,又重新慢慢摸索。要是有记录可以翻查多好!
5)发现一个Bug,提交请求修复时,却被要求提供更多信息。更多信息?怎么提供,不知道,找不着,没头绪。
6)团队其他测试人员遇到技术问题,我却只能抓耳挠腮,无法提供更多帮助,怎么办?7)分析测试进度和风险时,文档是写了,内容却无关痛痒。问题的实质在哪里?貌似离我有点远。
8)开发过程中,不知道自己编写的代码质量怎样,哪些Bug会变身为“大笑话”。
你符合哪一条或者哪几条?这本书到底写了些什么归根结底:总结工作中发现、解决Bug的经验,并通过一个个活生生的故事描述出来,能让你开拓思维、唤起记忆、深入知识、学以致用,把这些经验积累的精华举一反三地运用到自己的项目中。
本书特色以大型购物网站Web测试为背景场景,以初入测试领域的小蔡为主人公,以功能测试、性能测试、安全性测试、自动化测试、移动Web测试、非功能性测试以及其他类型的测试为主线,向大家展示不同测试场景下,如何发现、分析并解决问题。
本书通过对故事的分析,引出缺陷出现的规律和模式,并通过对缺陷模式的总结和抽象化,提示大家在以后的测试中如何更高效地捕捉类似缺陷。
本书并没有详细描述如何通过对Bug的分析发现开发人员的开发模式,以避免缺陷。所以,如何预防开发人员编写存在缺陷的代码,帮助他们了解自己的弱点,使之有针对性地提高,就需要读者们从这一个个小故事中“悟”。
读者对象测试工程师测试经理业务分析师产品经理系统架构师其他对测试技术感兴趣的人员如何阅读本书本书着重讲解Web测试中可能遇到的各种问题以及思考和解决思路,包括以下10章内容。
第1~4章 这4章重点介绍了Web测试中最为关键的功能测试,并从开发和测试技术、测试覆盖率、测试实践及业务需求4个方面分析了功能测试中Bug产生的原因及其解决思路。
第5、6章 详细介绍在Web测试中安全和性能测试要怎么做,作为一个非专业安全/性能测试的人员,从思维和实践上如何进行安全和性能测试。
第7章 详细介绍在进行Web自动化测试过程中你可能遇到的各种“坑”,以及如何应对和预防。
第8章 详细介绍了在移动应用迅猛发展的浪潮下 ,针对移动Web测试我们需要进行什么样的调整。
第9章 介绍了非功能性的其他测试,例如可用性测试及本地化和全球化测试是如何运用在项目中,保证产品质量的。
第10章 通过介绍在需求澄清、测试环境管理和运维中的测试实践,阐述如何通过这几方面的测试活动提升产品质量。
附录A介绍了可以移植到更多项目中的Web测试优秀实践,附录B为广大测试人员展现了可以大展宏图的职业路径。
希望读者在开始阅读本书之前,已具备基础的测试理论知识。在阅读中,希望读者能在阅读完每一个故事后,留给自己一点时间重新审视故事的内容,想一想故事中的场景与自己工作中的相似之处,触类旁通地解决类似的问题或者运用相应的实践进行质量提升。
勘误和支持由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,欢迎通过邮箱
[email protected]联系我们,期待能够得到你的真挚反馈,在技术之路上互勉共进。
致谢我们要特别感谢师洁以及ThoughtWorks中国区的QA们,也要感谢机械工业出版社华章公司的策划编辑高婧雅在写作上的支持与鼓励。
谨以此书献给我们最亲爱的家人,没有你们的鼓励和支持,我们就不会这么全身心地投入到本书的创作。
最后感谢购买和阅读本书、热爱测试技术的朋友们!
黄勇 雷辉 徐潇 杨雪敏
Preface?序 一几个月前,机械工业出版社华章公司的高婧雅找我,扔给我一个章节,说是黄勇团队的新书,让我帮忙看看。我当时是一口气看完,还意犹未尽地问高姐,还有没有其他的。我是有惊喜到的。这行文的风格让我想起了另外一本书——《Ruby元编程》,一本非常有趣的技术书。当时我就想等到黄勇的书问世,会又多了一本类似的书。
我看的技术书不多,软件测试相关的书籍就更少了,主要的原因是过于枯燥,要么是长篇的理论,要么就是不入流的翻译,更多的是工具书,通常会在用到的时候才去翻一翻。而对于黄勇这本书,我感觉我会愿意带在身边,在地铁上翻翻,在咖啡间读读。能把软件测试的理论实践写成了一个个软件测试工程师亲身经历的故事,黄勇应该是首创,其生动有趣又不乏思考。
在那之后,我常常会问高姐这本书的进度,因为我非常想把这本书分享给我们 TesterHome 的成员们。上个礼拜,黄勇在微信上找我,我想这书成了。黄勇给我4个章节,这次我没有一下看完,而是一篇篇仔细研读。小故事(实际案例)提取出“核心知识点”,再延伸到“拓展知识点”,给人一种身临其境的感觉,好像在做这项测试的就是读者自己。作者在案例的选择上非常用心,典型又不失新意,浅显又不乏深意。提炼出来的核心知识点简约严谨,针对性强,不拖泥带水。“拓展知识点”类似语文课本里的课后阅读。
粗略看了下目录,该书涉及了网页应用的功能、安全、性能、自动化等测试内容,也涉猎了移动端相关的实践。从我看的内容来看,非常适合有一两年软件测试经验的读者阅读,在此也欢迎大家来 TesterHome 社区多写书评。(“无耻”的广告,真想拉黄勇做一波赠书的活动。)软件测试圈里不缺各种严肃的学院派书籍,也不缺各种实干派的工具书,前者还好,后者往往是从事软件测试的IT人员写的,这种书普遍有个特点就是文笔不好,行文生硬刻板,读起来毫无趣味。我一直非常固执地认为,书一定是要有笔力的人写出来才好,我看过黄勇的博客,这次再看到这些章节,我认为从文笔上来说,这是本合格的书。
读书容易写书难,一字一句费思量,希望软件测试工作者能好好珍惜这本书。
——张立华(恒温),TesterHome社区发起人,阿里口碑高级测试工程师Preface?序 二2006年开始软件测试的生涯,记得当时讲软件测试的书并不多,有几本比较好的书也是从国外引进翻译来的。十多年过去了,从一开始做PC端的应用程序的功能测试,到后来做Web系统的自动化测试,目前在互联网公司负责电商业务后台系统的持续集成方案。期间经历了软件测试行业的不断发展,测试工程师的职责和作用也在不断发生着变化,对测试工程师的要求也越来越高。
想要成为一名合格的测试工程师,入门首先需要具备基本的软件测试理论基础;要能开展工作,就必须要了解所在行业的业务背景知识;要想更多地发现缺陷和更准确地定位缺陷,还要学习Web系统或移动应用相关技术知识;想更进一步,全面提升软件质量,就需要从代码、功能、安全、性能和易用性多个层面去着手。本书是一本难得的涉及以上所有这些知识和技能的著作,通过案例教学的方式生动地再现了真实的工作场景,从实际案例场景引发读者思考,又由思考激发读者对相关知识和技能的学习兴趣,通过这样一个又一个的学习旋转式上升,引导读者逐层深入,逐步窥探到做一名合格软件测试工程师所需的知识与技能图谱。
现在很多的互联网企业里,大都会有软件测试工程师和测试开发工程师两种角色。那么他们都是为软件质量负责的吗,区别又在哪里呢?软件测试工程师更加偏重于测试,比如功能测试、性能测试、安全测试,等等;而测试开发工程师更加偏重于开发,包含自动化测试框架开发、性能测试工具开发、安全测试工具开发与其他质量与效率的工具开发等。产生这两种分工的原因在于互联网企业对速度的追求,要达到快速交付、快速收集与反馈、快速进入下一个迭代,那么就需要在提升效率上下一番工夫,这时候就可以通过应用一些开源工具或者自研工具来提升测试阶段乃至整个研发阶段的效率。了解到这两种角色的职责和作用,那么我们软件测试从业者在自己的职业发展生涯中就能够找准自己的方向,不断提升自己的技术能力和业务能力。
黄勇老师目前所在的ThoughtWorks公司是把敏捷思想引入中国的先驱,在敏捷软件开发和敏捷测试理论的落地方面处于行业领先地位。敏捷软件开发思想进一步拓展了作为软件测试工程师的职责范围,敏捷思想鼓励职责模糊,整个团队都要为质量负责,而不只是软件测试工程师;鼓励团队成员在软件开发全过程中参与软件质量的保证,而不只是等开发阶段完成以后再开始关注质量;提倡持续交付和自动化测试,通过整个软件开发流程的自动化来提升软件交付效率。那么在这样的一种思想指导下,软件测试工程师就可以做更多的工作,比如参与到需求阶段,通过实例化需求和BDD(行为驱动开发)的方式来使需求对技术人员而言更易懂、自动化和友好;也可以参与到软件开发阶段,通过构建持续代码扫描机制来提升代码的质量;还可以参与到运维发布阶段,通过构建持续交付的流水线来实现产品的快速发布。
随着IT行业的发展,软件测试也跟着从一开始的PC端应用程序测试,到Web应用程序测试,再到移动互联网测试。这样对软件测试工程师的要求也不同了,本书通过案例的形式讲解了在Web应用程序测试和移动互联网测试中遇到的一些问题与处理方法。我看完本书以后,问黄勇老师“这些案例都是真实的吗?”黄勇老师说都是真实的案例。通过在日常软件测试工作中发现的一些有意思的缺陷的收集,进一步分析产生该缺陷的前因后果,并且给出发现该缺陷所用到的关键技能和知识。这种趣味性和知识性兼备的方式,吸引着我一口气看完了全书,看到一些似曾相识的案例时,也不由得会心一笑。非常希望我们软件测试行业能有更多这样的好书。
——熊志男,测试窝测试社区创始人,京东商城高级测试开发工程师Preface序 三随着中国软件行业的发展,在IT和互联网技术的广泛应用、用户对产品质量有了更高追求的推动下,中国的软件测试行业在最近几年也有了飞速的发展。与第一代软件测试人员是从经验丰富的程序员直接转岗不同,从各大高校的软件工程、计算机相关专业招聘软件测试工程师(即校招)已经变成了各大公司的主要途径。由于大多数学校里并没有成体系的软件测试的课程,很多同学对软件测试这个岗位也并不是十分的了解,甚至有时候选择软件测试的原因是工作相对轻松或者其代码能力达不到程序员的要求等。
大量的新手进入软件测试行业后,中小公司内部相对比较缺乏专业技术培训和正确的引导,频繁且重复的黑盒测试执行工作使很多测试新人觉得软件测试是一个没有技术含量也没有前途的工作。然而,软件测试其实是一个很依赖于经验的岗位,有丰富产品测试经验和对产品实现有深入理解的测试工程师就像一位大师,往往能在短时间内发现和定位一个问题并提出建议的解决方案。对有志于投身软件测试领域和仍然处在入门阶段的初学者来说,市面上多数的书籍偏理论化,阅读起来枯燥乏味,在实际项目中又无法落地,更谈不上进阶为高手了。就像《后会无期》里的那句话,“听过很多道理,却依然过不好这一生。”
黄勇是行业内资深的质量分析师,拥有多年软件测试背景,他善于分析归纳和总结经验,并且总会用通俗、轻松的语言来讲述枯燥的技术知识。上一次他的《移动App测试的22条军规》一书通过22条来自于测试实战中的最佳实践展示了移动App测试中心思想,这次他总结了Web测试过程中常见的测试类型和常见问题,把Web测试的核心知识点、扩展知识点与实际的测试任务结合起来,通过测试新人小蔡遇到的一个个真实的场景和案例,让读者学有所得,并引发思考。
很高兴黄勇愿意用一本书来分享他在Web测试领域的心得,这是一本用心写就的书,也希望每一位读者用心去学习、去思考、去实践,借鉴前辈们的经验快速地成长,享受学习带来的快乐。
——陈永康,网龙网络公司软件测试总监