Trong Unit Testing, sự khác biệt giữa 'State-based Testing' và 'Interaction-based Testing' là gì? Khi nào nên ưu tiên loại nào?
Phân biệt
- State-based Testing: Kiểm tra trạng thái cuối cùng của đối tượng sau khi hàm được thực thi (ví dụ: kiểm tra giá trị của một biến, một thuộc tính).
- Interaction-based Testing: Kiểm tra xem hàm có gọi đúng các phương thức phụ thuộc (dependencies) với đúng tham số hay không (thường dùng Mock/Spy).
Khi nào sử dụng?
- State-based: Ưu tiên cho các hàm tính toán logic thuần túy (Pure Functions).
- Interaction-based: Ưu tiên cho các hàm điều phối (Orchestrator) hoặc các hàm có tương tác với hệ thống bên ngoài (gửi email, gọi API).
Lưu ý
Lạm dụng Interaction-based Testing sẽ làm cho test bị gắn chặt với chi tiết cài đặt (implementation details), gây khó khăn khi refactor code sau này.
Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp
Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.
Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)
Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?
Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.
Kiểm Tra CV Chuẩn ATS Miễn Phí
Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.
Câu hỏi unit testing liên quan cùng chủ đề
- Làm thế nào để tối ưu hóa hiệu năng và quản lý Mocking Frameworks (Mockito, Moq) trong dự án Unit testing? Entry
- Làm thế nào để tối ưu hóa hiệu năng và quản lý Parameterized Tests setup trong dự án Unit testing? Entry
- Trong Unit Testing, tại sao việc kiểm thử các hàm có chứa logic tạo ngẫu nhiên (Randomness) hoặc tạo ID tự động lại gây khó khăn và cách giải quyết tối ưu nhất là gì? Junior
- Làm thế nào để kiểm thử các hàm có logic xử lý Exception (Try-Catch) để đảm bảo ứng dụng không bị crash khi gặp dữ liệu đầu vào không hợp lệ? Junior
- Tại sao việc lạm dụng 'Global State' hoặc 'Singleton Pattern' lại gây khó khăn cho việc viết Unit Test và cách khắc phục trong kiến trúc Enterprise? Junior


