Chúng tôi viết các bài kiểm tra để xác minh tính đúng đắn của hành vi của chương trình.
Xác minh tính đúng đắn của hành vi của chương trình bằng cách kiểm tra nội dung của câu lệnh đầu ra bằng mắt của bạn là một hướng dẫn , hay cụ thể hơn là một quá trình trực quan .
Bạn có thể tranh luận rằng
kiểm tra trực quan hoạt động , tôi kiểm tra xem mã có làm gì không, đối với các kịch bản này và một khi tôi có thể thấy nó chính xác, chúng tôi sẽ làm tốt.
Trước tiên, thật tuyệt khi bạn quan tâm đến việc mã có hoạt động chính xác hay không. Đó là một điều tốt. Bạn đang ở phía trước của đường cong! Đáng buồn thay, có một vấn đề với điều này như là một cách tiếp cận.
Vấn đề đầu tiên với kiểm tra trực quan là bạn là một tai nạn hàn tồi mà không bao giờ có thể kiểm tra lại tính chính xác của mã của bạn.
Vấn đề thứ hai là cặp mắt được sử dụng kết hợp chặt chẽ với bộ não của chủ sở hữu đôi mắt. Nếu tác giả của mã cũng sở hữu đôi mắt được sử dụng trong quá trình kiểm tra trực quan, thì quá trình xác minh tính chính xác có sự phụ thuộc vào kiến thức về chương trình được nội hóa trong não của người kiểm tra trực quan.
Rất khó để một cặp mắt mới xuất hiện và xác minh tính chính xác của mã đơn giản vì chúng không được hợp tác với bộ não của người viết mã gốc. Chủ sở hữu của cặp mắt thứ hai sẽ phải trò chuyện với tác giả ban đầu của mã để hiểu đầy đủ mã được đề cập. Hội thoại như một phương tiện chia sẻ kiến thức nổi tiếng là không đáng tin cậy. Một điểm không thể khắc phục nếu Bộ giải mã gốc không có sẵn cho đôi mắt mới. Trong trường hợp đó, cặp mắt mới phải đọc mã gốc.
Đọc mã của người khác không nằm trong các bài kiểm tra đơn vị khó hơn đọc mã có các bài kiểm tra đơn vị liên quan. Tốt nhất là đọc mã người khác là công việc khó khăn, tệ nhất là đây là nhiệm vụ khó khăn nhất trong công nghệ phần mềm. Có một lý do mà các nhà tuyển dụng, khi quảng cáo tuyển dụng, nhấn mạnh rằng một dự án là một lĩnh vực xanh (hoặc hoàn toàn mới). Viết mã từ đầu dễ dàng hơn sửa đổi mã hiện có và do đó làm cho công việc được quảng cáo có vẻ hấp dẫn hơn đối với các nhân viên tiềm năng.
Với thử nghiệm đơn vị, chúng tôi chia mã thành các phần thành phần của nó. Đối với mỗi thành phần, sau đó chúng tôi đặt ra gian hàng của chúng tôi nêu cách chương trình nên hoạt động . Mỗi bài kiểm tra đơn vị kể một câu chuyện về cách phần đó của chương trình sẽ hoạt động trong một kịch bản cụ thể. Mỗi bài kiểm tra đơn vị giống như một điều khoản trong hợp đồng mô tả những gì sẽ xảy ra theo quan điểm của mã khách hàng.
Điều này có nghĩa là một cặp mắt mới có hai chuỗi tài liệu trực tiếp và chính xác về mã được đề cập.
Đầu tiên họ có mã, cách thực hiện, cách mã được thực hiện ; thứ hai họ có tất cả kiến thức mà lập trình viên gốc đã mô tả trong một tập hợp các tuyên bố chính thức kể câu chuyện về cách mã này được cho là hành xử.
Kiểm tra đơn vị nắm bắt và mô tả chính thức kiến thức mà tác giả ban đầu sở hữu khi họ thực hiện lớp học. Chúng cung cấp một mô tả về cách lớp đó hành xử khi được sử dụng bởi một khách hàng.
Bạn đúng khi đặt câu hỏi về tính hữu ích của việc này vì có thể viết các bài kiểm tra đơn vị vô dụng, không bao gồm tất cả các mã được đề cập, trở nên cũ hoặc lỗi thời, v.v. Làm thế nào để chúng tôi đảm bảo rằng các bài kiểm tra đơn vị không chỉ bắt chước mà còn cải thiện quá trình của một tác giả có kiến thức, có lương tâm kiểm tra trực quan các câu lệnh đầu ra của mã của họ khi chạy? Viết bài kiểm tra đơn vị trước sau đó viết mã để thực hiện bài kiểm tra đó. Khi bạn kết thúc, hãy để máy tính chạy thử nghiệm, chúng rất nhanh, chúng rất giỏi trong việc thực hiện các nhiệm vụ lặp đi lặp lại, chúng phù hợp lý tưởng với công việc.
Đảm bảo chất lượng kiểm tra bằng cách xem xét chúng mỗi khi bạn tắt mã mà chúng kiểm tra và chạy thử nghiệm cho mỗi bản dựng. Nếu một bài kiểm tra thất bại, sửa chữa nó ngay lập tức.
Chúng tôi tự động hóa quá trình chạy thử nghiệm để chúng được chạy mỗi khi chúng tôi thực hiện xây dựng dự án. Chúng tôi cũng tự động hóa việc tạo các báo cáo bảo hiểm mã chi tiết bao nhiêu phần trăm mã được bao phủ và thực hiện bằng các thử nghiệm. Chúng tôi cố gắng cho tỷ lệ phần trăm cao. Một số công ty sẽ ngăn các thay đổi mã được kiểm tra trong kiểm soát mã nguồn nếu họ không có đủ các bài kiểm tra đơn vị được viết để mô tả bất kỳ thay đổi nào trong hành vi đối với mã. Thông thường, một cặp mắt thứ hai sẽ xem xét các thay đổi mã kết hợp với tác giả của các thay đổi. Người đánh giá sẽ trải qua các thay đổi để đảm bảo rằng các thay đổi có thể hiểu được và được bao phủ đầy đủ bởi các thử nghiệm. Vì vậy, quá trình xem xét là thủ công, nhưng khi các bài kiểm tra (bài kiểm tra đơn vị và tích hợp và có thể là bài kiểm tra chấp nhận của người dùng) vượt qua quy trình xem xét thủ công này, thì nó trở thành một phần của quy trình xây dựng tự động. Chúng được chạy mỗi lần thay đổi được kiểm tra. Ahội nhập liên tục máy chủ thực hiện nhiệm vụ này như là một phần của quá trình xây dựng.
Các thử nghiệm được tự động chạy, duy trì tính toàn vẹn của hành vi của mã và giúp ngăn các thay đổi trong tương lai đối với cơ sở mã phá vỡ mã .
Cuối cùng, việc cung cấp các bài kiểm tra cho phép bạn tích cực tái lập mã yếu tố vì bạn có thể thực hiện các cải tiến mã lớn an toàn với kiến thức rằng các thay đổi của bạn không phá vỡ các kiểm tra hiện có.
Có một sự cảnh báo để kiểm tra hướng phát triển và đó là bạn phải viết mã bằng mắt để làm cho nó có thể kiểm tra được. Điều này liên quan đến việc mã hóa các giao diện và sử dụng các kỹ thuật như Dependency Injection để khởi tạo các đối tượng cộng tác. Kiểm tra công việc của Kent Beck , người mô tả TDD rất tốt. Tra cứu mã hóa đến các giao diện và nghiên cứumẫu thiết kế