ここでは5章のテスト概要について紹介します。 これはブライアン・カニンガム、ベル研究所の偉人であり、 ほとんどの人が持っていると思いますが、C言語のカニンガム・リッチー本の著者です。 それを2・3回読むとわかることは、 デバックは最初にコードを書いた二倍の苦労をするということ。 二倍の苦労です。ですから、もし最初にとても最高にうまいコードを書いたとしたら、 デバックする必要はないでしょう。二倍の苦労ですから。 そしてこの人、ダイクストラです。吹き出しの空欄に入れてみてください テストは、エラーが「ない」ことを示すことはできない、エラーが「ある」ことだけを示すことができる。 それは長い間いわれていることで、覚えておくべきでしょう。 これは一年半前に出た論文です。「Why are things expensive」と言っています。 この研究では、設計時には本質的なバグはなく、 質の悪いテストのやり方が問題だといっています。質の悪いテストプロセスは、 コードの中に多くのバグを存在させる原因となると。さらにここで、完全なテスト自動化環境はほとんどないと言っています。 これは一年半前ですが、今もってテスト自動化環境はほとんどないでしょう。ソフトウェア開発組織のちょうど12パーセントは テスト自動化システムを持っていて、10パーセントは全てのテストを手動で行っているとのことです。 自分でテストを書いて、自分で出力を確認して、自分でテストを書いて、自分で出力を確認する。 「自分は間違いをしていないか。うん、大丈夫だ!」と。そんなことが今だ通用しているとは信じがたい。ここでは真実ではないとしたい。 アジャイル以前では、独立した品質保証チームがあり、 開発者は全てのフェーズを受け持ちます、開発者は別々にグループ化されます。何らかの形で、 品質保証チームはコードに品質を盛り込もうとします、 またはコードが品質を保っていることを確認します。アジャイルでは、すべてを自分たちでやることが重要です。 継続的にテストします、毎週新しいコードを出します。 他人ではなく、自分で自分のコードをテストする責任があります。 そしてツールは高度に自動化されています。以前にされていたものとは違います。 アジャイルマニフェストの議論では、 良いプロセスによって良い品質を得ることができる、これは品質を保証に特化したグループを持つことよりも、といっています。 もしそうしなかったら彼らはきっと怒ることでしょう。 最初に言ったように、BDDとTDDは、「ビヘイビア駆動設計」のフレーズが人によっては想起され、 テスト駆動開発とごっちゃになっているかもしれません。 BDDでは、受け入れテスト、統合テスト、そして、ビヘイビア(振る舞い)を捉えようとします。 TDDでは、ステップの定義し、実際に単体テストや機能テストを書きます。 コードを書く前に、常に最新のテストがあります。 というのは、コードを書き始める前にテストコードを書くからです。 ここではBDDとTDDがどのようにいっしょに動くかを説明します。Cucmberでは、フィーチャを記述し、ストーリーを書いて、 それらが失敗します。CucumberはRSpecテストを呼び出しますが、 失敗します。それから失敗したメソッドの実装をします。 そしてRSpecのテストが通るまで、このイテレーションを繰り返します。 いったん正しく実装されたら、Cucumberの緑色のステップなるでしょう。 そして戻って、開発を続けていきます。