ソフトウェア開発、ウェブサイト制作でのテストについて
プロジェクトの大小はあれど、開発やその後の運用、機能追加においてテストは非常に大切です。
1 テストの種類について
1−1 最小限の単体テスト(ユニットテスト)
最小限のテストは開発段階で行う、単体テスト(ユニットテスト)です。 主にメソッド、関数 単位でのテストとなります。 この段階では機能毎にテストを行い、各機能が要件を満たしてるかを確認するのに使われます。 チームで分けて開発したり、する上でも個別のテストをクリアする事で、互いの開発領域の役割と責任関係を明確にする事が出来ます。 また、個人開発においても後々、テストを書いた事が、次の機能追加の土台となり生きてきます。
1−2 統合テスト,機能テスト、システムテスト
単体テストで作られたモジュールが正しく動作、連動するかを確認していくのが統合テストです。 また、それらが提供する機能を確認するのが機能テスト、 システム全体で、仕様書通りの動きをするかを確認するのがシステムテストです。
1−3 モンキーテスト、アドホックテスト
想定外の使い方をしてテストをする事です。
1−4 ブラックボックステスト
システムの中身を考慮せずに、仕様書から引き出せる内容をテストしていくことをブラックボックステストと言います。
ウェブサイト制作のレベルですと、完成した画面やフォームなどの確認レベルの物は、このブラックボックステストを手動で行うという事が多いでしょう。
1−5 負荷テスト
機能要件の他に非機能要件を満たしているかを確認するのが負荷テストです。 大量のアクセスに対してのレスポンスや、大量のデータ処理に対して時間等 負荷に対してのテストを行います。
1−6 受け入れテスト
ベンダーとクライアントがいる場合、クライアント側が最終的に確認するテストを指します。
2 テストをめぐる開発方法
ウォーターフォールやアジャイルに置いては、開発方法は違えど基本はテストの重要度は同じです。
それと比較した時にTDD,BDDがテストと開発がある程度絡まった開発手法と言えます。
2-1 テスト駆動開発(TDD)
テスト駆動開発は、先にテストを書いて開発を進める手法です。 テストファーストのこの手法は、ある程度の開発のスピードとバグ改善の担保をしてくれます。
2-2 ビヘイビア駆動開発 (BDD)
BDDはUML言語のように、プログラムを組まない人でもある程度わかりやすいシナリオを見せる事が出来、開発者がそれに合ったテストを書いていける開発手法です。 マネージャークラスやクライアント側との機能調整、確認がしやすく専門ツールを使えばテストとシナリオが連携しやすいです。
3 テストをめぐるメリットとデメリット
テストのメリットは、その時点で想定しうる問題点を潰せるという点です。 デメリットはテストの実装、維持にかかるコストでしょうか。
ただ、テストの重要度は非常に高い為、開発運用(DevOps)を続けていくために、テストの自動化 > CI(継続的インテグレーション)というのは今は当たり前になってきてます。
リポジトリ管理したGithubやGitlabから、CIツールを通して、安全性を確保した上でのデプロイという流れはチームでも個人でも利用しやすくなっています。