如何将"完整堆栈"功能分解为验收,集成和单元测试?

Afr*_*Ali 5 tdd bdd watin unit-testing mspec

我是行为驱动开发的新手,我正在努力学习它.我正在使用MSpec和Watin进行验收测试,并使用ASP.Net MVC 4进行单元测试的MSpec.我有一个简单的用户注册方案.

当用户输入用户名,密码,电子邮件等并点击注册按钮
时应验证电子邮件地址
应该检查用户名是否已经存在
它应该注册用户
它应该发送一个欢迎电子邮件
它应该重定向到主页

我想测试的东西无法使用Watin测试,例如发送电子邮件,检查用户是否存在等等.这些将是控制器测试的一部分.这是否意味着我的验收测试只会是当用户注册时他应该被重定向到主页?如何将整个过程分解为测试?

如果这些检查是在各种测试和不同级别实现的,那么如何获得MSpec提供的已实现所有功能的摘要报告?关于人们如何打破这些任务,然后他们如何获得集体报告等,我感到有点困惑.

Jas*_*ans 2

您的单元测试将包括以下内容:

  • 测试如果未给出用户名,注册用户的代码是否会引发异常。
  • 测试验证密码的代码是否有效。

基本上采用小单元的代码并测试它们。

对于验收测试,您需要将其提升到一个新的水平并集成这些功能以确保它们正常工作。因此,您可以进行验收测试来检查整个注册功能:

Given I am a new user
When I complete the register user form
Then I will be redirected to the home page

Given I am a new user
When I complete the register user form
And I have not entered a valid password
Then I will be shown an error message
Run Code Online (Sandbox Code Playgroud)

或者那个地区的东西。

就我个人而言,我不太喜欢编写测试用户界面的测试,因为 UI 可能会频繁更改(这意味着您必须修复因这些更改而损坏的测试);另外,我觉得我通过编写单元测试和验收测试来重复工作。

然而,当涉及到您的客户时,ATDD 可以让您受益,因为您可以向他们传达您如何测试应用程序。向他们展示 BDD 测试(书面文本)比public void ValidatePassword_PasswordNotValid_ExpectFalse.

这是您需要尝试 ATDD 才能知道是否会从中受益的场景之一。