ソフトウェアテストは、開発プロジェクトにおいて多くの工数を要するプロセスといえます。テストの生産性向上を図るべく、自動化の導入を検討している企業は多いでしょう。テスト自動化の手段として注目されているのが、2020年にリリースされた「Playwright」です。
今回は、テスト自動化に有効なPlaywrightについて、基本からわかりやすく解説します。Playwrightのメリットや使い方、ポイントについてもお伝えするため、ぜひ参考にしてください。
- もくじ
1.Playwrightとは
Playwright(プレイライト)とは、Microsoft社が開発したテスト自動化フレームワークのことです。
WebアプリのE2E(End to End)テストに対応しており、テストコードを記述することでブラウザ操作を自動化できます。
E2Eテストは、ソフトウェアの構成要素をすべて組み込み、全体としての振る舞いを検証するテストです。
多岐にわたる操作を伴うため、手動テストでは担当者の負担が大きくなります。そのため、Webアプリのブラウザ操作を自動化できるPlaywrightは有用といえます。
2.E2EテストにPlaywrightを活用するメリット
WebアプリのE2Eテストを自動化したい場合、Playwrightを活用するメリットは大きいといえます。E2EテストにPlaywrightを活用する主なメリットは、次の3つです。
2-1 さまざまな環境でテストできる
WebアプリのE2Eテストでは、複数のOSやブラウザを組み合わせての検証が必要となります。
Playwrightは主要な環境に対応しているため、さまざまな環境でのE2Eテストが可能です。具体的には、次のような環境におけるE2Eテストを自動化できます。
OS | Windows、macOS、Linux |
---|---|
ブラウザ | Google Chrome、Firefox、Microsoft Edge、Safari |
iOSのSafariやAndroid版Google Chromeにも対応しているため、モバイルOSの自動テストも可能です。Playwrightだけで複数環境の自動テストに対応すれば、環境ごとに異なるテスト自動化フレームワークを使い分ける負担を減らせます。
2-2 導入ハードルが比較的低い
導入ハードルが比較的低いPlaywrightは、幅広いテストチームが早期に導入可能です。
Playwrightは、Webの基本である「JavaScript」、文法がシンプルな「Python」といったプログラミング言語に対応しています。これらはプログラミング経験が少ない人でも習得しやすいため、学習コストを抑えやすいでしょう。
また、ブラウザ操作の自動化に役立つ機能が充実しているため、テストコード記述も比較的容易に行えます。たとえば、ボタンなどの要素が表示されるまで待機する「自動待機機能」を使えば、担当者が複雑な制御処理を記述せずに済みます。
2-3 テスト結果の確認や分析がしやすい
テストコード記述だけでなく、テスト結果の確認や分析がしやすいのもPlaywrightの強みです。
Playwrightで実行したテスト結果は、HTMLのWebページ形式で出力されます。ブラウザ上でテスト結果が可視化されるため、確認や分析が容易です。
また、スクリーンショットの保存や動画の記録を行える機能も提供されており、エビデンスの確保も容易に行えます。このように、Playwrightはテストコードの記述だけでなく、テスト実行後のプロセスの効率化にもつながります。
3.Playwrightの使い方
Playwrightを導入するにあたって、使い方が気になる人も多いでしょう。Playwrightを使うための流れは、大まかに次の5ステップです。
3-1 テスト環境・テストシナリオの用意
PlaywrightでE2Eテストを自動化する場合、テスト環境・テストシナリオは別途用意する必要があります。
テストに使うデバイスやOS、ブラウザの導入・設定、自動化したいテストシナリオの作成を行いましょう。テストデータやテストアカウントを用いる場合は、この段階で作成しておく必要があります。
3-2 Playwrightのインストール
Playwrightを使うためにはインストールが必要です。
インストールは、パッケージ管理ツールである「npm」や「Yarn」のコマンドにより行えます。JavaScriptでPlaywrightを用いる場合のインストールコマンドは次のとおりです。
npmの場合 | npm init playwright@latest |
---|---|
Yarnの場合 | yarn create playwright |
コマンドを実行すると、いくつかの設定について質問されます。画面の指示に従ってインストールを進めましょう。
また、Pythonの場合はパッケージ管理ツールの「pip」などを用いてインストールできます。pipを用いる場合のインストールコマンドは次のとおりです。
pipの場合 | pip install playwright |
---|
なお、JavaScript以外のプログラミング言語を使用する場合は、各言語に合わせた「バインディング」と呼ばれる追加のインストールが必要です。
3-3 テストコードの記述
用意したテストシナリオに沿って、テストコードを記述します。
PlaywrightのAPI(機能にアクセスするための窓口)を用い、各言語のルールに従いプログラミングを行います。下記は一例ですが、JavaScriptでGoogle Chromeブラウザを起動するコードです。
const browser = await chromium.launch();
「chromium.launch()」の部分がPlaywrightにおけるAPIの1つです。PlaywrightのAPIは多数ありますが、基本的に各言語間で同様のキーワードにより利用できます。
3-4 テストの実行
完成したPlaywrightのテストコードは、npmやYarnのコマンドで実行できます。テストを実行する際のコマンド例は次のとおりです。
npmの場合 | npx playwright test [テストコードのファイルパス] |
---|---|
Yarnの場合 | yarn playwright test [テストコードのファイルパス] |
こうしたコマンドを実行すると、Playwrightがテストコードに従ってテストを実行します。
3-5 テスト結果の確認・分析
テストコードの実行が完了すると、テスト結果が出力されます。特別な設定を行っていなければHTMLファイルとして出力されるため、ブラウザ上でテスト結果を確認できます。NG項目の有無やその原因、傾向などを確認・分析しましょう。また、スクリーンショットや動画を保存している場合は、それらも想定どおりになっているかの確認が必要です。
4.PlaywrightでE2Eテストを自動化する際のポイント
PlaywrightはE2Eテストの自動化における強力なソリューションですが、利用の際に押さえておきたいポイントがあります。PlaywrightでE2Eテストを自動化する際のポイントは、次の3つです。
4-1 テスト自動化そのものを目的にしない
テスト自動化そのものが目的にならないように注意しましょう。
テスト自動化は本来、テスト工数削減やテスト品質向上などを目的として行うものです。テスト自動化が目的になると、本来の目的が達成できずPlaywrightがかえって足かせとなる場合もあります。
たとえば、プログラミングの知識を持つテスト担当者がいない場合、開発者の工数が教育のために奪われることが考えられます。
テスト自動化が目的になっていると、適切な対策を講じられないまま工数を浪費することになるでしょう。目的と手段が逆になるのはテスト自動化の代表的な失敗例であり、注意が必要です。
4-2 テストシナリオとテストコードの整合性を保つ
テストシナリオとテストコードの整合性を保ちましょう。
Playwrightによるテスト自動化では、テストコードと基になるテストシナリオの双方を管理することになります。このとき、テストコードだけを更新し、テストシナリオの更新を省略するのはNGです。
テストコードとテストシナリオに不整合が生じると混乱につながるだけでなく、管理が属人化(特定の人にしか務まらなくなる事象)してしまいます。こうした事態を防ぐために、テストコードとテストシナリオはセットで更新するようにしましょう。
4-3 ほかのテスト自動化手段も併用する
Playwrightが必ずしも、テストチームにとって最善のテスト自動化手段とは限りません。
テスト担当者にプログラミングの知識が乏しい場合、教育コストが高くなります。また前述のように、テストシナリオとテストコードの二重管理という欠点も無視できません。
テスト担当者がプログラミングに詳しくない場合は、ほかの自動化手段の併用も考えましょう。
おすすめの自動化手段は、テスト自動化ツール「T-DASH」です。日本語のテストケースからスクリプトを自動生成でき、プログラミングの知識が必要ありません。教育コスト・導入コストを抑えてテスト自動化を実現できます。詳しくはこちらをご覧ください。
まとめ
Playwright(プレイライト)は、Microsoft社が開発したWebアプリ向けのテスト自動化フレームワークです。
幅広い環境におけるE2Eテストを自動化でき、テスト結果の確認や分析がしやすいなど多くのメリットがあります。
ただし、Playwrightを導入するためにはプログラミングの知識が求められます。
テスト担当者がプログラミングに詳しくない場合や、教育コスト・導入コストを抑えたい場合は、別のテスト自動化手段も検討しましょう。