このチュートリアルではテストケースの書き方について見て行きます。また、AIベースの高度なテスト自動化ツールもご紹介します。手動テストだと人為的なミスが起こりがちで工数やコストがかかってしまうため、自動テストツールは効率的にE2Eテストを行うのに有用です。

テストケースを作るポイントは、誰でも理解して実行できるように分かりやすく書くこと。 テストケースの書き方を見る前に、テスト用語をおさらいしましょう。

テストケースとは?

ソフトウェア開発で言うテストケースとは、「エンドユーザーがきちんと使用できることを確認するソフトウェアやアプリケーションのテスト指示」です。テストケースの内容には、テストステップ、テストデータ(ログイン情報など)、テストが成功した場合に期待される結果、逆に失敗した場合の予期せぬ結果などが含まれます。アプリのログインをテストするための手順を文章化したものなどが考えられます。

従来的なやり方として、QAチームがテストケースをスプレッドシートに文章化する方法が定着していましたが、これではかなり手間が掛かります。特に大規模なプロジェクトだとかなり工数がかかってしまいます。そこで、この課題を解決するためにプロジェクト管理ソフトを導入しているチームもいます。TestRailなどの便利なテスト管理ソフトを活用して大成功しているチームもあるのです。

テストスクリプトとは?

テストスクリプトとは、「システムやアプリケーションをテストするための一連のコマンド・ステップ」です。ほとんどのDevOpsチームは「Java、C#、Python、JavaScript、Rubyなど、使い慣れたプログラミング言語でテストスクリプトを書くこと」と指定しています。

テスト自動化エンジニアはもともと少ないのが現状ですが、このようにプログラミング言語を指定すると新規参入はさらに難しくなってしまいます。さらに、エンジニア以外のテスターはプログラミングのスキルがないことが多いため、参加のハードルが一層高くなっています。人手不足に直面しているのは不思議ではありません。

このような状況で、「レコーディングして実行するソフト」の助けを借りて、テスターでもテストスクリプトを書けるようにしようという動きが生まれています。Autifyを使うと、コーディングなしでUIを直接操作するだけでテストを作成できます。プログラミング言語でテストスクリプトを作成するのではなく、コード化されたステップの作成はAutifyに任せようということです。テスターはブラウザを操作するだけで、テストスクリプトの作成自体はAutifyが行います。一方、エンジニアは新機能の開発に力を入れることができます。さらに、メンテナンス作業にはAutifyの機械学習アルゴリズムが活躍します。他のテストソフトだと、大規模なメンテナンス作業を任せられないという欠点があるのです。

テストシナリオとは?

Autify テストシナリオ

テストシナリオとは、「テストケースを構成するもの」で、Autifyではステップの集合体で成り立っています。ソフトウェアの機能のうち、テストできる機能のまとまりになります。たとえば、ログイン画面がうまく使えるかテストするテストシナリオ、画像が正しく表示できるか、ECサイトの「買い物かごに追加」ボタンが正しく動作するかなどをテストするテストシナリオが考えられます。

上のスクリーンショットは、最先端のテスト自動化ソフトの画面です。従来的にはスプレッドシートに手作業でデータ入力するパターンが多かったのですが、テスト自動化ソフトを使うと視覚的にダッシュボードで各ステップを俯瞰することができます。ステップごとに変更できるのもポイントです。変更したいステップだけを再びレコーディングすれば良いので、シナリオを一から作り直す必要はありません。

テストプランとは?

テストプランとは、ソフトウェアテストを行う目的、リソース、スケジュール、手順、および成果物の詳細が書かれた戦略文書です。「テスティングを行う全体図」と考えてください。特定の作業を行う責任者、テスト環境などが書かれているはずです。また、ユニットテスト、システムテスト、受け入れテスト、回帰テストなどのテスト方法を含む場合もあります。

テストケースの作り方は?

一般的に、テストケースは以下のような要素で構成されています。こちらをサンプルにしてテストケースを作成すれば、テスター全員がテストケースの状況を把握できます。

  • テストケースID:テストケースの固有識別子。
  • テストディスクリプション:テストの目的の説明。
  • テストステップ:テストケースを完了するために必要な各ステップ。
  • テストデータ:必要なすべてのテストデータ(テストでデータが必要な場合のみ)。下の例では、メールアドレスとパスワードデータが必要です。
  • 期待される結果:テストケースで期待される結果のアウトプット。
  • テスト結果:成功または失敗というテスト結果。
  • 注釈(メモ):テスターチームや今後このテストを使用する人に役立つメモ。

例として、テストケースをスプレッドシートに記述する場合、このようなものになります。

テストケースID テストディスクリプション テストステップ テストデータ 期待される結果 テスト結果 注釈
4182 ログイン画面に有効なメールアドレスを入力した場合のレスポンスを確認する。 1. メールアドレスを入力する。 \ 2. パスワードを入力する。 \ 3. 「ログイン」をクリックする。 メールアドレス:[email protected] \ パスワード:9sd7h3sa6/! 正常にログインする。 成功 期待された結果を達成。
4183 ログイン画面に無効なメールアドレスを入力した場合のレスポンスを確認する。 1. メールアドレスを入力する。 \ 2. パスワードを入力する。 \ 3. 「ログイン」をクリックする。 メールアドレス:[email protected] \ パスワード:9sd7h3sa6/! ログインに失敗、エラーメッセージ。 失敗 無効な結果。エラーメッセージが表示された。
4184 ログイン画面に無効なパスワードを入力した場合のレスポンスを確認する。 1. メールアドレスを入力する。 \ 2. パスワードを入力する。 \ 3. 「ログイン」をクリックする。 メールアドレス:[email protected] \ パスワード:9h3sa6/! ログインに失敗、エラーメッセージ。 失敗 無効な結果。エラーメッセージが表示された。
4185 ログイン画面に有効なデータを入力しなかった場合のレスポンスを確認する。 1. 「ログイン」をクリックする。 入力データなし ログインに失敗、エラーメッセージ。 失敗 無効な結果。エラーメッセージが表示された。

他に重要な列として、前提条件や事後条件などが挙げられます。上の例では、Firefoxでアプリをテストするときなど、「管理者ユーザーとしてログインする」という前提条件を付け加えることができるでしょう。Autifyを使用すると、テスターはデスクトップやモバイルなど複数のブラウザや端末でテストできます。事後条件の例として、ログインテストの日付とタイムスタンプなどが考えられます。

テストケースの作成を効率化するには自動化するのが最善策です。反復的な作業なら自動化が特に合理的ですが、ノーコードテスト自動化ツールだと反復的でない作業は対応できません。そこで、AutifyはAIを活用してUIの変更を検出しています。絶えず変化を続けるソフトウェア開発にAutifyが対応できるのは人工知能があるからなのです。テストが失敗した理由を調査したり、テストを再実行したりするのはテスターの時間の無駄です。AutifyはUIなどの変更に柔軟に適応し、スクリーンショットを横並びで表示できるので、テスターは一目で異常を把握できます。

まとめ

テストケースを作る際のポイントは、誰でも理解して実行できるように分かりやすく書くことです。テストケースを作成する時、他の人の立場に立ってみましょう。誰でも理解できるようなテストケースを作るには、テストについてできるだけ多くの情報を書いておく必要があります。「分かってくれるだろう」と思わずに、はっきり説明することで、書き直す必要がないテストケースが完成するのです。何度も再利用できるテストケースで作業を効率化しましょう!