Яка перша опублікована посилання на тестування першого програмування?


11

Я читаю рефакторинг Мартіна Фаулера. У розділі 4, Тести з будівництва, я натрапив на наступний уривок.

Насправді, один з найбільш корисних моментів для написання тестів - це перед тим, як розпочати програмування. Коли вам потрібно додати функцію, почніть з написання тесту. Це не так відстало, як це звучить. Складаючи тест, ви запитуєте себе, що потрібно зробити, щоб додати функцію. Написання тесту також зосереджується на інтерфейсі, а не на реалізації (завжди гарна річ). Це також означає, що у вас є чіткий момент, коли ви робите кодування - коли тест працює.

Хоча я зараз є прихильником тестового розвитку, я не пам’ятав, щоб мене познайомили з цією концепцією, коли я спочатку читав цю книгу майже 5 років тому.

За даними Amazon.com, ця книга була спочатку опублікована 8 липня 1999 року. Це перша опублікована посилання на тестування першого програмування чи є щось ще раніше?


Це не суб'єктивно. Це актуально? Я не думаю, що так. Якщо у вас є хороший мотив знову відкрити це питання, опублікуйте на сайті meta.programmers.stackexchange.com
Maniero

@bigown: Я не впевнений, що розумію. Ви говорите, що ви закрили це питання, оскільки воно не є суб'єктивним чи не є відносним?
Ерік Вайлнау

Це явно об'єктивно.
Маньєро

2
Це також пов'язане з програмою та цікаве, і хоча може бути одна правдива відповідь, довести це непросто. Куди ще воно йде? ProgrammingHistory.stackexchange?
AShelly

4
ми можемо дозволити тут об'єктивні запитання - ми віддаємо перевагу суб'єктивним питанням, але так само, як Stack Overflow має деякі суб’єктивні питання, які виживають, на цьому веб-сайті можуть виникнути деякі ОБ'ЄКТИВНІ запитання, які існують. (Я б не сподівався побачити будь-які питання "як змусити цей код Perl працювати", тут, однак)
Джефф Етвуд

Відповіді:


9

Розробка тестових програм схожа на розробку за контрактом, де у вас є передумови, інваріанти та постумови.

Термін був введений Бертран Мейєром у зв'язку з його дизайном мови програмування Ейфеля і вперше описаний у різних статтях, починаючи з 1986 року [Вікіпедія]

Офіційні методи датуються щонайменше 1983 роком і застосовуються для критично важливих для безпеки систем, таких як Паризьке метро без водія, використовуючи метод B:

У першій і найбільш абстрактній версії, яка називається абстрактною машиною, дизайнер повинен вказати мету дизайну. [Вікіпедія]

Це можуть бути деякі речі, з яких Кент Бек "допоміг піонеру ... знову відкрити тестування першого програмування".

Більше того: Очевидно, що проект Nasa на початку 1960-х років Меркурій був першим програмним проектом, що використовував тестові розробки та інші спритні практики. Я не зміг знайти жодної ранньої документації, але ось звіт про 2003 рік, який цитує повідомлення учасників проекту:

Проект "Меркурій" проходив з дуже короткими (південними) ітераціями, які були вичерпані. Команда розробників провела технічний огляд усіх змін і, що цікаво, застосувала практику Екстремального програмування тестування перших розробок, планування та написання тестів перед кожним мікроприрістком.

Решта доповіді теж цікава, вона продовжує говорити:

Найбільш рання посилання, яку ми виявили, що спеціально зосереджена на описі та рекомендації ітеративної розробки, була доповіддю Брайана Ренделла та Ф. В. Цурчера в 1968 році в дослідженні IBM TJ Watson.

На додаток до автоматизованого тестування, звіт 1968 року виступає за паралельне кодування та тестування, якщо не тест-перше:

г. Детальне проектування, кодування та документація кожного програмного блоку.
год. Проектування та документування методів тестування для кожного програмного блоку паралельно кроку (g).


4

Джон Bently у програмуванні Pearls (оригінально опубліковано 1986 р.) Спеціально не згадує програмування Test-First. Але в главі "Написання правильних програм" він описує написання алгоритму, спочатку визначивши передумови, інваріанти та постумови, а в наступній главі описує автоматизовану рамку тестування.

Це не зовсім тест-перше, але він, безумовно, заклав деякі основи.

Також,

Журнал CIO , березень 1993 року, Bug Busters , Люсі Джуно, стор. 84 :

Тестові справи ... можуть бути розроблені ще до того, як був написаний будь-який код. В ідеалі ці випадки базуються на вимогах програми ... Якщо розробникам надаються тести на основі вимог, перш ніж вони почнуть писати код, вони розробити продукт, який може пройти ці тести ... "


Друге видання було опубліковане 7 жовтня 1999 року за версією Amazon.com. Перше видання було опубліковано десь у 1986 році. Чи було це посилання в 1-му виданні?
Ерік Вайнау

Я читав лише друге видання. Передмова, схоже, вказує на те, що єдиний розділ "Написання правильних програм" був у 1-му виданні, глава автоматизованого тестування - новішим.
AShelly

3

Це був Кент Бек у своїй книзі « Екстремальне програмування» , що також вийшла у 1999 році .

alt текст


За даними Amazon.com, ця книга була спочатку опублікована 5 жовтня 1999 року. Це майже через 3 місяці після публікації Refactoring. Я відредагував своє запитання, щоб включити точну дату публікації відповідно до Amazon.com. Я не читав книгу Кента, але припускаю, що вона містить набагато більше інформації про тестування першого програмування.
Ерік Вайнау

3
Цікаво, що на задній обкладинці цієї книги сказано, що Кент Бек "допоміг піонеру .. знову відкрити тестові програми." Звідки він його знову відкрив?
AShelly

Цікава знахідка AShelly!

1
@AShelly: Кілька років тому Кент Бек виступив з доповіддю на RailsConf. У ньому він розповів, як він придумав TDD, і згадує, що читав про це у старій статті із 60-х.
Йорг W Міттаг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.