How We Test Software at Microsoft 读书笔记 (一)

 

 

第一次听说这本书是一位同事的推荐,然后去amazon.cn上找了找,居然发现有原版(不是影印版啊,拿到手上感觉完全不一样啊),才100多块,于是 就买了。看了前面几章,觉得很不错,关于测试的很多疑惑他们给出了微软的答案,是很好的参考。建议读一下第一部分,关于微软的软件测试,if you plan to take software testing as a profession seriousy, 因为很难找到更好的参考了。
其 实个人不是很认同MS想一统天下什么都做的产品策略,但是就engineering而言,MS还是很值得敬佩的。在软件测试领域也是如此,本书的三位作者 (Alan Page, Ken Johnston和Bj Rollison)都是这方面的牛人,还有跳去Google做测试总监的James Whittaker,还有维护pair-wise网站和PICT工具的Jacek,也是MS的engineer,可见一斑啊。大家只看到他们的产品,而忽 视了他们背后强大的工程团队,那个10K+的developer和10K+的SDET(like tester)。
 
首先来说说关于Test Design的部分吧,关于Chap 4,属于第二部分,"About Testing"。
Alan Page已经升任test director,所以这一章写得比较high level一些,后面两章Bj Rollison关于具体测试方法的部分就比较detail了。

就像写code先要做design一样,做测试也先要design,这一部分做得好不好直接决定了后面工作的效果和效率,因而是很重要的。这一章更像是抛出了很多问题,很多需要在test design的时候考虑的问题。例如,

1. 该什么什么样的测试模式 (test pattern)
做 OO的开发大家都知道Gang of 4写的design pattern,测试也一样有pattern,称为模式吧。这里的模式包含等价类划分,边界值分析等常用的设计方法。做测试设计的时候需要了解业界这样被 证明有效的模式,然后结合自己的项目和产品特性来看哪些是适合的,可以应用的。模式还有一个好处就是便于团队内部的沟通,提到等价类划分大家马上就知道是 怎么回事,大概要怎么做,不用解释半天。

2. 测试时间的估计
对于测试团队,这一直是个问题。项目经理会问team需要多久,manager或者Team lead会问某个team member你测这个模块需要多久。这个问题大概不会有什么标准答案,但是我们可以从一些方面来思考,包括,
历史数据 : 有没有前面项目的经验可以参考?
复杂度 :    看看被测的产品或者功能的复杂度如何,这个可以从相关的设计文档来看,也可以和对应的开发人员沟通,听听他们的意见。
业务目标 :  我们要做的产品时一个prototype(原型)还是一个正式的商业产品,又或者是一个mission critical的产品,比如人命关天的设备。对于这几类不同的产品,测试的要求是不一样的。相信很多公司都有些预研性的项目,这些项目的业务目标是尽快 的做出原型,以便验证这样的产品会不会有市场,有没有可能发展成成熟的产品。通常而言,这样的产品测试的力度要比成熟的产品小很多,有些测试类型甚至都不 用考虑,比如兼容性测试和安全性测试。这个可能也导致在不同部门工作的同事对测试的类型和方式会有不同的理解。
兼容性 :    如果一个产品需要符合一些标准,或者需要认证,那么这一部分的测试时间也要考虑进去。有些时候,标准要求的测试和我们平常做的功能测试着眼点不同,可能有些场景对于我们来说意义不大,但是标准要求,也得去测。

书上提到上面四点,不过我想,实际中还有很多的因素需要考虑,比如团队的成熟度,还有大家对产品所用的新技术的了解程度和学习时间。其实估计测试时间是一 件很难的事情,因为有一部分是依赖于产品的质量,这里面包含两层意思,一是在测试执行的过程中,如果问题比较多,那么花在提bug,和开发人员确认,以及 fix了之后的verification的时间就会比较多。另一方面,问题很多,regression的时候范围通常要更广,测试也可能会更多。还有一点 是如果有一些blocking的case,对时间还会有影响。关于这样的问题,需要和开发团体密切的配合,及时的沟通和调整,当然在制定测试计划之初就要 留出一些时间来做bug的讨论和验证。

3. 问问题
Alan提到了一个很重要的建议,那就是当测试人员发现对要测的产品或者模块 还不够了解的时候,要多提问题。测试某种程度上是一种评判,除了crash或者弹出异常这种明显的问题,很多时候如果测试人员不了解产品的细节的功能,甚 至是一些内部实现,就很难判断当前的行为是正常的还是有问题。这对高效的测试时很不利的,遇到这种状况就应该停下来,先搞清楚,当然,包括提问题,问对的 问题和问对人也是很重要的。

4. 关于可测性 Testability
这是一个大家都知道但是又常常忽视的问题,因为很多情况下测试设计是在产品设计之后的,那么不管能不能测,都要测了。这里给出了可测性的几种模式,简称SOCK。
S imple:组件和应用越简单越便于测试,复杂了的话可能需要划分。
O bservable:如果能看到一些内部的数据和结构,会利于准确的判断测试的成功和失败。
C ontrol: 如果应用有一些threshold(阈值),如果能设置和改变这些值会使得测试更加容易
K nowledge:如果被测产品有详细的文档,包括spec,design,帮助文档等,将会对判断对错很有帮助。

5. 测试设计文档
关于这一部分不用多说,在设计测试用例之前,一定要有文档化的测试设计,并且邀请相关的team member做review,这已经被证明了是一个good practice。不过exploratory(探索性)测试是不是不需要呢?目前我的了解是不需要,不过也许以后的想法会变。

6. 黑盒、白盒,还是灰盒。
这几个词大家已经很熟悉了,面试实习生的时候问他们关于软件测试的东西, 有很多人都能讲出这些。关于这个问题,不同的组织的做法可能也不太一样,黑盒的测试我想基本都会做,因为产品最后要给用户用,所以把自己当成用户来使用一 下肯定是有必要的。白盒的测试则会有些争议,有些人会认为如果读代码,沿着代码的流程测试可能会禁锢测试人员的思维。后面章节里关于结构性测试的部分Bj 也提到这个问题,他不认为这是个问题。因为黑盒有时候会比较盲目,可能在一个路径上反复的测试,也可能漏掉一些没有UI的路径。灰盒是一种鉴于之间的方 法,至少看起来是这样,我的理解,灰盒大概包括,了解某个功能所用的数据库的schema,还有配置文件的信息,还有它的debug log,这个可以通过设置和监控这些来完成测试。不过这样看起来,灰盒应并不是白盒的折中,因为它还是没有touch到代码的细节。就我目前所在的团队来 看,黑盒和灰盒(如果按我的理解的话)的方法用得比较多,白盒的方法很少,developer做unit test的时候应该用的是白盒的方法。
所以白盒的部分靠dev的unit test就可以cover了吗?也许吧?测试人员需要去读代码,来覆盖所有的测试路径吗?对我而言,这些都是open question。不过看了这本书之后,我倒是想更多的尝试些白盒的方法。

7. Exploratory test
这个topic在业界应该有些年头,不过看起来还是有模糊的部分,以至于James Bach和James Whittaker这两位这方面的牛人也还会在blog里面掐架。关于这一块的讨论也不少,Starwest上面常有关于这个话题的演讲。从这本书看 来,MS内部用这个方法的也不少。对我来说,就是要花些时间去读读这方面的书,试一下这样的方法。

8. pair testing
这个叫法是受到了pair programming的启发(没办法,testing比programming出来要晚,所以很多方面要借助他们的方法)。据本书上讲,他们在MS内部 尝试的结果还不错,而且大部分人是拥护的。我们目前还没有尝试过这样的方法,不知道agile testing里面是不是包含这样的practice,等我看了另一本书再来想想这方面的事情。

好了,第一篇就写到这里。总的来说,我觉得这是一本很好(他告诉你很多经验,然后引发你的思考,你还能从一本书期望什么呢?)的书,做测试的应该去看看,中文版也出来了,好像是MS中国的几个人翻译的,内部的人翻译的应该不会太难,至少术语不会瞎翻。


Ricky
Nov 15, 2009

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书是以使读者熟悉微软产品、微软工程师、微软测试人员、测试的作用和对软件工程的通常做法作为开始。书的第二部分讨论许多在微软常用的测试实践和工具。 书的第三部分探讨某些我们工 作中使用过的工具和系统。书的最后一部分探讨在微软测试和质量的未来方向,以及我们打算怎么创造未来。 本书结构清晰,内容详实,可作为广大软件测试人员的参考用书。 本书内容:   本书是以使读者熟悉微软产品、微软工程师、微软测试人员、测试的作用和对软件工程的通常做法作为开始。书的第二部分讨论许多在微软常用的测试实践和工具。 书的第三部分探讨某些我们工 作中使用过的工具和系统。书的最后一部分探讨在微软测试和质量的未来方向,以及我们打算怎么创造未来。 本书结构清晰,内容详实,可作为广大软件测试人员的参考用书。 事实上,软件的“缺陷”是不可避免的,只能通过编程人员和测试人员的共同合作,把“缺陷”降低到最小的程度。现代的软件工程管理方法,就是边开发边测试,及时把“缺陷”降低到最小程度。本书是 实用性很强、实践经验很丰富的一本好书,对我们软件企业和软件工程师来说都具有十分重要的指导意义。 ——中国软件行业协会秘书长胡崑山 软件工程人员为了做好测试工作,认真学习测试的理论和方法是十分必要的,但还应该积累软件测试的经验,通过阅读本书可以吸取知名优秀软件企业的最佳实践。 ——中国软件行业协会系统与软件过程改进分会(CSPIN)常务副会长、 清华大学教授郑人杰 本书是我一直在寻找的关于软件测试最佳实践的书籍,我很愿意向我的学员们推荐此书,作为软件测试实践的有效补充。 ——国际软件测试认证委员会ISTQB中国分会专家组组长、ISTQB 软件测试培训师周震漪 本书为业界吹来一阵清新的实践之风。全书通过翔实的案例描述了这个世界著名的软件企业为了保证快速和可靠交付,是如何毫不留情地与那些狡猾的缺陷进行顽强斗争的系列故事;此外,仔细介绍如 何通过质量保证生产出世界一流软件的基本原则是本书的另外一个亮点;与此同时,随处可见令人惊讶的创新,则是本书强大的作者团队,在分享他们的微软最佳实践方面的宝贵经验 ——国际外包管理协会(IIOM)主席Jerry E Durant 软件测试是软件工程中一个不可或缺的重要步骤,是一项需要高度智慧和极具挑战性的工作,又是一项需要实战经验积累的工作。“他山之石,可以攻玉”,此书的出版将为我们借鉴微软的先进测试经 验;培训中国软件测试人才;推动中国测试服务业的发展做出重要贡献。 ——中国软件测试机构联盟常务副理事长 上海计算机软件技术开发中心首席知识官杨根兴 软件测试技术和它在软件开发中的重要作用得到了业内越来越多的重视和研究。微软公司无疑的是软件测试技术的领引者。本书将给在这个行业工作的和准备加入这个行业的人以启迪,揭秘软件测试的 真谛。 ——软通动力信息技术有限公司董事长兼首席执行官刘天文 作为一位拥有数百测试工程师团队的外包企业的管理人员,我看到了大量测试微软产品的过程中所遇到的问题和工程师们设计出的各种解决方法。本书则把微软软件测试的方方面面的理念、方法、技术 、工具、流程等介绍给我们,不仅可以使测试工程师系统地学习测试技术,还可以让我们的管理团队开拓思路,少走弯路。我强烈推荐在各个企业的同仁们花时间读本书,从而起到事半功倍的作用。 ——文思创新软件技术有限公司执行副总裁及首席全球化官吴建 现代软件测试从方法、技术和工具层面已远远突破了“寻找缺损”和“验证功能”范畴。软件测试已成为软件开发和软件工程管理不可缺少的一部分。微软在这一领域的实践是划时代的,它将软件的规 模、工程的复杂性带到了前所未有的高度,其解决的问题的难度,以及为此而付出的代价都是无与伦比的。因此,多年以来,微软软件测试的理念、方法、技术、工具、流程,及其与其他角色的协作等 诸多方面,都一直是业界研究、探讨和借鉴的中心。本书第一次由微软的权威人士从内部系统地揭示这一奥秘。本书应该成为中国同行们的必备经典。 ——美国一通公司(iConnect Inc.)总裁王志峰 本书作者中有我的前同事Bj Rollison,他是微软公司中最有资历的测试专家之一。译者中也有我多年的好朋友张奭,她一直致力于把微软先进的公司文化、产品理念带给中国国内的企业和个人。感谢 他们的执着和付出,本书把神秘软件王国——微软如何进行软件测试揭露给了大家。本书必将成为国内软件测试人员的参考宝典,也将会彻底改变国内对软件测试的偏见,让大家充分理解,软件测试绝 对不是一件简单、低级的事情,而是一件极具复杂性,需要极高综合素质的人员才能做好的事情,这也将有助于更多的毕业生去选择从事软件测试,从而改善软件测试行业中人才缺乏的问题,特别是高 端人才。 ——海辉软件(国际)集团公司副总裁汪建兵 这是我所见过的测试方面的经典!它精薄而全面,言简意赅,结合实际,深入浅出,使读者快速理解软件测试流程和核心技术。 ——上海越通软件有限公司董事长周晓冬 我在天津市软件测试中心工作了7年,一直都在寻找不同软件的测试方法、测试工具的使用、测试流程及管理。所以,一直都非常关注软件测试方面的书,以便用它来指导我们测试业务的开展,同时对 于软件开发企业控制软件质量,也有指导意义。本书汇集了微软极其丰富的软件测试的实践经验,从理论和实践的结合上,让软件测试界有了一个信赖和学习的榜样。这将有力的推动中国软件测试技术 的发展,从而保证软件产品的开发质量,缩短软件开发的时间。谢谢你们把软件测试的经验和我们分享,谢谢你们对软件测试领域的贡献。 ——中国天津市软件评测中心主任周文禾 微软拥有着伟大的产品,这离不开强大的测试团队和卓越的测试技术,本书将带你发现微软是如何展开测试的,以及在测试方面的最佳实践,这是软件测试领域的骄傲,我推荐更多的测试经理、测试骨 干人员阅读本书。 ——麦思博(msup)有限公司首席运营官刘付强 对于大多数国内软件公司来说,不缺少高水平的技术人员,而在如何做好软件测试,如何保证产品质量方面却面临着巨大挑战,能否突破这个挑战是软件产业持续发展的条件之一。值得高兴的是,最近 几年软件测试得到越来越多的重视和关注。但是,国内关于软件测试实用技术方面的书籍相对较少,本书深入浅出地介绍了微软软件测试的实践,包括相关测试技术与管理方法,这正是我们广大软件质 量人员所需要的,相信每位读者都能从本书中汲取到值得借鉴的经验。 ——浪潮集团山东通用软件有限公司研发管理部经理刘俊红微软内部专家的评论 在全球化的深刻变革中,信息技术所发挥的力量是毋庸置疑的。微软用软件的力量推动了全球化的进程,而软件测试理念和实践的革新带来了更加“智慧”和接近“完美”的软件产品。这本书完整地呈 现了走向“智慧与完美”的方法与实践。 ——微软公司全球资深副总裁张亚勤 以用户为中心的测试是专业软件开发流程中不可或缺且至关重要的一环。作为一名拥有十年软件测试经验的微软员工,我非常高兴能向国内软件开发人员和爱好者们推荐本书。它解析了微软公司的软件 测试体系,并在某种程度上揭示了微软的一个成功“奥秘”,即高度重视软件测试工作,并借此为全世界的用户和专业人员提供高性价比、高可用性的应用软件和开发平台。我诚挚地祝愿并期待这本以 微软“实战经验”为亮点的著作能够成为中国软件行业管理者和从业人士必读的经典书籍。 ——微软大中华区开发工具及平台事业部总经理谢恩伟 与大多数讲述软件测试理论的书不同,本书最大的特色之一是其实用性。所有的方法,流程,技术和工具都是基于实际开发需要而建立或实施,应用于微软产品的开发并经过多次的检验。作者在阐述中 ,也用了很大的篇幅讲述,强调如何在实际中运用这些知识。这在很大程度上取决于他们的背景和经历。本书作者都是在有过多年软件产品测试经验之后,专门在微软从事软件测试技术推广和测试人员 培训的资深专家。很多微软的工程师都是通过他们的培训来学习并理解软件测试的。而本书的出版,则给更多的人提供了这样一个机会。 ——微软全球产品开发部测试总监杨永生 本书详尽地阐述了微软各个产品部门间通用的软件测试的组织架构、方法、工具和实践。这本书总结了微软数十年来在软件测试上的经验,可以提供国内在软件开发与测试管理以及人才培养方向上宝贵 的参考非常值得一读。 ——微软中国Protocol部门首席测试经理黃镇铭 本书是我在微软公司过去13年从事软件工作以来读到的对微软公司的软件测试的过程、方法、理念和文化诠释得最为全面的一本书。阅读它带给我一种怀旧的感觉,更启发了新的感受和灵感。我相信微 软公司的这些经验也能为在学校和行业界的读者带来收获。 ——微软总部SQLServer首席测试经理张力

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值