UT アンチパターン
発表者:関 崚平
自己紹介
P-01
関 崚平
経歴
・ 2019 年 4 月 ソフトバンク株式会社 新卒入社
→ スマホアドバイザー支援システム開発
Java, Vue, JQuery, AKS
→ スマホアドバイザー支援システム UX 調査
→ 見込み顧客システム開発
Java
・ 2021 年 8月 ソフトバンク株式会社 退職
・ 2022 年 9月 製造業会社 転職
→ アジャイル開発の推進、内製開発の推進
スクラム、XP、リーン
→ 業務支援システム開発
Java, Vue
趣味
・ iOS アプリを作るために Swift を勉強中
・ Python の Flask フレームワークを試している
@seki06284573
自己紹介
P-02
関 崚平
経歴
・ 2019 年 4 月 ソフトバンク株式会社 新卒入社
→ スマホアドバイザー支援システム開発
Java, Vue, JQuery, AKS
→ スマホアドバイザー支援システム UX 調査
→ 見込み顧客システム開発
Java
・ 2021 年 8月 ソフトバンク株式会社 退職
・ 2022 年 9月 製造業会社 転職
→ アジャイル開発の推進、内製開発の推進
スクラム、XP、リーン
→ 業務支援システム開発
Java, Vue
趣味
・ iOS アプリを作るために Swift を勉強中
・ Python の Flask フレームワークを試している
・新人教育
・ベンダーが作成したプログラムのコードレビュー
テストのアンチパターンの
紹介
@seki06284573
アンチパターン<1>
P-03
関さーん!
実装できたのでレビューお願いしま
す!
@seki06284573
アンチパターン<1>
P-04
関さーん!
実装できたのでレビューお願いしま
す!
了解〜。
見ておきまーす
@seki06284573
アンチパターン<1>
P-05
関さーん!
実装できたのでレビューお願いしま
す!
了解〜。
見ておきまーす
(あれ?テストはどこだ?)
テストはどこに作ってある?
@seki06284573
アンチパターン<1>
P-06
関さーん!
実装できたのでレビューお願いしま
す!
了解〜。
見ておきまーす
(あれ?テストはどこだ?)
テストはどこに作ってある?
テストはないです。。。
@seki06284573
アンチパターン<1>
P-07
関さーん!
実装できたのでレビューお願いしま
す!
了解〜。
見ておきまーす
(あれ?テストはどこだ?)
テストはどこに作ってある?
テストはないです。。。
アントパターン そ
の1
そもそもテストが存在しな
い!
テストがないのに何をレビューするのか…
門前払いします
@seki06284573
アンチパターン<2>
P-08
テストも作ってきました…
レビューお願いします!
@seki06284573
アンチパターン<2>
P-09
テストも作ってきました…
レビューお願いします!
了解〜。
見ておきまーす
まずは、テストが成功するか確認っと
@seki06284573
アンチパターン<2>
P-10
テスト結果
どこがダメかわかります
か?
アントパターン そ
の2
テスト名が雑!
なにをテストしているのかわからない…
これも門前払いです
@seki06284573
アンチパターン<2> テスト名が雑
P-11
テスト名が雑だと何がだめ?
・テストは仕様書である(by David Berntein)
テストを読むだけでそのメソッドの仕様がわかる様にする
・後から修正する際に、どのテストを修正するべきか分からない
・なにをテストしたかわからない
チーム開発だと他人のコードも読む必要がある
自分で書いたコードでさえ1ヶ月後には、何を書いたか忘れて
いる
@seki06284573
このテストどこに問題がある?
P-12
@seki06284573
前提条件
P-13
Controller Manager Repository
・書籍情報をデータベースに登録するAPIを作りたい
です
税抜き価格に変
換
@seki06284573
このテストどこに問題がある?(2箇所あります)
P-14
@seki06284573
アンチパターン<3>
P-15
アントパターン そ
の3
mock, verify に any を使う
な!
どんな値が repository に送られてもテストが通ってし
まう。
@seki06284573
アンチパターン<4>
P-16
@seki06284573
アンチパターン<4>
P-17
アントパターン その
4
テストの中に実装コードを混ぜる
な!
そのメソッド自体が間違ったことしていてもテストが通ってし
まう…
@seki06284573
アンチパターン<4> テストの中に実装コードを混ぜ
るな!
P-18
1.10で割ると税抜き価格が計算されるが、間違えて
price * 1.10
としていても、テストは通ってしまう…
@seki06284573
このテストどこに問題がある?(1箇所あります)
P-19
@seki06284573
アンチパターン<5>
P-20
アントパターン その
5
なにもアサートしていない
なにをテストしているんですか…
確かにエラーにならないことは確かめることはできるけど…
@seki06284573
アンチパターン<6>
P-21
それぞれの値に null が入ってきても大丈夫??
null が来ても適切なエラーを表示したり、処理をし
たりしていますか?
@seki06284573
アントパターン その
6
Null チェックが甘い
・Controller で null チェックしているので大丈夫です!(他の箇所
からメソッドを呼び出されることになった時は?)
・NullPointerException はエンジニアの恥です!
まとめ
• アンチパターン
– その1 「そもそもテストが存在しない!」
– その2 「テスト名が雑!」
– その3 「mock, verify に any を使うな!」
– その4 「テストの中に実装コードを混ぜるな!」
– その5 「なにもアサートしていない」
– その6 「Null チェックが甘い」
P-22
@seki06284573

UTアンチパターン