LoginSignup
44
40

More than 3 years have passed since last update.

Developers Summit 2021 の「ソフトウェア品質を高める開発者テスト」で学んだこと

Last updated at Posted at 2021-02-18

はじめに

本稿は、Developers Summit 2021 の以下のセッションで学んだことを書きます。

セッション名:ソフトウェア品質を高める開発者テスト
講演者:高橋 寿一[ロジギアジャパン]
セッション詳細:https://event.shoeisha.jp/devsumi/20210218/session/3019/

学んだこと

上流品質を担保(Shift Left)するためには?というテーマのセッション。

上流テストを十分行った方が、出荷後品質が良いというアンケート結果もある。

デイリーで上流品質を担保するために重要なことは以下。

  • 単体テスト
  • リファクタリング
  • 要求仕様のテストケース展開

Googleの話

  • Googleの単体テストの網羅率の中央値は78%で、システムテストはほとんど実施しない。
  • Google単体テスト基準として、最初は60%以上としている。
  • よく変更されるコードの網羅率を上げる。レガシーコードはある程度、ほおっておいても良いという考え方。

2割の部分に8割以上のバグが潜んでいる。

  • よく変更されるファイル
  • 長いファイル
  • 複雑度が高いファイル

関数単位でなく、ファイル単位で単体テスト計画を立てる必要がある。

既存プロダクトに対しては、上記の2割の部分を抽出して、単体テスト計画を立てるようなコンサルをすることもある。

長いファイル・複雑度が高いファイルは分けるようにリファクタリングする。
大きいクラスを分けるだけで、バグが凄く減る。

要求仕様のテストケース展開

  • 要求仕様とテストケースは、関連付けてテストを行うことが必要。
  • 要件定義を明確に行った場合と、行わない場合で検出不具数は2.7倍違う。

テストは基本すべて自動化し、すべての自動テストは最低その日に終了する。
その日に品質担保できないものは、出荷後の不具合に繋がりやすい。

自動化健全性チェックリスト

  • 網羅率上がっているか
  • スピード十分あるか
  • 自動化ですべてのバグが見つからないことを認識しているか

セキュリティバグや非機能バグは、自動単体テストでなく、別の方法で実施する。

テストスピードが重要なので、そういう意味では単体テストがお得。
MVC分離でUIテストのテスト時間の最小化する。

事例の紹介

プルリク作成後、2分間でビルドし、3分間で単体テストを実施し、3分間で静的解析し、1時間に1回の頻度で8分間でシステムテストを実行する。
image.png

まとめ

出荷前に品質を高めるためのノウハウを学ぶことができました。

ちなみに私は、普段はエンジニアリングマネージャーとして、チームの皆で楽しく開発する施策を色々実施しています。詳しくは以下を参照ください。
1年以上かけて生産性倍増+成長し続けるチームになった施策を全部公開

Twitterでも開発に役立つ情報を発信しています → @kojimadev

44
40
2

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
44
40