0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TDD の話②

Posted at

こちらの講演会の内容もよかったです!
前回の TDD の話 と内容が似ている部分も多いので、個人的に学びになった部分をピックアップします。

ネタ元

テストサイズの話

引用元「Google ソフトウェアエンジニアリング」

テストサイズ

  • Small
  • Medium
  • Large

Small Test の定義

テストの実行が1つのプロセスに収まっているもの

Medium Test の定義

1つのプロセスには収まっていないが、1つのマシンに収まっているもの

Large Test の定義

1つのマシンに収まっていないもの

testSize.png

Test Scope と Test Size

testScope&testSize.png

一周回ってピラミッド型

ピラミッド型は古いよねって議論もあり、トロフィー型とかハニカム型がいいんじゃない?って話もあるけど、ユニットテストやインテグレーションテストの解釈がそもそもブレてるよね・・・

ユニットテストの解釈のブレから生じがち.png

テストサイズで話をすると、ピラミッド型に戻って来る

テストサイズで分類.png

テストサイズを下げるには

Large から Medium へ

テストダブルを使う。
偽陽性、偽陰性を招きやすいので使い方には注意が必要。

テストダブル注意.png

1つのマシンに収まらないテストを1つのマシンに収めるためには、偽物を作る。
例:DynamoDB なら DynamoDB local などを使う

Fake.png

Medium から Small へ

テストしにくいところを薄く切り離して、テストしたいところを大きく露出させることで、1プロセスの中にテストを収める。
テストしたいところを、入出力などから切り離すことによって、1プロセスにテストが収まるようにする。
関数プログラミングだと副作用の分離という。
低結合高凝集の設計をしていくとテストサイズが下げやすくなる。
端的に言うと「良い設計をしましょう」

テストサイズを下げる.png

良いテスト

変化を支えるテスト。

単体テストの4本柱.png

様々なレベルで、様々なスコープで変化を支える。

サイズダウン戦略.png

まとめ

ピラミッドはテストサイズで構成しましょう。
テストダブルを使ってテストサイズを下げましょう。
信頼性の高い実行結果に、短い時間で到達する状態を、長期的に維持するようなテスト戦略を立てていきましょう。

テストをサイズダウンしてピラミッド型へ.png

おわりに

テストサイズの話を聞いていたら、デトロイト派とかロンドン派とか、なんかどうでもよくなってきました😇
「ロンドン派だからこう書かなきゃ・・・」とかじゃなくて、「どういうテストを書くと変化を支えることができるテストになるのか」のほうが大事なのかなと。

公演の中で何冊かの本から引用して話をしていたのも印象的だった。手を動かしてコーディングするのと同等に本から学ぶことも多いということだろう。読むのは苦手だけど、公演の中で紹介されていた本は読んでみようかな。(和訳のある本だけですが・・・)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?