Submit Search
Upload
アプリケーション開発目線から考える テストの書き方について
•
2 likes
•
1,269 views
bitbank, Inc. Tokyo, Japan
Follow
bitbank LT Night #3 Angularの資料
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 35
Download now
Download to read offline
Recommended
UXを向上させる サイト高速化テクニック
UXを向上させる サイト高速化テクニック
Shohei Tai
Agile Japan2016 Kanban
Agile Japan2016 Kanban
Atsushi Suzuki
5分で詰め込む フロントエンド最適化
5分で詰め込む フロントエンド最適化
Shohei Tai
JPUG の中国支部長変わったってよ #mysqlbeginner
JPUG の中国支部長変わったってよ #mysqlbeginner
Ikki Takahashi
実践リーダブルコード - 課題の実装の進め方
実践リーダブルコード - 課題の実装の進め方
Kouhei Sutou
テスト実行速度を改善してお金をかけずに開発スピードを爆速にする
テスト実行速度を改善してお金をかけずに開発スピードを爆速にする
77web
ジャストシステムのDevOps実例 今後の取り組み
ジャストシステムのDevOps実例 今後の取り組み
JustSystems Corporation
Mu seminor2014 00
Mu seminor2014 00
sejs-ej
Recommended
UXを向上させる サイト高速化テクニック
UXを向上させる サイト高速化テクニック
Shohei Tai
Agile Japan2016 Kanban
Agile Japan2016 Kanban
Atsushi Suzuki
5分で詰め込む フロントエンド最適化
5分で詰め込む フロントエンド最適化
Shohei Tai
JPUG の中国支部長変わったってよ #mysqlbeginner
JPUG の中国支部長変わったってよ #mysqlbeginner
Ikki Takahashi
実践リーダブルコード - 課題の実装の進め方
実践リーダブルコード - 課題の実装の進め方
Kouhei Sutou
テスト実行速度を改善してお金をかけずに開発スピードを爆速にする
テスト実行速度を改善してお金をかけずに開発スピードを爆速にする
77web
ジャストシステムのDevOps実例 今後の取り組み
ジャストシステムのDevOps実例 今後の取り組み
JustSystems Corporation
Mu seminor2014 00
Mu seminor2014 00
sejs-ej
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
Hiroko Tamagawa
Reducing the operational load of rpa
Reducing the operational load of rpa
ssuser033561
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
Toshiyuki Hirata
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
学 松崎
TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)
seichi23
レガシーコード読書会 20120618
レガシーコード読書会 20120618
Suguru Shirai
nGrinder3 : だれもが簡単にできる性能テスト
nGrinder3 : だれもが簡単にできる性能テスト
JunHo Yoon
Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)
DevLOVE
Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016
kyon mm
TDDはじめる前に
TDDはじめる前に
Yasui Tsutomu
OutSystems Workflow Builder
OutSystems Workflow Builder
Tetsuo Ajima
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
Tomomi Kajita
Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目
Nomo Kiyoshi
SEゼミ2015 - 練習
SEゼミ2015 - 練習
Kouhei Sutou
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
Dai FUJIHARA
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
Rakuten Group, Inc.
ユニットテストをちゃんとした話
ユニットテストをちゃんとした話
Tsuyoshi Nakamura
Selenium Antipatterns
Selenium Antipatterns
Jumpei Miyata
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
インフラチームの歴史とこれから
インフラチームの歴史とこれから
bitbank, Inc. Tokyo, Japan
ビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略について
bitbank, Inc. Tokyo, Japan
More Related Content
Similar to アプリケーション開発目線から考える テストの書き方について
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
Hiroko Tamagawa
Reducing the operational load of rpa
Reducing the operational load of rpa
ssuser033561
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
Toshiyuki Hirata
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
学 松崎
TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)
seichi23
レガシーコード読書会 20120618
レガシーコード読書会 20120618
Suguru Shirai
nGrinder3 : だれもが簡単にできる性能テスト
nGrinder3 : だれもが簡単にできる性能テスト
JunHo Yoon
Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)
DevLOVE
Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016
kyon mm
TDDはじめる前に
TDDはじめる前に
Yasui Tsutomu
OutSystems Workflow Builder
OutSystems Workflow Builder
Tetsuo Ajima
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
Tomomi Kajita
Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目
Nomo Kiyoshi
SEゼミ2015 - 練習
SEゼミ2015 - 練習
Kouhei Sutou
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
Dai FUJIHARA
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
Rakuten Group, Inc.
ユニットテストをちゃんとした話
ユニットテストをちゃんとした話
Tsuyoshi Nakamura
Selenium Antipatterns
Selenium Antipatterns
Jumpei Miyata
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
Similar to アプリケーション開発目線から考える テストの書き方について
(20)
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
Reducing the operational load of rpa
Reducing the operational load of rpa
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)
レガシーコード読書会 20120618
レガシーコード読書会 20120618
nGrinder3 : だれもが簡単にできる性能テスト
nGrinder3 : だれもが簡単にできる性能テスト
Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)
Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016
TDDはじめる前に
TDDはじめる前に
OutSystems Workflow Builder
OutSystems Workflow Builder
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目
SEゼミ2015 - 練習
SEゼミ2015 - 練習
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
ユニットテストをちゃんとした話
ユニットテストをちゃんとした話
Selenium Antipatterns
Selenium Antipatterns
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
More from bitbank, Inc. Tokyo, Japan
インフラチームの歴史とこれから
インフラチームの歴史とこれから
bitbank, Inc. Tokyo, Japan
ビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略について
bitbank, Inc. Tokyo, Japan
ビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdf
bitbank, Inc. Tokyo, Japan
ビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメント
bitbank, Inc. Tokyo, Japan
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
bitbank, Inc. Tokyo, Japan
ビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdf
bitbank, Inc. Tokyo, Japan
Lightning Network, Swap, Nloop
Lightning Network, Swap, Nloop
bitbank, Inc. Tokyo, Japan
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
bitbank, Inc. Tokyo, Japan
bitbank Corporate Information
bitbank Corporate Information
bitbank, Inc. Tokyo, Japan
ng build --prod & Continuous Delivery
ng build --prod & Continuous Delivery
bitbank, Inc. Tokyo, Japan
マーブル図で怖くないRxJS
マーブル図で怖くないRxJS
bitbank, Inc. Tokyo, Japan
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
bitbank, Inc. Tokyo, Japan
中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計
bitbank, Inc. Tokyo, Japan
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
bitbank, Inc. Tokyo, Japan
Introduction of bitbank frontend development environment
Introduction of bitbank frontend development environment
bitbank, Inc. Tokyo, Japan
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
bitbank, Inc. Tokyo, Japan
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
bitbank, Inc. Tokyo, Japan
Ethereumのシャーディング概論
Ethereumのシャーディング概論
bitbank, Inc. Tokyo, Japan
Daocasinoにおけるstate channel実装
Daocasinoにおけるstate channel実装
bitbank, Inc. Tokyo, Japan
TypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみよう
bitbank, Inc. Tokyo, Japan
More from bitbank, Inc. Tokyo, Japan
(20)
インフラチームの歴史とこれから
インフラチームの歴史とこれから
ビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略について
ビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdf
ビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメント
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdf
Lightning Network, Swap, Nloop
Lightning Network, Swap, Nloop
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
bitbank Corporate Information
bitbank Corporate Information
ng build --prod & Continuous Delivery
ng build --prod & Continuous Delivery
マーブル図で怖くないRxJS
マーブル図で怖くないRxJS
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
Introduction of bitbank frontend development environment
Introduction of bitbank frontend development environment
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
Ethereumのシャーディング概論
Ethereumのシャーディング概論
Daocasinoにおけるstate channel実装
Daocasinoにおけるstate channel実装
TypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみよう
アプリケーション開発目線から考える テストの書き方について
1.
1 アプリケーション開発目線から考える テストの書き方について
2.
2 @kou
3.
3 今日話すこと ● テストのメンテナンスが負担にならないようにするには ? ●
サンプルコードでいくつかのテストの書き方の紹介
4.
4 テストのメンテナンスが負担にならないようにするには? そもそもなぜ負担になってしまうのか ?
5.
5 テストのメンテナンスが負担にならないようにするには? そもそもなぜ負担になってしまうのか ? テストを書くのが楽しくないから
6.
6 テストのメンテナンスが負担にならないようにするには? そもそもなぜ負担になってしまうのか ? テストを書くのが楽しくないから ● Karmaが遅い ●
DIの設定がめんどくさい
7.
7 テストのメンテナンスが負担にならないようにするには? そもそもなぜ負担になってしまうのか ? テストを書くのが楽しくないから ● Karmaが遅い ●
DIの設定がめんどくさい この辺が解消されれば 楽しくなるはず!
8.
8 Jestを使おう ● ブラウザを立ち上げる必要がないので、 Karmaよりも圧倒的に速い ●
後述するSnapshotテストが強力で、テスト工数がだいぶ低くなる ● Jasmineよりも分かりやすいMock機能がある ● IDEの親和性も高い
9.
9 Jestを使ったテストの書き方を紹介 ● Component Template
テスト ● Component @Output テスト ● テスト時のDIのモック設定 ● Http/Observableのテスト
10.
10 Component Template テスト ●
プロパティがHTMLとして正しくレンダリングされているかを確認したい ● プロパティ一箇所ごとにテストを書くのは大変で、テストも腐りやすい ● Jest Snapshotでテストをしよう
11.
11
12.
12 class名が設定されること をテストしたい
13.
13 class名が設定されること をテストしたい レンダリング内容でファイルが 生成され、そのファイルとの比較 テストが行われる
14.
14 class名が設定されること をテストしたい
15.
15 class名が正しく設定されることを確認 class名が設定されること をテストしたい
16.
16 Component @Output テスト ●
ユーザーのクリックなどの処理で EventEmitterがemitされることを確認した い ● Observableとしてテストをするのは手数が多く面倒くさい ● JestのspyOnを使用してemitが呼ばれるところまでをテストをする
17.
17
18.
18 methodのコールで このemit が呼ばれること をテストしたい
19.
19 methodのコールで このemit が呼ばれること をテストしたい EventEmitterの emit
を spyする
20.
20 methodのコールで このemit が呼ばれること をテストしたい EventEmitterの emit
を spyする emitを発火させるmethodをコールする
21.
21 methodのコールで このemit が呼ばれること をテストしたい EventEmitterの emit
を spyする emitを発火させるmethodをコールする 意図通りにemitが呼ばれることを確認
22.
22 テスト時のDIのモック設定 ● DIするものが増えるとテストを書くモチベーションが下がってしまう ● 使い捨てで、すぐに準備できるように
DIを上手く解決したい ● DIするモックについては再利用を考えず、それぞれのファイル作成する ● Provider の useValue と jest.fn を使う
23.
23
24.
24 これらのdependencyを解 決したい
25.
25 これらのdependencyを解 決したい providersにはuseValue を使用し、 必要なmethodなどを jest.fn
で用意する
26.
26 これらのdependencyを解 決したい providersにはuseValue を使用し、 必要なmethodなどを jest.fn
で用意する Serviceの DI が解決されてnew できる
27.
27 Http/Observableのテスト ● Httpのリクエスト結果を利用した処理などをテストしたい ● HttpClientTestingModuleを使うと煩雑な設定が多くなり、 テストを書くのが億劫になってしまう ●
HttpClientの get をモック化して、コールされた内容をテスト 戻り値には jest.fn を使用して、必要なObservableを設定する
28.
28
29.
29 指定のIDのUserの名前を取得するmethod Userの名前を取得できることをテストしたい
30.
30 指定のIDのUserの名前を取得するmethod Userの名前を取得できることをテストしたい HttpClientに正しく引数を渡せてい るかテストする
31.
31 指定のIDのUserの名前を取得するmethod Userの名前を取得できることをテストしたい HttpClientに正しく引数を渡せてい るかテストする 正しくコールされていることを確認
32.
32 指定のIDのUserの名前を取得するmethod Userの名前を取得できることをテストしたい HttpClientに正しく引数を渡せてい るかテストする 正しくコールされていることを確認 Httpの結果を正しく操作していることを テストする
33.
33 指定のIDのUserの名前を取得するmethod Userの名前を取得できることをテストしたい HttpClientに正しく引数を渡せてい るかテストする 正しくコールされていることを確認 Httpの結果を正しく操作していることを テストする 正しくオブジェクトから名前だけを戻しているこ とを確認
34.
34 まとめ ● 表示専用のComponentのテストは、Jest Snapshotを使う ●
DIは各テストファイルで、最小限のモックを jest.fn で作成する ● モックに対して指定の引数で正しくコールしているかどうかのテストを行う ● モックからの戻り値は jest.fn で随時設定して、各テストを進めていく
35.
35 ありがとうございました
Download now