开始使用 TDD?

2024-05-26

我们正处于尝试实施 TDD 的初始阶段。我演示了 Visual Studio Team System 代码覆盖率/TDD 工具,团队对这种可能性感到兴奋。目前我们使用 Devpartner 进行代码覆盖,但我们希望消除它,因为它很昂贵。我们在 TDD 方面的经验非常有限,并且希望确保我们不会走错方向。目前,我们正在使用 SourceSafe 进行源代码控制,但将在大约一年内迁移到 Team System。

我可以告诉您,我们的应用程序非常以数据为中心。我们有大约 900 个表、6000 个存储过程和大约 45GB 的数据。我们有很多基于用户数据和系统中不同费率的计算。此外,我们的很多代码都是基于时间的(计算当前日期的利息)。其中一些计算非常复杂且非常密集(只有少数人知道其中一些的细节)。

我们希望实施 TDD 来解决 QA 问题。许多开发人员被迫修复他们不熟悉的领域中的错误,并最终破坏了某些东西。还有一些开发人员几乎不敢触及的领域,因为系统中的所有内容都使用代码。我们希望缓解这个问题。

我担心,由于我们的代码是如此以数据为中心,因此实现 TDD 可能比大多数系统要复杂一些。我正在尝试制定一个可以提交给管理层的游戏计划,但我希望不要陷入一些 TDD 初学者错误中。另外,如果 Team System 中的工具/设施使 TDD 更加完整,那就太好了,但我们不想等待 Team System 开始。

我们问的第一个问题是我们应该从 Visual Studio 中的工具开始吗?我读过人们抱怨 Visual Studio 中的内在工具的帖子(需要创建一个单独的项目来创建您的测试)但 Visual Studio 中的工具的一件事是它们是免费的并且集成良好。如果我们决定走另一条路,使用 XUnit、MBUnit 或 NUnit 之类的东西,那么我们很可能会付出一些可能很大的成本:

1)如果我们想要IDE集成(未能提及我们的大部分代码是VB.Net)
---TestDriven.Net 或 Resharper 或??????

2)如果我们想要代码覆盖率
---NCover(就其功能而言似乎相当昂贵)

另外,我还看到了 Visual Studio 2010 中演示的一些非常酷的功能。比如进行输入测试(在表单上输入数据)的能力或记录用户所做操作的能力,然后将其输入到单元测试中以重现问题。

另外,虽然我还不太掌握模拟对象的概念,但我知道很多人认为这是必须的。问题是所有的模拟框架都可以插入 Visual Studio 的 TDD 版本(MSTEST)吗?

我建议管理层我们应该只添加回归测试(新的开发或发现的错误),但不要尝试遍历所有代码并进行单元测试。这工程太大了。

无论如何,我将不胜感激任何人的帮助。


首先要做的就是拿到这本书:

有效地处理遗留代码 https://rads.stackoverflow.com/amzn/click/com/0131177052

对于这么大的项目,阅读它并内化它。数据驱动应用程序上的 TDD 已经够难的了。对于遗留系统,您需要一些认真的计划和努力。我认为值得,但它仍然是一个很大的曲线。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开始使用 TDD? 的相关文章

  • 解决找不到程序集的问题 |文件未找到异常 |融合日志

    我正在尝试将我的解决方案包 wsp 部署到 SharePoint 2007 环境 WSP 包含一个功能 该功能加载功能接收器类以在运行时部署计时器作业 在部署此 WSP 时 我不断得到 特征 fb631f6c 2c46 4ab5 b7b3
  • 托管 .NET 代码中的“访问冲突写入位置...”

    我收到以下异常 MqSearch exe 中 0x000007FE21AFE593 mscorlib ni dll 处出现未处理的异常 0xC0000005 写入位置 0x00000006609476FD 时出现访问冲突 代码是完全托管的
  • 有谁知道一种更快的方法来执行 String.Split() 吗?

    我正在读取 CSV 文件的每一行 并且需要获取每一列中的各个值 所以现在我只是使用 values line Split delimiter where line是保存由分隔符分隔的值的字符串 衡量我的表现ReadNextRow我注意到它花费
  • 更换 I 过滤器

    我目前正在使用 IFilters 从各种文件 word excel tiff pdf 等 中提取文本 据我所知 IFilter 已在 Windows 8 中停止使用 是否有人对如何在不安装本机应用程序的情况下提取文本有任何建议 如果有什么用
  • 同一服务器上的多个.NET版本

    所以我一直都知道在一台计算机 客户端或服务器 上运行多个版本的 NET 框架是可以的 这个问题 https stackoverflow com questions 407306 running many versions of net on
  • 调整图像的亮度、对比度和伽玛值

    在 NET 中调整图像的亮度 对比度和伽玛值的简单方法是什么 c and gdi have a simple way to control the colors that are drawn It s basically a ColorMa
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 自定义 IQueryable

    我正在尝试自定义应用程序的实体 使它们具有引用加载它们的 DataContext 的属性 我认为最好的方法是以某种方式创建一个实现 IQueryable 的类 并在其 GetEnumerator 方法中设置实体 datacontext 属性
  • SQLite .NET 性能,如何加快速度?

    在我的系统上 约 86000 个 SQLite 插入需要长达 20 分钟 意味着每秒约 70 个插入 我要做数百万 我怎样才能加快速度 对每一行的 SQLiteConnection 对象调用 Open 和 Close 会降低性能吗 交易有帮
  • 当操作系统显示语言为非英语时获取本地时区标识符

    奇怪的是 TimeZone CurrentTimeZone StandardName根据计算机显示语言返回本地化名称 我想要一个可以提供给的程序化标识符TimeZoneInfo在下面的代码中 TimeZoneInfo timeZoneInf
  • 为什么 new String("Hello") 在 C# 中无效?

    制作背后的逻辑 原因是什么 String s new String Hello World 在 C 中非法 错误是 string String char 的最佳重载方法匹配有一些无效参数 我对 API 文档不感兴趣 我感兴趣的是为什么这是非
  • 比较已编译的 .NET 程序集?

    有没有什么好的程序可以与编译 NET 程序集进行比较 例如 我有 HelloWorld dll 1 0 0 0 和 HelloWorld dll 2 0 0 0 我想比较差异 我该怎么做 我知道我可以使用 NET Reflector 并使用
  • 什么时候值得使用 BindingSource?

    我想我非常了解 BindingSource 类的作用 即在数据源和 UI 控件之间提供一个间接层 它实现了 IBindingList 接口 因此还提供了对排序的支持 而且我已经经常使用它 没有太多问题 但我想知道我使用它的频率是否超过了应有
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • IEnumerable 与 IReadOnlyList

    选择有什么区别IEnumerable
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关

随机推荐