読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

継続的インテグレーションとか、ユニットテストにまつわる用語のまとめ

<スポンサーリンク>

継続的インテグレーションとは

継続的インテグレーション(CI: Continuous Integration)とは、継続的テストを含むプラクティスであり、「ビルドやテストといったソフトウェアの統合プロセスを可能な限り自動化し、継続的に行う」ためのしくみのこと。
リリースまで継続的に行うのが、「継続的デリバリ」という。

Javaの開発における継続的インテグレーションのツールとしては、Jenkinsがデファクトスタンダードとなっている。

テスト駆動開発とは

テスト駆動開発(TDD:Test Driven Development)とは、ユニットテストをプロダクションコードよりも先に記述することを原則とした開発手法である。
テストファーストの原則と呼ばれ、XPで紹介されたプラクティスのひとつ。
テストを崎に作ることで、ゴールが先に明確になる。テストを通るメソッドを実装すれば良い。
テスト駆動開発では短いサイクルを繰り返して開発を進める手法で、1回のサイクルではゴールをなるべく近い場所に設定する。

設計する→テストコードを書く→プロダクションコードを書く→リファクタリングする
のサイクルを繰り返す。設計はインターフェースについて行う。
重要なのは「テストスべきことがわかるまで設計する」ということ。
動いているコードに手を入れてはならない、という原則はテスト駆動開発には当てはまらない。
テストがグリーンを維持するのであれば、プロダクションコードにどれだけ手を入れても動作が保障されるからである。

汚いコードや重複の多いコードは技術的負債と呼ばれる。
技術的負債は、時間が経つにつれ、利息を増やしながら開発を圧迫する。

実装時に技術的負債を作ったとしても、リファクタリングですぐに返済するようにする。

テスト駆動開発を導入することで、結果的に品質が高くなる。
それは、
・実装前に十分な設計を行なっていること
リファクタリングを行なっていること
が理由だ。
テスト駆動開発で作成するテストは、品質を高めるためのテストではなく、設計を駆動し、リファクタリングを行うためのテストである。

JUnitとは?

Kent BeckやErich Gammaによって開発されたJavaのテスティングフレームワーク

ソフトウェアテストとは

ソフトウェアテストとは、「ある条件下においてソフトウェアの振る舞いを記録し、その記録が期待される結果となることを検証するプロセス」のこと。
ここでいう「ある条件下」というのは、前提条件や事前条件と呼ばれる。

ホワイトボックステストとは、内部のロジックや仕様について考慮してテストケースを設計すること。
ブラックボックステストとは、ソフトウェア内部仕様について考慮せず、外部仕様のみからテストケースを設計すること。

ユニットテストに限らず、ソフトウェアテストは可能な限り自動化するべきである。

・@Test:テストメソッドを宣言する
expected属性:例外が送出されることを検証する。
timeout:ユニットテストのタイムアウト値を設定するために利用する。

・@Ignore:テストの実行から除外する

・@Before:テストの実行前に処理を行う

・@After:テストの実行後に処理を行う

・@BeforeClass:テストの実行前に一度だけ処理を行う

読んだ本

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

感謝のプログラミング

今回で感謝のプログラミングは【252時間目】
10000時間まで、あと【9748時間】