我们正在开发一个Rails应用程序,它有相当多的页面包含数据报告。典型的报表页基于一个相对较大的SQL查询,通常涉及5-8个表联接。
我们偶然发现的基本问题是--编写集成测试报告页。我们的通用集成测试如下所示:
factory_girl在DB中创建一组记录,capybara场景,其中用户登录,使用报表前进到页面,并在其中看到正确的数据。随着应用程序的增长,我们可以创建更多这样的报告页面,我们开始遇到以下问题--每个单独测试的设置最终都太大、太复杂,而且通常很难阅读和维护。
创建这样的测试大大提高了开发人员交付与报告相关的特性的门槛,因为它非常耗时,并且没有为幸福进行优化。然而,我们仍然需要确保我们的报告是正确的。
因此,我的问题是:
发布于 2014-12-11 15:36:55
1.我们是否应该测试报告页?
你绝对应该测试你的报告页面。
2.如果我们要测试报告,那么最不痛苦的方法是什么?
考虑到报告的大小,您可能会遇到以下问题:
3.我们做错了什么?
我不知道你的设置的所有细节,但似乎主要的误解是认为报告本身就是页面。请记住,您可以以CSV或XML的形式生成报告,它们在内部仍然是相同的报告。在软件中,报表可能最终成为一个具有值的数组。
所以,下一次,考虑一下分离概念。您有报告生成和UI。分别测试它们,然后在两者之间添加一些测试,以确保它们都集成得很好。
在未来,假设您移动到一个单一的Page应用程序™和™应用程序,您将不需要摆脱您的报告生成测试,但UI测试将进入客户端。这证明UI与报表生成不同。
发布于 2014-12-11 15:21:57
我会发表我们到目前为止的想法。
完全不做集成测试()
相反,编写集成测试,编写低级功能测试,将DB交互视为与第三方API的交互。
情况是这样的:
- the SQL raised no syntax error,
- the result object returned correct columns,
- the column types are as what we are expecting them to be.
这种方法的优点是:
factory_girl时代的测试要快得多,预加载数据夹具
没有为每个报表测试设置复杂的记录树,而是在整个测试套件之前预先填充一个完整的DB记录“字段”。
情况是这样的:
这种方法的优点是:
factory_girl时代的测试要快得多。这种方法的缺点是:
https://stackoverflow.com/questions/27425789
复制相似问题