手動テストか、自動テスト。あなたのソフトウェアにはどちらを使うべき?

こちらのブログは「How to choose between manual or automated testing for your software」の抄訳です。

ソフトウェアテストとは、プログラムが意図したとおりに動作するかどうかを、設計に照らして確認するプロセスです。

開発したアプリやシステムが要件を満たしていることを確認し、製品のさらなる開発を可能にするために実施されます。

ソフトウェア開発において、自動テストは必要不可欠なものとなっています。

初期投資が必要な場合もありますが、時間をかければ、初期費用に見合うだけの効果が得られます。

手動テストには、ミスが発生しやすいという短所がある一方で、視覚的情報に対するフィードバックを得られるという長所があります。

手動テストと自動テスト、そのどちらを選択するのかは、最終的には、プロジェクトが何を必要とし、どのようなリソースがあるのかによって決まります。

手動テストとは?

手動テストは、アプリケーションテストの一種で、QAエンジニアやソフトウェアエンジニアが、自動化ツールを使用せずに、テストケースを手動で実行することです。

このプロセスでは、テスターは、開発中のアプリケーションやソフトウェアのテストを実行するために、自身の経験、知識、および技術的なスキルを活用します。

これは、ソフトウェアやアプリケーションのバグや問題を発見し、本番稼動後に正しく動作することを保証するために行われます。

自動テストは放っておいても実行されますが、手動テストはテストケースの準備から実際のテスト実施まで、すべてのフェーズでQAエンジニアが密接に関与する必要があります。

手動テストへのTest Centerの活用

Qt Quality Assurance Tools のツールの 1 つである Test Center は、手動テストの結果を管理するための合理的なシステムを提供しています。

そこでは、手動テストの結果を自動テストの結果と同一のフォーマットで、まとめて管理することも可能です。

さらに、手動テストの手順とドキュメントをTest Center上で記述して管理できる、テスト管理セクションもあります。

Test Centerの画面は情報ごとに分割されており、左側はテストシナリオを作成・管理するためのもので、テストスイート、テストケース、また、BDD(振る舞い駆動開発)におけるフィーチャー、シナリオの作成を行うことができます。

一方、画面の右側には、テストケースやシナリオの説明や前提条件の変更を行う場所です。また、テストの各パートの設計や管理にも活用されます。

自動テストとは?

自動テストとは、ソフトウェアツールやスクリプトを使用して、テスト作成や実行作業を自動化することです。

自動テストでは手動テストよりも多くのテストケースを短時間で実行できるため、テストカバレッジの向上に貢献します。

テスターは、テストの実行やターゲットプラットフォーム(モバイルアプリやウェブサイトなど)でのタスク実行など、一連の動作を実行するためのテストスクリプトを作成する必要があります。

そのため、テスターにはスクリプトを記述する能力が求められます。

自動化には、一般的にSelenium、QTP、UFT、Squishなどのツールが使用されます。

Squishは、Python、JavaScript、Ruby、Perl、Tclなどの非商用のプログラミング言語をサポートしているので、これらの言語に関する知識があればさらに有利です。

Squishを使用した自動テスト

Squishを使用すると、デスクトップ、モバイル、組込み、およびWebアプリのGUIテストを自動化することができ、さまざまな開発プラットフォームで使用できます。

日々目まぐるしく進化するアプリケーションのユーザーインターフェイスのテストという、手間がかかり、ミスが起こりやすいプロセスを簡素化します。

Squishは、機能リグレッションテストと自動化されたGUI機能テストをサポートしています。

また、再現可能な方法でユーザーのアクションをシミュレートし、さまざまな環境でアプリケーションを自動的にテストすることができます。

代表的な機能は以下になります:

  • 主要なGUIインターフェイスを完全サポート
  • 様々なプラットフォーム(PC、スマートフォン、Web、組込み)に完全対応
  • アプリケーションへの操作からテストスクリプトを自動生成
  • 堅牢で信頼性の高いオブジェクト識別・検証技術
  • 視覚的な外観やスクリーンショットに依存しないテストの作成
  • 効率的な統合開発環境(IDE)
  • テストスクリプト作成に広く使用されているスクリプト言語の豊富な選択肢
  • 振る舞い駆動開発(BDD)の完全サポート
  • コマンドラインツールによる完全制御も可能
  • CI(継続的インテグレーション)との統合をサポート

手動テスト vs 自動テスト - メリットとデメリット

この2つのどちらかを選択する場合、考慮すべき要素はいくつもあります。

ひとつは、ソフトウェア開発者が直面する最大の課題である「納期」です。

もし完成予定日を過ぎてしまえば、顧客を失うことになりかねません。また、自動テストにはセットアップやメンテナンスが必要になるため、予算の問題もあります。

どちらのソリューションにもメリットとデメリットがありますので、ニーズに応じて検討する必要があります。以下、詳しく見ていきましょう。

手動テスト

メリット

  • 自動テストよりも低コストで開始できる
  • 人間の知、ユーザーエクスペリエンスに関するフィードバックを得るのに役立つ
  • ビジュアル(色、フォント、サイズ、コントラスト、ボタンの大きさなど)について、人間による貴重なフィードバックが得られる
  • テストケースの実行が1~2回で済むため、効率的
  • 小さな修正であれば、コーディングすることなく迅速に適用できる
  • 探索的テスト、ユーザビリティテスト、アドホックテストに最適である

デメリット

  • QAエンジニアやテスターの時間や労力が大きくかかる可能性がある
  • ヒューマンエラーが発生する可能性がある
  • 再利用ができない - 繰り返し行う必要があるため、QAエンジニアやテスターにとって非常に疲れやすく、退屈な作業になる可能性がある
  • 大規模で洗練されたアプリケーションでは、より多くの手動テスターが必要になるため、拡張性が悪い

自動テスト

メリット

  • 休憩や睡眠が不要のため、作業スピードが速い
  • より多くの不具合を発見することができる
  • 繰り返し実行されることの多いテストケースに有効
  • 複数のテストを同時に実行できる
  • 手動と比較してカバレッジの幅が広がる
  • 記録したテストスクリプトは、類似のテストケースに再利用できる
  • 回帰テスト、パフォーマンステスト、負荷テスト、および反復性の高い機能テストケースに最適
  • 大規模なプロジェクトでは、より多くのマンパワーが必要となるが、新しいテストスクリプトを書くだけなので、手動テストよりは少なく済む

デメリット

  • 探索的テストができない
  • テストケースをコード化する必要がある
  • ヒューマンファクターを考慮できないため、ユーザーエクスペリエンスのフィードバックができない
  • 小さな変更もコード化する必要があり、その分時間がかかる
  • テストの初期導入とメンテナンスにコストがかかる

 

多くの場合、自動化されたテストには利点がありますが、どんなテクノロジーにも限界はあります。

例えば、消費者体験を重視したプロダクトを作る場合、手動テストによる人間の判断と直感が重要となることもあります。

自動テストと手動テストのどちらが良いかは、実行する必要のあるテストケースの数、繰り返し行うテストの頻度、チームの予算などに大きく依存します。 

理想的には、それぞれに利点があるため、組織としては両方を取り入れるべきでしょう。

手動テストが必要な場合もあれば、自動テストがより効率的な場合も多くあります。

いずれにせよ、この2つのソフトウェアテスト手法はどちらも重要なのです。

おわりに

以上が、記事の内容となります。

SquishをはじめとするQtの品質保証ツールにご興味のおありの方は、お気軽にお問い合わせください。

概要のご説明から詳細な技術的相談、また無料のツールトライアルのご案内もいたしております。


Blog Topics:

Comments