こんにちは、おすぎです。
だいぶ間が空いてしまいましたが、Javaプログラミング研修会の後半について記したいと思います。
後半は、テスト駆動開発入門ということで、テストの自動化とそれに合わせた設計について学習しました。
1日目(通算4日目)には、テストとは何かを学習しました。
テストとは「特定の条件下でシステムを操作するプロセスであり、結果をもとにシステムを評価したり、エラーを発見すること」。
同じく機能の欠陥を発見するソースレビューと比較して、質はレビューアのスキルに依存せず、ヒューマンエラー(抜け・漏れなどのミス)が伴わないという点で優れている。
と学びました。
演習として単体テストを実施しました。
演習内容としては、テスト手法(ブラックボックステストやホワイトボックステスト)に合わせてテストケースの設計とテストの自動化を行いました。
また、モジュール単位のテストを行うために、ドライバやスタブを使用してのボトムアップテストを実施しました。
2日目には、リファクタリングについて学習しました。
リファクタリングとは「外部から見た時のふるまいを保ちつつ、理解や修正がしやすくなるよう、内部構造を変化させること」で
機能追加やバグフィックス、コードレビューの際に実施し、より良いプログラムに修正することだそうです。
演習としては、コードの重複を削除したり、冗長なクラスやメソッドの分割を行いました。
リファクタリング作業としては挙げていたものをいくつか下記します。
- メソッドの抽出
- 説明用変数の導入
- アルゴリズムの変更
- コンポーネントの抽出
- マジックナンバーの置き換え
- 名前の変更
- 条件の分解・結合
結論としては、コードの複雑化を避け、細分化された修正しやすいコード記述を目指すとよいということでした。
3日目は、テスト駆動開発について学習しました。
テスト駆動開発とは「ソフトウェアを短い期間での開発を繰り返して成長させる手法」でありテストの自動化が不可欠であるそうです。
開発手順として
- 要件をもとにテストを作成
- テストを通るようにプログラミングを行う
- リファクタリングを行う
以上の手順を繰り返します。
事前にテストを記述することでエラーを検出しやすくなるそうです。
演習として、上記の手順でプログラミングを実施しました。
短い区間で作成するので、細分化されリファクタリングしやすくプログラミングが出来ました。
以上が研修内容となります。
全体を通して
いくら機能が出来ていても自分一人がわかるソースコードでは、その場限りの完成となってしまい、バグが出た場合の修正や仕様変更に対応しにくくなってしまいます。
そのため、誰でも理解が出来、修正がしやすいようなプログラミングが大切であると考えます。
それを実現するには、既存のデザインパターンを使用したり、テスト駆動開発などの手法を上手く利用していく必要があるのだと感じました。
今回の研修内容を今後のシステム作成に活かしていければと思います。
以上です。