1つの環境で回すと400件中382件、95.5%の欠陥が見つかりました。
3つに増やすと100.0%です。伸びは4.5ポイントで、時間は3倍になります。
時間は環境の数だけ倍々に増えます。見つかる件数は、同じようには増えません。
Playwrightは、3つの閲覧環境に対応しています。公式はWindows・Linux・macOS上のChromium、WebKit、Firefoxに対応し、手元でも継続的な仕組みの上でも、画面ありでも画面なしでも動くと述べています。
全部で回すべきなのか。環境の組み合わせを変えて実際に数えて比べました。
欠陥 400 件。1つの環境で一式を回すと 620秒かかる 回す環境の組み合わせを変えて、見つかる件数と時間を比べる 回す環境 見つけた欠陥 検出率 かかる時間 1件あたりの時間 A 382件 95.5% 620秒 1.62秒 A+B 389件 97.3% 1240秒 3.19秒 A+B+C 400件 100.0% 1860秒 4.65秒
1つで95.5%です。3つ回して100.0%になりますが、伸びは4.5ポイントでした。
時間は620秒から1860秒へ、そのまま3倍です。1件あたりの時間は1.62秒から4.65秒になりました。
この計測では、欠陥の8割超をどの環境でも出るものとして置きました。だから追加の環境の見返りが小さくなります。
逆に、環境ごとの差が大きい作りなら伸びは大きくなります。先に測るべきは、自分の欠陥がどちらに寄っているかです。
毎回全部を回すかどうかの決め方はE2Eテストの記事でも扱っていて、変更の内容で回す範囲を変える手があります。
時間は3倍になるが、検出率は4.5ポイントしか動かない。
Playwright supports Chromium, WebKit and Firefox on Windows, Linux and macOS, locally or in CI, headless or headed, with native mobile emulation for Chrome (Android) and Mobile Safari.原文Playwright 公式ドキュメント「Installation」 この内容の有効期限2027-02-18
並列は既定で効きます。ただし1件を分割できないので、最長の1件が下限になります。
Playwrightは、既定で並べて動かします。公式は既定では、画面を出さずにChromium・Firefox・WebKitをまたいで並列に走る(設定で変えられる)と述べています。
並列を増やせばどこまで縮むのか。実際に割り当てて数えました。
テスト 800 件。合計 6047秒、いちばん長い1件は 119.3秒
並列数と、割り当ての順番を変えて、一式が終わるまでの時間を見る
並列数 そのままの順 長い順に割り当て 理想(合計÷並列数) いちばん長い1件
1並列 6047秒 6047秒 6047秒 119秒
2並列 3045秒 3024秒 3024秒 119秒
4並列 1542秒 1512秒 1512秒 119秒
8並列 779秒 756秒 756秒 119秒
16並列 423秒 378秒 378秒 119秒
32並列 245秒 189秒 189秒 119秒
64並列 164秒 119秒 94秒 119秒
128並列 133秒 119秒 47秒 119秒
64並列で119秒に届き、そこから先は変わりません。理想は47秒ですが、届きません。
止まる理由は、1件を分けられないからです。いちばん長い1件が、そのまま下限になります。
32並列を見ると、245秒と189秒で56秒の差があります。並列数は同じです。
差は順番だけです。長いものを先に割り当てると、最後に長いものが残る事態を避けられます。
だから並列を増やす前に、まず順番を見ることになります。費用をかけずに縮む部分がここにあります。
By default tests run headless in parallel across Chromium, Firefox and WebKit (configurable in playwright.config).原文Playwright 公式ドキュメント「Installation」 この内容の有効期限2027-02-18
通しで試す道具です。だからこそ、これだけに寄せると時間ばかりかかって届きません。
Playwrightは、通しで試すための仕組みです。公式はPlaywright Testは、現代のWebアプリのための端から端まで試す枠組みであると述べています。
では通しだけに寄せるとどうなるのか。層ごとの配分を変えて実際に比べて数えました。
欠陥 300件。内訳は関数の中 176件・繋ぎ目 85件・通しでしか出ない 39件 層ごとの1件あたりの時間は 単体0.02秒・結合1.5秒・E2E20秒として置いた 構成 見つけた欠陥 検出率 一式の実行時間 1件あたりの時間 単体だけ 400件 150件 50.0% 8.0秒 0.02秒 ピラミッド 400/60/8 228件 76.0% 258.0秒 0.55秒 逆ピラミッド 40/40/60 138件 46.0% 1260.8秒 9.01秒 E2Eだけ 80件 34件 11.3% 1600.0秒 20.00秒
E2Eだけ80件では、検出率が11.3%で1600.0秒かかりました。単体だけ400件の8.0秒より200倍長い時間です。
いちばん良かったのはピラミッドで、258.0秒で76.0%でした。
通しでしか出ない欠陥は39件、全体の13%です。ここを取るために通しの試験を置きます。
残りの87%は、もっと安い層で取れます。通しの件数を増やしても、届く範囲はあまり広がりません。
3つの計測はいずれも手元で書いた模型で、実際のPlaywrightを動かしたものではありません。欠陥がどの環境で出るかの割合は置いた値で、実際の分布とは違います。1環境620秒やテスト1件の秒数も置いた値です。層ごとの検出率も、件数が増えるほど上限に近づく形として置いています。ここで見せているのは、環境を足すと時間は倍々でも検出率は同じようには増えないという点と、並列にはいちばん長い1件という下限があるという点の2つです。
Playwright Test is an end-to-end test framework for modern web apps.原文Playwright 公式ドキュメント「Installation」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る