テストファーストプログラミングに関する最初に公開されたリファレンスは何ですか?


11

Martin FowlerによるRefactoringを読み直しています。第4章「テストの構築」で、次の文章に出会いました。

実際、テストを作成する最も便利な時期の1つは、プログラミングを開始する前です。機能を追加する必要がある場合は、テストを作成することから始めます。これは思ったほど後方ではありません。テストを書くことで、関数を追加するために何をする必要があるかを自問しています。また、テストの記述は、実装ではなくインターフェイスに集中します(常に良いことです)。また、テストが機能するときに、コーディングを完了する明確なポイントがあることも意味します。

私は現在、テスト駆動開発の提唱者ですが、5年近く前にこの本を最初に読んだときにこの概念を紹介されたことを覚えていませんでした。

Amazon.comによると、この本はもともと1999年7月8日に発行されました。これは、テストファーストプログラミングへの最初の発行されたリファレンスですか、それとももっと早いものですか?


主観的ではありません。関連がありますか?そうは思いません。この質問を再開する良い動機があれば、meta.programmers.stackexchange.com
Maniero

@bigown:わかりません。この質問は主観的ではないか、相対的ではないため、この質問を閉じたと言っていますか?
エリックウェイナウ

それは明らかに客観的です。
マニエロ

2
また、プログラミングに関連した興味深いものであり、1つの本当の答えがあるかもしれませんが、それが簡単でないことを証明しています。他にどこに行くのですか?ProgrammingHistory.stackexchange?
AShelly

4
ここで客観的な質問を許可することができます- 主観的な質問を好むが、Stack Overflowが生き残るいくつかの主観的な質問があるように、このサイトは生き残るいくつかの客観的な質問を持つことができます。(ただし、ここで「このPerlコードをどのように機能させるか」という質問が表示されるとは思わない)
ジェフアトウッド

回答:


9

テスト駆動開発は、前提条件、不変条件、および事後条件がある契約による設計に似ています。

この用語は、Bertrand MeyerがEiffelプログラミング言語の設計に関連して造語したもので、1986年以降のさまざまな記事で最初に説明されました[Wikipedia]

正式な方法は少なくとも1983年のもので、B法を使用した無人のパリ地下鉄などの安全性が重要なシステムに使用されています。

抽象マシンと呼ばれる最初の最も抽象的なバージョンでは、設計者は設計の目標を指定する必要があります。[ウィキペディア]

これらは、Kent Beckが「先駆者...テストファーストプログラミングの再発見」を支援したものの一部です。

要点:明らかに、Nasaの1960年代初期のプロジェクトMercuryは、テスト駆動開発およびその他のアジャイルプラクティスを使用した最初のソフトウェアプロジェクトでした。初期のドキュメントは見つかりませんでしたが、プロジェクトメンバーのコミュニケーションを引用した2003年のレポートです。

Project Mercuryは、タイムボックス化された非常に短い(半日)反復で実行されました。開発チームは、すべての変更の技術的レビューを実施し、興味深いことに、各マイクロインクリメントの前にテストファースト開発、テストの計画および作成のエクストリームプログラミングプラクティスを適用しました。

レポートの残りの部分も興味深いものです。

反復開発の説明と推奨に特に焦点を当てた最も初期の参考文献は、IBM TJ Watson ResearchのBrian RandellとFW Zurcherによる1968年のレポートでした。

自動化されたテストに加えて、1968年のレポートは、テストファーストではない場合、並列コーディングとテストを提唱しています。

g。各プログラムブロックの詳細設計、コーディング、ドキュメント。
h。ステップ(g)と並行して、各プログラムブロックのテストメソッドの設計と文書化。


4

Jon Bently in Programming Pearls(元々は1986年発行)では、Test-Firstプログラミングについては特に言及していません。しかし、「正しいプログラムの作成」の章で、彼は最初に前提条件、不変条件、および事後条件を定義することによるアルゴリズムの記述について説明し、次の章では自動テストフレームワークについて説明します。

テストファーストではありませんが、彼は間違いなくいくつかの基礎を築いていました。

また、

CIOマガジン、1993年3月、バグバスターズ、ルーシージュノー著、 84ページ

テストケース...は、コードが記述される前でも開発できます。理想的には、これらのケースはアプリケーションの要件に基づいています...コードを書き始める前に開発者に要件ベースのテストが与えられた場合、それらのテストに合格できる製品を設計します... "


Amazon.comによると、第2版は1999年10月7日に公開されました。第1版は1986年に発行されました。この参照は第1版でしたか?
エリックウェイナウ

私は第2版しか読んでいません。序文は、「正しいプログラムの作成」の章は第1版のみであり、自動テストの章は新しいことを示しているようです。
AShelly

3

それは1999年に出版された彼の著書Extreme ProgrammingのKent Beckでした。

代替テキスト


Amazon.comによると、この本は元々1999年10月5日に発行されました。これはリファクタリングが発行されてから3か月近く後です。Amazon.comによる正確な発行日を含むように質問を編集しました。ケントの本を読んだことはありませんが、テストファーストプログラミングに関する詳細な情報を提供していると思います。
エリックウェイナウ

3
その本の裏表紙に、Kent Beckが「先駆者..テストファーストプログラミングの再発見を助けた」と書かれているのは興味深いことです。彼はどこからそれを再発見しましたか?
AShelly

面白い発見AShelly!

1
@AShelly:数年前、Kent BeckはRailsConfで基調講演を行いました。その中で、彼はTDDを思いついた方法を説明し、60年代の古い記事でそれについて読んだと述べています。
ヨルグWミットタグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.