首页 | 互联网 | IT动态 | Cisco | Windows | Linux | Java | .Net | Oracle | 华为 | 存储世界 | 服务器 | 网络设备 | IDC | 安全 | 求职招聘
IT培训 | 数字网校 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 解决方案 | 直播室 | 虚拟考场 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室软件测试频道
IT教育热线
 
首页 资讯动态 测试技术 测试工具 行业软件测试 测试管理 测试下载 经验分享 软件质量 其他技术 RSS订阅 博客 论坛
您现在的位置: 中国IT实验室 >> 软件测试 >> 测试技术 >> 单元测试 >> 文章正文

防御性编码和单元测试“交通规则”

文章来源中国软件测试 作者佚名 更新时间2008-5-9 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

级别:入门

Scott A. Will (sawill@us.ibm.com), 经理,质量保证和系统测试,IBM Corporation/Tivoli Systems Software
Theodore F. Rivera (trivera@us.ibm.com), 产品开发经理,质量保证,IBM Corporation/Tivoli Systems Software
Adam Tate (atate@us.ibm.com), 经理,质量保证和总体解决方案测试,IBM Corporation/Tivoli Systems Software

1 月

开发人员编写代码。不幸的是,开发人员也编写缺陷,其中大多数缺陷是在最初的编码阶段加入的。修复这些缺陷成本最低的地方同样也是在开发的初始阶段。如果等到功能测试或者系统测试来捕获并修复缺陷,那么您的软件开发成本就会高得多。在本文中,作者 Scott Will、Ted Rivera 和 Adam Tate 讨论了一些基本的“防御性”编码和单元测试实践,让开发人员更容易找到缺陷 —— 更重要的是,从一开始预防缺陷产生。

  我们三个人的家中有四个青少年驾驶员,很快还会增加一个。不用说,我们非常熟悉在驾驶员培训班中灌输给我们这些新驾驶员的防御性驾驶技术。因为在我们的青少年驾驶员短短的开车期间,他们看到了打手机的男人闯红灯、女人在拐弯的时候化妆,以及业务主管在早晨上班的路上读报。所以孩子们很快学会如何注意可能会发生事故的区域以及如何避免这些事故。

防御性驾驶和防御性开发
  大多数司机接受过防御性驾驶技术的教育 —— 这有很好的理由 —— 但是并不是所有开发人员都接受过防御性开发的教育,特别是那些没有用汇编语言进行过多少开发(如果不是完全没用过的话)、也没有因内存约束和处理器限制而关心过编写极其紧凑的代码的年轻开发人员。本文讨论防御性编码和单元测试概念,它们可以帮助开发人员更快生成更好的代码并且缺陷更少。

为什么防御性开发是重要的?
  捕捉错误、问题和缺陷的最佳位置是在开发周期的早期。图 1 展示了最容易出现缺陷的地方,以及最容易发现它们的地方,并包括了修复这些缺陷的成本(这些成本是针对 1996 年的 —— 今天的成本显然更高)。

图 1. 缺陷:引入阶段及发现阶段(包括成本)
 缺陷:引入阶段及发现阶段(包括成本)

  当然,比在编码阶段找到缺陷更好的是在一开始就防止它们。防止缺陷应该是开发人员最优先考虑的。我们将分析几个让开发人员可以在编码和单元测试时防止并检测缺陷的简单的、经过证明的方法。

在编译前(防御性设计考虑)
  防止缺陷(特别是系统性缺陷)的最有效方式是仔细检查编码所依据的设计。由设计缺陷导致的缺陷 —— 虽然一般不是很多 —— 通常修补成本是最高的。事前花很少的时间针对以下几点对设计进行检查可以得到显著的长期回报。

设计考虑
  设计是否有任何不清楚或者混乱的部分?如果是的话,在编写任何代码 之前 澄清这些问题。否则,您可能以一种方式解释一个设计需求,而同事则以另一种方式解释它,从而得到不兼容的实现。

  如果您的代码要访问同时被其他组件访问的数据,那么保证您的设计可以处理这种情况。同时,检查设计的安全问题(请参阅 参考资料)。

  如果您的代码严重依赖于其他应用程序的代码,那么您对那个应用程序是否熟悉到可以对设计进行检查?考虑在您的设计检查小组中加入熟悉该产品的一个开发人员。在 设计阶段 发现的集成问题可以得到最有效的处理。

安装和使用考虑
  如果您的代码是以前版本的一个升级,那么是否有会使升级失败的参数或者其他选项改变?有哪些其他产品与新代码交互或者集成 —— 如果这些产品本身也改变了呢?还有,您的代码是否容易安装?

[1] [2] [3] [4] [5] 下一页  

【责编:Luzi】

中国IT教育

相关产品和培训
文章评论
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·企业网管如何部署你的网络监控系统?
 ·2008年软考官方指定教材及辅导书下载专题
 ·负载均衡技术方案攻略
 ·中国IT实验室2007年技术热点盘点
 ·利用路由实现VPN的配置方法
 ·JAVA开源技术介绍专题
 ·让你的局域网网速更上一层楼
 ·Linux Shell编程实用指南
 最近更新
 博客论点
 频道精选
 软件测试频道导航