TDDは、テスト駆動開発(Test-Driven Development)の略称です。単体テストのためにコードを書きいてそれがテストに合格すれば完成とするものですが、TDDでは様々なツールを使用します。
ここでは、TDDについての概要やテストツールとTDDの関係について解説していきます。
単体テストや結合テストを行う為に、JUnitやPHPUnitといったツールが利用されます。「○○Unit」という名前が多いことから呼ばれているのが「xUnit」です。
単体テストを行うツールをいくつか紹介します。
TDDは、これらのテストツールを使用しなければいけないわけではありません。ただし、コードの間にデバック用のコードを書く必要がるため、本コードとテストコードが混ざった状態となれば、テストコード削除時にミスが生じてしまうリスクもあります。
TDDでは機能実装のための最小限のコードを作成するため、コードが過剰になる心配がありません。
TDDは、テストコードを書く「Red」、テストが成功するように機能を実装する「Green」、テストが成功した際にプログラムを修正する「Refacter」の3つのサイクルで行われます。テストが成功する最低限のコードでシンプルな実装にするため、少ない時間で作業ができるのもメリットです。
また、TDDの目的としてはきれいな動くソースコードを書くことが挙げられます。動作するコードを書きながらきれいに直すことで、早い段階で修正を行えるメリットがあります。
TDDのテストには4つの種類があります。
単体テストを行う際のツールとしては、xUnitがあることを紹介しました。しかし、開発は1人で行うとは限りません。
複数人でTDDを行う場合、単体テストだけでなく結合テストを行うこともあるでしょう。その際、使用を検討したい役立つツールについて紹介します。
プログラムを実行可能な状態にするため、ビルドタスクを登録して実行するのがビルドツールです。
ビルドツールを使わなければ、プログラムの変更やテスト実行、ファイルのクリーンアップなどの手作業が必要となります。ビルドツールを用いて自動化することで、TDDの際にかかる手間を削減できるメリットがあります。
ソースコードの作成や修正を行ったときに、変更内容や作成変更日時の履歴保管を行うのがバージョン管理ツールです。
バージョン管理ツールは変更したファイルを各バージョンデータベースに書き戻すことにより、誰がいつどのような変更を行ったのかが保管されます。チームで開発を進める場合、同じ個所の変更確認が容易となるメリットがあります。
TDDではソース修正やリファクタリングが行われるため、バージョン管理ツールは必要不可欠です。
CIツールは、継続的イングレーションツールのことです。定期的、継続的にソースコードのインテグレーション(結合)を実行する、バージョン管理ツールと連携してソースコードの更新のたびにテストコードの実行を行うのが役割です。
修正した際に他の場所で問題が発生した際に、定期的なチェックを行っていれば不具合の内容が通知により把握できます。チームで開発を行う際にCIツールを導入すると、コード修正後のテスト実行を効率よく行うことができるのです。
モックとは、モックアップ(原寸大模型)の略称。モックオブジェクトライブラリは、実装されていない機能の代わりを用意するものであり、本物がなくても単体での開発を進めることができます。
モックオブジェクトライブラリを使用すると、依存する部品が完成していない、依存部品の利用によって他のテストに支障が生じるといったリスクを避けることができます。ちなみに、テストを目的として代用するオブジェクトはテストダブルとも呼ばれています。
便利なツールですが、多用するとメンテナンス性が低下するリスクがあります。
テストを行うためのツールは他にもあります。TDDを実施する上で必ずしも使用しなければいけないと言うわけではありません。それぞれのテストツールの特性を知り、必要に応じて取捨選択していくことが大切です。
ここでは、3つのツールについて紹介します。
Javaプログラムの中にあるバグを見つけるプログラムです。エラーの可能性が高いコードであるバグパターンを探します。
JavaバージョンJDK8でビルドされており、JRE8以上で動作しますが、Java11以降へのサポートは実験的です。
Webアプリケーションのブラウザ操作を自動化できるツールです。テストの他にも、タスクの自動化などでも利用されています。
テスト結果は記録され、詳細の確認が可能です。また、拡張機能を使用すればネットワーク上の他のコンピュータからのテスト実行も可能であり、複数のコンピュータからアクセスした際の挙動確認やテストが効率よく行えます。
Seleniumを使用するための環境として、以下のインストールが必要です。
Webアプリ用統合テストツールがcapybaraです。rubyで開発されたウェブアプリケーションテストフレームワークですが、rubyプロジェクトの他にも使用できます。
商品名 | Ranorex (ラノレックス) |
Autify (オーティファイ) |
---|---|---|
商品タイプ | パッケージ型
膨大なテスト工数を |
SaaS型
初期費用を抑えて |
対応テスト |
|
|
実行回数 の制限 |
制限なし |
制限あり
400回/1000回/任意 ※プランにより異なる |
日本語サポート | 導入後のセミナーが充実! | ヘルプサイトが充実! |
体験版 | 14日間 | 14日間 |
※Googleで「テスト自動化ツール」と検索し上位表示されたパッケージ型、SaaS型のテスト自動化ツール21種類の中から、(1)クロスデバイス、マルチブラウザに対応し、(2)日本語のサポートがあり、(3)ノンプログラミングでシナリオ作成が可能なツールをピックアップ(2021年11月1日調査時点)。パッケージ型、SaaS型それぞれの代表商品を選出しました。
【代表商品の選出基準】
☆パッケージ型:上記の条件の通り。
☆SaaS型:上記の条件に加え、公式サイト上に導入事例がもっとも多かったツールを選出。