核心概念
リッチステートのシミュレーション集団を活用することで、自動化テストと手動テストの両方において、コードカバレッジと障害検出率が大幅に向上する。
要約
本論文は、メタでのリッチステート・シミュレーション集団の導入と活用について報告している。
まず、シミュレーション集団の管理システムについて説明する。シミュレーション集団には、空の初期状態(Empty State)と、過去の相互作用履歴に基づいて事前に進化させたリッチな状態(Rich State)の2種類がある。
自動テストでは、Sapienzシステムを使ってFacebook、Messenger、Instagramのアプリをテストした。その結果、リッチステートを使うことで、コードカバレッジが平均38%、エンドポイントカバレッジが61%向上し、検出された障害も平均115%増加した。
一方、手動テストでは、「テストユニバース」と呼ばれる進化するシミュレーション環境を提供している。テストユニバースでは、エンジニアがテストユーザーとして振る舞い、リアルなコンテンツと相互作用を行うことができる。このテストユニバースは2022年11月に導入され、現在21,000人以上のメタ社員に利用されている。
全体として、リッチステートのシミュレーション集団を活用することで、自動化テストと手動テストの両方において、大幅な効果が得られることが示された。
統計
Facebook Androidアプリのエンドポイントカバレッジが47%増加
Facebook iOSアプリのエンドポイントカバレッジが74%増加
Messengerアプリ(Android/iOS)のエンドポイントカバレッジが27%増加
Instagramアプリ(Android)のエンドポイントカバレッジが68%増加
全アプリ合計で、エンドポイントカバレッジが61%、PLカバレッジが38%増加
単一ビルドでの障害検出数が161%増加
複数ビルドでの累積障害検出数が115%増加
引用
"リッチステートのシミュレーション集団を活用することで、自動化テストと手動テストの両方において、大幅な効果が得られる。"
"リッチステートを使うことで、コードカバレッジが平均38%、エンドポイントカバレッジが61%向上し、検出された障害も平均115%増加した。"