我将为我的应用程序创建集成测试。我希望我的集成测试不会在生产数据库中执行。我希望在测试执行开始之前,我的继续集成服务器(团队城市)创建我的数据库的副本,并将在其上执行集成测试。任何方法或最佳实践?
修改
我想自动化此过程(文章或论坛的任何链接)。
答案 0 :(得分:2)
以下是我要做的步骤
由于您使用的是SQL Server,因此使用SSIS非常容易。
步骤:
要了解SSIS,一本好书是Microsoft Press的SQL Server Integration Services Step by Step。
适用于SQL Server的好论坛
答案 1 :(得分:1)
您可能不希望构建服务器触及生产数据库(我当然不会)。
我创建了一个从.bak文件或脚本加载数据库的工作(如果它不是太大,你可以对它进行版本化)并在运行测试之前运行该作业。
答案 2 :(得分:1)
我目前正在努力完成同样的任务。我在我的机器上安装了nant,然后创建了以下文件夹
./servername/databasename/release
./servername/databasename/restore
./servername/databasename/rollback
./servername/databasename/test
然后计划为每个任务创建nant目标(发布,恢复,回滚,测试)。
./servername/databasename/restore/000001.set_database_offline.sql
./servername/databasename/restore/000002.restore_database.sql
./servername/databasename/restore/000003.fix_orphaned_logins.sql
./servername/databasename/restore/000004.do_some_operation_example_upgrade_table_x.sql
然后我创建所有带有数字前缀的脚本,以控制执行顺序。这背后的想法是创建命名以匹配我的文件夹的构建任务,所以我可以执行下面列出的命令,这将快速执行目录中的所有脚本。
nant restore
nant release
nant rollback
nant test
我认为我需要增强该过程,以便对发布和回滚进行单独的测试,但这是一项正在进行中的工作。
如果您选择遵循相同的路径,请告诉我。合作并分享一个简单的可重复过程真的很酷。
这样做的原因是: 1.自动化 2.重复性 3.一致性 4.将所有代码添加到源代码管理
目标是能够在多个环境中进行部署和测试,并且在将代码升级到生产环境时不会更改代码。
此致
答案 3 :(得分:0)
我至少已经做了两年了。这并不复杂。我从脚本创建我的测试数据库,也从脚本填充测试数据,所有这些都是从NUnit FixtureSetup步骤调用的。没有任何问题。