Rails:追溯添加测试的好过程?
我有几个应用程序可以回溯并追溯地构建一个测试套件(RSpec和Cucumber),但让这个过程开始有点令人望而生畏。
你的过程是什么将回到现有的应用程序,并建立一个测试套件?
我最近开始着手为一堆旧代码自己添加测试,并且我发现非常有用的是rcov(我不打扰rcov rails插件,只是测试并运行一个运行rcov的小shell脚本排除,并在测试全部通过时打开报告。)然后,我开始处理最接近100%覆盖范围的数据,并逐步提高百分比。 它比“更加可衡量的进步”,我从哪里开始为此添加测试?!“
我会先去添加高级测试(黄瓜)。 这会让你相信这种行为不会被忽视。 我不会去添加rspec测试(或者可能只是一些重要的测试),因为你可能也想重构很多。
然后,运行指标。 MetricFu最近得到了一个名为“HotSpots”的度量标准,它将结合其他度量标准并将您指向代码中最大的麻烦点。 这些地方通常也是您的应用程序最关键的。 修正它们,使其具有可读性,并且能够很好地理解它的含义。 不要太过分了。
然后,对于您要添加的每个新功能,添加规格并清理您正在与之交互的一些代码。 因此,测试并重构新功能的依赖关系,但不要超出这个范围。 以小块形式做,否则你很快就会失去希望。
最近我为客户项目做了很多工作。 对我来说,最大的障碍似乎是使用内联JavaScript或者不使用RJS。 [注意:有一个正确和错误的方法来做AJAX,而且大多数人都做错了。]我通常使用一些rspec进行奇怪的单元测试。
要考虑的变量是多种多样的,但开始的好地方是针对模型的几个单元测试。 创建一些工厂并测试您的验证,以及您认为需要测试的任何自定义行为。
如果你还没有进入这个领域,或者你已经有了一套单元测试,并且想要添加集成,那么接下来的问题就是你在多大程度上做了大量的内联JavaScript或者RJS。 如果你的应用程序非常“ajaxy”,那么你需要从selenium驱动程序开始,这个驱动程序对于黄瓜来说太慢了,但是它可以完成这项工作。 一旦你有一套测试涵盖了你的应用程序的全部功能(或者甚至是重要的东西),我就开始重构JavaScript以便不显眼地工作。
你可以去的另一个方向是为你的控制器和视图构建额外的rspecs,但是当你正在测试实现而不是功能时,我不太喜欢这种模式。
要记住的重要一点是,它不一定要在一夜之间发生。 分析您的工作流程(例如登录,执行任务A,执行任务B等)并确定哪些覆盖了典型用例的80%。 先测试一下。 然后使用诸如metric_fu或者简单的rcov(或其他覆盖工具)之类的东西,找到代码中逻辑密集且未经测试的区域。 我喜欢metric_fu,因为它运行的工具套件可以为您提供这两种信息。
链接地址: http://www.djcxy.com/p/49427.html