Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Hiroyuki Ohnaka
PDF, PPTX
9,949 views
「GebとSpockではじめるシステムテスト自動化」
2017/12/10 システムテスト自動化カンファレンス2017-2 「GebとSpockではじめるシステムテスト自動化」
Software
◦
Read more
15
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 80
2
/ 80
3
/ 80
4
/ 80
5
/ 80
6
/ 80
7
/ 80
8
/ 80
9
/ 80
10
/ 80
11
/ 80
12
/ 80
13
/ 80
14
/ 80
15
/ 80
16
/ 80
17
/ 80
18
/ 80
19
/ 80
20
/ 80
21
/ 80
22
/ 80
23
/ 80
24
/ 80
25
/ 80
26
/ 80
27
/ 80
28
/ 80
29
/ 80
30
/ 80
31
/ 80
32
/ 80
33
/ 80
34
/ 80
35
/ 80
36
/ 80
37
/ 80
38
/ 80
39
/ 80
40
/ 80
41
/ 80
42
/ 80
43
/ 80
44
/ 80
45
/ 80
46
/ 80
47
/ 80
48
/ 80
49
/ 80
50
/ 80
51
/ 80
52
/ 80
53
/ 80
54
/ 80
55
/ 80
56
/ 80
57
/ 80
58
/ 80
59
/ 80
60
/ 80
61
/ 80
62
/ 80
63
/ 80
64
/ 80
65
/ 80
66
/ 80
67
/ 80
68
/ 80
69
/ 80
70
/ 80
71
/ 80
72
/ 80
73
/ 80
74
/ 80
75
/ 80
76
/ 80
77
/ 80
78
/ 80
79
/ 80
80
/ 80
More Related Content
PDF
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
by
terahide
PDF
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
by
SEGADevTech
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
by
Atsushi Nakamura
PDF
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
PPTX
クラシフィケーション・ツリー法入門
by
H Iseri
PDF
KPTのコツを掴め!! 公開用
by
ESM SEC
PDF
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
by
terahide
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
by
SEGADevTech
マイクロにしすぎた結果がこれだよ!
by
mosa siru
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
by
Atsushi Nakamura
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
クラシフィケーション・ツリー法入門
by
H Iseri
KPTのコツを掴め!! 公開用
by
ESM SEC
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
What's hot
PDF
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
by
Yoshiki Hayama
PDF
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
by
Mikito Yoshiya
PDF
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
PPTX
なぜコンピュータを学ばなければならないのか 21世紀の君主論
by
Tokoroten Nakayama
PDF
ドメイン駆動設計 基本を理解する
by
増田 亨
PPTX
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
by
Tokoroten Nakayama
PDF
なぜ「マイクロサービス“化”」が必要なのか
by
Yusuke Suzuki
PDF
例外設計における大罪
by
Takuto Wada
PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
by
Koichiro Matsuoka
PDF
アジャイル開発とメトリクス
by
Rakuten Group, Inc.
PDF
【Unity】 Behavior TreeでAIを作る
by
torisoup
PDF
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
by
KLab Inc. / Tech
PDF
アジャイルにモデリングは必要か
by
Hiromasa Oka
PDF
ドメイン駆動設計入門
by
増田 亨
PDF
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
PDF
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
PDF
実践的な設計って、なんだろう?
by
増田 亨
PPTX
アジャイルメトリクス実践ガイド
by
Hiroyuki Ito
PDF
アーキテクチャのレビューについて - JaSST Review '18
by
Yusuke Suzuki
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
by
Yoshiki Hayama
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
by
Mikito Yoshiya
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
なぜコンピュータを学ばなければならないのか 21世紀の君主論
by
Tokoroten Nakayama
ドメイン駆動設計 基本を理解する
by
増田 亨
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
by
Tokoroten Nakayama
なぜ「マイクロサービス“化”」が必要なのか
by
Yusuke Suzuki
例外設計における大罪
by
Takuto Wada
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
by
Koichiro Matsuoka
アジャイル開発とメトリクス
by
Rakuten Group, Inc.
【Unity】 Behavior TreeでAIを作る
by
torisoup
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
by
KLab Inc. / Tech
アジャイルにモデリングは必要か
by
Hiromasa Oka
ドメイン駆動設計入門
by
増田 亨
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
実践的な設計って、なんだろう?
by
増田 亨
アジャイルメトリクス実践ガイド
by
Hiroyuki Ito
アーキテクチャのレビューについて - JaSST Review '18
by
Yusuke Suzuki
Similar to 「GebとSpockではじめるシステムテスト自動化」
PDF
最近の単体テスト
by
Ken Morishita
PDF
脱・独自改造! GebでWebDriverをもっとシンプルに
by
Hiroko Tamagawa
PPTX
TDC20111031_Groovy_Geb
by
Nobuhiro Sue
KEY
Gws in fukuoka
by
Takuma Watabiki
PPTX
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
by
Nobuhiro Sue
PDF
#STAC2014 システムテスト自動化ハンズオン
by
kyon mm
PDF
JS開発におけるTDDと自動テストツール利用の勘所
by
Koji Nakamura
PPT
第5回勉強会
by
Mugen Fujii
PDF
Spock's world
by
Takuma Watabiki
PPT
Shibya.trac #2: TracとTestLinkの合わせ技
by
Toshiyuki Kawanishi
PDF
Akka Unit Testing
by
Masashi (Jangsa) Kawaguchi
最近の単体テスト
by
Ken Morishita
脱・独自改造! GebでWebDriverをもっとシンプルに
by
Hiroko Tamagawa
TDC20111031_Groovy_Geb
by
Nobuhiro Sue
Gws in fukuoka
by
Takuma Watabiki
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
by
Nobuhiro Sue
#STAC2014 システムテスト自動化ハンズオン
by
kyon mm
JS開発におけるTDDと自動テストツール利用の勘所
by
Koji Nakamura
第5回勉強会
by
Mugen Fujii
Spock's world
by
Takuma Watabiki
Shibya.trac #2: TracとTestLinkの合わせ技
by
Toshiyuki Kawanishi
Akka Unit Testing
by
Masashi (Jangsa) Kawaguchi
More from Hiroyuki Ohnaka
PDF
remote Docker over SSHが熱い
by
Hiroyuki Ohnaka
PDF
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
by
Hiroyuki Ohnaka
PDF
Mackerelではじめる お手軽サーバー監視
by
Hiroyuki Ohnaka
PDF
Azure functions+typescript
by
Hiroyuki Ohnaka
PDF
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
by
Hiroyuki Ohnaka
PDF
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
by
Hiroyuki Ohnaka
PDF
「WindowsデスクトップでWeb開発 改訂版」サンプル
by
Hiroyuki Ohnaka
PDF
Remote Development with Visual Studio Code & A clean dev env, working every ...
by
Hiroyuki Ohnaka
PDF
TDDはじめて物語 Second Season #tddbc
by
Hiroyuki Ohnaka
PDF
pact-jvmではじめるコンシューマー駆動契約
by
Hiroyuki Ohnaka
PDF
TDDはじめて物語Second Season(updated)
by
Hiroyuki Ohnaka
PDF
XP祭り2017 LT 「DevOps再考」(改題)
by
Hiroyuki Ohnaka
PDF
Microsoft DocsにContributeした話
by
Hiroyuki Ohnaka
PDF
JDK9の真の目玉機能はこれだ!
by
Hiroyuki Ohnaka
PDF
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
by
Hiroyuki Ohnaka
PDF
「すいーとみゅーじっく」のできるまで
by
Hiroyuki Ohnaka
PDF
Mackerelの薄い本
by
Hiroyuki Ohnaka
PDF
錬金術MeetUpへのお誘い
by
Hiroyuki Ohnaka
PDF
仮想通貨始めました~GethではじめるEthereum~
by
Hiroyuki Ohnaka
PDF
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
by
Hiroyuki Ohnaka
remote Docker over SSHが熱い
by
Hiroyuki Ohnaka
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
by
Hiroyuki Ohnaka
Mackerelではじめる お手軽サーバー監視
by
Hiroyuki Ohnaka
Azure functions+typescript
by
Hiroyuki Ohnaka
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
by
Hiroyuki Ohnaka
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
by
Hiroyuki Ohnaka
「WindowsデスクトップでWeb開発 改訂版」サンプル
by
Hiroyuki Ohnaka
Remote Development with Visual Studio Code & A clean dev env, working every ...
by
Hiroyuki Ohnaka
TDDはじめて物語 Second Season #tddbc
by
Hiroyuki Ohnaka
pact-jvmではじめるコンシューマー駆動契約
by
Hiroyuki Ohnaka
TDDはじめて物語Second Season(updated)
by
Hiroyuki Ohnaka
XP祭り2017 LT 「DevOps再考」(改題)
by
Hiroyuki Ohnaka
Microsoft DocsにContributeした話
by
Hiroyuki Ohnaka
JDK9の真の目玉機能はこれだ!
by
Hiroyuki Ohnaka
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
by
Hiroyuki Ohnaka
「すいーとみゅーじっく」のできるまで
by
Hiroyuki Ohnaka
Mackerelの薄い本
by
Hiroyuki Ohnaka
錬金術MeetUpへのお誘い
by
Hiroyuki Ohnaka
仮想通貨始めました~GethではじめるEthereum~
by
Hiroyuki Ohnaka
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
by
Hiroyuki Ohnaka
「GebとSpockではじめるシステムテスト自動化」
1.
Copyright 2017 Hiroyuki
Onaka #stac2017 GebとSpockではじめるシステム テスト自動化 2017/12/10 システムテスト自動化カンファレンス2017-2 大中浩行(@setoazusa) この作品は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。
2.
Copyright 2017 Hiroyuki
Onaka #stac2017 みなさまへのお願い • 講演の様子は撮影可です。 • シャッター音が出ないようにしてください。 • このスライドはslideshareで公開します • 感想はハッシュタグ #stac2017 まで
3.
Copyright 2017 Hiroyuki
Onaka #stac2017 アジェンダ(1) Groovyで書かれたWebDriver拡張であるGebと、 BDDスタイルのテスティングフレームワークで あるSpockによるシステムテストの自動化につ いて、その特徴をプロジェクトの採用を通じて 得られた知見を含めながら紹介します。
4.
Copyright 2017 Hiroyuki
Onaka #stac2017 アジェンダ(2) • テスト自動化ピラミッド • Gebによるシステムテスト自動化 • Gebの建前と本音 • まとめ
5.
Copyright 2017 Hiroyuki
Onaka #stac2017 わたしについて • TDD Boot Camp(TDDBC)方面 • SIerの傭兵部隊所属 • アプリケーションエンジニア(主にJava)とインフラエンジニアの二刀 流 • 自動デプロイとかBlue-Green Deploymentとかやってたらいつのまにかこう いうことになった • 技術系同人サークル「ふぃーるどのーつ」主宰 • 国会図書館で「TDDの発展史」とか「Geb Spock」とかで検索すると結果に出 てくる
6.
Copyright 2017 Hiroyuki
Onaka #stac2017 本スライドのサンプルコードは、 https://github.com/azusa/stac2017-geb で公開しています。
7.
Copyright 2017 Hiroyuki
Onaka #stac2017 テスト自動化 ピラミッド
8.
Copyright 2017 Hiroyuki
Onaka #stac2017 ...その前に 「システムテスト」とは?
9.
Copyright 2017 Hiroyuki
Onaka #stac2017 よくある分類 • 単体テスト • 結合テスト • システムテスト
10.
Copyright 2017 Hiroyuki
Onaka #stac2017 この言葉の呼び方って定義が拡散しますよね 「画面が関係するものは結合テストで扱いま す」 「単体テストではブラウザーから画面を叩いて、 デバッガーで挙動を確認します」
11.
Copyright 2017 Hiroyuki
Onaka #stac2017 新・アジャイルテストの四象限 Gregory, Janet, and Lisa Crispin. 「More Agile Testting Learining Journeys for the Whole Team.」
12.
Copyright 2017 Hiroyuki
Onaka #stac2017 Googleのテスト分類 「グーグルでは、形態よりも規模を協調するた めに、コード、統合、システムテストという区 別をせず、Sテスト、Mテスト、Lテストという 表現を使う」 James A. Whittaker,Jason Arbon,Jeff Carollo(著) 長尾高弘(訳) 「テストから見えてくるグーグルのソフトウェア開発 テストファーストによるエンジニアリング生産性向上」
13.
Copyright 2017 Hiroyuki
Onaka #stac2017 「テスト自動化ピラミッド」 Mike Cohn 「Suceeding with agile」
14.
Copyright 2017 Hiroyuki
Onaka #stac2017
15.
Copyright 2017 Hiroyuki
Onaka #stac2017 • テスト自動化のレイヤーを「UI」 「Service」「Unit」の3つに分類したもの。 • 「Service」に対するテストが、アプリケー ションのインターフェスに対するテストを、 UI(ユーザーインターフェース)を迂回して実 行することが特徴。
16.
Copyright 2017 Hiroyuki
Onaka #stac2017 ここで使う「システムテスト」 UI(ユーザーインターフェース)を通して、エン ドツーエンドでシステムの動作を確認する
17.
Copyright 2017 Hiroyuki
Onaka #stac2017 エンドツーエンドのつらさ • データのセットアップつらい… • 実行時間つらい… • コード何もいじってないのにテスト落ちた、 つらい…
18.
Copyright 2017 Hiroyuki
Onaka #stac2017 マイクロサービスアーキテクチャ Sam Newman(著) 佐藤直生(監訳) 「マイクロサービスアーキテクチャ」
19.
Copyright 2017 Hiroyuki
Onaka #stac2017 エンドツーエンドテストの難易度の増大。 • システム相互の疎結合化、分散化 • それに伴う非同期処理の増大 結局昔やってた「結合一発勝負」とかわらなく なってくる
20.
Copyright 2017 Hiroyuki
Onaka #stac2017 「ストーリーでなくジャーニーをテストする」 これに対抗する最善の方法は、少数の中核となるジャーニー に焦点を絞ってシステム全体をテストする方法です。この中 核となるジャーニーで対象になっていない機能は、互いに分 離してサービスを分析するテストで対処する必要があります。 このジャーニーは相互に合意され、共同で所有される必要が あります。音楽専門店の例では、CD の注文、商品の返品、 新規顧客の作成といった(高価値な対話であり極めて少数 の)動作に焦点を絞るでしょう。 Sam Newman(著) 佐藤直生(監訳) 「マイクロサービスアーキテクチャ」
21.
Copyright 2017 Hiroyuki
Onaka #stac2017 ところで、「ジャーニー」ってなによ 正直よくわからない おそらく重要なのは、テストの粒度ではなく 「相互に合意され、共同で所有される必要」の ほう
22.
Copyright 2017 Hiroyuki
Onaka #stac2017 相互に合意することが必要な理由 継続的に開発が進むサービスにおいて、「システムテス トの粒度を粗くする」ということは • プロダクトオーナー(企画)サイドがリスクをどこま で許容できるか • 監視アラートへの立ち上がりを迅速に出来るか という、ITサービス運用のリスク管理の視点と関係して くるため
23.
Copyright 2017 Hiroyuki
Onaka #stac2017 一つだけわかっていること システムテストを自動化することは、「ユー ザーストーリーをエンドツーエンドで網羅する 自動テストを作成する」ことではない また、「メンテナンス対象となるシステムが一 個増える」くらいの覚悟が必要
24.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebによるシス テムテスト自 動化
25.
Copyright 2017 Hiroyuki
Onaka #stac2017 Geb • GroovyによるSelenium WebDriver拡張 • http://gebish.org/ • ライセンス: Apache License Version 2.0
26.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebの特徴 • Groovy の言語機能を生かした簡潔な記述 • jQuery ライクなDOM へアクセスするための式言語 • ページオブジェクトのサポート • 任意のテスティングフレームワークと組み合わせて 使用(Spock/Junit/TestNG/Cucumeber-JVM)
27.
Copyright 2017 Hiroyuki
Onaka #stac2017 Spock • Groovyで動作するテスティングフレーム ワーク(BDDスタイル) • Groovyの特徴を生かしたテスト記述 • PowerAssert/データ駆動/DSLによるテストケー ス記述 etc • Spock信者
28.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebを採用した背景 • エンドツーエンドテストの自動化を検討した が、キャプチャーアンドリプレイだと以下の 理由で立ちゆかなくなるのが目に見えてた (2014年当時)
29.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebを採用した背景(1/3) キャプチャーアンドリプレイでは規模の拡大に ともない保守が苦しくなる
30.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebを採用した背景(2/3) アジャイル開発プロセスの導入に伴い、イテ レーションの進行につれてリグレッションテス トの工数が拡大していくのに備える必要があっ た
31.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebを採用した背景(3/3) シングルページアプリケーション (Backbone.js)導入に伴い、画面遷移が非同期 が基本になるため、キャプチャーアンドリプレ イでは画面遷移のところに個別にwaitを追加す る必要が出てくる
32.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebを採用したのは、自分の周囲にGroovyを やっている人が多かったから
33.
Copyright 2017 Hiroyuki
Onaka #stac2017 Spockを採用した背景 Geb+JUnitでプロトタイプ作成してチームメン バーに渡したらいつの間にかGeb+Spockになっ ていた (実話)
34.
Copyright 2017 Hiroyuki
Onaka #stac2017 ページオブジェクト public メソッドは、ページが提供するサービスを表す • ページの内部構造を露出しないようつとめる • 原則として(ページオブジェクト内で) アサーションを行わない • メソッドは他のページオブジェクトを返す • 一つのページ全体を(一つの) ページオブジェクトで表す必要は 無い • 同じ操作が異なる結果となる場合は、異なるメソッドとしてモ デル化する https://github.com/SeleniumHQ/selenium/wiki/PageObjects
35.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebによるページオブジェクト class GebishOrgHomePage extends Page { static at = { title == "Geb - Very Groovy Browser Automation" } static content = { manualsMenu { module(ManualsMenuModule) } } }
36.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebによるテスト(Spock+ページオブジェクト)
37.
Copyright 2017 Hiroyuki
Onaka #stac2017Gebによるテスト(JUnit+ページ オブジェクト未使用)
38.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebによるテストの組み合わせ • ページオブジェクト使う - 使わない • テスティングフレームワーク • Spock - JUnit - TestNG - Cucumber-JVM • Maven - Gradle
39.
Copyright 2017 Hiroyuki
Onaka #stac2017 テストのスタイルについてどう選択をするか 結論は、 ページオブジェクト+Spock+Gradle 一択
40.
Copyright 2017 Hiroyuki
Onaka #stac2017 なぜページオブジェクトなのか 各ページのDOM要素にid属性を付けて要素の特 定に使う、という技法がSelenium WebDriver のテストにはあります。
41.
Copyright 2017 Hiroyuki
Onaka #stac2017htmlの要素にテストのためのid属性を つけることの問題 • SPA(シングルページアプリケーション)だとス コープがアプリケーション全体になる • アプリケーションからの動的なDOM生成が増え ると、idやclass属性を通してアプリケーション のロジックとテストが密結合してしまう 「フロントエンドをリファクタリングしたらエンドツー エンドのテストが全滅」とか...
42.
Copyright 2017 Hiroyuki
Onaka #stac2017「idやclassを使ってテストを書くのは、 もはやアンチパターンである」 https://qiita.com/akameco/items/519f7e4d5442b2a9d2da
43.
Copyright 2017 Hiroyuki
Onaka #stac2017 現実的な最適解 • セレクターでDOM要素への指定を記述して、 ページオブジェクトでそれをラップする。 • Gebの場合はjQueryライクなセレクターを使用可能 • テストからはページオブジェクト経由でアクセ スすることで、DOMの要素を隠蔽し、htmlの構 造がかわったときの影響範囲を限定する
44.
Copyright 2017 Hiroyuki
Onaka #stac2017 GebによるテストでSpockを選択する理由 Gebによるテスト記述はストーリーベースの記 述となるため、BDDスタイルのSpockでの記述 が向いている。 後パラメーター駆動のテストもやりやすい
45.
Copyright 2017 Hiroyuki
Onaka #stac2017 もう一つのSpockを選択する理由:spock-reports
46.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gradleを選択する理由 ビルドに関するワークフローが単純なものには Mavenが向いているが、
47.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebによるテストには、スクリプトとしての細かい 制御が求められる • クロスブラウザー • テスト環境の切替 • テストスイートの管理など よってGradle
48.
Copyright 2017 Hiroyuki
Onaka #stac2017 Gebの建前と本 音
49.
Copyright 2017 Hiroyuki
Onaka #stac2017 • 非同期処理 • スクリーンショット • クロスブラウザー • GebとGroovy
50.
Copyright 2017 Hiroyuki
Onaka #stac2017 非同期処理(建前) Geb では非同期処理の記述を行うには、要素の出現 判定する処理のブロックをwaitFor{ 条件}で囲みま す。 タイムアウトまでの時間は、GebConfig.groovy の waiting ブロックのクロージャーでtimeout プロパ ティーを設定します。
51.
Copyright 2017 Hiroyuki
Onaka #stac2017 非同期処理(本音) DOMの出現でいくらWaitかけたってサーバー側 の非同期処理はWaitのしようがない 不安定なGebのシナリオのかなりの割合が、 サーバー側の非同期処理に対するWaitが適切で ないことによります
52.
Copyright 2017 Hiroyuki
Onaka #stac2017 サーバー側の非同期処理 データ連携などの非同期処理の結果を参照でき るAPIを用意するなど、アーキテクチャーで手 当をすべきです。 それがないと、データベースをポーリングして データが反映されるのを待つとか、sleepの秒数 で調節するとか、つらいことになります。
53.
Copyright 2017 Hiroyuki
Onaka #stac2017 スクリーンショット(建前) • geb.spock.GebReportingSpec を継承する ことで、テストの実行時に自動でスクリーン ショットを取得することができます。
54.
Copyright 2017 Hiroyuki
Onaka #stac2017 スクリーンショット(本音) • トーストの消える消えない等のアニメーショ ンの動きを、スクリーンショットを見てわか るには超能力が必要 • SPAにおける、アプリケーションのハング アップもまた爾り
55.
Copyright 2017 Hiroyuki
Onaka #stac2017 画面を録画するソリューション • BrowserStackとかSauce Labsとか • 画面を録画する用途にしては大げさすぎやし ませんか?
56.
Copyright 2017 Hiroyuki
Onaka #stac2017というわけで、OSSだけで画面録画を目指してみ ましょう 用意するもの • Ubuntu(17.10) • ブラウザー(Firefox) • Xvfb • tmux • FFmpeg
57.
Copyright 2017 Hiroyuki
Onaka #stac2017 Xvfb :1 -screen 0 1920x1200x24 -ac & tmux new-session -d -s Recording1 'ffmpeg -y -f x11grab -video_size 1920x1200 -i :1 -codec:v libx264 -r 12 -ab 128k /vagrant/out4.mp4' export DISPLAY=:1 ./gradlew test -Pbrowser=firefox tmux send-keys -t Recording1 q
58.
Copyright 2017 Hiroyuki
Onaka #stac2017 やっていること • Xvfbで起動した仮想デスクトップをFFmpegで キャプチャー • Gradleによるテストを、仮想デスクトップ上で 実行 • FFmpegは終了するのに「q」のキーシーケンス を送る必要があるので、tmuxのセッション上で 起動
59.
Copyright 2017 Hiroyuki
Onaka #stac2017 詳しくはブログで http://blog.fieldnotes.jp/entry/recordiing- selenium-test
60.
Copyright 2017 Hiroyuki
Onaka #stac2017 クロスブラウザー(建前) GebConfig.groovy 内のdriver という変数に • WebDriver の実装クラス名を指す文字列 • WebDriver のインスタンスを返すクロージャー を示すことで、使用するブラウザーを切り替え ることができます。
61.
Copyright 2017 Hiroyuki
Onaka #stac2017 クロスブラウザー(本音) • 1ブラウザーでも不安定なテスト安定させる の大変なのにクロスブラウザーとか正直やっ てられない • 大体ここでやりたいことはユーザーインター フェースの単体テストではない
62.
Copyright 2017 Hiroyuki
Onaka #stac2017 それでもクロスブラウザーをやるというなら Geb では、実行時にシステムプロパティー geb.env を設定することにより、設定ファイル (GebConfig.groovy) のenvironmentsブロック で設定値の切り替えを行うことができます。 Gebの公式サンプルでは、この機能を使ってブ ラウザーの切替を行っています。 geb/geb-example.gradle https://github.com/geb/geb-example-gradle
63.
Copyright 2017 Hiroyuki
Onaka #stac2017 ですが ブラウザーの切り替えにgeb.envを使うと、対 象の環境(開発環境とかステージング環境とか) の切替をどこに持たせるかという問題がおきま す。 またGebの公式サンプルでは、IDEからの実行 を考慮していないという問題
64.
Copyright 2017 Hiroyuki
Onaka #stac2017 そうすると、起動時にフラグでブラウザーを指 定して、GebConfig.groovyの中で切替やセッ トアップをすることになるわけですが...
65.
Copyright 2017 Hiroyuki
Onaka #stac2017 画像はイメージです(1)
66.
Copyright 2017 Hiroyuki
Onaka #stac2017 画像はイメージです(2)
67.
Copyright 2017 Hiroyuki
Onaka #stac2017 このやり方はちとつらい というわけで今回紹介するのが、 ブラウザーごとにWebDriverのセットアップを 自動でやってくれるWebDriverManager (https://github.com/bonigarcia/webdriverm anager) です。
68.
Copyright 2017 Hiroyuki
Onaka #stac2017 先ほどのコードがこうなります
69.
Copyright 2017 Hiroyuki
Onaka #stac2017 GebとGroovy(建前) Geb は、Groovy の言語機能を生かした簡潔な 記述でテストを書くことができます。
70.
Copyright 2017 Hiroyuki
Onaka #stac2017 GebとGroovy(本音) IDEの補完効かない
71.
Copyright 2017 Hiroyuki
Onaka #stac2017 それに対する解: Intellij IDEA
72.
Copyright 2017 Hiroyuki
Onaka #stac2017 まとめ
73.
Copyright 2017 Hiroyuki
Onaka #stac2017 システムテストを自動化するということ システムテストを自動化するということは、 「メンテナンスするシステムが1個増える」 くらいに考えたほうがいい
74.
Copyright 2017 Hiroyuki
Onaka #stac2017 それでもなぜ自動化するのか • 自動化のゴールをコスト削減に向けると、全 体として縮小均衡にしかならない • 私は「テスト自動化によってテスト要員を○名削 減できました」という仕事がしたいわけではない
75.
Copyright 2017 Hiroyuki
Onaka #stac2017 自動化によって「何を減らせるか」ではなく、 自動化によって「新しいことが出来るようにな る」、ということに目を向けるべき
76.
Copyright 2017 Hiroyuki
Onaka #stac2017「システムテストを自動化する」ことに よって新しくできることになることは? その前に、一個エピソードを紹介したいと思い ます。
77.
Copyright 2017 Hiroyuki
Onaka #stac2017 大手通信会社の法人向けサービスの事例 開発チームがGebで作成したエンドツーエンド のテストを、Javaのバージョンアップや、 Blue-Green Deployment導入に伴うインフラ 更改の際の動作確認として使用した、という事 例。
78.
Copyright 2017 Hiroyuki
Onaka #stac2017 システムテストが自動化されていたことにより、 インフラがサービス水準の改善のために積極的 にインフラの構成に手をいれることができるよ うになった、ということ。
79.
Copyright 2017 Hiroyuki
Onaka #stac2017「システムテストを自動化する」ことに よって新しくできることになることは? 複数の異なる粒度のテストのレイヤーが自動化 されて組み合わさることにより、 • 継続的なサービスな改善に対応できるテスト 工程が構築されること。 • 手動テストが、「魅力的品質」寄りのテスト に注力できるようになること。
80.
Copyright 2017 Hiroyuki
Onaka #stac2017 ありがとうございました! • 大中浩行(Onaka,Hiroyuki) • @setoazusa • グロースエクスパートナーズ株式会社 アーキテクチャソリューション部 テクニカルリード • http://hiroyuki.fieldnotes.jp/
Download