The notes of How We Test Software At Microsoft(1)

略过13章,直接从第四章开始读。

Chapter4A Practical Approach to Test Case Design

Practicing good software design and test design

Test design has many parallels with good software design and with good design in general. Test design requires planning and problem solving to determine which kinds of tests to run and which types of testing will be most effective at verifying functionality and confirming that failure path are handled gracefully. One of the most important aspects of test design is anticipating customer needs and expectations and then creating tests that address these needs appropriately .Good test design often starts with a review, or critique, of the software design.

测试设计需要做的是找出需要做哪些测试以及哪些测试能更有效的验证产品的功能性和错误处理能力等。测试设计中其中最重要的部分是预见客户对产品的期望及需要,并创建测试用例来验证这些客户的期望。测试设计要从客户的角度上去理解认识产品,并找出产品的不足。

Using Test patterns

如果design pattern一样,test patterns也是用来共通问题,并为测试人员设计测试的时候提供指导方针。

Testing Object-Oriented Systems: Models, Patterns and Tools, Robert Binder提出了37test design patterns.

Scope

Pattern Name

Intent

Method Scope

Category-Partition

Design a test suite based on input/output analysis.

Combinational Function Test

Design a test suite for behaviors selected by combinational logic.

Recursive Function Test

Design a test suite for a recursive method.

Polymorphic Message Test

Design a test suite for a client of polymorphic server.

Class Scope

Invariant Boundary Test

Identify test vectors based on the class invariant.

Non-modal Class Test

Design a test suite for a class without sequential constraints.

Modal Class Test

Design a test suite for a class with sequential constraints.

Quasi-Modal Class Test

Design a test suite for a class with content-determined sequential constraints.

Class Scope Integration

Small Pop

Order of code/test at method/class scope.

Alpha-Omega Cycle

Order of code/test at method/class scope.

Flattened Class Scope

Polymorphic Server Test

Design a test suite to check LSP compliance of a polymorphic server hierarchy.

Modal Hierarchy Test

Design a test suite for a hierarchy of modal classes.

Reusable Components

Abstract Class Test

Develop and test an implementation of an interface.

Generic Class Test

Develop and test an implementation of a parameterized class.

New Framework Test

Develop and test a demo application of new framework.

Popular Framework Test

Test changes to widely used framework.

Subsystem

Class Association Test

Design a test suite based on class associations.

Round-trip Scenario Test

Design a test suite for aggregate state-based behavior.

Controlled Exception Test

Design a test suite to verify exception handling.

Mode Machine Test

Design a test suite based on sequentially-constrained stimulus-response scenarios.

Integration

Big Bang Integration

Try everything at the same time.

Bottom up Integration

Integration by dependencies.

Top Down Integration

Integration by control hierarchy.

Collaboration Integration

Integration by cluster scenarios.

Backbone Integration

Hybrid integration of subsystems.

Layer Integration

Integration for layered architecture.

Client/Server Integration

Integration for client/server architecture.

Distributed Services Integration

Integration for distributed architecture.

High Frequency Integration

Build and test at frequent, regular intervals.

Application Scope

Extended Use Case Test (pdf)

Develop testable use cases, design a test suite to cover application input-output relationships.

Covered in CRUD

Exercise all basic operations.

Allocate Tests by Frequency

Allocate system test effort to maximize operational reliability.

Regression Test

Retest All

Rerun all tests.

Retest Risky Use Cases

Rerun tests of risky code.

Retest Profile

Rerun tests by frequency of use.

Retest Changed Code

Rerun tests for code that depends on changes.

Retest Within Firewall

Rerun tests for code that is impacted by changes.

附加17种自动测试的test patterns

Capability

Pattern Name

Intent

Built-in Test

Percolation

Perform automatic verification of super/subclass contracts.

Test Cases

Test Case/TestSuite Method

Implement a test case or a test suite as a method.

Catch All Exceptions

Test driver generates and catches IUT's exceptions.

Test Case /Test Suite Class

Implement test case or test suite as an object of class TestCase.

Test Control

Server Stub

Use a stub implementation of a server object for greater control.

Server Proxy

Use a proxy implementation of a server object for greater control.

API/Class

Drivers

TestDriver Super Class

Use an abstract superclass for all test drivers.

Percolate the Object Under Test

Pass the object under test to driver.

Symmetric Driver

Driver hierarchy is symmetric to hierarchy of classes under test.

Subclass Driver

Driver is a subclass.

Private Access Driver

Driver uses encapsulation avoiding features.

Test Control Interface

Driver uses interface extension features.

Drone

Driver is a mixin.

Built-in Self Test

Driver is implemented as part of an application class.

Test Execution Control

Command Line Test Bundle

Code and build a test executable to be run from a command line or console.

Incremental Testing Framework

Test suites are based on a simple framework that supports incremental development.

Fresh Objects

Test environment with registration by and interface to built-in test in all application objects.

 

最常用的共享test patterns的方式就是构建模板。

Robert Binder’s Test design pattern 包含10个属性:

1)      Name

2)      Problem:简要介绍pattern要解决的问题

3)      Analysis:介绍问题的区域,并说明为什么采用这个pattern的技术去设计测试更有效

4)      Design:说明如何根据pattern设计测试

5)      Oracle:说明预期的结果

6)      Examples:举例说明使用pattern是如何找bug

7)      Pitfalls and Limitations: 说明在某些情况下应该避免使用这个pattern

8)      Related Patterns:列出相关联的patterns

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值