如何在 DBFit 中管理不同的 DBMS?

问题描述

对不起我的英语,我说西班牙语。

我有一个用于 Oracle 的测试套件,现在我需要维护相同的套件,但也用于 sqlServer。

查询相同,但略有不同(日期函数等)。

管理需要多数据库的套件的最佳方法是什么?

谢谢

解决方法

我没有任何使用 DbFit 的经验,所以我的回答很笼统。希望您可以将其用作解决具体问题的基础。

对于管理稍微不同的测试套件,我想到了以下方法之一:

  1. 使用符号链接维护一组页面,以便为每个环境创建一个套件(子 wiki)。这些页面定义了测试用例,每个环境都有一个根页面,用于定义符号(“wiki 变量”)和指向一组页面的链接。
  2. (使用 Slim 时)针对每个环境/数据库系统使用不同的场景。您可以根据当前应测试的内容包括定义场景的不同页面(每个页面定义具有相同名称但具有不同定义的场景)。或者在你的场景调用中使用符号来根据当前环境调用不同的场景。当然,在这两种情况下,您都可以拥有适用于所有情况的共享方案。
  3. 为每个环境使用不同的装置,允许相同方法的不同实现。

我相信您对 DbFit 的使用排除了选项 2 和 3,因此选项 1 似乎是可行的。具体来说,我认为这意味着为查询部分定义符号(例如 !define QUERY_1 {...})和需要因 DBMS 而异的连接字符串。在测试用例中,您不对这些进行硬编码,而是包含对符号的引用(例如 ${QUERY_1})。 (另见我对Can FitNesse page tags be used in page?的回答)

当然,这一切都取决于您的测试需求到底是什么。我倾向于使用 FitNesse 对应用程序进行验收测试。所以我会测试应用程序最终用户或服务/API 功能,而不是数据库查询。在这种情况下,我不会针对所有要测试的 DBMS 运行所有测试(我希望数据库层组件测试针对所有数据库测试所有查询)。我会针对一个 DBMS 运行大部分验收套件,并针对其他 DBMS 运行非常有限的一组。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...