Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Selenideとは? ● JavaのSelenium WebDrvierラッパーライブラリ。 ● http://selenide.org/ ● WebDriverの実装を抽象化し、UI Testに特化したAPIを提供している。 ● 読みやすいAPI。 ● IDEによるサポートを意識した作り。

Slide 5

Slide 5 text

基盤開発の目的 ● 高い保守性 ● 高い生産性 ● 可能であれば仕様策定者が自分でテストをかけるようにする

Slide 6

Slide 6 text

階層化Page Object Pattern導入 ● 一般的なPage Object Patternを拡張 ○ BasePage ■ 抽象クラス ■ セレクタのみが記述される ■ WebDriver/Selenide API依存 ■ メソッドシグネチャにも Selenideの型が現れる ○ Page ■ 具象クラス ■ 抽象化した画面操作 APIを提供する層 ■ メソッドシグネチャは Java標準APIの型のみ

Slide 7

Slide 7 text

階層化Page Object Pattern導入 サンプル

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

全面的な日本語メソッド化 ● 税務・会計・給与を対象しているため ○ 一般的なWeb画面に比べて入力項目が多数 ○ 似たような名前で且つ業務的に特殊な用語が使われることが多い ○ 日本語化することで画面の項目とメソッド名とのギャップを埋める ● 非プログラマでもテストをかけるように ○ 心理的障壁をさげる

Slide 10

Slide 10 text

全面的な日本語メソッド化 サンプル  

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

疑似Builder Patternによるデータ登録 サンプル

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Mix-inによる画面共通項目の一元化 サンプル

Slide 16

Slide 16 text

画面要素の細かいObject化 ● 画面上の項目数が多い & コンテキスト(配置場所)違いで同じ名称が存在している ● コンテキストをすべてClass化 (Page Objectのinner class) ● コンテキストへのアクセスはメソッド経由

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

疑似的なDSLのために、戻り値をObject化 ● Selenideのように、IDEの力を借りるため ● 戻り値をObjectにすることでIDEの補完機能が使える

Slide 20

Slide 20 text

デモ

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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