当前位置: 首页 > news >正文

微软的软件测试之道

软件测试在很多人看来就是在一间黑屋子里抓黑猫,而且不知道是否真的有猫。而在微软看来,猫一定是有的,但测试不只是为了抓猫,而是要不断改进软件工程,使将来的猫越来越少,也就是今天解决明天的问题。

      

       《微软的软件测试之道》向我们展示了微软软件测试的方***、工具和实践。

 

    事实上,在微软软件测试早已成为软件工程的一部分。然而当年的微软就像我们今天的一些小型软件公司一样,没有测试工程师,没有本地化工程师,没有程序( Program Manager ),也没有可用性工程师。

 

好的设计与好的执行是软件开发项目成功的关键。

 

测试设计与好的软件设计有很多相似之处。测试设计要求规划和解决问题以确定运行哪类测试以及那些类型测试最有效。如同设计模式,测试模式解决共性问题并且为测试人员设计测试提供指导和策略。微软内部测试人员一般采用简化的 Robert Binder 测试设计模式模板作为通用格式进行沟通。

 

确 定测试模式后,需要估计测试时间。估计测试所需时间是非常困难的,一个粗略的规则是测试时间与开发的时间相同。另外一个问题是何时开始测试。一般我们会认 为编码完成后开始测试。实际上,理想状况是在开发的起始阶段就介入。开始测试设计的一个时间点是软件需求或功能规范审查。当然开始测试之前,我们还需要一 个测试策略为测试团队提供愿景,帮助每个人确定哪个测试活动最重要并帮助他们确定何时、何地应用不同测试类型。

 

在微软,测试工作包括功能性测试、结构化测试、利用代码复杂性分析风险和模型化测试。测试人员采用等价类分区、边界值分析和组合分析技术进行软件功能测试。结构化测试则采用组块测试( block testing )、决定测试( decision testing )、条件测试( condition testing )和基础路径测试( basis path testing )的方法。代码复杂性对于识别哪里可能存在缺陷( bug ) 是必不可少的度量,对于识别可能导致维护问题的代码同样有价值。利用代码复杂性分析风险有助于我们把有限的测试资源集中在最恰当的区域。模型能帮助我们理 解复杂事物如何工作。将从模型中产生的测试与测试模型配合是最有威力的。基于模型的测试比随机游走更加有效。微软测试团队已经采用模型化测试连同传统的测 试自动化有效地测试了很多功能和应用。

 

在方法论外,测试还需要工具和系统。微软当然拥有自己的缺陷和测试用例管理系统。《微软如何测试软件》不仅向我们介绍了微软缺陷和测试用例管理系统,还向我们介绍了基于多年的使用而产生的经验教训和实用的建议。

 

在软件测试中似乎总有另一个障碍需要克服。微软的测试工作也是如此。微软正尝试采取一些措施解决明天的问题。具体方法包括自动失败分析、机器虚拟化、代码审查等。

 

当然,相对于软件开发,软件测试还是一个新的专业。软件测试的大部分工作还是验证软件功能和发现关键错误。因此我们必须考虑软件测试将何去何从。这也是《微软的软件测试之道》与我们讨论的问题。
微软的软件测试之道

原文来自:http://www.mypm.net/blog/user1/msproject/archives/2009/34298.html

相关文章:

  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Think HY 读《观止-微软》一书有感
  • 《人月神话》的故事版《观止》
  • 国内首本Windows 7图书与Windows 7 同步发行
  • 《新京报》版面推荐《正在爆发的互联网革命》一书
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 活动预告:终结互联网“偷菜”狂潮
  • 2009中国互联网大会圆满落幕
  • 《正在爆发的互联网革命》北京西单图书大厦签售活动圆满结束
  • 《玩转Windows 7 》销售节节攀高
  • 华为研发的秘密
  • 全球24位顶尖架构师之作《架构之美》
  • 《WCF编程,第2版》
  • 国内顶尖风光摄影家集锦(作品集+拍摄技巧)
  • 老赵书托(1)-SCIP
  • angular2开源库收集
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • go append函数以及写入
  • JAVA并发编程--1.基础概念
  • React+TypeScript入门
  • spring boot 整合mybatis 无法输出sql的问题
  • Tornado学习笔记(1)
  • 编写高质量JavaScript代码之并发
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 基于axios的vue插件,让http请求更简单
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 深入浅出webpack学习(1)--核心概念
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 微信开放平台全网发布【失败】的几点排查方法
  • 我是如何设计 Upload 上传组件的
  • 优化 Vue 项目编译文件大小
  • 最近的计划
  • ​TypeScript都不会用,也敢说会前端?
  • ###C语言程序设计-----C语言学习(3)#
  • #include到底该写在哪
  • (10)ATF MMU转换表
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Oracle)SQL优化技巧(一):分页查询
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)Mysql的优化设置
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .net经典笔试题
  • .net实现客户区延伸至至非客户区
  • .NET中统一的存储过程调用方法(收藏)
  • /bin/rm: 参数列表过长"的解决办法
  • @RequestBody与@ModelAttribute
  • @RequestBody与@ResponseBody的使用
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限