閲覧履歴機能が正しく動作しているか確かめるE2Eテストを mabl で自動化する
こんちには Azukaritai の村穂です。
この記事は、普段の業務で mabl を使っている社内のメンバー向けに書いています。といいつつ社外の方の参考にもなる可能性があります。
ちなみに、この記事に書かれている手法・手段がベストというわけではありません。コードやテスト観点によって他の最適なやり方があります。この記事を真似てテスト自動化の課題を解決するというよりも「あ、mabl そういうことできるのか」という発見のために記事を利用していただけると幸いです。
閲覧履歴機能が正しく動作しているか確かめるE2Eテストを mabl で自動化する
前提事項
テスト対象のプロダクトの仕様
youtube のように、随時更新されるコンテンツを検索・閲覧することができ、閲覧したコンテンツは履歴から確認することができます
コンテンツの詳細ページにアクセスするとそのコンテンツは履歴に追加されます
同一のコンテンツを複数回閲覧しても、履歴には1回の閲覧として表示されます
履歴は消すことができません
自動化するテストケース
コンテンツを閲覧後、履歴に閲覧したコンテンツが表示されていること
その他
同じ環境で同じアカウントで繰り返し実行できる自動テストである必要がある
自動化のための step
step1:コンテンツを検索するための検索ワードを生成する step を作成する
③は『文字列テンプレート』を選択し、プロパティを{{alpha:1}}にします(プロパティの詳細はこちらを参考にして下さい。{{alpha:1}}とした場合、大文字と小文字の1文字のランダムな文字列が生成されます)。
step2:検索フォームに step1 で用意した変数を入力する step を作成する
②を押下すると変数を入力する箇所を GUI 操作で選択する UI になるので、そこで検索フォームを選択したあと④は step1 で用意した変数を選択します。
step3:検索にヒットしたコンテンツのコンテンツ名を新規変数に代入する step を作成する
③は『要素のプロパティ』を選択後、検索にヒットしたコンテンツのコンテンツ名( innerText プロパティ)を選択します。その後、変数名を付けます。
step4:step3 で用意した変数の値と一致するの名前を持つコンテンツの視聴ページにアクセスする step を作成する
(GUI 操作を Rec)
step5:履歴画面に遷移する step を作成する
(GUI 操作を Rec)
step6:step3 で用意した変数の値と一致する名前を持つコンテンツにアサ―トを仕掛ける step を作成する
①を押下し、GUI 操作でコンテンツ名の innerText プロパティを選択したのちに、②で{{@step3で用意した変数名}}を入力します({{@XXX}}という記述をすると変数を参照する値に設定できます。詳細はこちらを確認してください)。
補足説明
step1 について
この step を作成している理由は、前提事項にある「同じ環境で同じアカウントで繰り返し実行できる自動テストである必要がある」に対応するための処理になります。検索ワードを固定値にしてしまうと、同じコンテンツを検索~閲覧することになり、2回目以降の結果が参考にならないテストになります。そのため1のような変数を作成し、マクロで自動生成した値を利用するようにしています(ただし、この方法では"自動生成された値が同一だった場合"や"コンテンツ名にヒットしない値が生成された場合"に正しくテストが行えません。回避方法としては、前者の問題に対しては出力される値の幅を広げて同一の値が出力される可能性を下げる、エンジニアの協力を得られるのであればテスト環境がテスト実行のたびに状態リセットされるような仕組みを用意するといった方法がありそうです。後者の問題に関しては分岐処理を加え、コンテンツがヒットしなかった場合は再度検索を行うなどの方法がありそうです。これらの解決方法はあくまでも一例です)
step6 について
この step が pass すれば、閲覧したコンテンツが履歴に反映されているということなので、閲覧履歴機能は正しく動作していることになります(今回の場合はあくまでそういうことにしている)
まとめ
冒頭でも述べた通り、この記事に書かれている手法・手段がベストというわけではありません。コードやテスト観点によって他の最適なやり方があります。
アップデートの過程で、記事内のスクリーンショットと実際の mabl の UI に差異が発生する可能性があります。あらかじめご了承下さい。
社外の方向け
記事の内容でよくわからなかった点は、こういうやり方もあるよねと言った内容はお気軽にコメントいただけますと幸いです。筆者もまだまだ学習が必要な状態なので、mabl に興味がある人やエキスパートとの記事をきっかけに繋がりができると嬉しいです。