王朝百科
分享
 
 
 

测试有道:微软测试技术心得

王朝百科·作者佚名  2010-07-28  
宽屏版  字体: |||超大  

图书信息

测试有道:微软测试技术心得

作者:梁博,许珊,徐歆恺编著

出 版 社:电子工业出版社

出版时间: 2009-8-1

页数:312页

开本: 16开

I S B N :9787121091858

定价:69.00元

内 容 简 介本书由微软公司专家撰写,书中包含很多新颖的测试工具介绍,重点内容中英文对照是本书的另外一大亮点。书中包括超过20个微软公司的开发团队常用的测试工具及其使用方法的介绍。有很多工具是第一次正式通过出版物向公众介绍,包括一些刚刚开源不久的、之前仅在微软内部使用的测试自动化工具。同时本书还提供了一些实用测试文档的模板、内部最佳做法,以及常用度量标准,为读者的实际测试工作提供帮助。

本书适合学习和研究测试技术的测试工程师、对测试感兴趣的人员,以及高校学生阅读和参考。

引 子今天,软件测试工程师会告诉我们,他们的主要工作就是发现缺陷。但是,我们都知道,测试将永远不会找到所有的缺陷,而且更不可能去“测试质量”。产品质量的显著提高需要改变我们的软件工程实践。为了达成长远的影响,我们的测试工程师必须要有更高的技能,并参与到软件开发生命周期中的每一个阶段中来。测试必须要不断地发展,以确保软件质量从产品刚开始构想阶段就得到贯彻。测试需要了解如何建立一个高质量的基础架构,以及如何最大化测试的影响,同时保持灵活性,并不断提高测试效率。

——S•索马塞加尔(DevDiv副总裁)

是的,包括微软公司在内的业界各个软件开发企业在不长的几十年的软件产品开发和服务提供的实践中,都深深认识到软件测试和软件测试工程师在软件开发工程过程中是必不可少的。在早期的“软件作坊”时代中,个人英雄主义盛行,大家崇尚程序员单打独斗的行为。但很明显,现如今已经到了一个新的时代,一个软件作为服务来提供的时代,一个软件系统的复杂性急剧增加的时代,一个成功的软件开发需要大量各有所长在一起相互配合和协作的人群参与的时代,一个多样化的时代。我们站在一个越来越“平”的地球上。在这个时候,在一个团队中,软件开发工程师重要、项目经理重要、测试工程师重要、文档工程师重要……因为少了谁,哪个角色做得不好,都会影响到产品最终如期发布抢占市场先机,都会影响到用户的最终体验——这种影响是生死攸关的。

但是,如果有人今天告诉我们说:“作为一个软件测试工程师,你非常重要。”我们可千万不要当真!要明白这些站在台上的人的潜台词,他们的本意是:软件测试工程师这个群体,重要!但作为个体的我们,只有首先让自己变得重要,然后才能有幸去代表“软件测试工程师”这一“重要”群体。任何人无法把“重要”这一荣誉附加到我们身上,我们只有自己不断努力学习专业知识,不断积累实践经验,才能赢得同事们的尊重和赞赏、获得应得的回报,真正变得重要。之所以说软件测试工程师这个角色并不是一个技术含量低或者低人一等的工作,是因为这种评价完全取决于从事和参与这项分工的人的能力、素质和技术水平。从这种层面上来看,只有分工的不同。

“你很重要!”

目 录第1章 软件测试概述 1

2005年笔者接触到了北京的一些培训公司,他们介绍说现在软件测试类的课程非常受欢迎,现在市面上有大量软件测试工程师的职位在公开招聘。实际上当时北京的几个大的外包公司如文思创新、博彦科技、天海宏业(后被大连海辉并购)、中软、神州数码等早就已经开始在大张旗鼓地挖抢人才,在北京市场上,对软件测试工程师的需求早就骤然如井喷式爆发。

什么是软件测试 1

测试工程师的任务 3

小知识 5

什么是PSS数据 5

什么是Watson数据 5

测试工程师的职业路径 6

成功职业生涯规划的提示 7

测试与管理 15

案例:微软软件开发团队 16

练习:测试自动可乐贩卖机 18

第2章 测试与软件开发模型 19

软件开发生命周期模型(Software Development LifeCycle)指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发会包括需求、设计、编码、测试、稳定、部署等阶段,有时也会包括维护阶段。本章介绍现今被业界广为使用的几种主要的开发模型,以及测试在这些模型中的地位。

瀑布模型(Waterfall Model) 20

RUP 20

敏捷软件开发方法(Agile software development) 22

软件开发过程中的测试 23

提高软件的可测性(Testability) 23

测试模式 24

微软的软件产品开发过程 25

案例:MSF (Microsoft Solution Framework) 28

第3章 软件质量与测试 35

软件跟其他的工业产品并没有本质区别,现代社会的工农业化进展已经经过了几十年,有很多种方法可以用来控制产品的质量,从而可以保证人民群众购买到的水果、食物、家电、设备尽可能少得出现瑕疵。这些被现代生产制造企业广泛采用的产品质量控制和质量保证方法,一样可以用于软件产品的质量保证和控制。例如,“全面质量管理”是一个基于统计学原理的质量控制方法,这个方法的发展过程就非常具有代表性,也会有助于我们理解软件的质量控制。

软件质量(Quality) 35

质量控制(Quality Control) 36

质量保证(Quality Assurance) 37

软件工程师摧毁地球 38

全面质量管理(Total Quality Management,TQM) 38

能力成熟度模型(Capability Maturity Model® Integration,CMMI) 39

ISO 9000 & ISO 17205 40

事后析误(Postmortem) 41

根本原因分析(Root Cause Analysis, RCA) 41

故障模式与后果分析(Failure mode and effects analysis) 42

威胁模型分析(Threat Model Analysis, TMA) 43

第4章 软件测试方法 45

软件程序设计有基本的算法,软件系统测试也有一般性的测试方法。使用这些测试方法,我们往往能够找到那些最一般、最普遍的软件问题,这些方法也可以帮我们事半功倍地发现软件中存在的错误和瑕疵。更重要的是,这些一般性的软件测试方法可以被自动化,我们可以借助这些方法生成一些辅助性的自动化测试工具,从而可以让测试更加高效。

黑盒测试(Black-box testing) 45

白盒测试(White-box testing) 46

灰盒测试(Grey-box Testing) 48

基于场景的测试方法(Scenario testing) 49

等价类法(Equivalence value class) 50

练习:等价类测试设计 51

边界值法(Boundary value analysis) 52

示例:边界值分析 53

判定表法(Table Based Methodology) 54

组合分析法(Combinatorial analysis) 55

工具:PICT工具使用 56

状态转换表(State transition) 58

第5章 软件测试类型 59

根据产品的特点,要在不同的阶段进行不同的测试操作。有一些测试是随时随地进行的,不少测试是有计划进行的,例如在每个功能完成之后,在每一个版本编译完成之后,就一定要进行回归测试、冒烟测试和版本验证测试。在产品的测试版本阶段,一般都会执行探索性测试。对于软件的用户界面、安全性、性能和可靠性、稳定性、用户安装等跟用户的软件使用体验直接有关的方面,我们也都必须要进行测试。

功能测试(Functional Testing) 59

小知识:API Testing 61

工具:NUnit 61

工具:Visual Studio 单元测试框架 62

回归测试(Regression testing) 63

冒烟测试与BVT测试 65

探索性测试(Exploratory testing) 67

安装/版本升级测试(Setup/upgrade testing) 69

工具:VeriTest-Rational Installation Analyzer 71

软件兼容性测试(Compatibility testing) 72

案例:Windows Vista兼容性测试 72

小知识:UAC 73

工具:ApplicationVerifier 75

性能测试(Performance testing) 77

工具:Windows Performance Analysis Tools(WPT) 79

工具:Visual Studio性能分析工具 80

工具:WPFPerf 81

负载测试(Load testing) 83

监视和分析负载测试结果 84

压力测试(Stress testing) 85

国际化/全球化/本地化测试 87

小知识:I18N, G11N, L10N 88

编码 89

工具:Character Map程序 91

工具:屏幕键盘工具 92

辅助选项测试(Accessibility testing) 92

工具:accVerify 94

工具:UI Spy 94

安全性测试(Security testing) 95

保证应用的安全性和威胁建模 96

小知识:微软安全性测试10个小提示 98

小知识:Microsoft SDL 98

工具介绍:SDL Threat Modeling Tool v3 99

安全托管代码 100

托管代码的常见设计缺陷 101

工具:Fxcop 103

C/C++代码的常见设计缺陷 104

工具:Prefast 105

代码度量(Code Metrics) 107

工具:Visual Studio 2008代码度量 108

第6章 测试计划和测试策略 110

软件开发过程中的战略部署保证软件开发过程朝着正确的方向前进,软件开发过程中的计划保证战略按部就班地实施。在制订软件开发计划的时候,同时要制订软件测试计划。在现代的软件开发过程中,测试早就已经是项目过程中必不可少的一个任务,作为一个贯穿始终的行为,软件测试必须要有计划和策略。软件测试的计划依附于软件开发的计划,所以在进行软件测试计划时,要参考软件开发计划,当然,也要参考用户需求说明书和软件规格说明书等材料。

什么是测试计划 110

模板:测试计划文档 111

什么是测试策略 139

模板:测试策略模板 140

测试范围 143

风险优先级模型 145

基于风险的测试 146

有计划的复审活动 147

第7章 测试自动化 150

本章向大家介绍一些软件测试自动化小工具,包括一些录制工具、用户界面测试的自动化工具、基于模型的软件测试自动化工具,同时也介绍了一些自动化测试框架和类库,使用这些框架和类库,大家都可以开发自己的软件测试自动化工具。本章介绍到的工具,都是微软公司一直在内部使用的小工具,现在已经全部开放下载和使用。

测试自动化的发展 150

手动测试 151

硬编码测试自动化 152

工具:RPF(Record and Playback Framework)Programmer 152

练习:轻量.NET UI自动化设计 153

小知识:反射技术 159

Microsoft UI自动化库 160

测试自动化程序设计 160

测试库和测试框架 161

工具:White 162

数据驱动测试 164

基于模型的测试 165

小知识:杀虫剂悖论 166

例子:微软过桥问题 166

小知识:Dijkstra算法 168

工具:WinSTDtoDOT Visualization Tool 168

工具:NModel工具 170

第8章 代码覆盖率 171

代码覆盖率技术是对测试的检验,同时也是一种间接检验软件代码质量的方法。毫无疑问,代码覆盖率很重要。代码覆盖率的考量,是对软件测试用例水平的考量,这时,我们对软件测试开始进行管理。软件测试从全凭经验的、随机的、不可控的阶段进入到了可管理、可控制、可度量的新的阶段。

代码覆盖率 171

覆盖种类 173

代码覆盖率度量结果分析和决策 178

其他类型的覆盖 178

工具:Visual Studio代码覆盖率工具 179

第9章 调试 180

调试技能是软件支持工程师赖以生存的最基本技能,软件测试工程师最好能了解一些调试技术的知识。不少时候我们测试的程序是已经编译完成的版本,如果出现了崩溃、蓝屏、或者其他严重的系统性错误,如果我们掌握一定的调试技能,就能在运行时抓取错误,跟踪错误,找到导致程序出错的代码片段的位置。请记住,软件测试工程师的角色永远不是找错,而应该是找出错误的根源。

调试 180

工具:Visual Studio在设计时进行调试 182

异常 182

小知识:异常捕获 185

断言(ASSERT) 186

工具:WinDBG 187

托管代码中的断言 188

转储文件 188

转储文件类型 189

用户模式数据转储文件生成 191

核心转储文件生成 191

远程调试 192

调试准则 192

调试建议 193

第10章 测试文档编写 195

本书提供了一些实用测试文档的模板、内部最佳做法及常用度量标准。相信这些内容会为读者的实际测试工作提供帮助。

测试文档概述 196

测试用例 197

模板:测试用例模板 198

软件缺陷报告(Bug Report) 199

模板:软件缺陷报告 201

项目状态报告 203

第11章 软件缺陷管理 204

软件缺陷的管理包括:缺陷类选和缺陷消除管理。所有的软件缺陷,所有被发现的软件缺陷,都应该被存储在缺陷管理库中,以备查和再次验证。这个缺陷被操作的过程,这个缺陷被最终解决的方法,都要被记录下来,作为知识保留。软件缺陷和测试用例等都是关联在一起的,对于软件缺陷的管理,跟对源代码的管理,对测试用例的管理一样,都是现代软件项目管理的一部分。

缺陷处理工作流 204

缺陷类选(Bug Triage) 205

缺陷类选图例 206

优先级和严重性定义 207

小知识:错误收敛(Bug Convergence) 212

小知识:零错误反弹(Zero Bug Bounce) 212

缺陷消除的有效性(Defect Removal Efficiency) 214

第12章 完整的测试体系构成 215

企业中要真正实施软件测试,就必须建立一个完整的软件测试体系,建设软件测试队伍,搭建软件测试的软件硬件环境,购买必须的工具,并对人员进行训练。

人员 215

一个完善的测试体系的构成 217

环境搭建 218

测试执行管理 220

工具:WTT测试框架 221

工具:VSTS测试管理 221

第13章 微软公司企业文化 226

我们希望在这里与大家一起分享微软公司的企业文化中代表性的一些要点,这些要点可能会帮助到大家,用更加“微软”的方式去思考,也可以更容易地去跟微软公司的项目经理和工程师进行沟通。

员工才是最重要的资产 226

认同和鼓励多元化 227

用技术武装人 228

技术可以改变员工的工作方式 229

利用信息要真正帮助员工和企业 229

微软公司价值观 230

微软的企业商业环境 231

实现承诺 232

从错误中学习 233

按期完成工作 233

了解决议的形成过程 235

解决冲突 236

尊重多元化 237

第14章 更加国际化 238

承接欧美外包项目,就需要参与者更加国际化。世界上的民族和国家之间的文化差异其实非常明显。本章中讨论的文化主要是美国文化,因为本书面向的期望读者群将有很多正在从事着来自美国企业的外包项目。在仔细审视美国的核心价值与商业后会发现,作为一个软件测试工程师或软件开发工程师,不能仅停留在代码编写层面,在商业社会里大家都分工协作,要想保持顺畅的沟通,就必须理解对方的民族性格。

打死我也不说(Yes to death) 238

美国的核心价值与商业 239

第15章 测试经理的领导力培养 246

在美国,有一种领导者往往具有非常强的个人魅力和远见,能够通过自身的人格去影响他人。因为他们的特殊天赋和激励他人的能力,这种人通常会成为领袖。但往往这种类型的领导是不可替代的,当他们离开时,所在的组织可能会陷入一个混乱的状态。

领导风格 246

激励团队 248

构建团队 251

做出决定 254

附录A 对欧美外包的有效沟通之道 257

美国人的沟通方式 257

建立信誉 260

获取信息 263

善于表达 265

手机、电话、邮件、书信、报告 269

交涉与谈判 272

与美国人讨论的话题 276

附录B 对欧美外包活动之有效的会议组织 281

组织有欧美人士参加的会议 281

附录C 学会写邮件 286

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有