Bài kiểm thử và Partner mới
Trong quý cuối của 1942, cố vấn của FDR hối thúc ông tuyên chiến với phe Trục. Quả bom nguyên tử kích hoạt thành công vào tháng Tám, với sự gia tăng của thứ vũ khí tồi tệ đó cùng tên lửa chứa nó cà khích lệ đội máy bay chiến đấu. Dù có tệ như nào, nó vẫn có lý. Có vẻ như nước Mỹ không thể đi đầu về mặt công nghệ được lâu dài. Loại bỏ mối nguy hại của phát xít là khả thi ngay lúc đó, nhưng cơ hội có thể biến mất nhanh chóng và để lại nước Mỹ đối mặt với một đối thủ to lớn và đáng gờm.
Đội nghiên cứu đã đợi để nói lại tổng thống về kết quả của Turing. Họ đã kiểm tra, rồi lại kiểm tra kết quả lần nữa. Họ nâng cấp máy tính, ông kính, chương trình, và tăng cường quan sát. Nhưng kết quả không thể chối bỏ. Một tảng đá đường kính 22km với tên gọi Clyde gần như là chắc chắn sẽ đâm xuống biển Thái Bình Dương với tốc độ 53km trên giây vào 29 tháng Tư, lúc 0943GMT.
Vào ngày 12 tháng Mười một , 1942, trong lúc FDR đọc báo cáo từ đội nghiên cứu, dường như sự hủy diệt không thể chối bỏ đã rời khỏi trang giấy và đập thẳng vào sọ ông như một nắm đấm sắt. Ông gọi cho thư ký: “Grace, tôi đau đầu kinh khủng!” Grace Tully tìm thấy ông gục ngã trên bàn, mất đi ý thức mãi mãi.
Tôi bước vào phòng máy, cùng lúc mọi người tụ tập để họp đứng vào buổi sáng. Avery, tôi, Jasper, Jerry, Carole, và Jean đứng cùng nhau thành một vòng tròn. Mỗi chúng tôi trả lời ba câu hỏi: Hôm qua làm gì? Hôm nay định làm gì? Cái gì đang cản đường?
Khi đến lượt, tôi nói: “Avery và tôi đã cho bài kiểm thử RegisterNormalSuit đạt. Tôi không biết sẽ làm gì vào ngày hôm nay, và chẳng có gì ngoại trừ cái đó đang cản đường bọn tôi.” Tôi thấy Carole đảo mắt khi nghe thế, và Jerry cười nhếch mép.
Rồi đến lượt Avery, và hắn chỉ nói: “Báo cáo của tôi giống Alphonse.”
Sau buổi họp Jean qua và nói: “Mấy cậu bé, tôi nghĩ tôi có thể giải quyết vấn đề của cả hai. Avery, cháu yêu, sao cháu không làm cùng với Jerry? Cậu ấy đã nhận được bài kiểm thử tiếp theo rồi. Alphonse, tôi muốn cậu làm việc với Jasper ngày hôm nay. Cậu ấy sẽ viết bài kiểm thử cho việc từ chối của bên sản xuất. Tôi chắc cậu và cậu ấy sẽ làm quen nhanh thôi; cả hai đều là những chàng trai tuyệt vời.” Bà ấy nở một nụ cười ấm áp và nói “Đi nhanh đi! Xùy!”
Tôi nhìn vào mắt Avery, đưa tay vẫy một cách đầy hối tiếc và ra chỗ Jasper đang làm. Hắn nhìn chằm chằm vào màn hình và có vẻ như không để ý là tôi wor đó. Nên tôi nói: “Chào Jasper, tao nghĩ mình sẽ cùng làm hôm nay.”
Jasper nở một nụ cười to và nói “Alphonse! Ừ, tuyệt. Này, tao nên gọi mày là Al, hay Fonse? Tao thích Fonse hơn. Mày nghĩ sao?”
Nụ cười đầy răng của hắn, và ánh mắt lấp lánh làm tôi bất ngờ. Tôi vừa định nói “Fonse” nghe bắt tai hơn, và tôi không chắc muốn cái tên bắt tai đó; nhưng hắn cắt ngang và nói: “Tuyệt! Giờ thì cắm đầu vào bài kiểm thử thôi.”
Tôi thở dài và ngồi xuống. “Jean nói gì về tin nhắn từ chối của bên Sản Xuất?”
“Ừ. đúng rồi. Đây xem thẻ story đi.” Hắn đưa tôi tấm thẻ từ buổi họp lên kế hoạch của Carole từ sáng hôm trước.
Đăng ký đồ mới.– Miếng Mã Vạch: X(6)– Chức năng Đăng Ký Đồ Mới: trên màn hình.– Gửi xác nhận cho nsx.● Từ chối đăng ký nếu không được chấp nhận.● 10 giây hết giờ & từ chối– Nếu đã đký● Từ chối đk & không gửi xn cho sd.– Lên lịch kiểm tra. |
“À, ừ.” Tôi nói “Giờ tao nhớ rồi. Carole bảo ta nếu ai đó cố đăng ký một bộ đồ mà không phải từ bên sản xuất, chúng ta nên từ chối đăng ký.”
“Đúng.” Jasper nói. “Ta đâu muốn ai đó đăng ký bộ đồ cũ rích nhặt được trong cái tủ ở đâu đó, phải không?”“À, ừ.” Tôi nói “Giờ tao nhớ rồi. Carole bảo ta nếu ai đó cố đăng ký một bộ đồ mà không phải từ bên sản xuất, chúng ta nên từ chối đăng ký.”
“Ừ. Được rồi, vậy ta cần bài kiểm thử mới cho cái này, phải không?”
“Chuẩn rồi, Fonse, tao vừa mới định làm lúc mày ra đây.” Hắn chỉ vào màn hình. “Tao mới tạo trang mới tên là SuitRegistrationRejectedByManufacturing. Tao lấy từ trang RegisterNormalSuit bọn mày làm hôm qua, và dán vào trang mới này.”
Tôi kiểm tra trang, và gần như nó là bản sao hoàn hảo của trang RegisterNormalSuit. “Thế tao đoán mày muốn thay đổi để cho thấy bên sản xuất từ chối yêu cầu xác nhận?”
“Lại chuẩn nữa, Fonse. Muốn thử làm không?”
“Ừ, chắc rồi.” Tôi không chắc là tôi thích thái độ thân thiện quá của hắn. Hắn trông không có ý gì, nhưng tôi nghĩ tôi sẽ khó chịu sau một thời gian. Tôi chỉnh sửa trang, thay đổi một số ghi chú và tiêu đề. Trọng tâm của thay đổi là thay tin nhắn gửi bởi nhà sản xuất thành từ chối, và đảm bảo rằng bộ đồ không được đưa vào kho. Kết quả, hoàn thành sau bài kiểm thử, trông như này:
Sản xuất từ chốii đăng ký đồ bảo hộ. Importdtrack.fixtures Bọn tôi giả định hôm này là ngày 21/02/2002. Nội dung DTrack Ngày hôm nay 2/21/2002 Bọn tôi cũng giả định là chưa có bộ đồ nào trong kho. Tham số đồ trong khoSố bộ đồ?0 Bọn tôi đăng ký bộ đồ số 314159. Yêu cầu đăng ký đồsố mã vạch314159 DTrack gửi xác nhận đăng ký cho bên Sản Xuất. Tin nhắn đến Sản XuấtID tin nhắnĐối số tin nhắnNgười gửi tin nhắnĐăng ký đồ314159Bảo Trì Bên Ngoài Bên Sản Xuất từ chối xác nhận. Tin nhắn từ Sản XuấtID tin nhắnĐối số tin nhắnNgười gửi tin nhắnNgười nhận tin nhắnTừ chối đăng ký đồ314159Sản XuấtBảo Trì Bên Ngoài Và giờ bộ đồ đã ở trong kho, và được lên lịch để kiểm tra ngay lập tức. Đồ trong khoSố mã vạch Ngày kiểm tra tiếp theo?314159 thừaThứ Năm Tháng Hai 21 00:00:00 CST 2002 |
“Làm tốt lắm!” Jasper nói. “Đúng chuẩn rồi. Giờ cho nó đạt được không?”
“Tao nghĩ là có thể.” Tôi nói. Tôi mở phần fixture xử lý bảng “Tin nhắn từ Sản Xuất”. Nó trông như là
Nó chỉ truyền thông tin bảng đến phương thức acceptMessageFromManufacturing của lớp Registrar. Phương thức đó trông như này:
Nó chỉ truyền thông tin bảng đến phương thức acceptMessageFromManufacturing của lớp Registrar. Phương thức đó trông như này:
Tôi chỉ thay đổi đơn giản như sau:
Khi tôi chạy bài kiểm tra, nó đạt.
“Làm tốt lắm, Fonse, nhưng mày không viết unit test!”
“Mày có nghĩ là có cần thiết chỉ để cho lệnh if này?”
“Viết thì có khó đâu?”
Tôi lắc đầu và gõ. Cũng khá đơn giản để viết.
Bài kiểm thử đạt ngay lần đầu tiên. Tôi tự thấy giỏi. Tôi nhìn qua phía Jasper và nhướn mày. Nụ cười tự cao cùng với kiểu đầu úp bát tạo cho hắn vẻ nhìn ngơ ngác.
“Mày chưa viết bài kiểm thử tiêu cực.” Hắn nói, vẫn nhe răng ra cười.
Tôi tự nghĩ: “Chắc Avery lúc nào cũng thấy như này.” Tôi kiềm chế đảo mắt, và tiếp tục gõ.
Bài kiểm thử này vẫn đạt ngay lần đầu tiên. Tôi lại nhướn mày.
“Này Fonse, tên lớp kia không đúng lắm nhỉ?”
Tôi lẩm bẩm chửi thề. Tôi đã hi vọng hắn không chú ý thứ mà tôi thấy trong khi gõ bài kiểm thử. Tên SuitRegistrationAccepted không phải là tên gọi đúng cho lớp này nữa. Tôi ghét phải thừa nhận nó, nhưng đây là thứ bài unit test đã bắt tôi phải thấy, thứ mà bài kiểm thử đạt đã không thể tìm ra được. Nên tôi đổi tên thành SuitRegistrationAcceptanceMessage.
Jasper nghiêng đầu như thể đang nghĩ về cái gì đó, và vui vẻ nói “Fonse, mày có nghĩ rằng trường id tin nhắn nên để là long string? Mày có nghĩ đống ký tự đó sẽ làm mã trông rời rạc? Tao nghĩ trông hơi xấu có đúng không?”
Chết tiệt, hắn lại làm thế nữa. Đó đúng là thứ tôi vừa nghĩ tới. Chuỗi ký tự kiểu “Chấp nhận đăng ký đồ” và “Từ chối đăng ký đồ” có lẽ không phải là giá trị nên sử dụng làm id tin nhắn. Hơn nữa, chúng không nên được đặt trong code. “Ừ, tao đồng ý. Mày nghĩ mình nên làm gì với nó?”
“Tao nghĩ mình nên làm cho tất cả các bài kiểm thử đạt rồi sửa lại chuỗi ký tự id của cả đoạn mã luôn. Có thể chúng ta sẽ đưa nó vào lớp độc lập.”
“Đợi đã. Mấy bài kiểm thử đạt hết rồi mà.”
“Mày đã chạy lại sau khi thay đổi chưa Fonse?”
“Ừ, tao…” Thực ra tôi mới chạy bài kiểm thử testRejectRegistration. Tôi chưa chạy bài unit test khác nào. Tôi quay lại màn hình và ấn nút để chạy tất cả các bài unit test sẵn có trong hệ thống DTrack. Tôi kinh hoàng, testRejectRegistration không đạt! “Đợi đã! Nó vừa đạt mà!”
“Ừ, tao nghĩ chúng ta có vấn đề với dọn dẹp cơ sở dữ liệu.” Jasper cười. “Bộ đồ được đặt vào trong kho, và không được loại bỏ ở đầu mỗi bài kiểm thử. Thử chạy tất cả xem. Tao cá cũng không đạt luôn.”
Chắc chắn, khi tôi ấn nút suite ở đầu bài kiểm thử, trang RegisterNormalSuit đạt, nhưng trang SuitRegistrationRejectedByManufacturing – cái trang tôi vừa làm hoạt động mấy phút trước, lại không.
Jasper đập tay vào nhau và bắt đầu xoa. “Được rồi Fonsie, cậu học trò trẻ tuổi của tôi, dọn dẹp đống này thôi.”