我有一些应用程序,我想回去并追溯建立一个测试套件(RSpec& Cucumber),但是让这个过程开始有点令人生畏。
您的流程是什么回到现有应用并为其构建测试套件?
答案 0 :(得分:4)
我会首先添加高级测试(黄瓜)。这将使您确信行为不会被忽视。我不会去添加rspec测试(或者可能只是一些有意义的测试),因为你可能也想重构一下。
然后,运行metrics。 MetricFu最近得到了一个名为“HotSpots”的指标,它将结合其他指标并指出代码中最大的麻烦点。这些地方通常也是您应用程序最关键的地方。修复它们就足以让它具有可读性,并且您可以很好地理解它的含义。不要过火了。
然后,对于您要添加的每个新功能,添加规范并清理您正在与之交互的一些代码。因此,测试和重构新功能的依赖关系,但不要超越它。以微小的方式做,否则你很快就会失去希望。
答案 1 :(得分:0)
我最近为客户项目做了很多这方面的工作。对我来说最大的障碍似乎是有或没有RJS的内联javascript的猖獗使用。 [旁注:做AJAX有正确和错误的方法,而且大多数人都是做错了。]我通常使用黄瓜和一些rspec来进行奇怪的单元测试。
要考虑的变量是多种多样的,但一个好的起点是为您的模型进行一些单元测试。创建一些工厂并测试您的验证,以及您认为需要测试的任何自定义行为。
如果你没有进入,或者你已经有了一套单元测试,并且想要添加集成,那么下一个问题是你在多大程度上使用内联javascript或RJS。如果您的应用程序非常“a”,您将需要从黄瓜的硒驱动程序开始,这在2月份作为糖蜜很慢,但它将完成工作。一旦你有一套测试覆盖你的应用程序的全部功能(甚至只是重要的东西),我就会开始重构javascript以便不引人注目地运行。
你可以采取的另一个方向是为你的控制器和视图构建额外的rspec,但我不喜欢这种模式,因为你正在测试实现而不是功能。
要记住的重要一点是,并非所有事情都必须在一夜之间完成。分析您的工作流程(例如登录,执行任务A,执行任务B等)并确定哪些覆盖了80%的典型用例。先测试一下。然后使用metric_fu或只是简单的rcov(或任何其他覆盖工具),并找到代码中逻辑密集且未经测试的区域。我喜欢metric_fu,因为它运行的工具套件可以为您提供这些信息。
答案 2 :(得分:0)
我在这里有点偏离主题,但无论如何......
我认为在rails中的模型的单元测试(至少3个)是没有价值的...我的意思是特别是在编写代码时,所以你没有做TDD。您想测试验证吗?为什么?只需阅读代码,您就可以自己找出错误。我说rails提供(在某些地方)这样的人类语法,单元测试它会是一种耻辱。
在我看来,这样的语法本身就是一个规范。那么,为什么要写测试?
只是要明确:不,我不是说测试一直没用。我不是在一个随机的网络代理商工作......:p
答案 3 :(得分:0)
我最近开始着手将测试添加到一堆旧代码中,我发现非常有用的是rcov(我不打扰rcov rails插件,只是cd来测试并运行一个小shell使用正确的排除项运行rcov的脚本,如果测试全部通过则打开报告。)然后,我开始处理最接近100%覆盖率的那些并且只是逐位处理百分比。这是比以往更加可衡量的进展,“呃,我从哪里开始为此添加测试?!”