LayerX エンジニアブログ

LayerX の エンジニアブログです。

バクラク事業部のテストピラミッド設計

こんにちは、バクラク事業部QAチームのteyamaguです。今回は、私たちが自動テストの整備を進める上で指針として設計した「バクラク事業部のテストピラミッド」について紹介します。このピラミッドは、効果的な自動テストを構築するために、自動テストのガイドラインとして機能しています。

バクラク事業部におけるテストピラミッドの概要

バクラク事業部では、1年前からフロントエンド・バックエンドの統合的な自動テストの整備を進めています。自動テストにおける大きな課題の1つが「どのテストで何を確認すべきか?」です。そこでバクラク事業部では、事業部全体で納得できる形のテストピラミッドを設計し、これを自動テストの指針としています。私たちは、フロントエンドとバックエンドのエンジニアと議論を重ね、フロントエンドには「テスティングトロフィー」、バックエンドには「テストピラミッド」の概念を取り入れた形で、各種テストの目的と構成を定義しました。

設計したテストピラミッド

テストツールやフレームワークは進化し続けるため、これらの情報は現時点のものであり、変更に対応する前提です。

以下、それぞれのテストについて詳しく説明します。

定義したテストピラミッド、それぞれの紹介

1. E2Eシナリオテスト

E2Eテストでは、システム全体を対象に、お客様の実現したいユースケースが機能しているか、障害がないかを確認します。テストの実行時間が長くなるため、厳選したテストのみを自動化しています。ツールにはAutifyやPlaywrightを使用し、プロダクトの状況やテストに応じて選定しています。 この部分のテストの1例としては、「申請者がログインし、経費精算申請を提出できる」かを検証する自動テストを作成しています。

2. [フロントエンド] ページUIテスト

ページUIテストは、フロントエンドの操作画面が正しく表示され、操作が問題ないかを確認するテストです。主にPlaywrightとMSWを使い、API部分はスタブやモックで対応しています。プロダクトの開発リポジトリの構成やPage Object Modelの整備状況に合わせて、Playwrightの運用を変えています。 この部分のテストの1例としては、「勘定科目の切り替えに伴う源泉所得税の更新」が正確に行えるかを検証する自動テストを作成しています。

3. [フロントエンド] コンポーネントUIテスト

フロントエンドのUIコンポーネントが正しく表示・操作できるかを検証します。ページUIテストと同様にAPI部分はスタブを使用します。ツールにはStorybookを用いていますが、まだ導入途中のプロダクトもあり、引き続き検討中です。

4. [バックエンド] APIテスト

バックエンドのAPIが設計通りに動作することを確認します。APIは多層構造のため、個別のAPIが正しい値を返すこと、複数のAPIを組み合わせた際に正常動作することなどを検証します。ツールにはrunnを活用し、必要に応じてユニットテストフレームワークも併用します。 この部分の自動テストの1例としては、「物理カードの認証APIが特定のロール以外でエラーを返すか」を確認する自動テストなどです。

5. [フロントエンド] コンポーネントユニットテスト

UIコンポーネントのコードが意図通りに動作するかを確認します。テスト対象以外の環境はスタブやモックで再現し、Jest+testing-libraryやVitest+testing-libraryを用いて実施しています。 この部分のテストの1例としては、「ページネーションコンポーネントで特定のページを指定した際にデータが正しく返すか」を検証する自動テストを行っています。

6. [フロントエンド・バックエンド] ユニットテスト

フロントエンド・バックエンドの各コンポーネントが想定通り動作することを確認します。データベースを使用したテストやスタブ・モックを用いたテストがあり、フレームワークにはGo TestingやJest、Vitestを使用しています。

まとめ

バクラク事業部で設計したテストピラミッドは、各レイヤごとのテスト量や1つのテストの実行時間のバランスを考慮し、そのレイヤのテストをまとめて実行した際に全レイヤで同じくらいの実行時間にあることを目指しています。特に、E2Eテストはテストの実行時間が長くなりがちなため、テストの数を厳選しつつ、お客様のユースケースを確実にカバーできるように進めています。

フロントエンドのUIテストやバックエンドのAPIテストについても、プロダクトごとの特性やチームの状況に応じて、適切なツールと手法を選んでいます。例えば、E2EシナリオテストにはAutifyやPlaywrightを使用し、APIテストにはrunnを導入して、それぞれのテスト対象に応じた最適な確認ができるようにしています。

また、テストツールや技術は日々進化しているため、現在のテストピラミッドも今後の変化に対応できる柔軟な設計を意識しています。バクラク事業部では、こうした進化を踏まえた上で、より効率的で効果的な自動テストを整え、常に改善を続けていく方針です。

LayerXでは、このように自分たちで指針を考え、日々改善しながら、プロダクトを通してお客様へ価値を提供しています。こういう活動に興味があるとか、このテストピラミッドについてもっと聞いてみたいといった方がいらっしゃいましたら、ぜひお話ししましょう。 以下のリンクより、私とのカジュアル面談をお申し込みいただけます。

jobs.layerx.co.jp