Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【mabl experience 2024登壇スライド】仕様変更に対応した強固かつ柔軟な アサ...

Roku Mikami
November 21, 2024

【mabl experience 2024登壇スライド】仕様変更に対応した強固かつ柔軟な アサーションを実現するXPathの活用法〜ビットキーにおける課題とその解決策〜

下記イベントに登壇した際の資料になります
https://experience.mabl.com/ja/

Roku Mikami

November 21, 2024
Tweet

More Decks by Roku Mikami

Other Decks in Technology

Transcript

  1. Copyright © Bitkey Inc. All rights reserved. 三上 鹿 Mikami

    Roku ~2022 2022/10~ 2023/1~ ・某ゲーム会社のテスターとして活動を開始 ・主にソフトウェアのアップデートに関する  テスト実行業務に従事 ・ビットキーにテストエンジニアとして Join ・スマートロックに関する製品のうち、 Web  アプリケーションを中心にテスト活動を行う ・ビットキーにてmablの利用を開始 ・社内でのテスト自動化チームの一員として活動 2024/11~ ・社内転職してソフトウェアエンジニアに。 ・Webアプリケーションの設計、実装段階での  製品の品質を維持・向上させるために活動中 ◾所属 株式会社ビットキー QAエンジニア/テストエンジニア
  2. Outline Copyright © Bitkey Inc. All rights reserved. 1. 本セッションで伝えたいこと

    2. mablアプリ内のXPathでできること 3. XPathを使うきっかけになった課題 4. XPathを使うまでの試み 5. XPathの導入 6. 課題に対してのXPathの活用 7. まとめ
  3. 11 Copyright © 2024 Bitkey Inc. All right reserved. XPathはwebページの要素を直

    接指定して操作を行うことがで きる 本セッションで伝えたいこと
  4. 12 Copyright © 2024 Bitkey Inc. All right reserved. 本セッションで伝えたいこと

    XPathはwebページの要素を直 接指定して操作を行うことがで きる →独立性を高めることで他の要 素と切り離してテストを行うこと ができる
  5. 13 Copyright © 2024 Bitkey Inc. All right reserved. 本セッションで伝えたいこと

    XPathはmablでテストを作成す る際の手段の1つ
  6. 14 Copyright © 2024 Bitkey Inc. All right reserved. 本セッションで伝えたいこと

    XPathはmablでテストを作成す る際の手段の1つ →自動修復機能が働き難い ページや、精度の高い検証が 必要なテストで活躍します
  7. 16 Copyright © 2024 Bitkey Inc. All right reserved. 本セッションで伝えたいこと

    XPathを利用するためには 学習コストが必要 →1~2日あれば使い始められる くらいのボリューム
  8. 18 Copyright © 2024 Bitkey Inc. All right reserved. mablアプリ内のXPathでできること

    ◾XPathとは ①“XML Path Language” ②XML文書内の要素や属性を指定 して検索・抽出などを行うための 言語 ③HTML文書に対しても使用可能
  9. 19 Copyright © 2024 Bitkey Inc. All right reserved. mablアプリ内のXPathでできること

    ◾mablでのXPathの使い方 ①「ステップを追加」を選択 ②「ステップの挿入」を選択 ③「要素の検索」を選択 ④「クエリ > XPath」を選択 ※CSSにしてもXPathのクエリ使える...
  10. 22 Copyright © 2024 Bitkey Inc. All right reserved. mablアプリ内のXPathでできること

    ◾要素に対して各キーボード操作を行えたり・・・
  11. 24 Copyright © 2024 Bitkey Inc. All right reserved. mablアプリ内のXPathでできること

    ◾補足 ・要素の検索ではCSS検索も可能 ・CSS検索はまだ最近使い始めたばかりで紹介するほどの  内容がないので今回のセッションでは扱いません
  12. 26 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うきっかけになった課題

    ◾下記の事象に遭遇 ①テスト作成後、テストステップを実 行すると失敗した ②クラウド環境でのみ、失敗するテス トステップがあった
  13. 27 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うきっかけになった課題

    ・作成した時は問題なく動いた ・ローカル環境での実行は成功 ・クラウドで動かした場合だけなぜ か失敗してしまう ・再作成しても解決せず
  14. 28 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うきっかけになった課題

    ・作成した時は問題なく動いた ・ローカル環境での実行は成功 ・クラウドで動かした場合だけなぜ か失敗してしまう ・再作成しても解決せず → どうすればいいんだろう・・・
  15. 31 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うまでの試み

    ◾失敗したテストステップの共通点 ・レコーディング機能で作成 ・画面上の要素を対象に操作を行う ・“Element not found”のエラーメッセージ ・同じ名前のボタンが画面上に複数表示されているような状態
  16. 32 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うまでの試み

    「要素が見つかりませんでした」 というエラーメッセージが表示 されている
  17. 33 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うまでの試み

    「要素が見つかりませんでした」 というエラーメッセージが表示 されている → 対象の要素に関する追加の情報 を与えてあげれば良い?
  18. 34 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うまでの試み

    ◾要素の追加情報を与える方法 ①検索の設定 ②要素の検索(XPath/CSS)
  19. 35 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うまでの試み

    ◾要素の追加情報を与える方法 ①検索の設定 ②要素の検索(XPath/CSS) → 要素の検索は難しそう・・・
  20. 36 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うまでの試み

    ◾要素の追加情報を与える方法 ①検索の設定 ②要素の検索(XPath/CSS) → 要素の検索は難しそう・・・ → 学習コストが低い①から試そう
  21. 37 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うまでの試み

    検索の設定ではどの情報を追加で与 えるか選択できる
  22. 38 Copyright © 2024 Bitkey Inc. All right reserved. XPathを使うまでの試み

    検索の設定ではどの情報を追加で与 えるか選択できる → container(どこにあるか)・ role(どういう働きをするか) ・innerText(何というテキストが表示さ れているか)に指定を行ってみた
  23. 40 Copyright © 2024 Bitkey Inc. All right reserved. ◾結果・・・

    一部のテストは成功! XPathを使うまでの試み
  24. 41 Copyright © 2024 Bitkey Inc. All right reserved. ◾結果・・・

    一部のテストは成功! → しかし引き続き”Element not found”で失敗するテストが ある・・・ XPathを使うまでの試み
  25. 45 Copyright © 2024 Bitkey Inc. All right reserved. レコーディング機能で作成

    した際の情報を確認できる XPathを使うまでの試み
  26. 49 Copyright © 2024 Bitkey Inc. All right reserved. ◾XPathの読み方について軽く調べた結果・・・

    ・パスの開始地点(ルートノード) がhtmlになっている ・htmlはhtml文書の最初に 記載するもの 課題に対してのXPathの活用
  27. 50 Copyright © 2024 Bitkey Inc. All right reserved. ◾XPathの読み方について軽く調べた結果・・・

    ・パスの開始地点(ルートノード) がhtmlになっている ・htmlはhtml文書の最初に 記載するもの 課題に対してのXPathの活用 → ページ全体を一つずつ掘り下げている → 他の要素に影響されてしまっているかも?
  28. 51 Copyright © 2024 Bitkey Inc. All right reserved. ◾XPathの読み方について軽く調べた結果・・・

    ・パスの開始地点(ルートノード) がhtmlになっている ・htmlはhtml文書の最初に 記載するもの 課題に対してのXPathの活用 → ページ全体を一つずつ掘り下げている → 他の要素に影響されてしまっているかも? XPathを使えば開始地点 をもっと近くできそう
  29. 53 Copyright © 2024 Bitkey Inc. All right reserved. XPathの導入

    ◾要素の追加情報を与える方法 ①検索の設定 ②要素の検索(XPath/CSS) → 要素の検索は難しそう・・・ → 学習コストが低い①から試そう
  30. 54 Copyright © 2024 Bitkey Inc. All right reserved. ◾要素の追加情報を与える方法

    ①検索の設定 ②要素の検索(XPath/CSS) → 要素の検索は難しそう・・・ → 学習コストが低い①から試そう どれくらい時間がかかるかわ からないけどとりあえず 1日やってみよう・・・ XPathの導入
  31. 56 Copyright © 2024 Bitkey Inc. All right reserved. 意外と1日で覚えられました

    ※後日他メンバーにオンボーディングを 行ってもらった際も1~2日で完了 ◾結果・・・ XPathの導入
  32. 58 Copyright © 2024 Bitkey Inc. All right reserved. ◾覚える際に意識したこと

    ①HTML文書の読み方 ②HTML要素の読み方 XPathの導入
  33. 59 Copyright © 2024 Bitkey Inc. All right reserved. ◾覚える際に意識したこと

    ①HTML文書の読み方 ②HTML要素の読み方 ③XPathの書き方 XPathの導入
  34. 60 Copyright © 2024 Bitkey Inc. All right reserved. ◾補足

    ・Webサイト全体の作りを覚えようとする と学習コストは大きい ・XPathを利用するだけならHTMLの基 礎知識を覚えるだけでOKでした XPathの導入
  35. 62 Copyright © 2024 Bitkey Inc. All right reserved. ◾検索の設定と差をつけるために何が必要か

    削除ダイアログ上の「削除」ボタンを選 択して動作を確認するテスト 課題に対してのXPathの活用
  36. 63 Copyright © 2024 Bitkey Inc. All right reserved. ◾検索の設定と差をつけるために何が必要か

    削除ダイアログ上の「削除」ボタンを選 択して動作を確認するテスト → 操作を行った結果どうだったかはこの 直後に確認する。そのためここ では「ダイアログ上の削除ボタン」が 選択できれば良いのでは? 課題に対してのXPathの活用
  37. 64 Copyright © 2024 Bitkey Inc. All right reserved. ◾検索の設定と差をつけるために何が必要か

    HTMLから階層を指定するので はなく、ダイアログを構成する要 素から階層を指定するようにし てみる 課題に対してのXPathの活用
  38. 65 Copyright © 2024 Bitkey Inc. All right reserved. ◾検索の設定と差をつけるために何が必要か

    HTMLから階層を指定するので はなく、ダイアログを構成する要 素から階層を指定するようにし てみる →抽象度をあげることで  動きやすくさせる 課題に対してのXPathの活用
  39. 66 Copyright © 2024 Bitkey Inc. All right reserved. ◾検索の設定と差をつけるために何が必要か

    HTMLから階層を指定するので はなく、ダイアログを構成する要 素から階層を指定するようにし てみる //ダイアログのルート要素 //button[text()=’削除’] →抽象度をあげることで  動きやすくさせる 課題に対してのXPathの活用
  40. 68 Copyright © 2024 Bitkey Inc. All right reserved. ◾結果・・・

    残りのテストも成功するように! 課題に対してのXPathの活用
  41. 69 Copyright © 2024 Bitkey Inc. All right reserved. ◾使う中でさらに工夫を重ね・・・

    //div/div[2]/button[text()=’削除’] 課題に対してのXPathの活用
  42. 70 Copyright © 2024 Bitkey Inc. All right reserved. ◾使う中でさらに工夫を重ね・・・

    //div/div[2]/button[text()=’削除’] ダイアログ以外のコンポーネントで 同じ構造を持つものが現れたら失敗 するな・・・ 課題に対してのXPathの活用
  43. 71 Copyright © 2024 Bitkey Inc. All right reserved. ◾使う中でさらに工夫を重ね・・・

    //div/div[2]/button[text()=’削除’] //*[@role=’dialog’]//button[text()=’削除’] 課題に対してのXPathの活用
  44. 72 Copyright © 2024 Bitkey Inc. All right reserved. ◾使う中でさらに工夫を重ね・・・

    ・ダイアログである証明はrole 属性に’dialog’をもっているこ と ・role属性を指定できればタ グ名は任意(*)で良い 課題に対してのXPathの活用
  45. 73 Copyright © 2024 Bitkey Inc. All right reserved. ◾使う中でさらに工夫を重ね・・・

    ・ダイアログである証明はrole 属性に’dialog’をもっているこ と ・role属性を指定できればタ グ名は任意(*)で良い 「データ削除時にダイアログを 表示する」という仕様が続くうちは安 定してテストできる 課題に対してのXPathの活用
  46. 75 Copyright © 2024 Bitkey Inc. All right reserved. XPathのさらなる活用

    XPathの使い方を覚えたことで mablで実装可能なテストの幅が広 がりました
  47. 76 Copyright © 2024 Bitkey Inc. All right reserved. ◾要素の数をカウントする機能

    データの件数表示と実際に表示さ れているデータの要素数を 比較したい → 実装可能に! XPathのさらなる活用
  48. 77 Copyright © 2024 Bitkey Inc. All right reserved. ◾要素の順番指定

    ランダムに任意の要素を選択 させたときに意図した挙動を 行うか確認したい → 実装可能に! XPathのさらなる活用
  49. 78 Copyright © 2024 Bitkey Inc. All right reserved. ◾使う際の注意点

    XPathは自動修復機能が使えない XPathのさらなる活用
  50. 79 Copyright © 2024 Bitkey Inc. All right reserved. ◾使う際の注意点

    XPathは自動修復機能が使えない → 問題が発生した際、1つ1つ修 正する必要がある XPathのさらなる活用
  51. 80 Copyright © 2024 Bitkey Inc. All right reserved. 弊社では下記方針を採用しています

    ①基本はレコーディング機能 ②ダメだったら検索の設定を試す ③さらにダメだったらXPathを使う XPathのさらなる活用
  52. 81 Copyright © 2024 Bitkey Inc. All right reserved. 弊社では下記方針を採用しています

    ①基本はレコーディング機能 ②ダメだったら検索の設定を試す ③さらにダメだったらXPathを使う それぞれの機能を適材適所で用いる ことでパフォーマンスを向上 XPathのさらなる活用
  53. 83 Copyright © 2024 Bitkey Inc. All right reserved. ①ビットキーにおいては自動修復機能が働き難い箇所でXPathを

    活用することでテストが成功するようになった ②XPathを使うことで実装できるテストの範囲が広がった ③学習コストは1~2日程度 ④使用する際は自動修復機能が使えないことを考慮する まとめ