好的,我决定从头到尾处理整个TDD过程。
我正在用ASP.NET MVC 2应用程序编写一个简单的博客,并开始进行验收测试,以便在实现它们时测试自己的功能。我使用SpecFlow作为我的BDD/ATDD框架。
我一直在读"基于测试的面向对象的成长系统“,这也是我开始学习的原因。
我将在书中被描述为迭代零,在这里我正在创建“行走骨架”
我决定从登录过程开始,作为“测试系统所有组件的最薄的功能片段”。在这种情况下,网站本身和数据库。
所以我写了一个详细的登录故事,我正在写的第一个场景就是成功登录。
在上述情况下,其中一个好处是
"Given there is a registered user with the username 'TestUser' and password 'TestPassword'"但是,我不确定如何实现这一步骤。
显然,这意味着数据库中需要有具有给定凭据的用户。但是,就像一个好的小程序员一样,我希望密码能在某种程度上被散列。
我想写一些类似的DatabaseHelper类,可以为我插入它。但是,这将包含哈希代码来散列密码,然后应用程序本身将需要相同的哈希代码,这似乎违反了DRY。
所以这里确实有几个相关的问题:
如果这个问题看上去有点模糊,我不得不道歉,我没有人从这边学习TDD,而这是我还没有经历过“啊-哈”这个时刻的范式转变之一。
提前谢谢。
发布于 2010-07-23 21:24:00
如果您正在做BDD,我可以建议不要从测试所有组件的最薄的切片开始,而是从测试风险最大的组件的最薄的切片开始吗?
假设任何有权访问系统的用户都已登录。登录并不是很危险。以前做过15,000次。
先对数据进行硬编码。从数据库中获取数据也不太危险。如果可以获得一些实际的数据示例,则可以在不影响场景的情况下稍后编写此代码。
找出你最不了解的系统中的哪些部分。创建场景并围绕系统的各个部分进行对话。你不需要从一开始就发展这个系统--你可以选择你喜欢的任何一点!系统中哪些部分让你最不舒服?哪些部分最让你的利益相关者感到不舒服?
这些可能是导致项目成功或失败的部分。登录可以在稍后进行,当您开始对其进行编码时,您将有一些人们希望登录的实际价值。
发布于 2010-07-23 13:39:02
从没有注册用户的场景开始会更容易吗?系统也需要处理这个问题,它所做的事情可以不需要任何东西来编写,只需要一个存根对数据库来说“没有这样的用户”。
https://stackoverflow.com/questions/3318223
复制相似问题