Tài liệu tham khảo đầu tiên được công bố để lập trình thử nghiệm đầu tiên là gì?


11

Tôi đang đọc lại Tái cấu trúc bởi Martin Fowler. Trong Chương 4, Thử nghiệm xây dựng, tôi đã xem qua đoạn văn sau.

Trong thực tế, một trong những thời điểm hữu ích nhất để viết bài kiểm tra là trước khi bạn bắt đầu lập trình. Khi bạn cần thêm một tính năng, hãy bắt đầu bằng cách viết bài kiểm tra. Điều này không lạc hậu như âm thanh. Bằng cách viết bài kiểm tra, bạn đang tự hỏi mình cần phải làm gì để thêm chức năng. Viết bài kiểm tra cũng tập trung vào giao diện hơn là thực hiện (luôn luôn là một điều tốt). Điều đó cũng có nghĩa là bạn có một điểm rõ ràng mà bạn đã hoàn thành mã hóa - khi thử nghiệm hoạt động.

Mặc dù bây giờ tôi là người ủng hộ phát triển dựa trên thử nghiệm, tôi không nhớ đã được giới thiệu khái niệm này khi tôi đọc cuốn sách này gần 5 năm trước.

Theo Amazon.com, cuốn sách này ban đầu được xuất bản vào ngày 8 tháng 7 năm 1999. Đây có phải là tài liệu tham khảo được xuất bản đầu tiên về lập trình thử nghiệm đầu tiên hay còn có gì đó sớm hơn?


Nó không chủ quan. Có liên quan không? Tôi không nghĩ vậy. Nếu bạn có động lực tốt để mở lại câu hỏi này, hãy đăng lên meta.programmers.stackexchange.com
Maniero

@bigown: Tôi không chắc là tôi hiểu. Bạn đang nói rằng bạn đã đóng câu hỏi này bởi vì nó không chủ quan hoặc nó không tương đối?
Eric Weilnau

Đó là mục tiêu rõ ràng.
Maniero

2
Nó cũng liên quan đến lập trình và thú vị, và mặc dù có thể có một câu trả lời đúng, chứng minh điều đó không dễ dàng. Nó đi đâu khác? Lập trìnhHistory.stackexchange?
AShelly

4
chúng tôi có thể cho phép các câu hỏi khách quan ở đây - chúng tôi thích các câu hỏi chủ quan nhưng giống như Stack Overflow có một số câu hỏi CHỦ ĐỀ tồn tại, trang web này có thể có một số câu hỏi MỤC TIÊU tồn tại. (Tuy nhiên, tôi sẽ không thấy bất kỳ câu hỏi "làm cách nào để mã Perl này hoạt động" ở đây)
Jeff Atwood

Câu trả lời:


9

Phát triển theo hướng thử nghiệm tương tự như thiết kế theo hợp đồng, nơi bạn có các điều kiện tiên quyết, bất biến và hậu điều kiện.

Thuật ngữ này được đặt ra bởi Bertrand Meyer liên quan đến thiết kế ngôn ngữ lập trình Eiffel của ông và được mô tả lần đầu tiên trong các bài viết khác nhau bắt đầu từ năm 1986 [Wikipedia]

Các phương thức chính thức có từ ít nhất 1983, và đã được sử dụng cho các hệ thống quan trọng về an toàn như tàu điện ngầm Paris không người lái bằng phương pháp B:

Trong phiên bản đầu tiên và trừu tượng nhất, được gọi là Tóm tắt Máy, nhà thiết kế nên chỉ định mục tiêu của thiết kế. [Wikipedia]

Đây có thể là một số trong những điều mà Kent Beck "đã giúp tiên phong ... khám phá lại chương trình thử nghiệm đầu tiên".

Thêm vào đó: Rõ ràng Dự án Mercury đầu thập niên 1960 của Nasa là dự án phần mềm đầu tiên sử dụng phát triển dựa trên thử nghiệm và các thực tiễn nhanh nhẹn khác. Tôi không thể tìm thấy bất kỳ tài liệu sớm nào, nhưng đây là một báo cáo năm 2003 trích dẫn thông tin liên lạc của các thành viên dự án:

Dự án Mercury chạy với các vòng lặp rất ngắn (nửa ngày) được đóng hộp theo thời gian. Nhóm phát triển đã tiến hành đánh giá kỹ thuật tất cả các thay đổi, và thật thú vị, đã áp dụng thực tiễn Lập trình cực đoan về phát triển thử nghiệm, lập kế hoạch và viết thử nghiệm trước mỗi lần tăng vi mô.

Phần còn lại của báo cáo cũng thú vị, nó tiếp tục nói:

Tài liệu tham khảo sớm nhất mà chúng tôi thấy rằng đặc biệt tập trung vào việc mô tả và khuyến nghị phát triển lặp là một báo cáo năm 1968 của Brian Randell và FW Zurcher tại Nghiên cứu IBM TJ Watson.

Ngoài kiểm thử tự động, báo cáo năm 1968 chủ trương kiểm tra và mã hóa song song, nếu không phải là kiểm tra trước:

g. Thiết kế chi tiết, mã hóa và tài liệu của từng khối chương trình.
h. Thiết kế và tài liệu về các phương pháp thử nghiệm cho từng khối chương trình song song với bước (g).


4

Jon Bently in Lập trình Ngọc trai (bản gốc xuất bản năm 1986) không đề cập cụ thể đến lập trình Test-First. Nhưng trong chương "Viết chương trình đúng", ông mô tả việc viết một thuật toán bằng cách trước tiên xác định các điều kiện tiên quyết, bất biến và hậu điều kiện, và trong chương tiếp theo mô tả một khung kiểm tra tự động.

Đó không phải là thử nghiệm đầu tiên, nhưng anh ấy chắc chắn đã đặt một số nền tảng.

Cũng thế,

Tạp chí CIO , tháng 3 năm 1993, Bug Busters , bởi Lucie Juneau, trang 84 :

Các trường hợp thử nghiệm ... có thể được phát triển ngay cả trước khi bất kỳ mã nào được viết. Lý tưởng nhất là các trường hợp này dựa trên yêu cầu của ứng dụng ... Nếu nhà phát triển được cung cấp các thử nghiệm dựa trên yêu cầu trước khi họ bắt đầu viết mã, họ sẽ thiết kế một sản phẩm có thể vượt qua các thử nghiệm đó ... "


Phiên bản thứ 2 được xuất bản vào ngày 7 tháng 10 năm 1999 theo Amazon.com. Phiên bản đầu tiên được xuất bản vào khoảng năm 1986. Đây có phải là tài liệu tham khảo trong phiên bản 1 không?
Eric Weilnau

Tôi chỉ đọc phiên bản thứ 2. Lời nói đầu dường như chỉ ra rằng chương duy nhất "Chương trình viết đúng" là trong phiên bản 1, chương thử nghiệm tự động mới hơn.
AShelly

3

Đó là Kent Beck , trong cuốn sách Lập trình cực đoan , cũng được xuất bản năm 1999 .

văn bản thay thế


Theo Amazon.com, cuốn sách này ban đầu được xuất bản vào ngày 5 tháng 10 năm 1999. Đây là gần 3 tháng sau khi Tái cấu trúc được xuất bản. Tôi đã chỉnh sửa câu hỏi của mình để bao gồm ngày xuất bản chính xác theo Amazon.com. Tôi chưa đọc cuốn sách của Kent nhưng cho rằng nó cung cấp nhiều thông tin hơn về lập trình thử nghiệm đầu tiên.
Eric Weilnau

3
Thật thú vị khi bìa sau của cuốn sách đó nói rằng Kent Beck "đã giúp người tiên phong .. khám phá lại chương trình thử nghiệm đầu tiên." Anh ấy đã khám phá nó từ đâu?
AShelly

Thú vị tìm thấy AShelly!

1
@AShelly: Một vài năm trước Kent Beck đã đưa ra một bài phát biểu tại RailsConf. Trong đó, ông mô tả cách ông đến với TDD và ông đề cập rằng ông đã đọc về nó trong một bài viết cũ từ những năm 60.
Jörg W Mittag
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.