狠狠撸

狠狠撸Share a Scribd company logo
テストコードの運用の話
2018/04/14 sh-ogawa
きょうの流れ
自己紹介
愛知に友達いねええ!!
宣伝
他コミュニティとか、会社とか?
本日の話題
テストコードの運用について考えるよ
自己紹介
小川昌吾(VISOR inc.)
■東京生まれ?東京育ち
■妻と娘(6カ月)とウサギの3人と1匹
■名古屋でWeb開発
■ドラクエ10 ver.4中
SNSアカウント
■Twitter:@kroyeeg ■GitHub:sh-ogawa
■狠狠撸Share:sh-ogawa ■はてブロ:sh-ogawa
自己紹介
小川昌吾(VISOR inc.)
■東京生まれ?東京育ち
■妻と娘(6カ月)とウサギの3人と1匹
■名古屋でWeb開発
■ドラクエ10 ver.4中
SNSアカウント
■Twitter:@kroyeeg ■GitHub:sh-ogawa
■狠狠撸Share:sh-ogawa ■はてブロ:sh-ogawa
最近は時間さえあれば
k8sってやつと
戯れてます。
k8sのプレイブック作った
https://github.com/sh-ogawa/k8s-
cluster-for-vagrant
質問
しちゃいま~す
テストコード
書いてます?
わたし 今
実は書いたり
書かなかったりしてる ?
全く書いてない人、
書きましょう
書いてる人
テストコードの
運用はできてます?
今日はアンチパターン
からテストコードの
運用を考えてみます
テストコードの
(自分の身に起きた)
最悪な事例
幂等性が保てない
幂等性が保てない
- DBをチームメンバーで共有
C0カバレッジ
100%義務付け
幂等性が保てない
- DBをチームメンバーで共有
C0カバレッジ
100%義務付け
- モック地獄になって
何のためのテストコードなの
か判らない
幂等性が保てない
- DBをチームメンバーで共有
メンテしない幂等性が保てない
- DBをチームメンバーで共有
C0カバレッジ
100%義務付け
- モック地獄になって
何のためのテストコードなの
か判らない
メンテしない
- 期間置くとテストコードが
エラーになる
幂等性が保てない
- DBをチームメンバーで共有
C0カバレッジ
100%義務付け
- モック地獄になって
何のためのテストコードなの
か判らない
テストコードの
運用の基本姿勢
いけてない部分
を潰す!
冪等性を保つイライラさせない
メンテする我が子のように面倒を見る
無理し過ぎない無駄な努力をさせない
冪等性を保つイライラさせない
● DBはローカルPCに立てさせる
● メソッドの戻りをvoid以外にする
● 処理の中で状态を変えない
無理し過ぎない無駄な努力をさせない
● 100%を目指す必要がそもそもない
● 100%は返って品質が下がる
● 85%程度で十分(らしい)
● カバレッジは変化に気付く方が重要
メンテする我が子のように面倒を見る
● 常に全体を自動テストする
● コミットしたら、プルリクしたら、など
● 自動で動くようにする、これ絶対
● 結果は可視化する
● 赤くなったら即修正してコミットする
それ、
どうやるの?
それ、
どうやるの?
1つの例として
過去のスライドを引用???
Njug 20180414
Njug 20180414
この構成で良ければ
以下から環境は作れます
※トレーニング用リポジトリ https://github.com/sh-ogawa/config-management.git
使い方 https://qiita.com/sh-ogawa/items/401a89da868a233c87ab
この辺の運用の話は
以下にも書いてます
マスタリングビルド職人
https://uga.gitbooks.io/mastering-builder/content/
宣伝
https://elm-jp.connpass.com/event/82904/
名古屋近辺の貸会議室でやります!
定員は増やせるので、どしどしお願いします!
弊社では
一緒に働くエンジニアを
大絶賛募集中!
https://www.visor.co.jp/
THANKS
!

More Related Content

What's hot (14)

20140308 わんくまo58-lt-it勉強会の好循環-public
20140308 わんくまo58-lt-it勉強会の好循環-public20140308 わんくまo58-lt-it勉強会の好循環-public
20140308 わんくまo58-lt-it勉強会の好循環-public
Takahiro Uemura
?
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel
Masanori Hayashi
?
月间6アプリリリースの开発现场での蚕颈颈迟补:罢别补尘活用法
月间6アプリリリースの开発现场での蚕颈颈迟补:罢别补尘活用法月间6アプリリリースの开発现场での蚕颈颈迟补:罢别补尘活用法
月间6アプリリリースの开発现场での蚕颈颈迟补:罢别补尘活用法
Naoya Mouri
?
今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り
小川 昌吾
?
Rails Girls Tokyo 5th
Rails Girls Tokyo 5thRails Girls Tokyo 5th
Rails Girls Tokyo 5th
Toshihiro Gotou
?
相手の都合を知る技术
相手の都合を知る技术相手の都合を知る技术
相手の都合を知る技术
tuyoshiushio
?
人のレガシーを笑うな - レガシー感謝の日
人のレガシーを笑うな  - レガシー感謝の日人のレガシーを笑うな  - レガシー感謝の日
人のレガシーを笑うな - レガシー感謝の日
Masanori Hayashi
?
20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう
Masanori Hayashi
?
SendGrid Night in Osaka #2 LT SendGrid + Redash
SendGrid Night in Osaka #2 LT SendGrid + RedashSendGrid Night in Osaka #2 LT SendGrid + Redash
SendGrid Night in Osaka #2 LT SendGrid + Redash
Mitsuhiro Yamashita
?
20180416 jp stripes_fukuoka_vol3_public
20180416 jp stripes_fukuoka_vol3_public20180416 jp stripes_fukuoka_vol3_public
20180416 jp stripes_fukuoka_vol3_public
Hideki Ojima
?
nofollowタグ無し?LINE Q?のSEO対策?新潟 キムタク?1位
nofollowタグ無し?LINE Q?のSEO対策?新潟 キムタク?1位nofollowタグ無し?LINE Q?のSEO対策?新潟 キムタク?1位
nofollowタグ無し?LINE Q?のSEO対策?新潟 キムタク?1位
新潟コンサルタント横田秀珠
?
20150421 G-Lab progress report
20150421 G-Lab progress report20150421 G-Lab progress report
20150421 G-Lab progress report
Masaya Suzuki
?
20180911 jp stripes_fukuoka_vol4
20180911 jp stripes_fukuoka_vol420180911 jp stripes_fukuoka_vol4
20180911 jp stripes_fukuoka_vol4
Hideki Ojima
?
笔测迟丑辞苍の10年と今、これから
笔测迟丑辞苍の10年と今、これから笔测迟丑辞苍の10年と今、これから
笔测迟丑辞苍の10年と今、これから
Haruo Sato
?
20140308 わんくまo58-lt-it勉強会の好循環-public
20140308 わんくまo58-lt-it勉強会の好循環-public20140308 わんくまo58-lt-it勉強会の好循環-public
20140308 わんくまo58-lt-it勉強会の好循環-public
Takahiro Uemura
?
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel
Masanori Hayashi
?
月间6アプリリリースの开発现场での蚕颈颈迟补:罢别补尘活用法
月间6アプリリリースの开発现场での蚕颈颈迟补:罢别补尘活用法月间6アプリリリースの开発现场での蚕颈颈迟补:罢别补尘活用法
月间6アプリリリースの开発现场での蚕颈颈迟补:罢别补尘活用法
Naoya Mouri
?
今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り
小川 昌吾
?
相手の都合を知る技术
相手の都合を知る技术相手の都合を知る技术
相手の都合を知る技术
tuyoshiushio
?
人のレガシーを笑うな - レガシー感謝の日
人のレガシーを笑うな  - レガシー感謝の日人のレガシーを笑うな  - レガシー感謝の日
人のレガシーを笑うな - レガシー感謝の日
Masanori Hayashi
?
20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう
Masanori Hayashi
?
SendGrid Night in Osaka #2 LT SendGrid + Redash
SendGrid Night in Osaka #2 LT SendGrid + RedashSendGrid Night in Osaka #2 LT SendGrid + Redash
SendGrid Night in Osaka #2 LT SendGrid + Redash
Mitsuhiro Yamashita
?
20180416 jp stripes_fukuoka_vol3_public
20180416 jp stripes_fukuoka_vol3_public20180416 jp stripes_fukuoka_vol3_public
20180416 jp stripes_fukuoka_vol3_public
Hideki Ojima
?
20150421 G-Lab progress report
20150421 G-Lab progress report20150421 G-Lab progress report
20150421 G-Lab progress report
Masaya Suzuki
?
20180911 jp stripes_fukuoka_vol4
20180911 jp stripes_fukuoka_vol420180911 jp stripes_fukuoka_vol4
20180911 jp stripes_fukuoka_vol4
Hideki Ojima
?
笔测迟丑辞苍の10年と今、これから
笔测迟丑辞苍の10年と今、これから笔测迟丑辞苍の10年と今、これから
笔测迟丑辞苍の10年と今、これから
Haruo Sato
?

Similar to Njug 20180414 (6)

受託、厂贰厂、奥贰叠と経験したので比较してみた
受託、厂贰厂、奥贰叠と経験したので比较してみた受託、厂贰厂、奥贰叠と経験したので比较してみた
受託、厂贰厂、奥贰叠と経験したので比较してみた
小川 昌吾
?
第16回颈笔丑辞苍别アフ?リ开発勉强会発表资料
第16回颈笔丑辞苍别アフ?リ开発勉强会発表资料第16回颈笔丑辞苍别アフ?リ开発勉强会発表资料
第16回颈笔丑辞苍别アフ?リ开発勉强会発表资料
Ke Ta
?
「ダウンシフト」という越境?成长を追い求めなくなってから见えてきたワクワク?
「ダウンシフト」という越境?成长を追い求めなくなってから见えてきたワクワク?「ダウンシフト」という越境?成长を追い求めなくなってから见えてきたワクワク?
「ダウンシフト」という越境?成长を追い求めなくなってから见えてきたワクワク?
Chihiro Tomita
?
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
Masao Niizuma
?
厂滨别谤からインターネットベンチャーへ
厂滨别谤からインターネットベンチャーへ厂滨别谤からインターネットベンチャーへ
厂滨别谤からインターネットベンチャーへ
Yoshiomi Kurisu
?
奥贰叠アプリを作らない选択肢
奥贰叠アプリを作らない选択肢奥贰叠アプリを作らない选択肢
奥贰叠アプリを作らない选択肢
Shin Wakai
?
受託、厂贰厂、奥贰叠と経験したので比较してみた
受託、厂贰厂、奥贰叠と経験したので比较してみた受託、厂贰厂、奥贰叠と経験したので比较してみた
受託、厂贰厂、奥贰叠と経験したので比较してみた
小川 昌吾
?
第16回颈笔丑辞苍别アフ?リ开発勉强会発表资料
第16回颈笔丑辞苍别アフ?リ开発勉强会発表资料第16回颈笔丑辞苍别アフ?リ开発勉强会発表资料
第16回颈笔丑辞苍别アフ?リ开発勉强会発表资料
Ke Ta
?
「ダウンシフト」という越境?成长を追い求めなくなってから见えてきたワクワク?
「ダウンシフト」という越境?成长を追い求めなくなってから见えてきたワクワク?「ダウンシフト」という越境?成长を追い求めなくなってから见えてきたワクワク?
「ダウンシフト」という越境?成长を追い求めなくなってから见えてきたワクワク?
Chihiro Tomita
?
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
Masao Niizuma
?
厂滨别谤からインターネットベンチャーへ
厂滨别谤からインターネットベンチャーへ厂滨别谤からインターネットベンチャーへ
厂滨别谤からインターネットベンチャーへ
Yoshiomi Kurisu
?
奥贰叠アプリを作らない选択肢
奥贰叠アプリを作らない选択肢奥贰叠アプリを作らない选択肢
奥贰叠アプリを作らない选択肢
Shin Wakai
?

More from 小川 昌吾 (18)

Effective flutter
Effective flutterEffective flutter
Effective flutter
小川 昌吾
?
Flutter first impression
Flutter first impressionFlutter first impression
Flutter first impression
小川 昌吾
?
Flutter management statement
Flutter management statementFlutter management statement
Flutter management statement
小川 昌吾
?
Laravel vue-project-upload
Laravel vue-project-uploadLaravel vue-project-upload
Laravel vue-project-upload
小川 昌吾
?
Lara vue
Lara vueLara vue
Lara vue
小川 昌吾
?
Atomic design+vue
Atomic design+vueAtomic design+vue
Atomic design+vue
小川 昌吾
?
アプリ屋のための Docker入門
アプリ屋のための Docker入門アプリ屋のための Docker入門
アプリ屋のための Docker入門
小川 昌吾
?
チュートリアルではじめる痴耻别.箩蝉
チュートリアルではじめる痴耻别.箩蝉チュートリアルではじめる痴耻别.箩蝉
チュートリアルではじめる痴耻别.箩蝉
小川 昌吾
?
滨罢の开発现场における最近の当たり前これからの当たり前(主観)
滨罢の开発现场における最近の当たり前これからの当たり前(主観)滨罢の开発现场における最近の当たり前これからの当たり前(主観)
滨罢の开発现场における最近の当たり前これからの当たり前(主観)
小川 昌吾
?
非エンジニアに捧ぐツアーオブ构成管理
非エンジニアに捧ぐツアーオブ构成管理非エンジニアに捧ぐツアーオブ构成管理
非エンジニアに捧ぐツアーオブ构成管理
小川 昌吾
?
Dynamo db はじめの一歩
Dynamo db はじめの一歩Dynamo db はじめの一歩
Dynamo db はじめの一歩
小川 昌吾
?
スキトラ骋颈迟
スキトラ骋颈迟スキトラ骋颈迟
スキトラ骋颈迟
小川 昌吾
?
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis
小川 昌吾
?
テストコード入门
テストコード入门テストコード入门
テストコード入门
小川 昌吾
?
滨辞罢検定
滨辞罢検定滨辞罢検定
滨辞罢検定
小川 昌吾
?
惭测厂蚕尝入门
惭测厂蚕尝入门惭测厂蚕尝入门
惭测厂蚕尝入门
小川 昌吾
?
骋颈迟入门
骋颈迟入门骋颈迟入门
骋颈迟入门
小川 昌吾
?
顿别惫翱辫蝉を支える技术勉强会(颁滨编)
顿别惫翱辫蝉を支える技术勉强会(颁滨编)顿别惫翱辫蝉を支える技术勉强会(颁滨编)
顿别惫翱辫蝉を支える技术勉强会(颁滨编)
小川 昌吾
?
Flutter first impression
Flutter first impressionFlutter first impression
Flutter first impression
小川 昌吾
?
Flutter management statement
Flutter management statementFlutter management statement
Flutter management statement
小川 昌吾
?
Laravel vue-project-upload
Laravel vue-project-uploadLaravel vue-project-upload
Laravel vue-project-upload
小川 昌吾
?
アプリ屋のための Docker入門
アプリ屋のための Docker入門アプリ屋のための Docker入門
アプリ屋のための Docker入門
小川 昌吾
?
チュートリアルではじめる痴耻别.箩蝉
チュートリアルではじめる痴耻别.箩蝉チュートリアルではじめる痴耻别.箩蝉
チュートリアルではじめる痴耻别.箩蝉
小川 昌吾
?
滨罢の开発现场における最近の当たり前これからの当たり前(主観)
滨罢の开発现场における最近の当たり前これからの当たり前(主観)滨罢の开発现场における最近の当たり前これからの当たり前(主観)
滨罢の开発现场における最近の当たり前これからの当たり前(主観)
小川 昌吾
?
非エンジニアに捧ぐツアーオブ构成管理
非エンジニアに捧ぐツアーオブ构成管理非エンジニアに捧ぐツアーオブ构成管理
非エンジニアに捧ぐツアーオブ构成管理
小川 昌吾
?
Dynamo db はじめの一歩
Dynamo db はじめの一歩Dynamo db はじめの一歩
Dynamo db はじめの一歩
小川 昌吾
?
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis
小川 昌吾
?
テストコード入门
テストコード入门テストコード入门
テストコード入门
小川 昌吾
?
顿别惫翱辫蝉を支える技术勉强会(颁滨编)
顿别惫翱辫蝉を支える技术勉强会(颁滨编)顿别惫翱辫蝉を支える技术勉强会(颁滨编)
顿别惫翱辫蝉を支える技术勉强会(颁滨编)
小川 昌吾
?

Njug 20180414

Editor's Notes

  • #4: TISって会社から現職へ。T時代はアーキテクト、今プログラマ。 雑にアウトプットしてます
  • #7: 触ってみたい人ようにローカルPCにクラスタ環境を構築するためのプレイブック作ったよー。 git cloneしてvagrant up叩くだけ(vagrantが動く環境なら)
  • #10: プロダクトファースト的なところがあるのと、単純にテストコード書きづらい構成になってるから、書きやすい場所以外は書いてないです。 OOPだったり関数型だったり、っていうパラダイムの理解がまだ足りてないので、いきなりそういうことして引っかき廻すのもアレなので一旦大人しくしてる。 まぁ自分のことは棚に上げて言います。
  • #12: 私は过去こんな経験をしました
  • #16: DBがチームメンバーで共通 自分のデータが汚されるから、再現性が気が付くとなくなってる
  • #18: 無理やりカバレッジを上げた方が返って品質が悪くなるらしい。 カバレッジ通すためにコード改変された人が居るらしい
  • #20: 機能の改修するときにテストコードが動かないと、それを直さないとイケない(まじ死ね) メンテしないくせに、動かないことが判ると動くようにしろとか言ってくるから、テストコード無い方が負債が少ない。(死ねば良い)
  • #22: 半分くらいは冗谈で、テストコードは、、
  • #24: 2個目以降はチョットしたTIPS ?void以外 アウトがないと途端にテストしづらくなる ?状態を変えない 状態を持つ部分と処理をする部分のクラスは分けて書くとスッキリする。 これをやらないと、特定のINに対するOUTの処理が書きづらい。 これは、メソッドの中で状態によって処理分岐されてしまうことによって、テストケースが膨大化するし、中身見ないとどんなINを与えないといけないか判らなくてつらいから。 状態によって使うメソッドを分ける方が簡潔になる
  • #25: :85% 85%は正常系全部と、想定しているエラー処理を通す程度の割合。 :カバレッジの変化 コードいじる→緑にするのは当たり前で、周辺機能のカバレッジに変化が起きたかを気にする。 自分が触った部分以外のコードに変化が起きた場合、周辺機能に影響が出ていることを意味する
  • #26: ?全体を自動テスト 個人のPCで全てをやるのはツライし、それは意味がない 全体を自動でテストするようにセットアップする。 つまり、CIをやる ?コミット、プルリク ?自動で動くようにする CIと連携させてSCMリポジトリのイベントをCIにフックさせる 手でやる、みたいなのは絶対にやらないから、必ず自動化する
  • #28: CIはパイプラインが使えるものが好ましいし、クラウドのサービス使えるならそれを使った方が良いです。 パフォーマンスどうこう言われてメンテしないといけないのダルイので。。
  • #32: 昔书いといて自分の口では外部に向かって绍介したことないから一応しときます???
  • #34: 贰濒尘ハンズオン初开催、初心者歓迎!是非来てね!
  • #35: 自社のみ勤务なので客先常驻したくない皆さんのご応募をお待ちしております。