Slide 1

Slide 1 text

及部敬雄 (@TAKAKING22) 我々はなぜテストコードを書くのか?

Slide 2

Slide 2 text

なぜテストを書いているんですか? ● #今日の小噺 チャンネルに書く

Slide 3

Slide 3 text

なぜテストを書くのか 人によってさまざまな回答が来る 一番多いのは「やらなければならないから」

Slide 4

Slide 4 text

“テストのないコードは悪いコードである。どれだけ うまく書かれているかは関係ない。” “テストがあれば、検証しながらコードの動きを素早 く変更することができる。テストがなければ、コード が良くなっているのか悪くなっているのかが本当にわ からない。” Michael Feathers レガシーコード改善ガイド

Slide 5

Slide 5 text

“「動作するきれいなコード」。
 Ron Jeffriesのこの簡潔な言葉が、TDD (テスト駆動開発)のゴールだ。動作するき れいなコードはあらゆる意味で価値があ る。” Kent Beck テスト駆動開発

Slide 6

Slide 6 text

“次に意味の希薄化ですね。
 『Test-Driven Development by Example』の 出版から15年経ち、テストコードを書く人はすごく増 えました。” @t_wada 希薄化したTDD、プロダクトの成長のために必要なものは?『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (6)

Slide 7

Slide 7 text

“テストコードがあるという生活は普通のものになっ ている。そうすると、なぜテストコード書くのかと か、本来こういうテストコードを書きたかったんだけ どとか、こういうテストを書くべきなんだけどみたい な議論はだいぶ土俵から外れてしまって、テストは書 かなければならないので書く、みたいな感じになって しまった。” @t_wada 希薄化したTDD、プロダクトの成長のために必要なものは?『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (6)

Slide 8

Slide 8 text

“つまり(TDDは)権利じゃなくて義務になっちゃっ ているんですね。今の若者にとってテストというの は、やらなきゃいけない、まさに「テスト」みたいに 義務化されてしまったもので、自分たちの不安を取り 除くためにテストコードを書いているんじゃなくて、 やれと言われているからしょうがなくやっている。内 発的じゃないんですよ。” @t_wada 希薄化したTDD、プロダクトの成長のために必要なものは?『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (6)

Slide 9

Slide 9 text

“How deep are you unit tests ?” ある日stack overflowに投稿された質問 ユニットテストはどれくらい深くやっていますか? https://stackoverflow.com/questions/153234/how-deep-are-your-unit-tests/153565#153565

Slide 10

Slide 10 text

“I get paid for code that works, 
 not for tests, so my philosophy is 
 to test as little as possible to reach 
 a given level of confidence” Kent Beck 私はテストではなく動くコードに対して報酬を得る。 私の哲学では、一定の信頼レベルに達するためには、 できる限り最小限のテストしかしません。 https://stackoverflow.com/questions/153234/how-deep-are-your-unit-tests/153565#153565

Slide 11

Slide 11 text

あのKent Beckが!!

Slide 12

Slide 12 text

“リファクタリングが射程に入ってないテストコード になっちゃっている。ソフトウェアの内部の質は、テ ストコードを書いても基本的に変わらない。リファク タリングしないと内部の質は上がらないのに、リファ クタリングを行うという発想がそもそも無くなっちゃ っている。テストコードは増えるし、テストカバレッ ジは増えるんだけど、ソフトウェアの設計自体は全然 良くなっていないという結果になってしまう。「私は こういうふうにコードを書きましたというような、こ ういう仕事をしました」という証明のためだけのテス トコードみたいな。” @t_wada 希薄化したTDD、プロダクトの成長のために必要なものは?『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (6)

Slide 13

Slide 13 text

@m_seki “テストでは品質は上がらないですよ。テストはあく までも品質をあげるきっかけ。品質をあげるのはプロ グラミングです。これは大昔からそう。”

Slide 14

Slide 14 text

テストコードのメンテナンスコスト 理想 現実

Slide 15

Slide 15 text

Purpose Alignment Model 差別化 決定的 誰が気にするの? 維持する パートナー 差別化 投資せよ! ベストプラクティスを適用する 排除! パートナーがいればより効果的かも https://medium.com/@info_29686/purpose-alignment-model-b9862a9deca0 テスト コード

Slide 16

Slide 16 text

Purpose Alignment Model 差別化 決定的 誰が気にするの? 維持する パートナー 差別化 投資せよ! ベストプラクティスを適用する 排除! パートナーがいればより効果的かも https://medium.com/@info_29686/purpose-alignment-model-b9862a9deca0 テスト

Slide 17

Slide 17 text

有限の時間 膨大なテストケース

Slide 18

Slide 18 text

それぞれの”テストコード”がある 人によって時によって言ってることが違うように聞こえる なぜテストを書くのか なんのテストを書くのか どこまでテストを書くのか そもそもテストコードを書くのか書かないのか

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

まさにここっぽい!

Slide 21

Slide 21 text

答えがないことへの取り組み方 いろんな人の話を聞くのは大切だけど誰も正解は知らない 自分たちの正解は自分たちで探し求めていくもの 迷った経験、考えた時間、試した回数はきっと価値がある 繰り返しながら少しずついい方向に持っていく 一度良いと思ったものも時間や状況の変化で変わるので
 常にアップデートする

Slide 22

Slide 22 text

Photo by Aaron Burden on Unsplash

Slide 23

Slide 23 text

今日からなんのためにテストを書きますか? ● #今日の小噺 チャンネルに書く