プランでテストを設定・実行する方法はさまざまです。あるチームに合う方法が、あなたのチームに合うとは限りません。この記事では、テストをプランに整理するための一般的なガイドラインを紹介します。これにより、コラボレーションを強化し、効率を最大化し、メンテナンスの手間を減らすことができます。
テストカテゴリを特定する
チームと協力して、アプリの管理方法に基づいたテストカテゴリを特定しましょう。次の質問を参考に、話し合いを進めてください。
- チームはどのように構成されているか?
- オーナーシップのために何を重視しているか?
どのチームも同じではありませんが、テストをプランにまとめる一般的な方法をいくつかご紹介します。
- ユーザーの役割: プランには、管理者やユーザーなど、特定の役割ごとに機能を検証するテストを含めることができます。
- 機能セット: チームが、検索、フィルタリング、ナビゲーション、設定など、特定の機能に取り組んでいる場合は、1つの特定の機能に関するすべてのシナリオをカバーするテストを含むプランを作成できます。
チームでプランの整理方法を決めたら、プランの命名規則を設定しましょう。一貫して命名規則を適用することで、ワークスペース内の全員がさまざまなプランの目的を理解しやすくなり、より効果的に協力できます。
プランの実行を管理する
プラン内でテストの実行方法を管理するには、プランステージと同時実行設定を使用してください。
プランのステージ
デフォルトでは、すべてのプランは、すべてのテストを並列で実行する1つのステージで作成されます。テストをグループごとに決まった順序で実行したい場合は、追加のプランステージを追加できます。ステージは、異なる種類のテストを含むプランや、特定のセットアップや後処理が必要な場合に、プランを整理するのに特に役立ちます。
さまざまなテストタイプをプランのステージごとに整理する例:
セットアップ - テスト - ティアダウン:メインテストを実行する前にテストデータを作成し、終了時にデータをクリーンアップします:
- ステージ1(セットアップ):データを準備するためにAPIテストを実行します。
- ステージ2(テスト):そのデータを使って、メインのモバイルまたはブラウザのテストを実行します。
- ステージ3(後処理): データをクリーンアップするためにAPIテストを実行します。
API事前チェック:アプリケーションの基盤となるAPIを最初に検証し、APIテストが成功した場合のみメインのUIテストに進みます。APIテストはUIテストよりも少ないクレジットで実行できるため、この方法はクレジットの消費を抑えるのに役立ちます。
- ステージ1:APIテストを実行して、期待されるレスポンスを検証します。
- ステージ2:ブラウザー/モバイルテストを実行する
クロスプラットフォーム検証:さまざまなプラットフォームで順番に検証を行います。
- ステージ1:モバイルテストを実行して、コア機能を検証します。
- ステージ2:管理サイトやその他のウェブベースのコンポーネントで変更を確認するために、ブラウザテストを実行します。
同時実行の設定
プランの各ステージでは、テストを並列または順番に実行できます
並列実行:テストの実行時間を大幅に短縮し、フィードバックサイクルを加速します。ステージ内のテストが互いのデータや結果に依存せず、独立して実行できる場合は、並列実行を利用してください。
1つのステージで異なるテストタイプを組み合わせる例
たとえば、パフォーマンステストとブラウザテストやモバイルテストを同じステージで並行して実行すると、アプリケーションが負荷のかかった状態でどのように動作するかを検証できます。
順次実行:プランステージ内のテストが特定の順序で実行される必要がある場合は、ステージを順次テストを実行するように設定してください。
プランステージや順次実行を利用している場合は、共有変数を活用して、あるテストから別のテストへ値を渡すこともできます。
プランサイズの最適化
100件以上のテストを含むプランを実行することは可能ですが、小規模なプランを作成すると、問題が発生した際のトラブルシューティングが容易になります。たとえば、ワークスペース内の大規模で複雑なプランが断続的に失敗し始めた場合、プランをいくつかの小さなプランに分割することで、依存関係を減らし、課題を切り分けることができます。
小規模なプランは、CI/CD のセットアップにも適しています。mabl をCI/CD パイプラインに統合すると、プランのラベルを活用して、mabl のデプロイメントエベントで特定のプランセットをデプロイ時にトリガーできます。
プランラベルを使うと、リグレッション、ターゲットリグレッション、スモーク、テストに関連するチーム、特定の機能や領域など、特定のテストスイートを定義できます。