エンジニア選書シリーズ[入門]Webフロントエンド E2E テスト
――PlaywrightによるWebアプリの自動テストから良いテストの書き方まで
――
2024年6月19日紙版発売
2024年6月19日電子版発売
渋川よしき,武田大輝,枇榔晃裕,木戸俊輔,藤戸四恩,小澤泰河 著
B5変形判/264ページ
定価3,520円(本体3,200円+税10%)
ISBN 978-4-297-14220-9
書籍の概要
この本の概要
E2Eテスト(End-to-End Testing)とは,システムの端から端(End-to-End)まで,全体を通して行うソフトウェアテストを指します。本書ではE2Eテストを「ユーザーの視点でWebシステムの動作を確認する自動テスト」として定義し,E2Eテストをこれからプロジェクトに導入しようとしている人,すでに導入しているがパフォーマンスや保守性で課題を感じている人を対象に,E2Eテストのフレームワークとして近年人気が急上昇しているPlaywrightをツールとして,その目的からモダンなノウハウまで,E2Eテスト初心者の方にもわかりやすくハンズオンを交えながら解説します。CIへ組み込む方法やユニットテストとの棲み分けなど,E2Eテストを実際の開発現場に投入するうえでの知見も数多く紹介します。
こんな方におすすめ
- E2Eテストをこれからプロジェクトに導入しようとしている人
- すでに導入しているがパフォーマンスや保守性で課題を感じている人
本書のサンプル
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
目次
第1章 Playwrightハンズオン
1.1 Playwrightのセットアップ方法
- 1.1.1 インストールと初期設定
- 1.1.2 Playwrightのディレクトリ構成
1.2 テスト用Webアプリケーションの作成
- 1.2.1 Playwrightの導入
1.3 表示のテストとテストの実行方法
- 1.3.1 新規ページの作成
- 1.3.2 最初のテスト
- 1.3.3 テストの実行
1.4 ページ遷移のテストとテスト生成機能
- 1.4.1 フォーム入力のテストを生成する
1.5 フォーム操作のテスト
1.6 まとめ
第2章 E2Eテストツールの紹介
2.1 E2Eテストツールの歴史
2.2 ブラウザベースのE2Eテストツール
- 2.2.1 Cypress
- 2.2.2 Puppeteer
- 2.2.3 Playwright
- 2.2.4 E2Eテストツールの比較
2.3 WebフロントエンドフレームワークとE2Eテストツール
- 2.3.1 Svelte
- 2.3.2 Vue.js
- 2.3.3 React
- 2.3.4 Angular
- 2.3.5 Electron
2.4 まとめ
第3章 Playwrightのテスト用ツールセット(1)ロケーター
3.1 テストツールのカテゴリ
- [column]アサーションとPlaywright
3.2 ロケーター
- 3.2.1 getByRole()
- 3.2.2 getByLabel()
- 3.2.3 getByPlaceholder()
- 3.2.4 getByText()
- 3.2.5 getByAltText()
- 3.2.6 getByTitle()
- 3.2.7 getByTestId()
- [column]data-testidはいつ使うべきか?
- 3.2.8 その他のロケーター
3.3 壊れにくいテスト
- 3.3.1 ラベルやプレースホルダーのみによる要素取得
- 3.3.2 適切なラベルの付け方
3.4 getByRole()で指定可能なロール
- 3.4.1 テストで頻繁に利用するロール
- 3.4.2 テストでの利用頻度が低いと思われるロール
3.5 高度なロケーター
- 3.5.1 フィルター
- 3.5.2 一度絞り込んだ要素の中からさらに検索
- 3.5.3 複数の要素の絞り込み
- 3.5.4 その他のロケーター
- 3.5.5 複数要素のあるリストやテーブルからの情報取得
3.6 まとめ
第4章 Playwrightのテスト用ツールセット(2)ナビゲーション,アクション,マッチャー
4.1 ナビゲーション
- 4.1.1 goto()
- 4.1.2 waitForURL()
- 4.1.3 toHaveTitle()とtoHaveURL()
4.2 アクション
- 4.2.1 アクション可能性
- 4.2.2 キーボード操作:fill()/clear()/press()/pressSequentially()
- 4.2.3 チェックボックスやラジオボタンのチェック:check()/uncheck()
- 4.2.4 セレクトボックスの選択:selectOption()
- 4.2.5 マウス操作:click()/dblclick()/hover()/dragTo()
- 4.2.6 フォーカス:focus()
- 4.2.7 ファイルのアップロード:setInputFiles()
4.3 マッチャー
- 4.3.1 toContainText()/toHaveText()/toBeVisible()/toBeAttached()
- 4.3.2 not
- 4.3.3 toBeChecked()
- 4.3.4 toBeDisabled()とtoBeEnabled()
- 4.3.5 toBeEmpty()とtoBeHidden()
- 4.3.6 toBeFocused()
- 4.3.7 toHaveCount()
- 4.3.8 toHaveValue()とtoHaveValues()
- 4.3.9 その他のマッチャー
4.4 リトライの挙動
- 4.4.1 リトライのタイムアウト
- 4.4.2 固定時間を待つコードはやめよう
4.5 まとめ
第5章 テストコードの組み立て方
5.1 何をテストとするか?
- 5.1.1 テストの分類とPlaywrightができること
- 5.1.2 テストのボリュームのパターン
- 5.1.3 最初の一歩:一筆書き
5.2 テストコードを書く
- 5.2.1 test()
- 5.2.2 テストのグループ化
- [column]ビヘイビア駆動開発(BDD)の用語
- 5.2.3 準備・片付けコードを共有する
- 5.2.4 すばやく繰り返す
5.3 テストのコメントを書くべきか
5.4 テストファイルの命名
5.5 ビジュアルリグレッションテスト
5.6 まとめ
第6章 実践的なテクニック
6.1 スクリーンショットとビデオ
- 6.1.1 スクリーンショットの撮影
- 6.1.2 ビデオの撮影
6.2 認証を伴うテスト
- 6.2.1 認証を使わないモードを実装する
- 6.2.2 セッション情報を共有する
6.3 ネットワークの監視とハンドリング
- 6.3.1 ネットワークの監視
- 6.3.2 ネットワークのハンドリング
6.4 複数ブラウザでの動作確認
- 6.4.1 ブラウザの基礎知識
- 6.4.2 Playwrightのサポートブラウザ
- 6.4.3 ブラウザのインストール
- 6.4.4 ブラウザの設定
- 6.4.5 複数ブラウザのテストを実行
- 6.4.6 ブラウザのエミュレーション
- [column]Playwright Test for VSCodeで実行するブラウザを指定するには
- [column]設定のスコープ
6.5 まとめ
第7章 ソフトウェアテストに向き合う心構え
7.1 テストの7原則
7.2 ソフトウェアテストの構成要素
- 7.2.1 テストレベル
- 7.2.2 テストタイプ
- [column]確認テストとリグレッションテスト
- 7.2.3 テスト技法
- [column]テスト技法を理解すると設計力も上がる
7.3 コード品質とは何か?
7.4 E2Eテストとユニットテストの効率の良い棲み分け
- [column]パラメータ化テスト
7.5 テストコードの設計方針とリファクタリング
- 7.5.1 テストは単独で実行できるようにする
- 7.5.2 テストは単独で読めるようにする
- 7.5.3 壊れにくいテストにする
7.6 モックとの付き合い方
7.7 E2Eテストの投資対効果を上げる
- [column]テスト自動化の8原則
7.8 まとめ
第8章 E2Eの枠を超えたPlaywrightの応用例
8.1 ランダムテスト
- 8.1.1 ランダムにリンクをクリックするテスト
8.2 コンポーネントのテスト
- 8.2.1 インストール
- 8.2.2 コンポーネントに対するテストのメリット/デメリット
- 8.2.3 コンポーネントに対するテストのサンプル
- 8.2.4 コンポーネントに対するビジュアルリグレッションテスト
8.3 再利用可能性
- 8.3.1 テストの流れを把握しやすくする
- 8.3.2 テストを書きにくい画面に気づいたとき
8.4 テストの並列実行
- 8.4.1 並列実行におけるPlaywrightの仕様
- 8.4.2 並列にテストを実行しないようにする
- 8.4.3 並列にテストを実行する際の注意
8.5 まとめ
第9章 Web APIのテスト
9.1 PlaywrightにおけるWeb APIテスト
9.2 テストの実行例
9.3 タイムトラベルデバッグ
9.4 より詳細なテスト方法
- 9.4.1 メソッド
- 9.4.2 ヘッダとクエリの送信
- 9.4.3 ボディの送信
9.5 通常のE2Eテストの中からWeb APIを呼び出す
9.6 まとめ
第10章 E2Eテストの実戦投入
10.1 どのテストから書き始めるか
- 10.1.1 人力テストからE2Eテストへ移行する
- 10.1.2 テストシナリオを洗い出してからE2Eテストを書く
- 10.1.3 ユニットテストから書き始める
10.2 E2Eテストをどのリポジトリに置くか
- 10.2.1 E2Eテスト専用リポジトリ
- 10.2.2 フロントエンドのリポジトリとの相乗り
10.3 CIでのE2Eテスト実行
- 10.3.1 GitHub ActionsでPlaywrightのE2Eテストを実行
- 10.3.2 CI実行結果のレポートを確認
- 10.3.3 CI実行時間の短縮
10.4 プロジェクト管理との統合
- 10.4.1 テストのプロジェクト管理
- 10.4.2 自動テストとの統合
10.5 まとめ
第11章 Playwrightの内部構造
11.1 Playwrightのアーキテクチャ
11.2 他のE2Eテストツールのアーキテクチャ
- 11.2.1 Cypressのアーキテクチャ
- 11.2.2 Seleniumのアーキテクチャ
11.3 クライアント/サーバ構成でのテスト実行
- 11.3.1 サーバの起動
- 11.3.2 接続先サーバの指定
- 11.3.3 テストの実行
- 11.3.4 使いどころ
11.4 まとめ
付録
付録A 生成AIによるテストコードの自動生成
- A.1 テストの作成
- A.2 テストデータの作成
- A.3 テストケースの作成
付録B VSCode Dev Containersを利用した環境構築
- B.1 VSCode Dev Containersとは
- B.2 セットアップ手順
- B.3 PlaywrightのUIモード実行
付録C ユニットテストフレームワークとの共存
- C.1 Jestとの共存
- C.2 Vitestとの共存
付録D Playwrightを使ったスクレイピング
- D.1 スクレイピングを行う際の注意
- D.2 プロジェクトの作成とひな形のコード生成
- D.3 構造の修正とコマンドライン引数のパース
- D.4 都道府県情報のパース
- D.5 週間天気のパース
付録E Microsoft Playwright Testing
- E.1 Microsoft Playwright Testingを試す
- E.2 ワークスペースを作成する
- E.3 テスト環境を設定する
- E.4 テストを実行する
この本に関連する書籍
-
ソフトウェアテスト自動化の教科書 〜現場の失敗から学ぶ設計プロセス
「開発側は効率化されてきたのに,テストはいつも炎上ばかり」 「テストの数は増える一方なのに,コストを減らせと言われる」 「やっと自動テストを導入できたけど,...
-
[改訂3版]演習で学ぶソフトウェアテスト 特訓200問 ―JSTQB認定テスト技術者資格 Foundation Level対応
Foundation Levelシラバス2018(Version 2018.J03)対応 本書は,JSTQB(Japan Software Testing Qualifications Board)が開催しているテスト技術者資格 Foundation L...
-
ソフトウェアテスト技法練習帳 ~知識を経験に変える40問~
新人や経験の浅いテストエンジニアにとって,座学で学んだ「ソフトウェアテスト技法」を実務に活かそうにも,どのように適用したらよいかわからないというのが悩みです...