テスト自動化の実装:テスト自動化をスモールスタートさせる方法
2番目のポイントはテスト自動化の実装フェーズについてである。ここからは、バルデスの江添氏が、テスト自動化の実践的な内容を説明した。
「テストの自動化では、スモールスタートを意識することが重要ですが、その進め方も大切になります」
テストの自動化では、簡単に済むところもあれば技術的に難しい仕様が入っているところがある。そういったところにかかり切りになると、他の機能のテストの実装が後回しになる。一方で、手を付けやすい静的なページの実装を進めるとテストの効果が感じにくくなるのだ。
「そこで、これから自動化を導入する場合は、徐々にカバレッジをあげていくことをオススメしています」
具体的な手順はこうだ。最初に、同じ粒度で中機能から1つできることを自動化実装する。このときバリエーションは無視する。続いて、中機能に関連する画面について最初の実装したテストに含まれない画面確認を自動化実装する。それから、最初に自動化したできることのバリエーションの自動化を実装して、最後にできないことのバリエーションを自動化実装する。つまり、大きな網で機能を網羅していって、段階を追って網目を小さくしていくイメージだ。
「闇雲に作っていく自動化の落とし穴に陥ってしまうことが多いので、最初の段階では粗くそろった粒度で実装して、段階を追って粒度を細かくするように、スモールスタートであっても進め方を考えることが大切になります」
テストの見える化:内容・操作と判定条件とスクリプトを同期させる
3番目のポイントは、テスト自動化の実行フェーズについてである。
「ここでのキーワードはテストの見える化ということです。テストを自動化して実行していると実行している内容が分からないという問題が出てくることがあります。テストは自動実行できているけれど、どんな内容なのか作った人にしか分からくなって属人化してしまうなんてことがよくあります」
このような問題が起こる原因は、テストケースとテストスクリプトが一致していないからだ。そのために、テストスクリプトと実際にテストしたい箇所が食い違っていても把握できない。また、テストに合格しても安心できなくなってしまうのだ。
そのためには、何をテストしたいかの内容や手順・判定条件をテストケースとして明確にして、そこからテストスクリプトを作成するようにテストケースの同期を取る必要がある。テストしている内容を見える化すればテスト漏れやテストミスの軽減につながるのだ。
江添氏は、ここでテストケースとスクリプトの具体例を示した(次図)。ログイン画面で正しくないアカウント情報を入力した場合、「アカウントが正しくない旨のエラーメッセージ」を表示するテストケースだ。
図の下側がテストスクリプトになっている。これは、Selenium + Javaで実装している。このスクリプトを見ると「QBook ID(メールアドレス)とパスワードの組み合わせが正しくありません。」と、より厳密な記述になっている。そのため、ログインエラーが出ても、エラーメッセージの仕様が変更されて文字列が一致しなくなっているのか、別の原因なのかスクリプトを見ないと判断できなくなっているのだ。
さらにスクリプトでは、IDに入力した値が空になっているかチェックしているが、これはテストケースに記述していない。
「こうした不整合があると、仕様変更などがあった場合に問題が発生したり、OKになっていたりするけど本当に問題がないのか確かめる必要が出てきます。その解決策として、弊社のT-DASHというツールでは、テストケースを日本語で記述すると、そのままスクリプトの形で動かすできるようになっています」