これはオープンロジアドベントカレンダー3日目の記事です。
自動テスト運用で重要なこと
この投稿では、ツール選びがうまくいって、E2E自動テストのスクリプト作成が終わり、自動テストの運用段階で重要になることを記す。
(ツール選びについてはE2Eテスト自動化ツールの選び方で書いてます。)
私が現在所属するOPENLOGIではGhost Inspector(以下GI)を導入してから、約半年でリグレッションテストの自動化がほぼ完了した。
GI はドキュメントが充実しているので細かい使い方はDocumentationを見るとわかりやすい。
ここではGIの機能について書くが、以下の内容はE2Eテスト自動化する上でのポイントとして参考にしていただければと思う。
E2Eテストを自動化する時に考慮しておくべきこと
E2Eテストの自動化が完了したら、目的に応じてテスト実行頻度が決まる。
そして、実際の自動テストは環境の影響やデータの重複などが原因で途中で失敗することが多々ある。
その時は再実行が必要になるのだが、新規ユーザ登録では一度使ったメールアドレスは再利用できないことがほとんどなので、都度テスト用のデータを用意しなくてはならない。
自動テストスクリプトを作成する段階で、同じテストを何度も実行することを考慮して工夫をしておくと自動テストを運用しやすくなる。
自動テスト運用では変数の値の扱いやすさが大切
自動テストは同じテストを何度も実行するため、テスト用のデータは変数を用いて設定していくことになる。
そのため、変数の値の管理のしやすさは自動テスト運用のしやすさに直結する。
Ghost Inspector は変数の値のマネジメントが優れている
GIには変数の値の設定箇所が多数用意されていて、再実行時にデータを変更しやすくなっている。これは自動テストを運用する上で非常に便利なので詳しく説明する。
Ghost Inspector の変数の値マネジメント機能の特色
- 変数の値の設定箇所が階層ごとにある
- その上、各階層ごとに変数の値の設定箇所が複数ある
- なので、目的に応じた設定箇所から変数の値を設定できる
- 変数の値をCSVでアップロードできる
- テストスクリプト内でも変数の値を設定できる
- 組み込み変数が予め用意されている
- 前のテストで扱った変数の値を引き継いでテスト実行できる(シーケンシャルテスト設定時)
- 前回のテスト実行時の変数の値で再実行できる
- 前回のテスト実行時の変数の値を手動で変更して実行できる
階層構造
- Orgnization
- テストスイート
- テスト
- テストスイート
各階層で変数(Variables)が管理でき、下の階層で設定されたデータが優先されて変数に代入される。
すべてのテストで必ず使うデータはOrganizationに設定するといった具合に、設定する階層を変えることでマネジメントが非常にしやすくなっている。
組み込み変数
GIが予め用意した変数をスクリプトで扱うことで、毎回違った値を生成してくれるので、テスト用データを準備する必要がなくなり非常に便利。
{{random.number}}
{{timestamp}
{{internet.email}}
この辺は使い勝手がとても良い。
最もよく使っている変数管理機能
8. 前回のテスト実行時の変数の値で再実行できる
9. 前回のテスト実行時の変数の値を手動で変更して実行できる
この2つの機能は、テストの再実行ではもちろん、自動テストのスクリプトを作る時にも大活躍する。
GIでは1度実行したテストには「Run again」ボタンが表示される。クリックするとテストの各種設定モーダルが表示される。
その中の「Variables」に前回のテストで扱った変数と値がすべて確認でき、微調整して再実行することができる。
また、テストスクリプトの調整によって新たに変数を追加した場合には「Add variable」で新規追加した変数の値を設定しつつ、前回のデータを使ったテストができる。
組み込み変数によって生成されるものは、モーダルから削除することで再実行時に自動生成される。
まとめ
自動テストを運用してみた上で、とても大切だと思ったことなのでもう一度。
自動テスト運用では変数の値の扱いやすさが大切
なぜなら、何度も同じテストを実行するためにはデータの重複を避けないといけないから。
これからE2E自動化に着手するという時の参考になれば幸いです。