Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SelenideよるDSL風E2Eテスト基盤開発の実例 in Osaka /Example_o...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
SHIMANE, Yoshikazu
August 05, 2017
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SelenideよるDSL風E2Eテスト基盤開発の実例 in Osaka /Example_of_E2E_Automation_Test_Architecture_By_Selenide_in_Osaka
SHIMANE, Yoshikazu
August 05, 2017
More Decks by SHIMANE, Yoshikazu
See All by SHIMANE, Yoshikazu
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
1
980
ソフトウェア開発温故知新 古典で紐解く、ソフトウェア開発の課題 / Software_Development:Learning_from_the_Past
shimashima35
0
98
入り口から考えるソフトウェアテストエンジニアのキャリア / Thinking_About_a_Software_Test Engineer's_Career_from_the_Starting_Point
shimashima35
0
2k
テスト技法を使ったテストケースの表現方法/How to express test cases using test techniques
shimashima35
0
1.6k
VSTePのテスト観点出しで失敗した事例についての紹介/Failure case of test viewpoint derivation
shimashima35
0
930
組織横断部門におけるバグ数可視化の全社導入の事例/Example_of_company-wide_bug_number_visualization in_cross-organizational_departments
shimashima35
1
420
JaSST Tokyo実行委員のお仕事/Job of JaSST executive committee
shimashima35
0
1.1k
What is “Quality” ?
shimashima35
0
1.1k
品質"実質"無料キャンペーン始めます / Start_quality_real_free_campaign
shimashima35
2
5.9k
Other Decks in Technology
See All in Technology
日本AIベンチャーレポート2026
kentarofujii
0
230
AIで選択肢が広がった組織設計の理想と現実
konifar
12
4.8k
reInvent2026stby LT00 "Change your life!"
shinichirokawano
1
270
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
300
DevelopersIO2026 -バックアップは“消されないこと”が9割-
yoshida0129
0
400
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
230
CSS2026:OWS研究会・招待講演「世界観を、実装する」
atsush1_sada
2
330
正解のない研修に放り出されて / Being thrown into a training program with no right answers
ohnoeight
1
150
演劇と私とスクラム
chinmo
0
160
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
250
AWSDirectConnectの構築の進め方を整理してみた
masa_my
1
190
AWS Continuum for Penetration Testing に Deep Dive してみる
asanoharuki
1
1.3k
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
Exploring anti-patterns in Rails
aemeredith
4
540
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
940
Six Lessons from altMBA
skipperchong
29
4.5k
Tell your own story through comics
letsgokoyo
1
1.1k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
HDC tutorial
michielstock
2
980
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Transcript
SelenideによるDSL風E2Eテスト基 盤開発の実例 in Osaka 関西Javaエンジニアの会 8/5 - Selenium 島根 義和
@shimashima35 https://srad.jp/~shimashima
はじめに • 社内で開発したWebDriver(Selenide)を使ったE2Eテスト基盤の実例を紹介します。 • 基本的にJavaが前提ですが、静的型付けのメリット以外は他言語でも利用可能で す。
注意 • Test Engeneer MeetUp #2 の発表内容がベースになっています。 • 基本的にQiitaで公開した内容とほぼ同じです。 ◦
http://qiita.com/shimashima35/items/6d39be9a4fea05dcc84f
Selenideとは? • JavaのSelenium WebDrvierラッパーライブラリ。 • http://selenide.org/ • WebDriverの実装を抽象化し、UI Testに特化したAPIを提供している。 •
読みやすいAPI。 • IDEによるサポートを意識した作り。
基盤開発の目的 • 高い保守性 • 高い生産性 • 可能であれば仕様策定者が自分でテストをかけるようにする
階層化Page Object Pattern導入 • 一般的なPage Object Patternを拡張 ◦ BasePage ▪
抽象クラス ▪ セレクタのみが記述される ▪ WebDriver/Selenide API依存 ▪ メソッドシグネチャにも Selenideの型が現れる ◦ Page ▪ 具象クラス ▪ 抽象化した画面操作 APIを提供する層 ▪ メソッドシグネチャは Java標準APIの型のみ
階層化Page Object Pattern導入 サンプル
Selenium/Selenideの直接操作の排除 • テストシナリオでSelenium/Selenideの実装を隠蔽する。 ◦ シナリオの注力する ◦ 実装隠蔽による変更耐性向上 ◦ 特別なAPI学習の必要性を排除
全面的な日本語メソッド化 • 税務・会計・給与を対象しているため ◦ 一般的なWeb画面に比べて入力項目が多数 ◦ 似たような名前で且つ業務的に特殊な用語が使われることが多い ◦ 日本語化することで画面の項目とメソッド名とのギャップを埋める •
非プログラマでもテストをかけるように ◦ 心理的障壁をさげる
全面的な日本語メソッド化 サンプル
疑似Builder Patternによるデータ登録 • ユーザ登録などで入力項目が多数になる • シナリオで記述は大変 • 共通メソッド化を行うにしても引数が多い、また入力しなくても良い項目の存在 • Builder
Patternを導入することでわかりやすくする
疑似Builder Patternによるデータ登録 サンプル
Mix-inによる画面共通項目の一元化 • 画面単位の処理はPage Objectで対応 • 画面横断的な処理はどうするか? • Mix-inで対応 • Java8
interface の default method で実現
None
Mix-inによる画面共通項目の一元化 サンプル
画面要素の細かいObject化 • 画面上の項目数が多い & コンテキスト(配置場所)違いで同じ名称が存在している • コンテキストをすべてClass化 (Page Objectのinner class)
• コンテキストへのアクセスはメソッド経由
None
None
疑似的なDSLのために、戻り値をObject化 • Selenideのように、IDEの力を借りるため • 戻り値をObjectにすることでIDEの補完機能が使える
デモ
終わりに • テスト自動化は大変ですが、様々な手法を使うことで苦労を軽減することができま す。 • IDEの力も、可能なかぎり借りましょう。 • 自動化はコストがかかるので、頼り過ぎには注意を。 • 目的をはっきりさせた上で使いましょう。
最初の実装 • 開発直後からすべてできていたわけではない。 • 以下は最初から対応。 ◦ 階層化Page Object Pattern ◦
Selenium/Selenideの直接操作の排除 ◦ 全面的な日本語メソッド化 • 残りは途中で改良 • 設計方針が決まれば実装はさほど手間ではない。
録画機能の追加 • ローカルで成功するがCI環境で失敗することは結構ある。 ◦ 明示的なwaitを入れていても。 • ログだけでは原因追求が難しいため、操作を録画する機能を追加。 • 基本的にすべての操作を録画しておき、テスト成功時には削除する。 ◦
つまり、失敗時の動画のみのこる。 • H.264やmpeg2などでは数分で200MByte程度。(記憶) • 画面キャプチャ用のコーデックを使うことで1/100程度に削減。 ◦ TechSmith Screen Capture Codec ◦ 録画用ライブラリはMonte Media Library • BrowserStackなどを使っていれば実は不要。
基盤作成のその後… • 当初目標大幅未達! • 基盤は作ったもののシナリオ実装が進まず。 ◦ 現在担当者不在。 • 実行基盤をAWSに移行したが、その結果録画が機能せず。 ◦
ローカルのフレームバッファーがないためだと思う。 • 現在メンテされず絶賛放置中。 ◦ でもJenkinsで定期実行はされています。 • 私も半年以上Selenide触っていません。
ご静聴ありがとうございました