JaSST'18 Tokyoチュートリアル「コードを書きながら学ぶテスト駆動開発」 #JaSST

2
broccoli @nihonbuson

- [ ] 数を文字列に変換する - [x] 1を渡すと文字列1に変換する - [ ] 2を渡すと文字列2に変換する 三角測量を使ってケースを増やす。 #JaSST

2018-03-07 13:52:20
broccoli @nihonbuson

1テストケースに1回のAssertを。 実行を打ち切られるため、後ろのテスト結果が隠されてしまう #JaSST

2018-03-07 13:53:27
broccoli @nihonbuson

これを「アサーションルーレット」と言う。 #JaSST

2018-03-07 13:54:30
broccoli @nihonbuson

Unitテストは高速なので、実行速度よりもテストの分離性などの方が重要 #JaSST

2018-03-07 13:55:31
broccoli @nihonbuson

予想通りの失敗は、先に進むための力になる #JaSST

2018-03-07 13:56:20
broccoli @nihonbuson

- [x] 数を文字列に変換する - [x] 1を渡すと文字列1に変換する →仮実装 - [x] 2を渡すと文字列2に変換する →三角測量 #JaSST

2018-03-07 13:58:24
broccoli @nihonbuson

テストコードのリファクタリングはプロダクションコードのリファクタリングよりも慎重になる。 なので、3回以上同じコピペコードがあったときに初めてテストコードをリファクタリングする考え方もあり #JaSST

2018-03-07 13:59:17
broccoli @nihonbuson

テスト失敗になっている時はリファクタリングできない。 案1. Undoしてリファクタリングする 案2. Greenまでしてからリファクタリングする #JaSST

2018-03-07 14:00:50
broccoli @nihonbuson

TDDはでっち上げのスキルに優れているw #JaSST

2018-03-07 14:01:09
broccoli @nihonbuson

予想通りな失敗→実装→予想通りの成功 になることもある。(仮実装を挟まないパターン) #JaSST

2018-03-07 14:12:26
broccoli @nihonbuson

(今、デモで作っている)テストコードは振る舞いを読み取れるが、仕様が読み取れない。 テストの粒度がバラバラになりがち。「なぜ1を選んだのか」が分からない。 TODOからテストコードで倍率を上げた(具体的な値にした)からテストコードから読み取れなくなった #JaSST

2018-03-07 14:16:50
broccoli @nihonbuson

TODOリストは構造化された箇条書きになっている 同じようにテストコードもツリー構造(入れ子、Javaで言えば内部クラス)で表そう。 #JaSST

2018-03-07 14:18:01
broccoli @nihonbuson

JUnit5では @Nested をつけてあげれば良い #JaSST

2018-03-07 14:19:08
broccoli @nihonbuson

@RunWith(Enclosed.class) を付けることで、eclipseのバグを回避 @DisplayName でJUnitでの表示名を付けられる(JUnit5以降) #JaSST

2018-03-07 14:23:12
broccoli @nihonbuson

当時の三角測量が数年後の解読で困らせる。 同様に、消すに消せないテストコードが多く残る。消すことへの確信が持てない。 消すには根拠と自信と内容が欲しい 対処案1:三角測量で書いたテストを消す(ただし本人のみ分かる) 対処案2:テストコードを構造化して、判断しやすいようにする #JaSST

2018-03-07 14:27:46
broccoli @nihonbuson

倍数をテストしているのだから、2つ以上のテストコードが欲しいはず。 3と6ではなく、もっと意識的な数の選び方をしたいはず(1から100までなら3と99とか) #JaSST

2018-03-07 14:30:27
broccoli @nihonbuson

TDDのスキル ・問題を小さく分割する ・歩幅を調整する  ・テスト→仮実装→三角測量→実装  ・テスト→仮実装→実装  ・テスト→明白な実装 ・テストの構造化とリファクタリング #JaSST

2018-03-07 14:33:40
Takuto Wada @t_wada

本日はソフトウェアテストシンポジウム2018東京にてチュートリアルセッション「コードを書きながら学ぶテスト駆動開発」の講師を務めさせていただきました。ご参加くださいました皆様、誠にありがとうございました! #jasst

2018-03-07 16:15:14