• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件单元测试和事先测试开发

发布: 2009-3-30 12:58 | 作者: 不详 | 来源: 测试时代采编 | 查看: 17次 | 进入软件测试论坛讨论

领测软件测试网

摘要:Eric Gunnerson 介绍了事先测试开发的思想,并提供了一个实用实例来演示如何在您自己的应用程序中应用它。

从 MSDN Online Code Center 下载 integerlist.exe。

本专栏末尾有我的简介,如果您读过的话,就会知道我在担任程序经理之前曾出任 C# 编译器的测试组长,而在此之前是 C++ 编译器的测试组长。这些工作经历使我对分析和尽量避免软件错误特别感兴趣。

要减少软件中的错误数目,方法之一就是拥有一个专业的测试组,其工作就是尽一切可能使软件崩溃。不幸的是,如果拥有测试组,那么即使是经验丰富的开发人员,也会倾向于花费较少的时间来保证代码的可靠性

软件界有一句俗语:“开发人员不应该测试他们自己的代码”。这是因为开发人员对自己的代码了如指掌,他们很清楚如何采用适当的方法对代码进行测试。尽管这句俗语很有道理,但却忽略了非常重要的一点 - 如果开发人员不对自己的代码进行测试,又如何知道代码能否按照预期的方式运行?

简单说来,他们根本无从得知。开发人员编写那种运行不正常或只在某些情况下运行正常的代码是一个严重的问题。他们通常只测试代码能否在很少的情况下正常运行,而不是验证代码能够在所有情况下均正常运行。

发现软件错误
发现软件错误的情况有很多:

由首次编写代码的开发人员发现。
由尝试运行代码的开发人员发现。
由组中的其他开发人员或测试人员发现。
作为产品大规模测试的一部分。
由最终用户发现。
如果在第一种情况下发现软件错误,则修复错误比较容易,成本也很低。情况越靠后,修复软件错误的成本就越高;修复一个由最终用户发现的软件错误可能要耗费 100 或 1000 倍的成本。更不用说用户通常因为软件错误导致工作无法继续,而一直等到下一个版本才能解决问题。

如果开发人员能够在编写代码期间发现所有的软件错误,那就再好不过了。为此,您必须编写能在编写代码时运行的测试。有一种很不错的方法,它恰好可以做到这一点。

事先测试开发
所谓的事先测试开发是指在编写代码前编写测试。如果所有测试均正常运行,便可以断定代码运行正常;添加新功能时,这些测试会继续验证您是否破坏了代码的任何部分。

此概念于 20 世纪 90 年代初诞生于 Smalltalk 世界,Kent Beck 在当时编写了 SmalltalkUnit。在过去的几年中,大部分环境都具备了单元测试工具,其中有一个很出色的适用于 .NET Framework 领域的工具,即 nUnit(英文)。

示例
下面我将编写一个 IntegerList 类来介绍事先测试开发的工作原理。IntegerList 是 ArrayList 类的变体,用于在本地存储整数,因此不存在装箱和取消装箱的开销。

第一步是创建一个控制台项目,并向其中添加一个 IntegerList.cs 源文件。要连接 nUnit 框架,需要添加对 nUnit 框架的引用。在我的系统中,它们位于 d:\program files\nUnit v2.0\bin。

第二步是花些时间考虑如何对该类进行测试。这与确定类应该具备哪些功能的过程类似,但重点放在功能的特定用途(将值 1 添加到列表并检查是否成功),而不是功能本身(将一个项目添加到列表)。要生成此类,我们首先要提供一个要使用的测试列表:

测试该类可以构造
将两个整数添加到列表,并确保数目和项目都正确。
执行同一操作,但针对更多的项目。
将此列表转换为一个字符串。
使用 foreach 枚举此列表。
此示例从某种程度上代表了我开始时的想法,即希望这个类执行的操作。多数类一次只会创建一小部分,测试应随着类的增长而添加。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 单元 开发 软件

41/41234>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网