データベースクエリーステップを使用すると、mablテストのコンテキスト内でデータベースへの呼び出しを行うことができます。データベースと直接やり取りすることは、さまざまなシナリオで役立ちます。テストでデータベースクエリーステップを使用する方法の例を以下に示します。
- テストデータの設定: クエリーを実行して新しいユーザーや顧客レコードをデータベースに挿入し、アプリケーションをテスト用の特定の状態にします
- データの変更を検証する: UIで操作を記録した後、クエリーを実行してこれらの変更がバックエンドに反映されていることを確認できます。また、その逆も可能です。
- テスト後のクリーンアップ:クエリーを使ってテスト中に作成されたデータを削除し、データベースが次回の実行に備えて準備できている状態にしましょう。
この記事では、データベースのクエリーを使ったテストの方法について説明します。
データベースクエリーステップを作成する
mablのテストからデータベースクエリーを送信する前に、mablでデータベース接続を設定する必要があります。
プライベートデータベース
すべてのデータベースクエリーは、mablクラウド上で実行されます。これは、mablトレーナー内やローカルまたはクラウド実行中のいずれの場合でも同様です。データベースが公開されていない場合は、プライベートデータベースアクセスの設定ができているかご確認ください。
mablトレーナーで、アプリケーションを正しい状態にしてからクエリーステップを追加します:+(ステップを追加)> データベースクエリー。ステップ編集者で、設定済みのデータベースを選択してください。
データベースステップ編集者
既存のクエリーを選択するか、+ 新しいクエリーをクリックして新しいクエリーを作成できます。クエリーを作成または更新すると、mablトレーナーがクエリー編集者を開きます。mablでのデータベースクエリーの作成方法について詳しくは、こちらのドキュメントをご覧ください。
クエリー編集者
実行ボタンをクリックしてクエリーをテストしてください。
mablでクエリーが実行されるときは、クエリー編集者、mablトレーナーでの再生、ローカル実行やクラウド実行のいずれの場合でも、接続されているデータベースにリアルタイムでアクセスします。データの作成、削除、更新を行う際はご注意ください。
クエリーを作成または選択したら、必要なアサーションや変数を追加してから、保存をクリックしてください。
変数をクエリーに渡す
変数をデータベースのクエリーに渡すには、クエリーに直接追加しないでください。代わりに、mablクエリーエディターのパラメーターセクションに追加してください。
- mabl変数構文を使用して、変数をパラメータ値として追加します。例えば、変数
test_varは{{@test_var}}となります。 - クエリー自体では、データベースの種類でサポートされているパラメータ構文を使用してください。たとえば、多くのデータベースの種類では、パラメータを参照するために
:paramNameという形式を使用します。パラメータ構文が不明な場合は、お使いのデータベースの種類の公式ドキュメントを参照してください。
クエリー結果でアサーションを行う
mablトレーナーでデータベースクエリーステップを追加した後、アサーションを使ってクエリーが期待した結果を返したか確認できます。
結果テーブルで特定の値をアサーションするには、検証したいセルを選択し、+ アサーションを追加をクリックしてください。その後、必要に応じてアサーションを設定します。
結果に対するアサーション
行全体の値にアサーションを追加するには、+ アサーションを追加をクリックし、ターゲット欄に行番号を入力してください。ターゲット欄を空欄のままにすると、JSON結果全体にアサーションを追加できます。
行全体に対してアサーションを行う
列数、行数、影響を受けた行数、レスポンスメッセージなどのクエリーメタデータに対してアサーションを設定するには、+ アサーションを追加をクリックし、ソースをメタデータに設定して、必要に応じてアサーションを構成してください。クエリーメタデータの操作の詳細については、リファレンス記事をご参照ください。
Trainer再生中の動作
データベースクエリーステップは、クエリーが失敗する場合や、ステップ内のアサーションが失敗する場合に失敗します。デフォルトでは、データベースクエリーステップは「即時失敗」に設定されており、ステップが失敗するとテストの実行が停止し、「失敗」としてマークされます。
ステップが失敗してもテストの実行を続ける場合は、クエリエディターの [オプション] タブで失敗時の挙動を次のように変更します。
- 「テスト終了時に失敗にする」- ステップが失敗してもテストは実行中のまま続行され、最後に「失敗」としてマークされます
- 「失敗時も続行して警告を付与」- ステップが失敗しても、そのステップは成功として扱われ、警告が付与されます。
データベースクエリステップの失敗時のオプション
クエリー結果を変数に保存する
データベースクエリーステップを保存した後、結果を変数に保存し、mablトレーナー内の他の変数と同じように使うことができます
結果テーブルの特定の値から変数を作成するには、セルを選択し、変数タブで+ 変数を追加をクリックし、変数に名前を付けてください。
結果を変数に保存する
行全体を変数として保存するには、+ 変数を追加をクリックし、ターゲット欄に行番号を入力してください。ターゲット欄を空欄のままにすると、クエリー結果全体を変数として保存できます。
レスポンス全体を変数に保存する
列数、行数、影響を受けた行数、レスポンスメッセージなどのレスポンスメタデータを変数に保存するには、+ 変数を追加をクリックし、ソースをメタデータに設定して、必要に応じて変数を設定してください。クエリーメタデータの理解については、次のセクションを参照してください。
変数へのメタデータの保存
テストステップ間でクエリーを連結する
テスト内の後のクエリーが前のクエリーの値を必要とする場合は、次のワークフローを使用してください。
- データベースのクエリーステップを追加します。必要な値を返すクエリーを記述してください。
-
変数タブで、結果を変数として保存します。例えば、
order_idなどです。 - 後続のデータベースクエリーステップを追加する際に、パラメータを作成し、デフォルト値を
{{@order_id}}に設定します。 - クエリー本文で、データベースのパラメータ構文を使用してパラメータを参照します。
テストデータのセットアップとティアダウン
テストが特定のデータベースの状態に依存している場合は、クエリーステップを使用してテストデータのセットアップとティアダウンを行うことができます。
- テストの最初にデータベースクエリーステップを追加して、テストに必要なデータを挿入または更新します。クエリーが自動生成IDなど後で必要になる値を生成する場合は、変数として保存してください。
- 通常通りにUIのステップを記録します。
- テストの最後にデータベースクエリーステップを追加して、ステップ1で作成したデータを削除または元に戻します。保存した変数を参照するにはパラメータを使用してください。
AIでクエリーを生成する
独自のクエリーを作成するだけでなく、自然言語のプロンプトからクエリーを生成することもできます。他の生成系AIツールと同様に、クエリー生成機能は適切なコンテキストがあると最も効果的に動作します。次の要素が結果に影響することを覚えておいてください。
- テーブルメタデータ:データベース接続のクレデンシャルに、テーブル名、カラム名、カラム型などのメタデータへアクセスする権限が含まれていることを確認してください。
- データベースの命名規則:クエリー生成AIは、データのビジネス上の背景を把握していません。テーブル名やカラム名の命名規則が自然言語で理解しやすいものでない場合は、プロンプトにより詳しい説明を追加してください。
最適な結果を得るには、プロンプトでデータセットに含めたいデータの内容、どのようなデータをまとめるべきか、除外すべきものがあるかを具体的に記載してください。プロンプトには明示的なSQL構文を含めることもできますが、必要な情報が含まれていれば、モデルは自然言語のプロンプトでも十分に対応できます。例えば、次のようになります。
「動物病院での動物の来院情報を探しています。すべてのペットの名前と、その所有者の名前、住所、電話番号、さらに最後に来院した日時と、過去1年間の来院回数を一意のリストで見たいです。リストは、来院回数が多い順、次に最も最近の来院日が新しい順に並べてください。」
生成AIの機能と同様に、結果は完全に予測できるものではなく、エラーが発生する場合があります。テストに組み込む前に、必ず結果を確認してください。