3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

テストサイズに対する覚書

Posted at

モチベーション

テストを実施する際に、UT(単体テスト)、IT(結合テスト)などそれぞれ工程はあるが、
具体的にどんなテストを書くかそれぞれの認識が違うため、すり合わせが大変。

googleで提唱されている、small、middle、largeテストでテスト分類をして認識齟齬を無くしたい
https://testing.googleblog.com/2010/12/test-sizes.html

テストサイズとは?

テストサイズとは、リソースの量や実行場所、実行時間などによって分類する方法。
以下のような分類があります。

small

モジュール単位(単一のソースファイル)に対してテストを行うもの別なモジュールとの連携はモックを利用する。

middle

単一のマシンに閉じた環境であれば外部リソースの利用を許容するテストです。
データベースは、dockerで立ててテストデータは、テスト担当者が作る。
ファイル転送など、別のPCへアクセスするものはモックを利用する。
クラウドへのアクセスも、ローカルPC上でテストできればテスト対象となるが、クラウドを直接使うようなテストは対象外とする。

large

自動テストからリモートマシンへのネットワークアクセスなども許容するテストです。
モックを使わず、全て本物を使用してテストを行う。
テストのロボット(playwrightなど)を使って実施する。

どこを重点的にやるか

テストレベルにおいて理想的な比率を示したものをよくテストピラミッドと表現します。
上に行くほどテストのケース数が少ない方が、テスト効率が良いという考えです。
実際、E2Eテストが一番重いので、量が多いとなかなか自動テストが終わらなくマージできないといったプロジェクトもありました。
このテストピラミッドに対応したテストを計画することが基本と考えています。

image.png

どこを重点的にやるか(アレンジ)

最近のプログラムではライブラリが充実しており、複雑なプログラムを書く機会が少ないと感じています。
個人的にはmiddleテストを重点的にやった方が、不具合が取れると考えています。
なので、テストピラミッドではなく、テストトロフィーを推奨します。
これにより、機能の仕様確認に近いテストが多く実施され品質の保証がしやすくなると考えています。

image.png
*saticはlinterなどの静的解析を指す

各工程でのテスト

UT、ITでそれぞれどんなテストを実施するかについてですが、
UTは、smallテストと、middleテストを実施するのが良いと考えています。
理由としては、この工程ではできるだけ不具合を取りたいのでmiddleテストまで含めたい考えです。

ITでは、largeテストを実施を考えています。
シナリオを作ってテストするのがlargeテストですが、実施コストが高いので王道パターンを自動テストに組み込み実施するのが良いと考えています。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?