SlideShare una empresa de Scribd logo
1 de 35
テストコードの運用の話
2018/04/14 sh-ogawa
きょうの流れ
自己紹介
愛知に友達いねええ!!
宣伝
他コミュニティとか、会社とか?
本日の話題
テストコードの運用について考えるよ
自己紹介
小川昌吾(VISOR inc.)
■東京生まれ・東京育ち
■妻と娘(6カ月)とウサギの3人と1匹
■名古屋でWeb開発
■ドラクエ10 ver.4中
SNSアカウント
■Twitter:@kroyeeg ■GitHub:sh-ogawa
■SlideShare:sh-ogawa ■はてブロ:sh-ogawa
自己紹介
小川昌吾(VISOR inc.)
■東京生まれ・東京育ち
■妻と娘(6カ月)とウサギの3人と1匹
■名古屋でWeb開発
■ドラクエ10 ver.4中
SNSアカウント
■Twitter:@kroyeeg ■GitHub:sh-ogawa
■SlideShare: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つの例として
過去のスライドを引用・・・
この構成で良ければ
以下から環境は作れます
※トレーニング用リポジトリ 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
!

Más contenido relacionado

La actualidad más candente

20140308 わんくまo58-lt-it勉強会の好循環-public
20140308 わんくまo58-lt-it勉強会の好循環-public20140308 わんくまo58-lt-it勉強会の好循環-public
20140308 わんくまo58-lt-it勉強会の好循環-publicTakahiro Uemura
 
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravelMasanori Hayashi
 
月間6アプリリリースの開発現場でのQiita:Team活用法
月間6アプリリリースの開発現場でのQiita:Team活用法月間6アプリリリースの開発現場でのQiita:Team活用法
月間6アプリリリースの開発現場でのQiita:Team活用法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 + RedashMitsuhiro Yamashita
 
20180416 jp stripes_fukuoka_vol3_public
20180416 jp stripes_fukuoka_vol3_public20180416 jp stripes_fukuoka_vol3_public
20180416 jp stripes_fukuoka_vol3_publicHideki 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 reportMasaya Suzuki
 
20180911 jp stripes_fukuoka_vol4
20180911 jp stripes_fukuoka_vol420180911 jp stripes_fukuoka_vol4
20180911 jp stripes_fukuoka_vol4Hideki Ojima
 
Pythonの10年と今、これから
Pythonの10年と今、これからPythonの10年と今、これから
Pythonの10年と今、これからHaruo Sato
 

La actualidad más candente (14)

20140308 わんくまo58-lt-it勉強会の好循環-public
20140308 わんくまo58-lt-it勉強会の好循環-public20140308 わんくまo58-lt-it勉強会の好循環-public
20140308 わんくまo58-lt-it勉強会の好循環-public
 
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel
 
月間6アプリリリースの開発現場でのQiita:Team活用法
月間6アプリリリースの開発現場でのQiita:Team活用法月間6アプリリリースの開発現場でのQiita:Team活用法
月間6アプリリリースの開発現場でのQiita:Team活用法
 
今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り
 
Rails Girls Tokyo 5th
Rails Girls Tokyo 5thRails Girls Tokyo 5th
Rails Girls Tokyo 5th
 
相手の都合を知る技術
相手の都合を知る技術相手の都合を知る技術
相手の都合を知る技術
 
人のレガシーを笑うな - レガシー感謝の日
人のレガシーを笑うな  - レガシー感謝の日人のレガシーを笑うな  - レガシー感謝の日
人のレガシーを笑うな - レガシー感謝の日
 
20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう
 
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
 
20180416 jp stripes_fukuoka_vol3_public
20180416 jp stripes_fukuoka_vol3_public20180416 jp stripes_fukuoka_vol3_public
20180416 jp stripes_fukuoka_vol3_public
 
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
 
20180911 jp stripes_fukuoka_vol4
20180911 jp stripes_fukuoka_vol420180911 jp stripes_fukuoka_vol4
20180911 jp stripes_fukuoka_vol4
 
Pythonの10年と今、これから
Pythonの10年と今、これからPythonの10年と今、これから
Pythonの10年と今、これから
 

Similar a Njug 20180414

受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた小川 昌吾
 
第16回iPhoneアプリ開発勉強会発表資料
第16回iPhoneアプリ開発勉強会発表資料第16回iPhoneアプリ開発勉強会発表資料
第16回iPhoneアプリ開発勉強会発表資料Ke Ta
 
「ダウンシフト」という越境〜成長を追い求めなくなってから見えてきたワクワク〜
「ダウンシフト」という越境〜成長を追い求めなくなってから見えてきたワクワク〜「ダウンシフト」という越境〜成長を追い求めなくなってから見えてきたワクワク〜
「ダウンシフト」という越境〜成長を追い求めなくなってから見えてきたワクワク〜Chihiro Tomita
 
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -Masao Niizuma
 
SIerからインターネットベンチャーへ
SIerからインターネットベンチャーへSIerからインターネットベンチャーへ
SIerからインターネットベンチャーへYoshiomi Kurisu
 
WEBアプリを作らない選択肢
WEBアプリを作らない選択肢WEBアプリを作らない選択肢
WEBアプリを作らない選択肢Shin Wakai
 

Similar a Njug 20180414 (6)

受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた
 
第16回iPhoneアプリ開発勉強会発表資料
第16回iPhoneアプリ開発勉強会発表資料第16回iPhoneアプリ開発勉強会発表資料
第16回iPhoneアプリ開発勉強会発表資料
 
「ダウンシフト」という越境〜成長を追い求めなくなってから見えてきたワクワク〜
「ダウンシフト」という越境〜成長を追い求めなくなってから見えてきたワクワク〜「ダウンシフト」という越境〜成長を追い求めなくなってから見えてきたワクワク〜
「ダウンシフト」という越境〜成長を追い求めなくなってから見えてきたワクワク〜
 
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
CoderDojoひばりヶ丘 その記録 - 子供達は何を学んでいるのか -
 
SIerからインターネットベンチャーへ
SIerからインターネットベンチャーへSIerからインターネットベンチャーへ
SIerからインターネットベンチャーへ
 
WEBアプリを作らない選択肢
WEBアプリを作らない選択肢WEBアプリを作らない選択肢
WEBアプリを作らない選択肢
 

Más de 小川 昌吾

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入門小川 昌吾
 
チュートリアルではじめるVue.js
チュートリアルではじめるVue.jsチュートリアルではじめるVue.js
チュートリアルではじめるVue.js小川 昌吾
 
ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)小川 昌吾
 
非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理小川 昌吾
 
Dynamo db はじめの一歩
Dynamo db はじめの一歩Dynamo db はじめの一歩
Dynamo db はじめの一歩小川 昌吾
 
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis小川 昌吾
 
テストコード入門
テストコード入門テストコード入門
テストコード入門小川 昌吾
 
DevOpsを支える技術勉強会(CI編)
DevOpsを支える技術勉強会(CI編)DevOpsを支える技術勉強会(CI編)
DevOpsを支える技術勉強会(CI編)小川 昌吾
 

Más de 小川 昌吾 (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入門
 
チュートリアルではじめるVue.js
チュートリアルではじめるVue.jsチュートリアルではじめるVue.js
チュートリアルではじめるVue.js
 
ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)
 
非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理
 
Dynamo db はじめの一歩
Dynamo db はじめの一歩Dynamo db はじめの一歩
Dynamo db はじめの一歩
 
スキトラGit
スキトラGitスキトラGit
スキトラGit
 
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis
 
テストコード入門
テストコード入門テストコード入門
テストコード入門
 
IoT検定
IoT検定IoT検定
IoT検定
 
MySQL入門
MySQL入門MySQL入門
MySQL入門
 
Git入門
Git入門Git入門
Git入門
 
DevOpsを支える技術勉強会(CI編)
DevOpsを支える技術勉強会(CI編)DevOpsを支える技術勉強会(CI編)
DevOpsを支える技術勉強会(CI編)
 

Njug 20180414

Notas del editor

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