# 82: Hãy test khi bạn đang ngủ (và cả cuối tuần)

Hãy thư giãn. Tôi không nói về việc sắp xếp đến trung tâm phát triển ở nước ngoài, làm quá giờ vào cuối tuần hay tăng ca buổi tối. Tôi muốn bạn chú ý đến chúng ta có khả năng tính toán như thế nào theo quan điểm của chúng tôi. Cụ thể là, chúng ta đã không khai thác như thế nào để khiến việc trở thành lập trình viên dễ hơn một chút. Bạn có thường xuyên cảm thấy khó khăn để có đủ khả năng tính toán trong suốt ngày làm việc? Nếu vậy, máy chủ thử nghiệm của bạn đang làm gì ngoài giờ làm việc chính?

Thông thường, các máy chủ thử nghiệm đều rảnh rỗi vào buổi tối và cuối tuần. Bạn có thể sử dụng chúng cho lợi ích của bạn.

  • Bạn có bao giờ cảm thấy tội lỗi khi cam kết một cuộc giao dịch mà không chạy hết các bài kiểm tra? Một trong các lí do chính mà lập trình viên không chạy hết bộ thử nghiệm trước khi cam kết code là do khoảng thời gian mà họ có thể mất. Khi deadlines tới gần thì con người thường bắt đầu cắt giảm bớt vài thứ. Một cách để giải quyết điều này là chia bộ test thành hai hoặc nhiều profiles. Việc này sẽ giúp đảm bảo các tests được chạy trước khi chúng được xác nhận. Toàn bộ profiles thử nghiệm (bao gồm profile bắt buộc — chỉ để chắc chắn thôi) sẽ được chạy tự động qua đêm và sẵn sàng báo cáo kết quả vào sáng hôm sau.

  • Bạn có bao giờ có cơ hội để kiểm tra tính ổn định của sản phẩm của bạn? Các tests có thời gian chạy lâu rất quan trọng để xác định memory leaks và các vấn đề ổn định khác. Chúng hiếm khi được chạy trong ngày bởi vì chúng cần thời gian và nguồn tài nguyên. Bạn có thể tự động hóa bộ kiểm tra độ thẩm thấu để chạy chúng suốt đêm, và chạy lâu hơn một chút vào cuối tuần. Từ 6.00 chiều thứ Sáu đến 6.00 sáng thứ Hai ta sẽ có 60 tiếng để kiểm tra tiềm năng của nó.

  • Bạn có nhận được thời gian chất lượng cho Môi trường kiểm nghiệm hiệu năng (Performance testing environment) của bạn? Tôi đã nhìn thấy vài đội cãi nhau để nhận được thời gian cho performance testing environment. ## lớn các trường hợp không đội nào có được thời gian chất lượng trong ngày, trong khi môi trường (environment) hầu như không hoạt động sau nhiều giờ. Các máy chủ và mạng lưới cũng không bận rộn suốt đêm hay các ngày nghỉ. Đây là thời gian lí tưởng để chạy một vài performance tests chất lượng.

  • Có nhiều hoán vị để có thể test thủ công? Trong nhiều trường hợp, sản phẩm của bạn sẽ được chỉ định để chạy trên các nền tảng (platform) đa dạng khác nhau. Ví dụ, cả 32-bit và 64-bit trên Linux, Solaris, và Windows, hay đơn giản là ở các phiên bản khác nhau của cùng một hệ điều hành. Để làm mọi thứ tệ hơn, nhiều ứng dụng hiện đại đã để lộ ra một lượng lớn không cần thiết về cơ chế và giao thức vận chuyển (HTTP, AMQP, SOAP, CORBA,…). Việc test thủ công toàn bộ các hoán vị này rất tốn thời gian và rất có thể nó được hoàn thành như một sự giải thoát do áp lực tài nguyên. Than ôi, điều đó có thể là quá chậm trong tuần hoàn tìm một số lỗi khó chịu.

Bộ thử nghiệm tự động chạy suốt đêm hoặc suốt cuối tuần sẽ đảm bảo các hoán vị đó được kiểm tra thường xuyên hơn. Với một chút tư duy và kiến thức cơ bản, bạn có thể sắp xếp một số cron jobs để bắt đầu vài bài kiểm tra vào buổi tối và xuyên suốt ngày nghỉ cuối tuần. Ngoài ra còn có các phần mềm kiểm thử (testing tool) có thể giúp ích cho bạn. Một vài tổ chức còn có những lưới máy chủ chứa máy chủ đến từ các ban và đội khác nhau nhằm đảm bảo nguồn tài nguyên được tận dụng hiệu quả. Nếu tổ chức của bạn đang thực hiện điều này, bạn có thể nộp những bài tests để chạy vào buổi tối và cuối tuần.