ソフトウェアテストの専門家が解説する、失敗しないテスト自動化の始め方と継続して運用していく秘訣とは?
【10-E-3】テスト自動化の始め方 Developers Summit2023特別編 ~計画から事例まで~
テスト自動化の実装:テスト自動化をスモールスタートさせる方法
2番目のポイントはテスト自動化の実装フェーズについてである。ここからは、バルデスの江添氏が、テスト自動化の実践的な内容を説明した。
「テストの自動化では、スモールスタートを意識することが重要ですが、その進め方も大切になります」
テストの自動化では、簡単に済むところもあれば技術的に難しい仕様が入っているところがある。そういったところにかかり切りになると、他の機能のテストの実装が後回しになる。一方で、手を付けやすい静的なページの実装を進めるとテストの効果が感じにくくなるのだ。
「そこで、これから自動化を導入する場合は、徐々にカバレッジをあげていくことをオススメしています」
具体的な手順はこうだ。最初に、同じ粒度で中機能から1つできることを自動化実装する。このときバリエーションは無視する。続いて、中機能に関連する画面について最初の実装したテストに含まれない画面確認を自動化実装する。それから、最初に自動化したできることのバリエーションの自動化を実装して、最後にできないことのバリエーションを自動化実装する。つまり、大きな網で機能を網羅していって、段階を追って網目を小さくしていくイメージだ。
「闇雲に作っていく自動化の落とし穴に陥ってしまうことが多いので、最初の段階では粗くそろった粒度で実装して、段階を追って粒度を細かくするように、スモールスタートであっても進め方を考えることが大切になります」
テストの見える化:内容・操作と判定条件とスクリプトを同期させる
3番目のポイントは、テスト自動化の実行フェーズについてである。
「ここでのキーワードはテストの見える化ということです。テストを自動化して実行していると実行している内容が分からないという問題が出てくることがあります。テストは自動実行できているけれど、どんな内容なのか作った人にしか分からくなって属人化してしまうなんてことがよくあります」
このような問題が起こる原因は、テストケースとテストスクリプトが一致していないからだ。そのために、テストスクリプトと実際にテストしたい箇所が食い違っていても把握できない。また、テストに合格しても安心できなくなってしまうのだ。
そのためには、何をテストしたいかの内容や手順・判定条件をテストケースとして明確にして、そこからテストスクリプトを作成するようにテストケースの同期を取る必要がある。テストしている内容を見える化すればテスト漏れやテストミスの軽減につながるのだ。
江添氏は、ここでテストケースとスクリプトの具体例を示した(次図)。ログイン画面で正しくないアカウント情報を入力した場合、「アカウントが正しくない旨のエラーメッセージ」を表示するテストケースだ。
図の下側がテストスクリプトになっている。これは、Selenium + Javaで実装している。このスクリプトを見ると「QBook ID(メールアドレス)とパスワードの組み合わせが正しくありません。」と、より厳密な記述になっている。そのため、ログインエラーが出ても、エラーメッセージの仕様が変更されて文字列が一致しなくなっているのか、別の原因なのかスクリプトを見ないと判断できなくなっているのだ。
さらにスクリプトでは、IDに入力した値が空になっているかチェックしているが、これはテストケースに記述していない。
「こうした不整合があると、仕様変更などがあった場合に問題が発生したり、OKになっていたりするけど本当に問題がないのか確かめる必要が出てきます。その解決策として、弊社のT-DASHというツールでは、テストケースを日本語で記述すると、そのままスクリプトの形で動かすできるようになっています」
- 関連リンク
この記事は参考になりましたか?
- Developers Summit 2023 セッションレポート連載記事一覧
- この記事の著者
-
可知 豊(カチ ユタカ)
フリーランスのテクニカルライター 興味の対象はオープンソースの日常利用、ライセンス、プログラミング学習など。 著書「知る、読む、使う! オープンソースライセンス」。https://www.catch.jp
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
提供:バルテス株式会社
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
