Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ユニットテストとカバレッジの 本質をチーム内で共有する / Unit testing and coverage Share the essence within the team

ユニットテストとカバレッジの 本質をチーム内で共有する / Unit testing and coverage Share the essence within the team

第13回 Webナイト宮崎 〜てげLT祭りしたい〜
2021/05/14
LT資料

YasuhiroKimesawa

May 17, 2021
Tweet

More Decks by YasuhiroKimesawa

Other Decks in Programming

Transcript

  1. ユニットテストとカバレッジの

    本質をチーム内で共有する

    第13回 Webナイト宮崎 〜てげLT祭りしたい〜

    2021/05/14

    株式会社ZOZOテクノロジーズ

    ブランドソリューション開発部 

    木目沢 康廣
    Copyright © ZOZO Technologies, Inc.

    View Slide

  2. © ZOZO Technologies, Inc.
    株式会社ZOZOテクノロジーズ

    ブランドソリューション開発部

    木目沢 康廣

    弊社サービスFulfillment by ZOZO 開発担当


    認定スクラムマスター

    Qiita: @YasuhiroKimesawa

    Twitter: pilgrim_reds

    Blog: https://pilgrim-lifestyle.jp/

    
 2

    View Slide

  3. © ZOZO Technologies, Inc.
    https://zozo.jp/

    ● 日本最大級のファッション通販サイト

    ● 1,400以上のショップ、8,100以上のブランドの取り扱い(ともに2020年12
    月末時点)

    ● 常時83万点以上の商品アイテム数と毎日平均3,000点以上の新着 商
    品を掲載

    ● 即日配送サービス

    ● ギフトラッピングサービス

    ● ツケ払い など

    3

    View Slide

  4. © ZOZO Technologies, Inc.
    4
    https://fbz.zozo.com/


    ● ZOZOTOWN出店企業の自社ECのフルフィルメント支援サービス

    ● 自社EC運営のための撮影・採寸・梱包・配送などの各種フルフィルメン
    ト業務を、ZOZOTOWNの物流センター「ZOZOBASE」が受託

    ● 設備投資・人件費・在庫保管料などの負担なしで、自社ECの運営が可
    能

    ● 各販売チャネル(自社EC・店舗・ZOZOTOWN)の在庫連携が可能。これ
    により、商品欠品による販売機会の損失を最小化


    View Slide

  5. © ZOZO Technologies, Inc.
    ユニットテストを書く意味・カバレッジを計測する意味

    話してみたら意外とチームで共有でき
    ていなかった

    ユニットテストを書く意味とカバレッジを計測する意味をあらためて考えてみたい

    5

    View Slide

  6. © ZOZO Technologies, Inc.
    なぜユニットテストを書くのか?①

    X品質を上げるため

    ○品質をわかるようにするため

    品質を上げるのはあくまで設計・プログラミング。

    6

    View Slide

  7. © ZOZO Technologies, Inc.
    なぜユニットテストを書くのか?②

    今の品質がわかれば、再設計とリファ
    クタリングにチャレンジしやすい

    品質を上げるのはあくまで設計・プログラミング。つまり、再設計とリファクタリングが品質を上げる。

    ユニットテストがなければ再設計もリファクタリングも着手しづらい。

    7

    View Slide

  8. © ZOZO Technologies, Inc.
    なぜカバレッジを計測するのか?①

    カバレッジが低い(=ユニットテストが
    少ない)と品質が「わからない」

    数値が低いうちは計測することに意味がある。では何%を目指すべきか

    8

    View Slide

  9. © ZOZO Technologies, Inc.
    なぜカバレッジを計測するのか?①

    何%をめざすべきか?

    ‘思慮深くテストを実施すれば、テストカバレッジはおそらく80%台後半か90%台になるだろう。

    カバレッジの数値が低い場合、たとえば50%以下の場合は、おそらく問題があるだろう。高いカバレッジの数値にはあ
    まり意味はない。ダッシュボードの数字に意味がなくなる助けをするだけだ。

    以下の質問に「はい」と答えられるならば、おそらくテストは十分だろう:

    ● 本番環境で発見されるバグはほとんどない。

    ● 本番環境でバグを出すことを恐れてコードの変更をためらうことがない。’

    by マーチン・ファウラー https://bliki-ja.github.io/TestCoverage/ より
    9

    View Slide

  10. © ZOZO Technologies, Inc.
    ユニットテストとカバレッジを使って品質を見える化するツール

    SonarCloudを導入

    ● 

    10
    ・カバー率、ファイルごとの未カバー箇所のチェック


    ・セキュリティ的に不備がある箇所の自動チェック


    ・コードの不吉な匂いの自動チェック(定数のEnum化する
    提案、文字列を定数化する提案、メソッドの分割の提案、
    引数が多すぎる指摘など)

    参考:書籍 リファクタリング:第三章コードの不吉な匂い
    (https://www.amazon.co.jp/dp/427405019X)


    View Slide

  11. © ZOZO Technologies, Inc.
    ユニットテストとカバレッジを使って品質を見える化するツール


    SonarCloud GitHubプラグイン

    11
    ・PullRequestごとに自動チェック

    ・ブランチの差分のみを計測する

    ・基準を満たさないとマージできないなどの設定も可能

    ・人の手を介さずに品質の見える化が実現可能



    View Slide

  12. © ZOZO Technologies, Inc.
    ユニットテストを書く意味・カバレッジを計測する意味


    当たり前のようにテストを書く前に一
    度チームでなぜやるのか会話してみ
    るのがおすすめです。

    12

    View Slide

  13. View Slide