第13回 Webナイト宮崎 〜てげLT祭りしたい〜 2021/05/14 LT資料
ユニットテストとカバレッジの 本質をチーム内で共有する 第13回 Webナイト宮崎 〜てげLT祭りしたい〜 2021/05/14 株式会社ZOZOテクノロジーズ ブランドソリューション開発部 木目沢 康廣Copyright © ZOZO Technologies, Inc.
View Slide
© ZOZO Technologies, Inc.株式会社ZOZOテクノロジーズ ブランドソリューション開発部 木目沢 康廣 弊社サービスFulfillment by ZOZO 開発担当 認定スクラムマスター Qiita: @YasuhiroKimesawa Twitter: pilgrim_reds Blog: https://pilgrim-lifestyle.jp/ 2
© ZOZO Technologies, Inc.https://zozo.jp/ ● 日本最大級のファッション通販サイト ● 1,400以上のショップ、8,100以上のブランドの取り扱い(ともに2020年12月末時点) ● 常時83万点以上の商品アイテム数と毎日平均3,000点以上の新着 商品を掲載 ● 即日配送サービス ● ギフトラッピングサービス ● ツケ払い など 3
© ZOZO Technologies, Inc.4https://fbz.zozo.com/ ● ZOZOTOWN出店企業の自社ECのフルフィルメント支援サービス ● 自社EC運営のための撮影・採寸・梱包・配送などの各種フルフィルメント業務を、ZOZOTOWNの物流センター「ZOZOBASE」が受託 ● 設備投資・人件費・在庫保管料などの負担なしで、自社ECの運営が可能 ● 各販売チャネル(自社EC・店舗・ZOZOTOWN)の在庫連携が可能。これにより、商品欠品による販売機会の損失を最小化
© ZOZO Technologies, Inc.ユニットテストを書く意味・カバレッジを計測する意味 話してみたら意外とチームで共有できていなかった ユニットテストを書く意味とカバレッジを計測する意味をあらためて考えてみたい 5
© ZOZO Technologies, Inc.なぜユニットテストを書くのか?① X品質を上げるため ○品質をわかるようにするため 品質を上げるのはあくまで設計・プログラミング。 6
© ZOZO Technologies, Inc.なぜユニットテストを書くのか?② 今の品質がわかれば、再設計とリファクタリングにチャレンジしやすい 品質を上げるのはあくまで設計・プログラミング。つまり、再設計とリファクタリングが品質を上げる。 ユニットテストがなければ再設計もリファクタリングも着手しづらい。 7
© ZOZO Technologies, Inc.なぜカバレッジを計測するのか?① カバレッジが低い(=ユニットテストが少ない)と品質が「わからない」 数値が低いうちは計測することに意味がある。では何%を目指すべきか 8
© ZOZO Technologies, Inc.なぜカバレッジを計測するのか?① 何%をめざすべきか? ‘思慮深くテストを実施すれば、テストカバレッジはおそらく80%台後半か90%台になるだろう。 カバレッジの数値が低い場合、たとえば50%以下の場合は、おそらく問題があるだろう。高いカバレッジの数値にはあまり意味はない。ダッシュボードの数字に意味がなくなる助けをするだけだ。 以下の質問に「はい」と答えられるならば、おそらくテストは十分だろう: ● 本番環境で発見されるバグはほとんどない。 ● 本番環境でバグを出すことを恐れてコードの変更をためらうことがない。’ by マーチン・ファウラー https://bliki-ja.github.io/TestCoverage/ より9
© ZOZO Technologies, Inc.ユニットテストとカバレッジを使って品質を見える化するツール SonarCloudを導入 ● 10・カバー率、ファイルごとの未カバー箇所のチェック ・セキュリティ的に不備がある箇所の自動チェック ・コードの不吉な匂いの自動チェック(定数のEnum化する提案、文字列を定数化する提案、メソッドの分割の提案、引数が多すぎる指摘など) 参考:書籍 リファクタリング:第三章コードの不吉な匂い(https://www.amazon.co.jp/dp/427405019X)
© ZOZO Technologies, Inc.ユニットテストとカバレッジを使って品質を見える化するツール SonarCloud GitHubプラグイン 11・PullRequestごとに自動チェック ・ブランチの差分のみを計測する ・基準を満たさないとマージできないなどの設定も可能 ・人の手を介さずに品質の見える化が実現可能
© ZOZO Technologies, Inc.ユニットテストを書く意味・カバレッジを計測する意味 当たり前のようにテストを書く前に一度チームでなぜやるのか会話してみるのがおすすめです。 12