mablではテスト出力やアクティビティを確認するためのさまざまなアプリケーション内ダッシュボードを提供していますが、アプリケーションによってはそれぞれのビジネスに合わせて作成した専用のレポートが役立つ場合もあります。BigQuery用のmablインテグレーションを利用すると、BigQueryやLooker Studioなどのツールでこうしたレポートをリアルタイムで抽出、変換、表示することができます。
mabl BigQueryインテグレーションでは、リアルタイムのカスタムレポートを利用して、テストパターンの詳細な分析を行うことができます。この記事では、mabl BigQueryインテグレーションの設定手順とmabl BigQueryデータセットのテーブルの概要について説明します。
セットアップ
mabl BigQueryインテグレーションを使用するには、有料のGCP BigQueryアカウントが必要です。
無料のトライアル用Google Cloudアカウントで利用できるBigQueryサンドボックス機能は、mabl BigQueryのフィードエクスポートでは使用できません。これは、BigQueryサンドボックスでストリーミングインサートがサポートされていないためです。
mabl用のサービスアカウントの作成
配信先のGoogle Cloud Platformプロジェクトに、BigQuery Data Editorとして、サービスアカウントmabl-feeds@mabl-prod.iam.gserviceaccount.comを追加します。詳細はこちら。
代替IAM権限のセットアップ
mablのmabl-feeds@mabl-prod.iam.gserviceaccount.comユーザーをより厳しく制限する場合は、以下の権限を持つカスタムIAMロールを作成します。
bigquery.datasets.createbigquery.datasets.getbigquery.tables.createbigquery.tables.getbigquery.tables.updatebigquery.tables.updateData
このカスタムIAMロールをターゲットGCPプロジェクトのmablサービスアカウントに割り当てます。
BigQueryインテグレーションの設定
mablアプリケーションで [Settings] [Integration] に移動し、BigQueryインテグレーションの [+ Setup] ボタンをクリックします。
BigQueryインテグレーションページで、エクスポート先のプロジェクトID、データセット名、エクスポートテーブルのプレフィックスを追加します。オプションで、[Redact personal information fields] をオンにすることもできます。[Save] をクリックして変更内容を保存します。
個人情報フィールドを編集
[Redact personal information fields] をオンにすると、以下のフィールドがBigQuery Exportフィードから除外されます。
trigger_user_emailactor_email
エクスポート時にこれらのフィールドのエントリがPII_REDACTEDという値に置き換えられます。plan_nameやlabelsなど、その他のフリーテキストフィールドは引き続き含まれます。mablは、これらのフィールドの内容を検査しません。
BigQueryテーブルのレイアウト
BigQueryインテグレーションでは、mablデータのストリーミングエクスポートが利用できます。BigQuery Exportフィードを使用して最初のmablテストを実行すると、mabl_exportデータセットと以下のテーブルが作成されます。
- プラン実行:
<table_prefix>_plan_run - テスト実行:
<table_prefix>_journey_run - 失敗の理由:
<table_prefix>_run_categorization - パフォーマンステストの実行:
<table_prefix>_performance_test_run - アクティビティフィード:
<table_prefix>_activity_feed
mabl BigQuery Exportフィードでは、テストは "journey" と呼ばれます。
たとえば、mablでBigQueryインテグレーションを設定する際にデフォルト名を使用した場合は、次のBigQueryテーブルが作成されます。
<your-project>:mabl_export.mabl_plan_run<your-project>:mabl_export.mabl_journey_run<your-project>:mabl_export.mabl_run_categorization<your-project>:mabl_export.mabl_performance_test_run<your-project>:mabl_export.mabl_activity_feed
パーティション
これらのテーブルは、列に基づいて日ごとにパーティション分割されます。
<table_prefix>_plan_run (start_time列)<table_prefix>_journey_run (start_time列)<table_prefix>_run_categorization (created_time列)<table_prefix>_performance-test_run (start_time列)<table_prefix>_activity_feed (created_time列)
一定期間の経過後にテストデータを破棄する場合は、BigQueryデータウェアハウスでパーティションの有効期限を設定します。
テーブルスキーマ
プラン実行テーブル
*_plan_runテーブルは、統合ワークスペースのすべてのプラン実行を含み、プラン実行の完了時に書き込まれます。
| 列名 | タイプ | 説明 |
|---|---|---|
| id | String | プラン実行ID |
| plan_id | String | プランID |
| plan_name | String | プラン名 |
| plan_url | String | プランUIのURL |
| status | String | プラン実行ステータス |
| success | Boolean | プラン実行全体の成功 |
| start_time | Timestamp | プラン実行の開始時刻 (UTC) |
| stop_time | Timestamp | プラン実行の停止時刻 (UTC) |
| runtime_millis | Integer | プラン実行の合計時間 (ミリ秒) |
| tags | String, Repeated | プランタグ |
| labels | String, Repeated | プランラベル |
| application_id | String | テスト対象アプリケーションID |
| application_name | String | テスト対象アプリケーション名 |
| application_url | String | テスト対象アプリケーションUIのURL |
| starting_url | String | テスト対象アプリケーションの開始URL |
| trigger_type | String | 実行のトリガータイプ: schedule、manual、customer_event (API経由で実行)、insight (mablインサイトに反応して実行) |
| trigger_user_id | String | 実行をトリガーするユーザー (manualトリガータイプを含むプランのみ) |
| trigger_user_email | String | 実行をトリガーするユーザーのメールアドレス (manualトリガータイプを含むプランのみ) |
| deployment_id | String | 実行をトリガーするデプロイメントID (オプション) |
| workspace_id | String | ワークスペース名 |
| workspace_name | String | ワークスペース名 |
テスト実行テーブル
*_journey_runテーブルは、統合ワークスペースのすべてのテスト実行を含み、テスト実行の完了時に書き込まれます。テストがプラン実行の一部である場合、プラン実行が完了する前にテスト実行をテスト実行テーブルに書き込むことができます。
| 列名 | タイプ | 説明 |
|---|---|---|
| id | String | テスト実行ID |
| journey_id | String | テストID |
| journey_name | String | テスト名 |
| journey_url | String | テストUIのURL |
| view_output_url | String | テスト実行出力UIのURL |
| status | String | テスト実行ステータス |
| success | Boolean | テスト実行全体の成功 |
| start_time | Timestamp | テスト実行の開始時刻 (UTC) |
| stop_time | Timestamp | テスト実行の停止時刻 (UTC) |
| runtime_millis | Integer | テスト実行の合計時間 (ミリ秒) |
| tags | String, Repeated | テストタグ |
| labels | String, Repeated | テストラベル |
| mabl_branch | String | mablブランチテストの実行対象 |
| environment_id | String | テスト実行環境 |
| environment_name | String | テスト実行環境名 |
| environment_url | String | テスト実行環境UIのURL |
| browser_type | String | テスト対象ブラウザーのタイプ |
| browser_version | String | テスト対象ブラウザーのバージョン |
| plan_id | String | プランID |
| plan_name | String | プラン名 |
| plan_url | String | プランUIのURL |
| plan_run_id | String | プラン実行ID |
| scenario_id | String | データテーブルのシナリオID |
| scenario_name | String | データテーブルのシナリオ名 |
| workspace_id | String | ワークスペースID |
| workspace_name | String | ワークスペース名 |
失敗の理由テーブル
*_run_categorizationテーブルは、統合ワークスペースのすべてのテスト実行の失敗の理由を含み、ユーザーが特定のテスト実行の出力に失敗の理由を設定したときに書き込まれます。
| 列名 | タイプ | 説明 |
|---|---|---|
| id | String | 一意のID |
| category | String | 失敗の理由 (削除された場合はNULL) |
| journey_id | String | テストID |
| journey_name | String | テスト名 |
| journey_run_id | String | テスト実行ID |
| created_time | Timestamp | 評価時刻 (UTC) |
| start_time | Timestamp | テスト実行の開始時刻 (UTC) |
| stop_time | Timestamp | テスト実行の停止時刻 (UTC) |
| grader_user_id | String | 評価ユーザーID |
| grader_user_email | String | 評価ユーザーのメールアドレス (オプション) |
| workspace_id | String | ワークスペースID |
| workspace_name | String | ワークスペース名 |
| tombstone | Boolean | 失敗の理由がテスト実行から削除されたことを示すインジケーター。テスト実行から失敗の理由がなくなるとtrueになり、categoryはNULLになります |
BigQueryのエクスポートは「データウェアハウス」方式で行われるため、テーブルが更新/削除されることはありません。追加のみが行われます。そのため、テスト実行の失敗の理由 (categoryディメンションに格納) が変更されるたびに、新しい行が書き込まれます。
journey_run_idでグループ化し、最新のcreate_timeの値を取得して、テスト実行に指定された最新のカテゴリを見つけます。ユーザーがテスト実行の失敗の理由をクリアした場合、categoryはNULLになります。
最新の失敗の理由を特定するには、次のサンプルクエリを使用します。my-project.mabl_export.mabl_run_categorizationを、BigQueryシステムのテーブル名に置き換えます。
SELECT failure_reason.*
FROM (
-- Get latest update time
SELECT
journey_run_id,
MAX(created_time) AS last_updated_time
FROM `my-project.mabl_export.mabl_run_categorization`
GROUP BY journey_run_id
) AS latest_categories
JOIN `my-project.mabl_export.mabl_run_categorization` AS failure_reason
ON failure_reason.created_time = latest_categories.last_updated_time
-- Ignore removed failure reasons
WHERE failure_reason.category IS NOT NULL;
パフォーマンステスト実行テーブル
*_performance_test_runテーブルは、統合ワークスペースのすべてのパフォーマンステスト実行のメトリックを含み、テストの完了時に書き込まれます。パフォーマンステストがプラン実行の一部である場合、プラン実行が完了する前にパフォーマンステスト実行をパフォーマンステスト実行テーブルに書き込むことができます。
*_performance_test_runテーブルと*_journey_runテーブルはidで結合できます。
| 列名 | タイプ | 説明 |
|---|---|---|
| id | String | テスト実行ID |
| journey_id | String | テストID |
| journey_name | String | テスト名 |
| journey_url | String | テストUIのURL |
| journey_run_id | String | テスト実行出力UIのURL |
| start_time | Timestamp | テスト実行の開始時刻 (UTC) |
| stop_time | Timestamp | テスト実行の停止時刻 (UTC) |
| api_virtual_user_hours_consumed | Float | パフォーマンステスト実行で使用された仮想ユーザー時間 |
| api_concurrent_user_count | Integer | パフォーマンステスト実行の同時実行ユーザー数 |
| api_average_response_time | Integer | パフォーマンステスト実行の平均応答時間 (ミリ秒) |
| api_requests_per_second | Integer | パフォーマンステスト実行の1秒あたりの平均リクエスト数 |
| api_error_rate_percent | Float | パフォーマンステスト実行の平均エラー率 ([0~100] のパーセント値) |
| workspace_id | String | ワークスペースID |
| workspace_name | String | ワークスペース名 |
アクティビティフィードテーブル
*_activity_feedテーブルは、mabl UIのアクティビティフィードでサポートされるすべてのタイプのアクティビティデータなど、統合ワークスペースのすべてのアクティビティフィードエントリを含みます。
| 列名 | タイプ | 説明 |
|---|---|---|
| id | String | アクティビティフィードエントリのID |
| entity_id | String | 変更されたエンティティのID |
| entity_name | String | 変更されたエンティティの名前 |
| entity_type | String | 変更されたエンティティのタイプ |
| entity_canonical_id | String | テスト実行出力UIのURL |
| entity_version_number | Integer | バージョン管理されたエンティティのバージョン番号 |
| action_type | String | 実行されたアクションのタイプ |
| action_timestamp | Timestamp | アクションが実行された時刻 |
| created_time | Timestamp | アクティビティフィードエントリの作成時刻 |
| actor_id | String | アクションを実行したユーザーまたはAPIキーのID |
| actor_email | String | アクターのメールアドレス (該当する場合) |
| entity_previous_id | String | このアクションの前のエンティティのID |
| entity_previous_name | String | このアクションの前のエンティティの名前 |
| entity_previous_version_number | Integer | このアクションの前のエンティティのバージョン |
| workspace_id | String | ワークスペースID |
| workspace_name | String | ワークスペース名 |
次のステップ
BigQueryインテグレーションの設定が済んだら、Looker StudioやGoogleスプレッドシートなどのツールを使って、データのクエリを実行したり、カスタムダッシュボードやチャートを作成したりすることができます。