我们刚开始写集成测试,以测试数据库,数据访问层,Web服务调用等 目前,我有一些想法写集成测试,如 1)总是重新创建表在初始化函数中。 2)如果您在同一功能中保存新内容,请务必清除功能内的数据。编写集成测试,测试数据库,Web服务调用
但我想知道一些更好的做法。
我们刚开始写集成测试,以测试数据库,数据访问层,Web服务调用等 目前,我有一些想法写集成测试,如 1)总是重新创建表在初始化函数中。 2)如果您在同一功能中保存新内容,请务必清除功能内的数据。编写集成测试,测试数据库,Web服务调用
但我想知道一些更好的做法。
当单元测试DAL,我不喜欢这样写道:
[TestFixtureSetUp]
public void TestFixtureSetUp()
{
//this grabs the data from the database using an XSD file to map the schema
//and saves it as xml (backup.xml)
DatabaseFixtureSetUp();
}
[SetUp]
public void SetUp()
{
//this inserts test data into the database from xml (testdata.xml)
//it clears the tables first so you have fresh data before every test.
DatabaseSetUp();
}
[TestFixtureTearDown]
public void TestFixtureTearDown()
{
//this clears the table and inserts the backup data into the database
//to return it to the state it was before running the tests.
DatabaseFixtureTearDown();
}
如同所有的测试,就必须从已知状态一个启动,并在测试完成,明确降到干净的状态。
此外,测试代码经常被忽视,因为不是真正的代码,因此不能正确维护... 它比代码更重要。至少同样多的设计,应该进入你的测试架构。规划合理的抽象级别,例如,如果您正在测试Web应用程序,请考虑具有这样的层级:抽象化您的浏览器交互,抽象页面上的组件,抽象页面和测试。测试与页面和组件交互,页面与组件交互,组件与浏览器交互层交互,浏览器交互层与您的(可能是第三方)浏览器自动化库进行交互。
如果您的测试代码没有得到适当的维护或经过深思熟虑,那么它们会成为一种障碍,而不是编写新代码的帮助。
如果你的团队是新的测试,有很多coding katas在那里,旨在教的良好测试(进出这是以良好的代码),他们一般集中在一个单元测试水平的重要性,但是许多校长是一样的。
一般来说,我建议你看看嘲笑你的数据库访问层和Web服务调用类,以使其更具可测性。关于这个问题有很多书籍,如Osherove的单元测试艺术。
之前已经说过,集成测试应该是可重复的。因此,我会选择选项1来编写一个脚本,该脚本可以从头开始用测试数据重新创建数据库。选项2比较困难,因为它很难确定清洁功能不会留下不必要的数据残留。
可能dublicate http://stackoverflow.com/questions/1328730/integration-testing-best-practices –
我看过那个帖子,但更多的是关于分离快速和慢速测试。 – alice7