Người dịch: Capuchino Dang | Biên tập: Phạm Anh Đới
Kiểm thử đơn vị là một trong những kỹ thuật cốt lõi của Extreme Programming (XP). Nhưng cách kiểm thử đơn vị của XP có đôi chút khác biệt. Trước hết, bạn nên tự tạo hoặc tải một khung làm việc cho kiểm thử đơn vị nào đó, để từ đó xây dựng nên những bộ kiểm thử đơn vị tự động. Sau đó, bạn nên tiến hành kiểm thử tất cả các lớp trong hệ thống. Những phương thức getter và setter đơn giản thì nên bỏ qua. Bạn cũng nên áp dụng luật kiểm thử trước, rồi mới viết mã lệnh.
Những kiểm thử này thường được để cùng với mã lệnh mà chúng kiểm tra trong nơi lưu trữ mã lệnh (code repository). Mã lệnh mà không có kiểm thử có thể sẽ không được phát hành. Nếu một kiểm thử đơn vị nào đó chưa được xây dựng, nó cần được bổ sung ngay tại thời điểm phát hiện.
Thời hạn là trở ngại lớn nhất cho việc triển khai các kiểm thử đơn vị. Nhưng trong suốt thời gian của dự án, chính kiểm thử tự động có thể giúp bạn tiết kiệm thời gian, gấp hàng trăm lần so với thời gian bỏ ra để xây dựng kiểm thử, bằng việc tìm và tránh các lỗi. Kiểm thử càng khó xây dựng thì càng chứng tỏ bạn sẽ rất cần nó, vì nó sẽ giúp bạn tiết kiệm thời gian lớn hơn. Các kiểm thử tự động mang lại nhiều lợi ích hơn rất nhiều so với cái giá phải bỏ ra cho nó.
Một hiểu nhầm thường gặp khác là các kiểm thử đơn vị có thể được xây dựng trong khoảng 3 tháng cuối của dự án. Thật không may, nếu không có kiểm thử thì việc phát triển sẽ bị kéo dài và ngốn luôn không chỉ ba tháng cuối đó. Thậm chí nếu có đủ thời gian thì một kiểm thử đơn vị tốt cần phải được nâng cấp. Việc phát hiện ra tất cả các vấn đề tiềm ẩn sẽ mất khá nhiều thời gian. Vì vậy, để có một bộ kiểm thử hoàn chỉnh, bạn cần phải bắt đầu việc xây dựng nó ngay từ hôm nay.
Kiểm thử đợn vị cho phép việc sở hữu tập thể. Xây dựng các kiểm thử giống như việc bạn tạo ra một lớp bảo vệ cho các chức năng. Việc yêu cầu tất cả mã lệnh phải vượt qua được các kiểm thử trước khi nó được phân phối đảm bảo rằng tất cả các chức năng luôn hoạt động. Việc mỗi cá nhân sở hữu mã lệnh là không cần thiết khi tất cả các lớp đều được đảm bảo bởi kiểm thử đơn vị.
Kiểm thử đơn vị cũng cho phép tái cấu trúc. Sau mỗi thay đổi nhỏ, kiểm thử đơn vị có thể xác minh rằng thay đổi trong cấu trúc đó không làm thay đổi chức năng.
Việc xây dựng một bộ kiểm thử chung cho cả kiểm thử hồi quy và hợp lệ cho phép tích hợp liên tục. Có thể tích hợp bất kỳ sự thay đổi nào một cách nhanh chóng, sau đó chạy phiên bản bộ kiểm thử mới nhất của bạn. Khi kiểm thử thất bại, bản mới nhất của bạn không phù hợp với phiên bản mới nhất của cả nhóm. Việc sửa các lỗi nhỏ hàng giờ không làm mất nhiều thời gian so với việc sửa những lỗi nghiêm trọng ngay trước thời hạn. Với các bộ kiểm thử đơn vị tự động, có thể kết hợp một tập các thay đổi với phiên bản được phân phối mới nhất và tái phân phối trong một khoảng thời gian ngắn.
Việc thêm các chức năng mới thường xuyên sẽ yêu cầu việc thay đổi các kiểm thử đơn vị để phù hợp với các chức năng đó.
Mặc dù có thể mắc lỗi trong cả lúc viết mã lệnh và kiểm thử, nhưng điều đó hiếm khi xảy ra trong thực tế. đôi khi, kiểm thử sai, nhưng mã lệnh lại đúng. Việc này thường được phát hiện khi lỗi được tìm ra và sửa. Việc tạo ra kiểm thử độc lập với mã lệnh, hy vọng là trước khi mã lệnh được viết, tạo sự kiểm tra và cân bằng, và tăng cường khả năng mã lệnh được viết đúng ngay lần đầu tiên.
Các kiểm thử đơn vị cung cấp một mạng lưới an toàn cho việc kiểm thử hồi quy và hợp lệ, vì thế bạn có thể nâng cấp và tích hợp mã lệnh một các hiệu quả. Giống như việc ở rạp xiếc, diễn viên không bao giờ biểu diễn nếu thiếu một chiếc lưới! Việc tạo ra kiểm thử trước khi viết mã lệnh còn mang lại lợi ích lớn hơn bằng việc củng cố các yêu cầu, tăng cường sự tập trung của các lập trình viên, và tránh xu hướng tích hợp quá nhiều tính năng và chi tiết khi phân phối từng phiên bản.
Nguồn ExtremeProgramming
Người dịch: Capuchino Dang | Biên tập: Phạm Anh Đới