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
terahide
4,609 views
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
Spring Fest 2019 株式会社ビッグツリーテクノロジ&コンサルティング 寺島秀樹 としての発表資料です
Engineering
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Downloaded 12 times
1
/ 50
2
/ 50
3
/ 50
4
/ 50
5
/ 50
6
/ 50
7
/ 50
8
/ 50
9
/ 50
10
/ 50
11
/ 50
12
/ 50
13
/ 50
14
/ 50
15
/ 50
16
/ 50
17
/ 50
18
/ 50
19
/ 50
20
/ 50
21
/ 50
22
/ 50
23
/ 50
24
/ 50
25
/ 50
26
/ 50
27
/ 50
28
/ 50
29
/ 50
30
/ 50
31
/ 50
32
/ 50
33
/ 50
34
/ 50
35
/ 50
36
/ 50
37
/ 50
38
/ 50
39
/ 50
40
/ 50
41
/ 50
42
/ 50
43
/ 50
44
/ 50
45
/ 50
46
/ 50
47
/ 50
48
/ 50
49
/ 50
50
/ 50
More Related Content
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PDF
日本語テストメソッドについて
by
kumake
PDF
What's new in Spring Batch 5
by
ikeyat
PDF
Spring 5でSpring Testのここが変わる_公開版
by
Yuichi Hasegawa
PDF
これからのJDK/JVM 何を選ぶ?どう選ぶ?
by
Takahiro YAMADA
PDF
今さらだけどMySQLとライセンス
by
Hidenori Ishii
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
PDF
Osc2015北海道 札幌my sql勉強会_波多野_r3
by
Nobuhiro Hatano
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
日本語テストメソッドについて
by
kumake
What's new in Spring Batch 5
by
ikeyat
Spring 5でSpring Testのここが変わる_公開版
by
Yuichi Hasegawa
これからのJDK/JVM 何を選ぶ?どう選ぶ?
by
Takahiro YAMADA
今さらだけどMySQLとライセンス
by
Hidenori Ishii
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
Osc2015北海道 札幌my sql勉強会_波多野_r3
by
Nobuhiro Hatano
What's hot
PDF
AbemaTVのアーキテクチャの変遷 / AbemaTV DevCon 2018 TrackA Session A2
by
AbemaTV, Inc.
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
by
NTT DATA Technology & Innovation
PDF
日本OpenStackユーザ会 第37回勉強会
by
Yushiro Furukawa
PDF
診断ツールの使い方(Owasp zapの場合)
by
shingo inafuku
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
by
NTT DATA Technology & Innovation
PDF
いまさら聞けないPostgreSQL運用管理
by
Uptime Technologies LLC (JP)
PDF
TDD のこころ @ OSH2014
by
Takuto Wada
PPTX
「おうちクラウド」が今熱い!
by
Hirotaka Sato
PDF
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
by
シスコシステムズ合同会社
PPT
Cassandraのしくみ データの読み書き編
by
Yuki Morishita
PPTX
MVVM入門
by
Kazutoshi Urabe
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
by
Toru Makabe
PDF
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
by
Yoshitaka Kawashima
PPTX
「電子立国日本の自叙伝」に見る半導体産業温故知新
by
Junichi Akita
PDF
Kotlinアンチパターン
by
Recruit Lifestyle Co., Ltd.
PDF
UXプロトタイピング論 ー プロトタイプとデザイン思考
by
Tarumoto Tetsuya
PDF
45分で理解する SQL Serverでできることできないこと
by
Insight Technology, Inc.
PDF
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
by
Yahoo!デベロッパーネットワーク
KEY
やはりお前らのMVCは間違っている
by
Koichi Tanaka
PPTX
テストの組み立て方
by
kauji0522
AbemaTVのアーキテクチャの変遷 / AbemaTV DevCon 2018 TrackA Session A2
by
AbemaTV, Inc.
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
by
NTT DATA Technology & Innovation
日本OpenStackユーザ会 第37回勉強会
by
Yushiro Furukawa
診断ツールの使い方(Owasp zapの場合)
by
shingo inafuku
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
by
NTT DATA Technology & Innovation
いまさら聞けないPostgreSQL運用管理
by
Uptime Technologies LLC (JP)
TDD のこころ @ OSH2014
by
Takuto Wada
「おうちクラウド」が今熱い!
by
Hirotaka Sato
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
by
シスコシステムズ合同会社
Cassandraのしくみ データの読み書き編
by
Yuki Morishita
MVVM入門
by
Kazutoshi Urabe
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
by
Toru Makabe
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
by
Yoshitaka Kawashima
「電子立国日本の自叙伝」に見る半導体産業温故知新
by
Junichi Akita
Kotlinアンチパターン
by
Recruit Lifestyle Co., Ltd.
UXプロトタイピング論 ー プロトタイプとデザイン思考
by
Tarumoto Tetsuya
45分で理解する SQL Serverでできることできないこと
by
Insight Technology, Inc.
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
by
Yahoo!デベロッパーネットワーク
やはりお前らのMVCは間違っている
by
Koichi Tanaka
テストの組み立て方
by
kauji0522
Similar to 受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
PDF
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
by
Tomoharu ASAMI
PDF
ワンクリックデプロイ101 #ocdeploy
by
Ryutaro YOSHIBA
PDF
継続的8章
by
shinjiyoshida
PDF
Springのプログラムモデルと動く仕様~テスト編~
by
terahide
PDF
SeasarCon 2009 White TDD
by
Takuto Wada
PPTX
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
by
Hideki Sugimoto
KEY
テストとの上手な付き合い方
by
Akira Suenami
PDF
Agileツール適合化分科会(tddとbdd)
by
masanori kataoka
PDF
テスト駆動開発の進化
by
Yukei Wachi
PDF
テストファースト、自動テストを導入するという事について(@社内勉強会)
by
kyon mm
PDF
ケーススタディ/テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第47回】
by
Tomoharu ASAMI
PDF
java-ja TDD 2nd
by
Takuto Wada
PDF
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
by
Tomomi Kajita
PDF
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
by
Tomoharu ASAMI
KEY
テスト初心者Androiderのためのソフトウェアテスト入門
by
Satoshi Watanabe
PDF
Spring 5 でSpring Test のここが変わる
by
apkiban
PDF
Hey It's Not My TDD!
by
Yasui Tsutomu
PPTX
事例からわかる!テスト自動化導入パターン
by
友隆 浅黄
PDF
SGT2013 技術トークス「アジャイルテスティング」
by
yasuohosotani
PDF
ITS fidel
by
Fidel Softech P. Ltd
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
by
Tomoharu ASAMI
ワンクリックデプロイ101 #ocdeploy
by
Ryutaro YOSHIBA
継続的8章
by
shinjiyoshida
Springのプログラムモデルと動く仕様~テスト編~
by
terahide
SeasarCon 2009 White TDD
by
Takuto Wada
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
by
Hideki Sugimoto
テストとの上手な付き合い方
by
Akira Suenami
Agileツール適合化分科会(tddとbdd)
by
masanori kataoka
テスト駆動開発の進化
by
Yukei Wachi
テストファースト、自動テストを導入するという事について(@社内勉強会)
by
kyon mm
ケーススタディ/テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第47回】
by
Tomoharu ASAMI
java-ja TDD 2nd
by
Takuto Wada
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
by
Tomomi Kajita
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
by
Tomoharu ASAMI
テスト初心者Androiderのためのソフトウェアテスト入門
by
Satoshi Watanabe
Spring 5 でSpring Test のここが変わる
by
apkiban
Hey It's Not My TDD!
by
Yasui Tsutomu
事例からわかる!テスト自動化導入パターン
by
友隆 浅黄
SGT2013 技術トークス「アジャイルテスティング」
by
yasuohosotani
ITS fidel
by
Fidel Softech P. Ltd
More from terahide
PDF
オレオレになりがちなテスト計画を見直した話
by
terahide
PDF
和服を普段着にするようになって気づいたアジャイルの心
by
terahide
PDF
Management3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったこと
by
terahide
PDF
一番アジャイルな料理人はソーマくんだと思うんだ
by
terahide
PDF
Att
by
terahide
PDF
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~
by
terahide
PPTX
Spring bootで学ぶ初めてのwebアプリ開発
by
terahide
PDF
明日に繋がるふり返りのプラクティス
by
terahide
PDF
ふりかえり
by
terahide
PDF
データモデルは時空を越える
by
terahide
PDF
ももたろう
by
terahide
PDF
Vbaでもtdd
by
terahide
PDF
Sierのアジャイルとジレンマとパラダイムシフト
by
terahide
PDF
脱Java初心者を目指すときに読むといいと思う本を考える会
by
terahide
PDF
再入門!RESTとSpringMVC
by
terahide
PDF
SGT2014 横浜道場 始めよう!インセプションデッキ
by
terahide
PPT
Tdd keyword
by
terahide
PDF
ゆるぎー
by
terahide
PDF
マシュマロチャレンジ
by
terahide
PDF
システム設計の謎 ~べ、別にあんたのために設計してるんじゃないんだからね///~
by
terahide
オレオレになりがちなテスト計画を見直した話
by
terahide
和服を普段着にするようになって気づいたアジャイルの心
by
terahide
Management3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったこと
by
terahide
一番アジャイルな料理人はソーマくんだと思うんだ
by
terahide
Att
by
terahide
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~
by
terahide
Spring bootで学ぶ初めてのwebアプリ開発
by
terahide
明日に繋がるふり返りのプラクティス
by
terahide
ふりかえり
by
terahide
データモデルは時空を越える
by
terahide
ももたろう
by
terahide
Vbaでもtdd
by
terahide
Sierのアジャイルとジレンマとパラダイムシフト
by
terahide
脱Java初心者を目指すときに読むといいと思う本を考える会
by
terahide
再入門!RESTとSpringMVC
by
terahide
SGT2014 横浜道場 始めよう!インセプションデッキ
by
terahide
Tdd keyword
by
terahide
ゆるぎー
by
terahide
マシュマロチャレンジ
by
terahide
システム設計の謎 ~べ、別にあんたのために設計してるんじゃないんだからね///~
by
terahide
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
1.
東京オフィス(本社) 〒106-0041 東京都港区麻布台2-3-5 ノアビル3F Tel.
03-5114-6171(代表) ベトナム開発センター 15F Ladeco Building, No.266, Doi Can Street, Ba Dinh District, Hanoi Vietnam 札幌オフィス 〒060-0001 北海道札幌市中央区北一条西3-3 敷島プラザビル4F Tel. 011-206-1914 シリコンバレーオフィス 3350 Scott Blvd. #29 Santa Clara, CA 95054 受託開発で テストファーストしたら XXXを早期発見できて ハイアジリティになったはなし #jsug #sf_8C 2019年12月18日 寺島 秀樹
2.
2Copyright © 2019
BTC Corporation All Rights Reserved. このラーメンは美味しいか?
3.
3Copyright © 2019
BTC Corporation All Rights Reserved. 迅速な意思決定と契約 • ITサービスがビジネスの中心 • 競合との差別化のため経営は意思決定の迅速化が求められる • ITサービス開発におけるアジリティは意思決定に大きく影響 • 日本のソフトウェア産業における構造 – 請負契約 62.1% – 準委任契約 27.6% – 自社開発 10.3% • ※「ユーザ企業ソフトウェアメトリクス調査2018」 P27 図表NE2-6-1-1 開発体制 より 請負契約・受託開発は意思決定に十分迅速?
4.
4Copyright © 2019
BTC Corporation All Rights Reserved. 品質と納期の遅れ • 全体の品質の評価 – 欠陥は少なく稼働後も安定 55.4% – 欠陥の発生は想定内に収まり稼働後もほぼほぼ安定 32.1% – 欠陥が多数発生し対応に追われた 7.1% – 欠陥が多く発生し混乱が発生した 3.6% – 欠陥が多く発生し大きな混乱が発生した 1.8% • ※「ユーザ企業ソフトウェアメトリクス調査2018」 P32 図表NE3-1-1 全体の品質 評価 より • 全体の納期の評価 – 計画より早く稼働 1.8% – 計画通り稼働 76.4% – 少し遅れたが大きな問題はなかった 14.5% – 納期が大きく遅れ要員を多く投入した 1.8% – 納期が大幅に遅れプロジェクトの見直しを余儀なくされた 5.5% • ※「ユーザ企業ソフトウェアメトリクス調査2018」 P32 図表NE3-1-2 全体の納期 評価 より 87.5%が品質は安定。 21.8%に納期の遅れ
5.
5Copyright © 2019
BTC Corporation All Rights Reserved. 会社概要 社名 株式会社ビッグツリーテクノロジー&コンサルティング (BTC Corporation) 設立 2002年2月7日 所在地 〒106-0041 東京都港区麻布台2-3-5 ノアビル3階 代表取締役社長 杉山 健 社員数 264名(連結、2019年4月1日時点。内、ベトナムオフィス22名) 売上高 40億6900万円(2018年11月決算) 事業内容 システム開発およびコンサルティング デジタルマーケティング領域におけるコンサルティングと制作 RPA・クラウドなど最新技術の提供サービス
6.
6Copyright © 2019
BTC Corporation All Rights Reserved. 拠点 東京を中心に札幌・ベトナムに開発拠点を、シリコンバレーに研究拠点を有しております
7.
7Copyright © 2019
BTC Corporation All Rights Reserved. 提供サービス SI・デジタル・RPAを組み合わせ、デジタルトランスフォーメーション(DX)時代において、お客様のビジ ネスを総合的に支援いたします • お客様満足度の向上・売上向 上を目的とする「攻めのIT」では、 経営戦略に則したシステムを瞬 時に構築することが重要です • BTCは、単に「システムを作る」の ではなく、いかに課題を解決する かに主眼を置き、変化に柔軟な システムをスピーディに構築し、お 客様のビジネスを成功へ導きます • 成長し続けるインターネット業界 の中で、デジタルマーケティング戦 略の立案・構築・最適化を行い ます • BTCでは、主にユーザー体験、テ クノロジー活用、データ解析の3つ の観点を中心に、ウェブサイト、 メール、ソーシャルメディア等、 様々なデジタルチャネルの最適化 を支援します • RPAとは”Robotics Process Automation”の略で、PC上で 行われるさまざまな事務処理をソ フトウェアロボットに代行させること で、ホワイトカラーのさまざまな業 務を自動化させる仕組みです • BTCは企業のさらなる業務効率 向上を支援するために、RPAのイ ンテグレーションをトータルでサポー トします SI事業 デジタル事業 RPA事業 デジタルマーケティング支援ITコンサルティング・システム開発 RPAコンサルティング
8.
8Copyright © 2019
BTC Corporation All Rights Reserved. Profile • 株式会社ビッグツリーテクノロジ&コンサルティング – DX事業部 シニアアーキテクト • CSP-SM/CSP-PO • Java/Spring/Groovy/Spock/Geb/Sitimi • 酒/アニメ/ラーメン • テスト駆動飲み会 – https://tddrinking.connpass.com/ 寺島 秀樹 @terahide27
9.
9Copyright © 2019
BTC Corporation All Rights Reserved. 今からする話 • Project A – 某機材製造メーカー – 統計をもとにした予約サービス – チーム構成:7人(うちベトナムと社内オフショア3人) – Spring Bootを使ったAPIを製造 – Spring Bootを使ったWebサービス(前述のAPIをサーバ サイドで使用) • Project B – 某薬局チェーン – 店舗統制サービス – チーム構成:2人 – Spring Bootを使ったAPIを製造 – ReactによるSPA ここ数年で行ったプロジェクト • Project C – 某公共図書館 – 蔵書管理サービス – チーム構成:7人 – Spring Bootを使ったAPIを製造 – C# .NET によるGUI
10.
10Copyright © 2019
BTC Corporation All Rights Reserved. 早期発見
11.
11Copyright © 2019
BTC Corporation All Rights Reserved. いつ気が付く? 課題に気が付く (遅すぎる)
12.
12Copyright © 2019
BTC Corporation All Rights Reserved. いつ気が付く? Sequential Process Iterative Process 課題に気が付く (十分早い) 課題に気が付く (遅すぎる)
13.
13Copyright © 2019
BTC Corporation All Rights Reserved. 早期発見
14.
14Copyright © 2019
BTC Corporation All Rights Reserved. TDD - テスト駆動開発 1イテレーションの中で 課題に気が付く (遅すぎる)
15.
15Copyright © 2019
BTC Corporation All Rights Reserved. TDD - Test Driven Development • まずレッドになる(失敗する)自動テストを書く • 一番早い方法でグリーンにする(成功させる) • リファクタする • 以上を繰り返えし目標に向かう テスト駆動開発のサイクル Red Green Refactor
16.
16Copyright © 2019
BTC Corporation All Rights Reserved. 2つのサイクル イテレーション TDD 実装・設計における テストファースト
17.
17Copyright © 2019
BTC Corporation All Rights Reserved. 振舞駆動開発 - Behavior Driven Development(BDD) • “振舞駆動開発とは、ソフトウェアの相互作用に着目し、ソフトウェアがどのように振る舞う(動作 する)かを定義することを起点とした開発手法” – 「JUnit実践入門」より • 振る舞いはシナリオで定義する。これをスペック(テスト仕様)と呼ぶ • テストファーストであるかどうかより、スペックを自然言語で表現できるかを重要視する テスト仕様の語彙 JUnit実践入門 ISBN978-4-7741-5377-3 従来の3A Pattern(Arrange/Action/Assert) BDD ( GWT:Given/When/Then ) //JUnit4 with Groovy @Test void ”電卓を起動して9+9を計算すると結果は18であるべき”(){ def sut = new Calc() def actual = sut.add(9,9) assert actual == 18 } //Spock with Groovy def ”単純な足し算のシナリオ”(){ given: ”電卓を起動” def sut = new Calc() when: ” 9+9を計算する” def actual = sut.add(9,9) then: ”結果は18であるべき” actual == 18 }
18.
18Copyright © 2019
BTC Corporation All Rights Reserved. 仕様の明確度と遅延の関係 • 要求仕様の明確度と後期遅延度(予定より早い+予定通 り) – 非常に明確 76.2% – かなり明確 77.8% – ややあいまい 67.1% – 非常にあいまい 55.8% • ※「ユーザ企業ソフトウェアメトリクス調査2018」 P59 図表NE6-5-36 要求仕様の明確度と後期遅延度より 要求仕様が明確でないと遅延が大きくなる傾向
19.
19Copyright © 2019
BTC Corporation All Rights Reserved. 仕様の明確度と満足度の関係 • 仕様明確度別のプロジェクト全体満足の割合 – ※「ユーザ企業ソフトウェアメトリクス調査2018」 P60 図表NE6-5-40 仕様明確度別のプロジェクト全 体満足の割合 より 仕様が明確でないとプロジェクト全体の満足度が下がる傾向 87.7 76.4 51.8 37.2 0 10 20 30 40 50 60 70 80 90 100 非常に明確 かなり明確 ややあいまい 非常にあいまい
20.
20Copyright © 2019
BTC Corporation All Rights Reserved. 仕様はどこに書く? ドキュメントに記載した場合 • 動くプログラムは修正されたが、ドキュメントは後回しにされたり、修正されなかったりする • 結果、ドキュメントと実装が乖離していく 自動テストに記載した場合 • 自動テストに仕様を記載した場合、動くプログラムと同時に自動テストが修正され続ける – 自動テストが陳腐化しないための心の強さは前提(CIでグリーンを保ち続けるなど) • 現在動いているプログラムに対して、自動テストが成功することでその仕様が実装されていることが 検証できる • 結果、記載された仕様と実装の乖離は少ない よくある話: 実装とドキュメントの乖離
21.
21Copyright © 2019
BTC Corporation All Rights Reserved. 早期発見
22.
22Copyright © 2019
BTC Corporation All Rights Reserved. 2つのサイクル ATDD TDD・BDD イテレーションにおける テストファースト 実装・設計における テストファースト ※ATDD: Acceptance Test Driven Development
23.
23Copyright © 2019
BTC Corporation All Rights Reserved. 受入テスト駆動開発 - Acceptance Test Driven Development (ATDD) • ATDDは受入テスト仕様を用いたBDD • 受入テストレベルで行うテストのユーザがアプリケーション・サービスに行う操作をシナリオ化 • シナリオをBDDの語彙で自動テストに記載する • イテレーションの計画時に受入テストの仕様を確認しイテレーションの中で自動化 受入テストのテストファースト • トップページでキーワードで簡易検索を行うと一覧ページに遷移する • 一覧ページでタイトルリンクをクリックすると、対象の書誌の書誌詳細画面に遷移する • 書誌詳細ページで関連資料を表示をクリックすると関連資料が表示される • さらに閉じるボタンをクリックすると関連資料が非表示になる ・・・ ①イテレーション計画で テスト仕様を確認 ②イテレーション中に BDDで自動化
24.
24Copyright © 2019
BTC Corporation All Rights Reserved. テストのピラミッド 「初めての自動テスト」より 初めての自動テスト ISBN978-4-87311-816-1 UI 統合 ユニット メソッドレベルの小さなテスト 複数の層を一つにつなげるテスト全般 アプリケーションをエンドユーザーが操作するのと 同じようにテストするスクリプト サービス
25.
25Copyright © 2019
BTC Corporation All Rights Reserved. アプリケーションの構造 弊社の典型的なアプリケーションの構造 初めての自動テスト ISBN978-4-87311-816-1 A. Server Side Rendering B. SPA + API C. GUI + API HTML JSON/XML/etc. JSON/XML/etc.
26.
26Copyright © 2019
BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock ATDDに取り組み始めたら、あまりやらなくなった
27.
27Copyright © 2019
BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
28.
28Copyright © 2019
BTC Corporation All Rights Reserved. 皮下テスト(Subcutaneous Test) • “皮下テストは、アプリケーションのUIのすぐ下で 動作するテストを意味します” – martinFowler.comより (Google翻訳) • Spring Boot でAPIを実装することが多い • SpringTest(MockMVC)とSpockを使って APIのテストを行っている • テスト対象が「外部サービスを使う」などのスタブ 化は考えるが、サービスや永続化のレイヤをスタ ブにすることはしないことが多い • HTMLを返す場合は(皮下テストではないが) このテストはほぼ書かない Spock + Spring Test @SpringBootTest @Transactional class ExampleSpec extends Specification{ MockMvc mockMvc @Autowired WebApplicationContext wac def setup(){ mockMvc = webAppContextSetup(wac).build() } def "例を取得すると期待されるjsonであるべき"() { def expected = '{"id":1,"name":"example"}' when: def json = mockMvc.perform( MockMvcRequestBuilders .get('/v1/api/example')) .andExpect(status().isOk()) .andReturn().response.contentAsString then: json == expected } } https://martinfowler.com/bliki/SubcutaneousTest.html
29.
29Copyright © 2019
BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
30.
30Copyright © 2019
BTC Corporation All Rights Reserved. Selenium と Cypress Browser Automation & Stubbing Response Browser Seleniumはブラウザ上の操作の 自動化のソリューション Browser Cypressもブラウザ上の操作の 自動化のソリューション ただしSeleniumに非依存 HTTP通信のスタビングが可能 HTTP Request Response (Stubbing) HTTP Request Response
31.
31Copyright © 2019
BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
32.
32Copyright © 2019
BTC Corporation All Rights Reserved. Geb – Very Groovy Browser Automation • WebDriverの機能、jQueryセレクタの便利さ、 Page Objectモデリングの堅牢さ、Groovyの 表現力を統合します(意訳) • It brings together the power of WebDriver, the elegance of jQuery content selection, the robustness of Page Object modelling and the expressiveness of the Groovy language. Geb is a browser automation solution. https://gebish.org/ import geb.Browser Browser.drive { go "http://myapp.com/login" assert $("h1").text() == "Please Login" $("form.login").with { username = "admin" password = "password" login().click() } assert $("h1").text() == "Admin Section" }
33.
33Copyright © 2019
BTC Corporation All Rights Reserved. Spock + Geb • Spockは、Gebで使用するのに最適な革新的 なテストフレームワークです。 Spock + Gebを 使用すると、非常に明確かつ簡潔で、理解しや すいテスト仕様をわずかな労力で提供できます。 (Google翻訳) • Spock is an innovative testing framework that is a great match for using with Geb. Using Spock + Geb gives you very clear, concise and easy to understand test specifications with very little effort. Page Object modelling import geb.Page import geb.spock.GebSpec class LoginSpec extends GebSpec { def "login to admin section"() { given: to LoginPage when: loginForm.with { username = "admin" password = "password" } and: loginButton.click() then: at AdminPage } } https://gebish.org/
34.
34Copyright © 2019
BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
35.
35Copyright © 2019
BTC Corporation All Rights Reserved. Sitimi – Very Groovy is a GUI Automation • SikuliXの機能、Page Objectモデリングの堅 牢さ、Groovyの表現力を統合します。そう、そ れはGebのように! • It brings together the power of SikuliX, the robustness of Page Object modelling and the expressiveness of the Groovy language. so. It's like Geb! Sitimi is a Windows Automation Solution. https://github.com/terahide/sitimi import sitimi.spock.SitimiSpec import sample.CalcWindow class SimpleCalcSpec extends SitimiSpec{ def "a simple scenario"(){ given: start Calc expect: shown CalcWindow when: add(9, 9) then: "result is" (18) } } 操作したい部分をキャプチャします。 src/test/imgs/9_button.png Package sample import sitimi.Window class CalcWindow extends Window{ def add(i, j){ click "src/test/imgs/${i}_button.png" click "src/test/imgs/plus_button.png" click "src/test/imgs/${j}_button.png" click "src/test/imgs/equal_button.png" } // snip
36.
36Copyright © 2019
BTC Corporation All Rights Reserved. スペックの相似 - Movable Specification BDDの語彙で表せない部分はCompose Method(Page|Window Object)に隠蔽 import geb.Page import geb.spock.GebSpec class LoginSpec extends GebSpec { def "login to admin section"() { given: "ログインページを表示する" to LoginPage when: "ユーザ名とパスワードを入力する" loginForm.with { username = "admin" password = "password" } and: "ログインする" loginButton.click() then: "管理者ページが表示されるべき" at AdminPage } } import sitimi.spock.SitimiSpec import sample.CalcWindow class SimpleCalcSpec extends SitimiSpec{ def "a simple scenario"(){ given: "電卓を起動する" start Calc expect: "電卓が表示されるべき" shown CalcWindow when: "9+9を計算する" add(9, 9) then: "結果は18であるべき" "result is"(18) } } Geb Sitimi
37.
37Copyright © 2019
BTC Corporation All Rights Reserved. Spock is a Very Groovy BDD Framework.
38.
38Copyright © 2019
BTC Corporation All Rights Reserved. ご参考: ある新人のはなし 自動テスト難しいです • 初めてテストを書いたのでspecが何をしているかわからなかった。それを把握するのに苦労した • でも日本語が多いので「うわぁ!英語しか書いてない!見たくない!」的なアレルギー反応は少なかった SitimiというかSikuliX • SikuliXは色の区別や似た文字の判別が難しいらしい – アイデンティティのある箇所を探してスクリーンショットを取るのが難しい、というか面倒 – SikuliXが見分けられない画像は人間にもフレンドリーではないUIなのかもしれない – SikuliXが識別できないものは似たようなボタンや画面が複数ある場合が多い? • 時折何をしても動かないことがある、そして次の日には何事もなかったかのように動く。気まぐれなのかもしれない Sitimi • なにより書いていて楽しい! • 簡単なコードですぐに動かせるので、達成感が得やすい • 自分の書いたテストがアプリを動かすのを見ているのが面白い • ゲーム感覚 世界“唯一”のSitimiのパワーユーザである、Aさんの感想
39.
39Copyright © 2019
BTC Corporation All Rights Reserved. ご参考: ある新人のはなし • Aさん「なぜかテストが落ちるんです」 • 寺島「機械の方がだいたい人間より正確だから、あなたの書いたテストコードに問題があるので は?」 • ー 数分悩み何かを修正 ー • Aさん「直りました」 • 寺島「おっけー。じゃあ、全部動かしてみて」 • ー 数分後 ー • Aさん「1件なぜか落ちました。単体で実行すると成功します。。。」 • 寺島「自動テストは、リピータブルで独立してないとダメよ」 日常の会話 その1
40.
40Copyright © 2019
BTC Corporation All Rights Reserved. ご参考: ある新人のはなし • 寺島「このテスト文学的じゃない」 • Aさん(ぶ、文学?) • 寺島「自動テストのスペックは読んだときに、文学作品のようにストーリーがないと」 • Aさん(何か言い出しおった。。。) 日常の会話 その2
41.
41Copyright © 2019
BTC Corporation All Rights Reserved. Continuous
42.
42Copyright © 2019
BTC Corporation All Rights Reserved. BTC Code Base テスト管理 自動テスト 情報集約基盤 自動デプロイビルドコントロールソースコントロール AWS CodeCommit(Git) AWS CodeDeployAWS CodeBuild AWS Device Farm 開発者 開発環境 ソースコード テストコード(JUnit) テストコード(Selenium) ビルドファイル(Gradle) 構成ファイル(Docker) ClonePush ビルド(Gradle) 単体テスト(Junit) メトリクス取得(Sonarプラグイン) AWS CodePipeline 継続的デリバリーとリリースの自動化 Amazon EC2 サービス提供基盤 デプロイスクリプト サーバ 資材 デプロイ モバイル デバイス 資材 テスト実行 テストログ プロジェクト コード 機械学習・予測分析 AmazonMachine Learning テスト ログ コミットログ BTC Code Base powered by 1 4 3 2 MicrosoftAzureフィード バック データ格納・分析(BI, DWH) 格納 格納 分析 AIによって進化し続けるDevOps基盤
43.
43Copyright © 2019
BTC Corporation All Rights Reserved. アプリケーションテンプレート on Spring Boot 「Spring Boot2徹底活用」 ISBN978-4-8026-1185-5
44.
44Copyright © 2019
BTC Corporation All Rights Reserved. BTC Code Base • マージリクエスト • チケット • ドキュメント • コミット • ビルド/デプロイ • テスト • コメント • 時間帯別/曜日別/作業者別 • etc. 開発の営みの可視化 ふりかえりでマージリクエストの大きさに注目 マージ数を5倍にする取り組みを行う 次のイテレーションで消化したポイントが6倍に!
45.
45Copyright © 2019
BTC Corporation All Rights Reserved. 早期発見 繰り返しのプロセスとテストファースト BTC Code Base アプリケーションテンプレート イテレーション ATDD ふりかえり CI・CD TDD・BDD ・・・
46.
46Copyright © 2019
BTC Corporation All Rights Reserved. 取り組みがもたらしたもの • 仕様の可視化・タスクの可視化・実績の可視化 • 予実などの予測がしやすくなった • トラブルが起きても収束が早くなった • コマンドコントロールが減ってきた • プロジェクトの運営が円滑に 私は、 • 仕事が増えた • 今年度が始まった時は1チームだったのが、現在5チームに所属 • 間接的に関わるチームも増えてきた
47.
47Copyright © 2019
BTC Corporation All Rights Reserved. 「私」がこれから取り組んでいきたいこと • テストの並列化 • CCPM • お客様が行う受入テストのATDD • テストの削減(テストしない品質保証)
48.
48Copyright © 2019
BTC Corporation All Rights Reserved. よくある質問 • YesでありNoです – 自動テストは社内のほとんどのプロジェクトで実行しています • JUnit • Spock • Geb • Cypress • Sitimi • etc. – BTC Code Baseはまだ開発中です – が、標準的なDevOps基盤の構築は終わり、実案件へ導入が始まっています – Scrumは社内の一部のプロジェクトで行われています – BDD・ATDD に取り組んでいるのは自分のプロジェクトだけです Q. 社内全体で取り組んでいるのですか?
49.
49Copyright © 2019
BTC Corporation All Rights Reserved. https://github.com/terahide/sitimi
50.
50Copyright © 2019
BTC Corporation All Rights Reserved. ご清聴ありがとうございました
Download