0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ToscaでAPIテストケースを作成する | Tricentis ToscaでAPIテストを実行してみたシリーズ#2

Posted at

【第2回】ToscaでAPIテストケースを作成する

Tricentis ToscaでAPIテストを実行してみたシリーズ


本記事は「ToscaでAPIテストを実行してみた」シリーズの第2回になります。

有効なTricentis Toscaのライセンスを保持している事を前提に記載しております。

今回の目的

前回は、API Scanを使用してSwagger定義を読み込み、モジュール化するところまで行いました。
今回は、そのモジュールを使って 実際にAPIテストケースを設計・実行する手順 を紹介します。

ToscaのAPIテストは「リクエストを送るだけ」ではなく、動的パラメータ設定やレスポンス検証まで自動化できるのが特徴です。


前提条件

このステップを始める前に、以下が準備済みであることを確認します。

  • Tosca Commanderがインストール済み
  • API ScanでSwagger定義を読み込み、モジュールがCommanderに転送済み
  • サンプルAPI(例:Swagger Petclinic)がアクセス可能

ステップ1:作成されたTestCaseを確認する

  1. Tosca Commanderの TestCase フォルダ を開く
  2. 例:API → Test Cases → Petstore → GET getPet Request を選択
  3. 右クリックして Create TestCase を選択

作成されたTestCaseは以下のような構造になります。

TestCase
 ├── Request (入力パラメータ)
 ├── Response (出力検証)

💡 ポイント
モジュール内の「Request」「Response」パラメータはAPI Scanで定義された内容に基づいて自動生成されています。

image.png

ステップ2:リクエストパラメータを設定する

次に、実際のリクエスト値を設定します。

例:GET /pet/findByStatus

項目 説明
petId 任意のpetId クエリパラメータ
Accept application/json ヘッダ

操作手順

  1. Modules内のTechnical ViewよりParamsタブを展開。またHeadersを展開。
  2. Query Parameter配下のpetIdを選択し、Add Moudle Attributeを選択
  3. 必要に応じて同様にHeaderも設定

上記作業を行う事で、TestCase内で動的に値をParameterとして選択できるようになります。
2025-10-06_14-50-35.gif


ステップ3:期待値(Assertion)を設定する

Toscaの強力な特徴の一つが、レスポンス検証(Assertion)機能です。
Response部分には、APIから返される値をチェックするための構造が自動生成されています。

例:JSONレスポンスの一部を検証

レスポンス例:

[
  {
    "name": "Basil",
    "birthDate": "2012-08-06",
    "id": 2,
    ...
]

検証設定手順

  1. Response Module内を選択(例:API → Test Cases → Petstore → GET getPet Request
  2. Status Codeを選択し、Add ボタンを押下
  3. Payloadのnameを選択し、Addボタンを押下

これにより、ToscaはTestCase実行時に選択した値の検証(Verify)あるいはBuffer変数への格納が可能になります。

💡 ヒント:
JSON構造の複数の値を選択する場合は、複数選択にて選択しAddボタンを押下し選択可能です。


ステップ4:TestCaseの設定

Moudleで操作した値を実際のTestCaseでパラメータを送信する方法およびResponseのAssertionを検証を設定します。

  1. Tosca Commanderの TestCase フォルダ を開く

  2. 例:API → Test Cases → Petstore → GET getPet Request を選択

  3. Request を選択し、実際に送信するParameterValue列に設定します。
    image.png

  4. Responseを選択し、検証する値、Buffer変数へ設定する値を設定します。
    (ここではStatus Codeの検証とName値をpetName変数に格納します)
    image.png

ここまでで、一つのAPIRequestに対するテストが実装できることになります。
Tosca CommanderのリボンからRun in Scratchbookを実行する事で動作確認も可能です。

POST・PUTを使用する場合には実際に値を登録・更新する事になるのでご注意ください。

ステップ5:複数リクエストのチェーンを作る

実務では、1つのAPIだけで完結するケースは少なく、複数のリクエストを連携させる必要があります。

例:

  1. POST /Owner で新しいOwnerを登録
  2. POST /owners/{ownerid}/petsで新しいPetを登録
  3. GET /pet/{id} で登録結果を確認

手順

  1. POST /Ower モジュールからTestStepを追加
  2. レスポンスからidを抽出 → Tosca Bufferに格納
  3. 次のPOST /Owers/{ownerid}/petsのURLに${Buffer}を参照して使用
  4. レスポンスからidを抽出 → Tosca Bufferに格納
  5. GET /pet/{id}で登録結果を確認
POST /pet → extract id → store to buffer
GET /pet/{id=${Buffer.id}}

これにより、API間で動的データを引き継ぐテストが可能になります。

image.png


ステップ6:テストを実行して結果を確認する

  1. TestCaseを右クリック → Run in ScratchBookで仮実行が可能です
  2. 実行が完了すると、Execution結果が表示されます。

結果は以下のような形式で確認できます:

ステップ ステータス LogInfo
GET ✔️ Passed OK = 期待値一致
POST ✔️ Passed 新規登録成功
GET /pet/{id} ⚠️ Failed 期待値不一致(例: name不一致)

image.png

💡 ポイント:
テスト失敗時は、Response内容を右クリック→LogInfoで実際のレスポンスを確認できます。


⚠️ よくある落とし穴

症状 原因 解決策
パラメータが送信されない Request構造の選択ミス Query or Bodyどちらに入力したか確認
Responseが空 API実行に失敗 URL・Header・認証を再確認
比較で常に失敗 JSON配列の扱いミス JSON PathやIndex指定を確認
文字コード不一致 Encoding問題 HeaderにUTF-8を明示

まとめ

今回は、ToscaでAPIモジュールからテストケースを作成し、実際に実行する手順を解説しました。

✅ 本記事のポイント:

  • モジュールからTestCaseを作成できる
  • Query/Header/Bodyを柔軟に設定可能
  • JSONレスポンスを検証(Assertion設定)
  • API間のデータ引き継ぎ(Buffer利用)

これで、Toscaを使った単体APIテストからシナリオ型APIテストまでカバーできます。


次回

第3回:トークン認証付きAPIをテストする

  • OAuth2 / JWT認証の仕組みを理解
  • トークンを取得して次のAPIへ渡す
  • 実際にToscaでBearer Tokenを扱う方法を解説します。

参考リンク


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?