アジャイル開発におけるテストフェーズ


レガシーシステムで主流だったウォーターフォール型の開発手法では、テストフェーズにおいても、プログラム単体に対して行う制御フローやデータフローの単体テスト、そして、プログラム間の関係性を確認するために行われる結合テストなど、開発したプログラムが実装された後におこなうテストはかなり大がかりな物でした。
そんな中、DXで注目されているアジャイル型の開発では、テストフェーズをどのように行えばよいのでしょうか?

ポイントは、アジャイル型の特性であるおおよその仕様だけでイテレーションを開始し、機能ごとに小単位で実装、テストを繰り返しすことによって素早い開発を実現するために、テストもスピーディに行わなければなりません。そのため一般的には、アジャイル型の開発サイクルであるイテレーションに合わせ、そのイテレーション毎に対象となる機能の確認テストを行います。この時、ユーザが求めている要件に従って、できればユーザに参加をしてもらって実際に利用しているデータによるテストが行えると、より効率的でバグの少ない開発ができます。ウォーターフォール型では、仕様変更されると全体に影響してしまい、その場その場のユーザの声を反映した開発がしづらかったのですが、イテレーション毎にテストするアジャイル開発では、現場のユーザが参加できるテストによって、より良いシステムへの改善がテストフェーズによって可能になることも期待できます。

アジャイル開発で特に注目されているのが、テスト駆動開発(TDD:Test-Driven Development)です。これは、テストありきで始める開発手法で、まず実装前に失敗するテストコードを書き仕様の理解を深め、次にテストが成功するコードを書いてテストを行いながらロジックを追加していきます。そして、テストがパスしたら変数名の変更などリファクタリングを行って保守性も考慮して改良し、実装が完了するまで繰り返します。これにより、テスト駆動開発では、テストコードの作成に余計な時間を費やすのではという懸念も、この手法を使えば動作するコードを書きながらきれいに直していく方法で、機能を実装するために必要な最低限のコードを作成していくので、結果的には不具合の早期発見ができ無駄の少ない高品質のシステム開発が可能になります。

従来のレガシーシステムで培ってきたテスト手法も一度捨てる覚悟で、DXのためには、アジャイルのような開発手法に合わせたテストフェーズを採用する方が、時代の変化に対応し易く、且つアプリケーションの品質も高めることができます。


テスト駆動開発(TDD)は、アジャイル型合った有効な手段


BPR, テストフェーズ