Bài kiểm tra số 3. Kata 5.

Đây là bài làm theo nhóm. Hạn nộp: 9h thứ Sáu 9/8.

Từ các chương 12-14, những nội dung chúng ta cần học là: (1) cho một acceptance test, quy trình TDD để pass được nó như thế nào. (2) Thiết kế được tiến hóa dần nhờ nỗ lực refactor như thế nào. Hai điểm đó có vai trò cốt lõi trong việc áp dụng TDD cho dự án. Đó là nội dung của hai câu hỏi cho bài kiểm tra này.

Câu 1. TDD + refactor -> thiết kế

Trong các chương 12-14, các tác giả phát triển thiết kế từ chỗ ứng dụng chỉ có 2 class Main và MainWindow. Thiết kế của ứng dụng đã được từng bước phát triển dần trong quá trình TDD, do kết quả của việc refactor. Đây là kĩ thuật cực kì quan trọng, nó giúp cho ta xây dựng được thiết kế tốt cho hệ thống mà không cần phải xây dựng class diagram trước khi bắt tay vào coding, không cần đến kiến thức về các design pattern. Điều chúng ta cần học được từ các chương 12-14 là refactor như thế nào, nói cách khác là dọn dẹp code như thế nào. Hãy liệt kê các class đó theo thứ tự tạo ra. Với mỗi class, viết 1-2 câu mô tả lí do mà nó được tạo ra (dùng văn viết của chính mình chứ đừng copy paste nhé). Chú ý rút ra nhận xét để sau này có thể nhận ra các tình huống tương tự để thực hiện refactor.

Câu 2.

Kết quả của việc TDD cho mỗi acceptance test là một lát chức năng được đắp thêm vào bộ xương di động. Người ta đã làm thế nào để TDD bên trong nhằm pass một acceptance class? Bạn có thể rút ra một quy trình tổng quát được không? Chẳng hạn để pass một acceptance test thì bắt đầu làm từ đâu? tiến đi đâu? tiến đến đâu thì dừng? Các unit test đóng vai trò gì ở đây? Gợi ý: xem kĩ công việc cho một acceptance test cụ thể. Theo dõi trên component diagram tương ứng với thiết kế tại thời điểm đó xem TDD tiến từ đâu đến đâu.