루비와 레일즈의 테스팅은 크게 Unit 테스팅, Functional 테스팅, Integration 테스팅으로 구분한다. Unit 테스팅은 주로 모델(Model)에서 비즈니스 로직을 검증하는 용도로 사용하고, Integration 테스팅은 최종 사용자(End-user) 입장에서 어플리케이션의 인터페이스를 점검하는 블랙박스 테스트 목적으로 많이 활용된다. 반면 콘트롤러의 기능을 점검하는 Functional 테스팅은 활용도가 앞의 두개에 비해 다소 떨어지는 편이다. 루비 1.9.x와 2.0.x 까지는 기본으로 내장된 Test::Unit 또는 써드파티 툴인 RSpec을 별도로 설치해서 사용하는 것이 일반적이었으나, MiniTest가 기본으로 제공되는 루비 2.1 부터는 MiniTest의 사용 빈도가 증가하고 있다. MiniTest는 속도면에서 Test::Unit보다 우수하고, DSL을 사용하는 바람에 오히려 문법적으로 너무 다양해져 버린 RSpec에 비해 순수 루비 문법만을 사용하는 단순함이 개발자 사이에서 좋은 평가를 받고 있다. [1] 레일즈에서도 4.x 이후에는 MiniTest를 기본 테스팅 프레임웍으로 채택하고 있다.

ActiveSupport::TestCase < MiniTest::Unit::TestCase
ActionDispatch::IntegrationTest < MiniTest::Unit::TestCase
레일즈에서는 모의 데이타(Data Manipulation Tool) 생성을 위해서 fixtures를 제공하고 있다. fixtures의 대안으로 factory girl이 유행했으나 최근에는 기능이 대폭 보완된 fixtures를 그대로 사용하자는 의견도 많다. fixtures 또는 factory girl이 생성하는 데이타는 테스트용 DB에만 존재한다. Capybara는 브라우저를 모의(Simulation)해서 Integration 테스팅에 필요한 기능 - 클릭, 폼 서밋 등 - 을 제공해 주는 도구이다. Mocha는 스터빙(stubbing, replacing a method with code that returns a specified result)과 마킹(mocking, a stub with an assertion that the method gets called) 툴의 일종이다.