10 giây là một khoảng thời gian rất dài cho bất kỳ thử nghiệm đơn lẻ nào chạy. Cảm giác ruột của tôi là mục tiêu thông số kỹ thuật của bạn đang chạy cả thử nghiệm đơn vị và tích hợp cùng một lúc. Đây là một điều điển hình mà các dự án rơi vào và ở một số giai đoạn, bạn sẽ cần phải vượt qua món nợ kỹ thuật này nếu bạn muốn sản xuất nhiều hơn, nhanh hơn. Có một số chiến lược có thể giúp bạn làm điều này ... và tôi sẽ giới thiệu một số chiến lược mà tôi đã sử dụng trong quá khứ.
1. Tách Đơn vị khỏi Kiểm tra Tích hợp
Điều đầu tiên tôi sẽ làm là tách đơn vị khỏi các bài kiểm tra tích hợp. Bạn có thể làm điều này bằng cách:
- Di chuyển chúng (vào các thư mục riêng biệt trong thư mục cụ thể) - và sửa đổi các mục tiêu rake
- Gắn thẻ chúng (rspec cho phép bạn gắn thẻ các bài kiểm tra của mình)
Triết lý đặt ra là bạn muốn các bản dựng thông thường của mình nhanh chóng - nếu không mọi người sẽ không quá vui khi chạy chúng thường xuyên. Vì vậy, hãy quay trở lại lãnh thổ đó. Làm cho các bài kiểm tra thường xuyên của bạn chạy nhanh và sử dụng máy chủ tích hợp liên tục để chạy bản dựng hoàn chỉnh hơn.
Kiểm tra tích hợp là kiểm tra liên quan đến các phụ thuộc bên ngoài (ví dụ: Cơ sở dữ liệu, WebService, Hàng đợi, và một số sẽ tranh luận về Hệ thống tệp). Kiểm tra đơn vị chỉ kiểm tra mục mã cụ thể mà bạn muốn kiểm tra. Nó sẽ chạy nhanh (9000 trong 45 giây là có thể), tức là hầu hết nó sẽ chạy trong bộ nhớ.
2. Chuyển đổi các bài kiểm tra tích hợp thành bài kiểm tra đơn vị
Nếu phần lớn các bài kiểm tra đơn vị của bạn nhỏ hơn bộ kiểm tra tích hợp, thì bạn đã gặp sự cố. Điều này có nghĩa là sự mâu thuẫn sẽ bắt đầu xuất hiện dễ dàng hơn. Vì vậy, từ đây, hãy bắt đầu tạo thêm các bài kiểm tra đơn vị để thay thế các bài kiểm tra tích hợp. Những điều bạn có thể làm để giúp đỡ trong quá trình này là:
- Sử dụng khuôn khổ chế nhạo thay vì tài nguyên thực. Rspec có một khuôn khổ mô phỏng có sẵn.
- Chạy rcov trên bộ thử nghiệm đơn vị của bạn. Sử dụng điều đó để đánh giá mức độ kỹ lưỡng của bộ thử nghiệm đơn vị của bạn.
Sau khi bạn có (các) bài kiểm tra đơn vị thích hợp để thay thế bài kiểm tra tích hợp - hãy xóa bài kiểm tra tích hợp. Kiểm tra trùng lặp chỉ làm cho việc bảo trì tồi tệ hơn.
3. Không sử dụng đồ đạc
Đồ đạc là xấu xa. Thay vào đó, hãy sử dụng một nhà máy (thợ máy hoặc nhà máy). Các hệ thống này có thể xây dựng các đồ thị dữ liệu thích ứng hơn và quan trọng hơn, chúng có thể xây dựng các đối tượng trong bộ nhớ mà bạn có thể sử dụng, thay vì tải mọi thứ từ nguồn dữ liệu bên ngoài.
4. Thêm kiểm tra để dừng kiểm tra đơn vị trở thành kiểm tra tích hợp
Bây giờ bạn đã có kiểm tra nhanh hơn, đã đến lúc kiểm tra để NGỪNG điều này xảy ra lần nữa.
Có những thư viện mà khỉ vá bản ghi hoạt động để gây ra lỗi khi cố gắng truy cập cơ sở dữ liệu (UnitRecord).
Bạn cũng có thể thử ghép nối và TDD có thể giúp buộc nhóm của bạn viết các bài kiểm tra nhanh hơn vì:
- Ai đó đang kiểm tra - vì vậy không ai lười biếng
- TDD thích hợp yêu cầu phản hồi nhanh. Các bài kiểm tra chậm chỉ làm cho toàn bộ sự việc trở nên đau đớn.
5. Sử dụng các thư viện khác để khắc phục vấn đề
Ai đó đã đề cập đến spork (tăng tốc thời gian tải cho bộ thử nghiệm trong rails3), hydra /llel_tests - để chạy các bài kiểm tra đơn vị song song (trên nhiều lõi).
Điều này có lẽ nên được sử dụng CUỐI. Vấn đề thực sự của bạn nằm ở bước 1, 2, 3. Giải quyết vấn đề đó và bạn sẽ ở vị trí tốt hơn để xác định cơ sở hạ tầng bổ sung.