(Ban đầu tôi viết bài này cho bản tin của mình. Nếu bạn muốn đọc thêm những thứ như thế này, bạn nên đăng ký!)
Cộng đồng Rails tập trung cao độ vào thử nghiệm, và cụ thể là TDD. Văn hóa thử nghiệm này là một trong những điều tốt nhất về Rails. Nhưng áp lực phải kiểm tra và kiểm tra đúng, có thể quá sức đối với người mới.
Nếu bạn đến từ một nơi mà bạn hoàn toàn không thử nghiệm, TDD có thể đặc biệt khó học. Suy nghĩ về tất cả những điều bạn cần biết để thực hiện đúng TDD:
- Bạn phải biết những tính năng nào bạn muốn triển khai
- Bạn phải có khả năng xác định những phần nào của mỗi tính năng cần được kiểm tra
- Bạn phải học một công cụ kiểm tra
- Bạn phải biết cách viết một số bài kiểm tra cho từng phần đó
- Bạn phải biết cách viết một bài kiểm tra mà không cần xem mã trước
- Bạn phải biết cách viết "điều đơn giản nhất có thể hoạt động"
- Bạn phải học cách sử dụng các thử nghiệm của mình để phát triển thiết kế của mã
Khi nó được viết ra như vậy, tôi sẽ ngạc nhiên nếu bạn không đấu tranh. Rõ ràng là bạn không thể thực sự đi từ 0 đến TDD trong một bước duy nhất. Vậy bạn làm gì? Làm thế nào bạn có thể học TDD mà không bị choáng ngợp?
Hãy tách nó ra!
Khi bạn cảm thấy mình đang phải đối mặt với một nhiệm vụ bất khả thi hoặc bạn không biết phải làm gì tiếp theo, hãy xem liệu có điều gì dễ học hơn mà bạn có thể học được sẽ đưa bạn đến gần hơn với nơi bạn muốn.
Ví dụ:để học TDD với RSpec, bạn có thể chia nhỏ nó ra như sau:
-
Viết một số mã khám phá cho một tính năng mà không cần kiểm tra. (Vì vậy, bạn có thể có được một số kinh nghiệm về việc tạo ra và viết các tính năng)
-
Nghiên cứu một số mã và viết ra một số cách mã có thể bị hỏng trên các loại đầu vào khác nhau. (Vì vậy, bạn có thể tìm hiểu về những gì cần kiểm tra và cách kiểm tra)
-
Viết các bài kiểm tra cho mã đã tồn tại, bằng cách sử dụng minitest được tích hợp sẵn trong Ruby (Vì vậy, bạn có thể học thử nghiệm đơn giản và cơ bản mà không cần phải học TDD và RSpec, hoặc chiến đấu với việc cài đặt đá quý và thiết lập môi trường RSpec của bạn)
-
Chạy thử một số mã bằng TDD và minitest (Vì vậy, bạn có thể tập trung vào TDD mà không cần phải xử lý các phụ thuộc gem hoặc học RSpec. Vì bạn đã biết cách viết các bài kiểm tra, bạn chỉ cần học cách viết chúng trước)
-
Lái thử một số mã bằng RSpec (khi bạn đã thực hành một chút với TDD, vì vậy bạn có thể tập trung vào việc thiết lập RSpec và tìm hiểu API và văn hóa của nó)
Mỗi kỹ năng này là một kỹ năng nhỏ hơn nhiều mà bạn có thể thực hành riêng biệt. Sau đó, bạn có thể tập trung và thực hành bước đầu tiên, sau đó là bước tiếp theo, v.v. Thay vì chuyển thẳng đến TDD với RSpec, bạn có thể phát triển về phía nó.
Nó có vẻ như rất nhiều công việc hơn. Nhưng bạn sẽ học từng kỹ năng này nhanh hơn so với việc cố gắng học TDD từ đầu và bạn sẽ có nền tảng tốt hơn để xây dựng khi kiểu thử nghiệm hữu ích tiếp theo ra đời.
Tập trung vào một việc tại một thời điểm
Điều quan trọng là tập trung và thực hành vào điều chỉ vượt ra khỏi vùng an toàn của bạn, mà không cố gắng nhảy thẳng đến bước cuối cùng. Bản thân mỗi bước này đều có một số giá trị. Ngay cả khi bạn đã dừng lại sau bước đầu tiên, bạn vẫn sẽ học được điều gì đó có giá trị. Nhưng chúng cũng xây dựng dựa trên nhau để bạn có thể tập trung vào việc học một thứ thực sự tốt, thay vì có một loạt các thứ ném vào bạn cùng một lúc. Bạn có thể học mà không bị choáng ngợp và bỏ cuộc.
Khi bạn thực hiện quá trình này, hãy cho phép mình làm rối tung lên. Bạn đang học, điều đó hoàn toàn ổn! Nó sẽ trở nên dễ dàng hơn rất nhiều khi bạn làm điều đó thường xuyên hơn. Thực hành một cách nhất quán và chu đáo, đồng thời tiếp tục đạt đến một cấp độ ngoài những gì bạn đã biết và bạn sẽ đạt được điều đó.