Tôi có một chương trình vận hành các mục công việc kéo ra khỏi hàng đợi chặn và hoạt động đồng thời trên chúng. Tôi nhận ra đây là một mô tả RẤT lỏng lẻo, nhưng bất cứ ai có thể đề xuất một chiến lược thử nghiệm đơn vị/ý tưởng về những gì để kiểm tra?Java - chiến lược kiểm tra đơn vị kiểm tra đồng thời/chặn hàng đợi
Trả lời
Sử dụng các cơ chế xếp hàng công nhân trong java.util.concurrent và dựa vào chúng để kiểm tra mã của chúng. Sau đó, chỉ cần kiểm tra nhân viên của bạn để chắc chắn rằng nó làm điều đúng. Nếu nó độc lập với các chủ đề khác nên là đủ. Nếu không, bạn có thể sẽ cần phải đưa ra một chiến lược thử nghiệm tích hợp trên các cấu hình phần cứng/os/jvm phù hợp với môi trường sản xuất của bạn.
Bạn cần thiết kế thiết bị để thử nghiệm.
gợi ý Vì vậy, cụ thể:
- Hãy chắc chắn rằng bạn có thể đặt các lớp học thử nghiệm hoặc chế nhạo vào hàng đợi
- Mã số mocks sớm để mất nhiều thời gian và chắc chắn rằng chúng không phải là những người đầu tiên hoàn thành (chứng minh sự tương tranh)
- Đảm bảo thu thập kết quả của bạn có kích thước bằng nhau đối với tất cả các thử nghiệm của bạn.
- Đảm bảo kết quả của bạn không hoàn thành cho đến khi được phân bổ cho bài kiểm tra dài nhất.
hmm, tất cả đều bắt nguồn từ việc có thể chèn các nhóm mocks/thử nghiệm vào hàng đợi.
Cảm ơn, đây là những ý tưởng hay. –
Loại phụ thuộc vào loại xử lý các lớp học của bạn làm, với các mục được kéo ra. Ví dụ, giả sử họ viết các mục vào cơ sở dữ liệu. Bạn có thể muốn thử nghiệm như thế này.
- Một chủ đề có thể kéo một mục từ hàng đợi và lưu nó vào cơ sở dữ liệu.
- Hai chủ đề có thể kéo các mục từ hàng đợi đồng thời và dữ liệu được lưu nếu chuỗi đầu tiên cố lưu trước tiên.
- Hai chủ đề có thể kéo các mục từ hàng đợi đồng thời và dữ liệu được lưu nếu chuỗi thứ hai cố lưu trước tiên.
- Năm mươi chủ đề (hoặc bất kỳ giới hạn nào phù hợp cho chương trình của bạn) có thể kéo các mục từ hàng đợi đồng thời và lưu dữ liệu chính xác.
Nếu bạn đang sử dụng một trong các triển khai hàng đợi chặn JDK hoặc triển khai từ bên thứ ba, hãy đảm bảo rằng bạn không thử kiểm tra hành vi của lớp xếp hàng chặn. Tất nhiên, nếu bạn đã viết của riêng bạn, sau đó bạn đã có rất nhiều bài kiểm tra nhiều hơn nữa mà bạn cần phải viết.
Hy vọng điều này sẽ hữu ích.
Cảm ơn bạn, đây là những điều tuyệt vời. –
- 1. Chiến lược ghi nhật ký kiểm tra
- 2. Kiểm tra đơn vị một Servlet Java
- 3. Kiểm tra đơn vị XQuery
- 4. Kiểm tra cuộc gọi không đồng bộ trong kiểm tra đơn vị trong iOS
- 5. Đơn vị kiểm tra học thuyết ODM
- 6. Kiểm tra đơn vị CacheManager
- 7. Kiểm tra đơn vị XSLT
- 8. Kiểm tra đơn vị CSS
- 9. Đơn vị kiểm tra TSQL
- 10. Đơn vị kiểm tra RedirectToRouteResult
- 11. Đơn vị kiểm tra destructors?
- 12. Kiểm tra đơn vị JSPs
- 13. Kiểm tra đơn vị EJB
- 14. Kiểm tra đơn vị XCode
- 15. Kiểm tra đơn vị Scala
- 16. DAO Kiểm tra đơn vị
- 17. Kiểm tra Đơn vị & Log4net
- 18. Kiểm tra đơn vị hoặc Kiểm tra chức năng?
- 19. Kiểm tra đơn vị - Những gì không để kiểm tra
- 20. Làm thế nào để viết bài kiểm tra đơn vị kiểm tra bất biến đồng thời
- 21. Cách kiểm tra đơn vị mã được đồng bộ hóa
- 22. Tư vấn kiểm tra đơn vị - cách kiểm tra đơn vị của bạn .asmx
- 23. Kiểm tra đơn vị với hàng giả hoặc mocks?
- 24. NSHomeDirectory trong iPhone đơn vị kiểm tra
- 25. Bài kiểm tra đơn vị cơ bản so với bài kiểm tra đơn vị
- 26. khung kiểm tra đơn vị cho C
- 27. C++ Đơn vị kiểm tra thư viện
- 28. Kiểm tra đơn vị bash script
- 29. Các chiến lược để kiểm tra mã phản ứng, không đồng bộ
- 30. Kiểm tra đơn vị là gì?
Bạn đang cố gắng kiểm tra tính hợp lệ của BlockingQueue hoặc xử lý đồng thời trên giá trị trả về? –
Tôi đã thử nghiệm tính hợp lệ của công việc thực tế mà trình xử lý xếp hàng chặn hoạt động, nhưng tôi muốn kiểm tra mã xung quanh hoạt động của nó. –
Thử nghiệm cho sự tương tranh là khó khăn: bạn có thể có một chương trình đa luồng kém sẽ vượt qua tất cả các thử nghiệm hoàn hảo trên một số nền tảng (ví dụ: một CPU lõi), nhưng không thành công trên các nền tảng khác. Ngay cả khi các thử nghiệm của bạn thành công trên một CPU đa lõi, việc lập lịch trình chuỗi thay đổi cho các hệ điều hành khác nhau và chúng có thể thất bại ở nơi khác. – toto2