テストをすべて自動化するとバラ色の人生が待っているように思えますが、
「美人は3日で飽きる」というように(← 例えが変、、)
「いいものもある、だけど悪いものもある!」(← from スネークマンショー、古い!)
というのが現実です。
つまりは、自動テストと手動テストの特徴を理解して、ただしくどちらで実行するべきか、を判断する必要があります。
自動テストと手動テストの比較表
元ネタはこちら[Automation Testing Vs. Manual Testing: What’s the Difference?](https://www.guru99.com/difference-automated-vs-manual-testing.html) わかりやすいように若干意訳してます。比較内容 | 自動テスト | 手動テスト | 個人的な補足 |
---|---|---|---|
作業時間 | 手動テストよりも高速で実行できる | 時間がかかり、人的リソースが必要 | 必ずしも自動テストの方が高速でテスト実行できるとは限らない。内容によっては手動でやった方が早い場合もある |
探索的テスト | 向いてない | 可能。向いている | 手動テストのでの効果はテスターのスキルにも依存する |
初期投資 | 初期投資は高くつくが、長期的にみると費用対効果は優れている | 初期投資は自動テストに比べると少なくすむ。費用対効果は長期的に自動テストと比較すると低くなる | |
信頼性 | ツールやスクリプトで実行される為、信頼できる結果を得られます.テストによって疲れることもない | 人的ミスが発生する場合がある為、正確ではない場合がある | |
UI変更 | 少しのUI変更でも自動テストスクリプトを修正する必要があります | 少しのUI変更は手動テストの実行を妨げません | |
投資 | 自動テストツールと、自動テストエンジニアへの投資が必要 | 人的リソースへの投資が必要 | |
費用対効果 | 少量のリグレッションテストを自動化した場合は費用対効果が悪い | 大量のリグレッションテストを実行する場合、費用対効果が悪い | |
結果の見易さ | 自動テストでは、関係者全員が自動テストシステムへログインし、結果を確認することができる | 手動テストでは通常、ExcelやWordに記録され、テスト結果はすぐに確認できません | 手動テストもgoogleスプレットシートとか使えば関係者全員がいつでもすぐに結果を確認できないこともない |
定性的な評価 | 自動テストは定性的な評価は含まれません。その為、使いやすさや顧客満足度を評価することはできない | 手動テストは定性的な評価を可能にし、ユーザーフレンドリーなシステムの開発に貢献するかもしれない | |
性能試験 | ロードテスト、ストレステスト、スパイクテストなどの性能試験は自動で実行できるツールを使うのが一般的 | 手動テストでは、性能試験はできません | テスターを何千人も用意すれば手動でもできないこともないかもしれませんが、現実的ではない |
並行実行 | 自動テストは例えば、異なるブラウザを同時に並行して実行するなど、並行実行が可能 | 手動テストは並行実行が可能だが、人的リソースが必要でコストもかかる | |
バッチによるテスト実行 | 複数のテストスクリプトをバッチ処理し、毎晩実行することができます | 手動テストではバッチによるテスト実行はできません | |
プログラミング知識 | 自動テストではプログラミング知識は必須です | 手動テストではプログラミングする必要はない | 自動テストもGUIだけで実現できるものもありるので、必ずしも自動テストでプログラミングスキルが必要、というわけでもない |
セットアップ | 自動テストではそれほど複雑ではないが、テスト実行設定が必要 | 手動テストは自動テストより簡易的な設定が必要 | 複雑か、簡単か、はその人のスキル、主観にもよる |
エンゲージメント | ツールで行う為、正確でうんざりすることがない | 繰り返し実行すると、うんざりした気持ちになりミスを起こすこともある | |
理想的なアプローチ | 同じテストケースを頻繁に実行する場合、最適です | テストケースを1-2回の実行で良い場合、最適です | |
ビルド時のテスト | 自動テストはビルド時のテストに貢献します | 手動テストには向いてなく、やったとしても時間がかかります | |
締め切り | 自動テストは事前に決めた締め切りを見逃すリスクはない | 手動テストは事前に決めた締め切りを見逃すリスクがある | 自動テストも、実行するのを人が忘れる、または実行をセットアップしておくのを忘れる、というリスクもないことはない |
フレームワーク | 自動テストは、データドリブンやキーワード、ハイブリッドなどのフレームワークを使用し、効率的に進めることができる | 手動テストはフレームワークを使わないが、ガイドライン、チェックリスト、ルール化したプロセスなどを利用し、効率的にするこはできる | |
ドキュメンテーション | 自動テストはドキュメントとしても機能し、特に、ユニットテスト自動化の為のトレーニング資料としても価値を提供する。新規で開発者がJoinした際、ユニットテストケースを確認すると、コードベースを素早く理解することに貢献する | 手動テストのテストケースはトレーニング資料としての価値は提供しない | |
テスト設計 | 自動テストでの単体テスト設計はテスト駆動開発の中で行う | 手動テストでの単体テスト設計はコーディングプロセスの中では行わない | |
DevOps | 自動テストはビルド検証テストに役立ち、DevOpsサイクルの不可欠な部分です | 手動テストは、DevOpsの自動化されたビルドの仕組みを崩壊させます | |
いつ使う? | 自動テストは、回帰テスト、パフォーマンステスト、負荷テスト、また、何度も繰り返す機能テストケースに適しています。 | 手動テストは、探索的テスト、ユーザビリティテスト、およびアドホックテストに適しています。 テスト対象が頻繁に変更される場合にも使用する必要があります。 | つまりはこの項目に判断材料は集約されている気がする・・・ |