fitnesse - 如何在 DBFit 中管理不同的 DBMS?
问题描述
对不起我的英语,我说西班牙语。
我有一个用于 Oracle 的测试套件,现在我需要维护相同的套件,但也需要为 SQLServer 维护。
查询相同,但略有不同(日期函数等)。
管理需要多 dbms 的套件的最佳方法是什么?
谢谢
解决方案
我没有任何使用 DbFit 的经验,所以我的回答很笼统。希望您可以将其用作您的确切问题的基础。
对我来说,管理略有不同的测试套件会让人想起以下方法之一:
- 使用符号链接维护一组页面,为每个环境创建一个套件(子 wiki)。这些页面定义了测试用例,每个环境都有一个定义符号(“wiki 变量”)的根页面和一个指向页面集的链接。
- (使用 Slim 时)每个环境/数据库系统使用不同的场景。您可以根据当前应测试的内容包含定义场景的不同页面(每个定义具有相同名称但具有不同定义的场景)。或者在你的场景调用中使用符号来根据当前环境调用不同的场景。当然,在这两种情况下,您都可以共享适用于所有情况的场景。
- 为每个环境使用不同的夹具,允许相同方法的不同实现。
我相信您对 DbFit 的使用不包括选项 2 和 3,因此选项 1 似乎是要选择的选项。具体来说,我认为这将意味着定义!define QUERY_1 {...}
查询部分的符号(例如)和需要根据 DBMS 变化的连接字符串。在测试用例中,您不会对它们进行硬编码,而是包含对符号的引用(例如${QUERY_1}
)。(另请参阅我对可以在页面中使用 FitNesse 页面标签的回答吗? )
但当然,这一切都取决于您的测试需求究竟是什么。我倾向于使用 FitNesse 对应用程序进行验收测试。所以我会测试应用程序最终用户或服务/API 功能,而不是数据库查询。在这种情况下,我不会针对所有要测试的 DBMS 运行所有测试(我希望数据库层组件测试针对所有数据库测试所有查询)。我会针对一个 DBMS 运行大部分验收套件,针对其他 DBMS 运行非常有限的一套。
推荐阅读
- javascript - 如何制作可以检测为多个项目的变量
- python - 从连续时间戳中提取数据集的离散时间戳值
- android - 如何在 AlertDialog 显示后显示软键盘
- reactjs - React Hooks 无限循环与 Array
- python - 使用 docker 容器时找不到文件
- java - Netty 和 RTP - 比普通的旧 DatagramSockets 更糟糕?
- flutter - 在 Gridview.builder 中为容器设置高度
- azure - Can't signin into microsoft account
- github - github将管理员添加到公共组织
- mysql - JOOQ,连接多个表时,“on 子句”中的未知列“ideas_service.parent_section.id”