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
テストことはじめ
Search
はない
July 10, 2016
Technology
510
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テストことはじめ
Symfony Meetup#13 LT資料
はない
July 10, 2016
More Decks by はない
See All by はない
2018年目標を達成できなかった私が 今年こそ達成するためにしていること
hanahiroaze
3
540
組み合わせテストを簡単にするgemを作った話
hanahiroaze
0
270
MySQLとデッドロックの話
hanahiroaze
1
1.4k
ここが変だよ。このテスト〜テストケース爆発と戦う〜
hanahiroaze
1
1.6k
Symfony Best Practiceを読もう!(ついでに翻訳した話)
hanahiroaze
2
950
E2E Test Tips
hanahiroaze
0
180
Symfony2のi18n対応
hanahiroaze
0
850
開発合宿に行ってきました
hanahiroaze
0
160
GitHubよちよち会#3
hanahiroaze
0
180
Other Decks in Technology
See All in Technology
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
2
530
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
420
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
340
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
120
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
150
module Synths; end
asonas
1
130
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
260
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
130
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
230
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
260
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
4
960
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
150
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Tell your own story through comics
letsgokoyo
1
1.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
How to Talk to Developers About Accessibility
jct
2
540
Leo the Paperboy
mayatellez
9
2.3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Transcript
ςετ͜ͱ͡Ί !IBOBIJSP@B[F
ͳ·͑ɿՖҪɹߦ UXJUUFSɿ!IBOBIJSP@B[F ॴଐɿIJUPNFEJB 4ZNGPOZྺɿ̍ 99
テスト書いてない人 テスト書くの面倒くさい人
http://cdn-ak.f.st-hatena.com/images/fotolife/w/wakare_re/20151127/20151127221321.png
None
俺はテスト書くけど、 みんなが書いてくれない。。。 カバレッジ上がらない。。。 つらたん(´・ω・`)
手をあげなかった方は、 テストコードを書く文化が 浸透しているっぽいので、 後ほど詳しく お話を聞かせたいただきたい と思います
書いたほうがいいっていろんな人が 言っているからには、 何か気づけていない価値があるはず
では、 なぜ面倒くさいと感じるか。 なぜなくても良いと思ってしまうか。 テストを書くと何が嬉しいのか。
可能性[0] 「そもそも書き方がわからないですー」 説
とりあえず書いてみよう
Q.どこまでの範囲のテストを 書くべき? A.テストコード/テスト自動化で 解決できる テストの種類は限られる。
継続的デリバリー p129 技術視点 ビジネス視点 支 援 評 価 機能の受け入れ テスト ユニットテスト
インテグレーションテスト システムテスト ショーケース(デモなど) ユーザビリティテスト 探索的テスト 非機能の受け入れテスト (キャパシティ/セキュリティなど) リグレッション テスト 自動化の対象
Q.どれくらいの量のテストを 書かないといけない? A.包括的なテストのためには (自動化可能なテスト全てにおいて) 80%以上のカバレッジが必要。 「継続的デリバリー」 P131-132
継続的デリバリー p129 技術視点 ビジネス視点 支 援 評 価 機能の受け入れ テスト ユニットテスト
インテグレーションテスト システムテスト ショーケース(デモなど) ユーザビリティテスト 探索的テスト 非機能の受け入れテスト (キャパシティ/セキュリティなど) リグレッション テスト 60% 20% 80% 80%
継続的デリバリー p129 技術視点 ビジネス視点 支 援 評 価 機能の受け入れ テスト ユニットテスト
インテグレーションテスト システムテスト ショーケース(デモなど) ユーザビリティテスト 探索的テスト 非機能の受け入れテスト (キャパシティ/セキュリティなど) リグレッション テスト 60% 20% 80% 80%
とはいえ、 いきなり理想像を目指すのは 大変なので、
継続的デリバリー p129より 技術視点 ビジネス視点 支 援 評 価 機能の受け入れ テスト ユニットテスト
インテグレーションテスト システムテスト ショーケース(デモなど) ユーザビリティテスト 探索的テスト 非機能の受け入れテスト (キャパシティ/セキュリティなど) リグレッション テスト ここから始めるのが よさそう。
可能性[1] 「開発中に画面ぽちぽち is enough」 説
「短気なプログラマのためのPHPUnitクックブック」 はじめに 下線は @hanahiro_aze 「自動化されたテストの価値は、 コードの作成や変更を行うときに 明瞭かつ迅速なフィードバックループを 構築するための優れたツールになる。」 「生産的にソフトウェアを開発していく上で、 『前進しているという感覚』は 必要不可欠なんだ。」
画面をぽちぽち触ることで、 「明瞭かつ迅速なフィードバックループ」 が回って、 「前進しているという感覚」 を得ているのではないか。
継続的デリバリー p129 技術視点 ビジネス視点 支 援 評 価 機能の受け入れ テスト ユニットテスト
インテグレーションテスト システムテスト ショーケース(デモなど) ユーザビリティテスト 探索的テスト 非機能の受け入れテスト (キャパシティ/セキュリティなど) リグレッション テスト ここの範囲のみ。
http://livedoor.blogimg.jp/hatima/imgs/d/1/d1f50872.jpg 1/3もカバーしてない♫
・画面からでないと、テストできない項目もある。 ・APIの受け入れテスト、ServiceClassのテスト を書くことで、「画面から確認する」+αの 安全性を担保しませんか? 「1/3もカバーしてない」けれど
「同じ機能に対して手動テストを2回以上 行っていることに気づいたら、 その機能がこの先変更されるかどうか 確かめてみる。」 変更がなさそうなら自動化する。 よく変更されるなら自動化から外す。 継続的デリバリー p139-140
可能性[2] 「納期・締め切り・時間無い」 説
hitomedia 開発合宿での一コマ テスト書くの面倒ですか? だって仕様きてから1週間後にリリースとかあるんだよ。 テスト書く時間無いじゃん。 Aさん 確かに。(泣)
テストする機能を絞ろう! 「自動テストを導入するための 最善の方法は、最も一般的で価値が高く 重要なユースケースから始めることだ。 そのためには顧客と会話して、 本当のビジネス価値がどこにあるのかを 明確に特定し、その上で、 テストを使ってその機能を リグレッションから守るのだ。」 継続的デリバリー p139
テストする機能を絞ろう! (例) ・ViewModel/帳票出力のデータ取得 ・バリデーション 継続的デリバリー p139
設計の正しさを確認するためのテスト テストしづらいコードは設計がイケてな い可能性を疑う。 (例) ・条件分岐の一方はarrayが返るけど、 他方はModelObjectが返ってくる。。。
可能性[3] 「I am ドメインエキスパート」 説
hitomedia 開発合宿での一コマ そういえば、なんでテスト書かないで いままでやってきたんですか? ずっと一人で作ってたし、 仕様がわかりきってるから、書く意味ないと思うんだ。 Aさん 大変でしたね。。泣
http://bit.ly/29qgkTr ひとりじゃない〜♫
継続的デリバリー p129 技術視点 ビジネス視点 支 援 評 価 機能の受け入れ テスト ユニットテスト
インテグレーションテスト システムテスト ショーケース(デモなど) ユーザビリティテスト 探索的テスト 非機能の受け入れテスト (キャパシティ/セキュリティなど) リグレッション テスト ここは顧客も 巻き込む。
昨日の自分は他人 ・テストケース=仕様書に寄せていく。 ・設計の正しさの検証をする。
実際に書いてみた
実際に書いてみた
ͰɺԿ͕خ͍͠ͷʁ ・フィードバックループ ・リグレッション防止 ・書いてみると、実はそんなに難しくない (辛いところもあるけど。。。) ・イケてない設計に気づく。
͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ
参考 ・短気なプログラマのためのPHPUnitクックブック https://leanpub.com/grumpy-phpunit-jp ・継続的デリバリー http://amzn.to/29CHQzq ・アジャイルソフトウェア開発の奥義 http://amzn.to/29wm3M7