SelenideよるDSL風E2Eテスト基盤開発の実例/Example_of_E2E_Automation_Test_Architecture_By_Selenide

 SelenideよるDSL風E2Eテスト基盤開発の実例/Example_of_E2E_Automation_Test_Architecture_By_Selenide

2017年3月7日 Test Engineers Meetup #2
SelenideによるDSL風E2Eテスト基盤開発の実例

F51e113117352226a2583a1f24d4de6d?s=128

SHIMANE, Yoshikazu

March 07, 2017
Tweet

Transcript

  1. SelenideによるDSL風E2Eテスト基 盤開発の実例 アカウンティング・サース・ジャパン 島根 義和 @shimashima35  https://srad.jp/~shimashima

  2. はじめに • 社内で開発したWebDriver(Selenide)を使ったE2Eテスト基盤の実例を紹介します。 • 基本的にJavaが前提ですが、静的型付けのメリット以外は他言語でも利用可能で す。

  3. 注意 • 基本的にQiitaで公開した内容と同じです。 ◦ http://qiita.com/shimashima35/items/6d39be9a4fea05dcc84f

  4. Selenideとは? • JavaのSelenium WebDrvierラッパーライブラリ。 • http://selenide.org/ • WebDriverの実装を抽象化し、UI Testに特化したAPIを提供している。 •

    読みやすいAPI。 • IDEによるサポートを意識した作り。
  5. 基盤開発の目的 • 高い保守性 • 高い生産性 • 可能であれば仕様策定者が自分でテストをかけるようにする

  6. 階層化Page Object Pattern導入 • 一般的なPage Object Patternを拡張 ◦ BasePage ▪

    抽象クラス ▪ セレクタのみが記述される ▪ WebDriver/Selenide API依存 ▪ メソッドシグネチャにも Selenideの型が現れる ◦ Page ▪ 具象クラス ▪ 抽象化した画面操作 APIを提供する層 ▪ メソッドシグネチャは Java標準APIの型のみ
  7. 階層化Page Object Pattern導入 サンプル

  8. Selenium/Selenideの直接操作の排除 • テストシナリオでSelenium/Selenideの実装を隠蔽する。 ◦ シナリオの注力する ◦ 実装隠蔽による変更耐性向上 ◦ 特別なAPI学習の必要性を排除

  9. 全面的な日本語メソッド化 • 税務・会計・給与を対象しているため ◦ 一般的なWeb画面に比べて入力項目が多数 ◦ 似たような名前で且つ業務的に特殊な用語が使われることが多い ◦ 日本語化することで画面の項目とメソッド名とのギャップを埋める •

    非プログラマでもテストをかけるように ◦ 心理的障壁をさげる
  10. 全面的な日本語メソッド化 サンプル  

  11. 疑似Builder Patternによるデータ登録 • ユーザ登録などで入力項目が多数になる • シナリオで記述は大変 • 共通メソッド化を行うにしても引数が多い、また入力しなくても良い項目の存在 • Builder

    Patternを導入することでわかりやすくする
  12. 疑似Builder Patternによるデータ登録 サンプル

  13. Mix-inによる画面共通項目の一元化 • 画面単位の処理はPage Objectで対応 • 画面横断的な処理はどうするか? • Mix-inで対応 • Java8

    interface の default method で実現
  14. None
  15. Mix-inによる画面共通項目の一元化 サンプル

  16. 画面要素の細かいObject化 • 画面上の項目数が多い & コンテキスト(配置場所)違いで同じ名称が存在している • コンテキストをすべてClass化 (Page Objectのinner class)

    • コンテキストへのアクセスはメソッド経由
  17. None
  18. None
  19. 疑似的なDSLのために、戻り値をObject化 • Selenideのように、IDEの力を借りるため • 戻り値をObjectにすることでIDEの補完機能が使える

  20. デモ

  21. 終わりに • テスト自動化は大変ですが、様々な手法を使うことで苦労を軽減することができま す。 • IDEの力も、可能なかぎり借りましょう。 • 自動化はコストがかかるので、頼り過ぎには注意を。 • 目的をはっきりさせた上で使いましょう。

  22. ご静聴ありがとうございました