Measure your test performance with e.g. CI Reporter and refactor slow tests.
- Extract domain objects from your fat models. ActiveRecord is not your domain.
- Decouple code that doesn't follow the Single Responsibility Principle.
- Inject dependencies instead of referring to globals like RailsorUser.
From my experience, tests that don't require "test_helper" reveal the coupling in your application. Object orientation is about objects sending messages to other objects. So my approach is to test the messages, but isolate the object under test using mocks/stubs and to write acceptance tests to verify the system as a whole.
Here are some resources that should get you started:
- Fast Test, Slow Test talk by Gary Bernhardt
- Fast Rails Tests talk by Corey Haines
- Why Our Code Smells talk by Brandon Keepers
- Destroy all Software (subscription-based) screencasts by Gary Bernhardt
- Objects on Rails (free) eBook by Avdi Grimm
- Crazy, Heretical, and Awesome: The Way I Write Rails Apps article by James Golick