.net – 如何开始自动测试大型应用程序?

编辑:感谢ncie评论者,我得到了单元和自动测试之间的区别,所以我重命名了这个主题

Environement:.net 2.0,sql server 2005,windows server 2003

我读了这篇文章:

http://www.codeproject.com/KB/tips/convince.aspx

这家伙正在谈论如何在不改变所有内容的情况下为现有应用添加自动化测试.

而且我不得不说这篇文章非常精彩,让我想尝试一下!

因此我们的系统几乎相同:所有数据都可以通过Web服务访问,因此我们可以轻松地(例如使用soapui)对这些Web服务进行一些自动化测试.

但是:数据库怎么样?要进行一些自动化测试,我们需要在数据库中拥有与自动化测试相对应的正确数据.

例如,如果我想进行自动化测试,检查软件如果客户端名称为空则引发错误,我需要在我的数据库中添加一个空名称的客户端.

这是我认为我能做到的:

>使用它需要的一切创建服务器(iis,sql server ……)
>添加一些东西,这样服务器的日期永远不会改变,所以我不必在自动化测试中改变时间
>在我的数据库中添加我需要进行自动化测试的记录

问题:在10次自动测试之后,数据库将是一个很大的混乱,我永远不会知道哪个记录是针对哪个自动化测试的.
我的想法是在每张桌子上添加一个“TEST_NAME”栏目,但在我看来它有点脏.

你有没有试过这种技术?你使用了一些特定的工具吗?我的思维方式是好的吗? (或至少是一个好的).

谢谢

编辑:这个帖子我得到2 -1,我想知道为什么所以我不会两次犯同样的错误.

最佳答案 如果您的单元测试正在进入持久层,那么您实际上可能正在做类似于集成测试的事情.你应该做什么在单元测试期间抽象你的数据库,这样你只测试逻辑而不是实际的持久性介质.这使您可以专注于业务层逻辑.这说起来容易做起,因为它取决于数据层的体系结构.

数据层通常是推入和拉出的简单问题,因此我们可以说您可以将数据层抽象为以下界面:

interface IRepository
{
   GetModel(id);
   SaveModel(model);
}

然后在您的单元测试中,可以使用此接口存根/模拟您的数据层.这样,您可以告诉数据库的存根返回您想要的任何值,并且您可以编写一个测试,以便在发生这种情况时为预期的行为提供资源.

点赞