こんにちは! API開発の現場で、毎日「動かしては直し、直しては壊し」を繰り返していませんか?
「昨日まで動いていたエンドポイントが、別の修正のせいで突然500エラーを返すようになった……」
「リリース前の動作確認だけで、半日が終わってしまう……」
そんな苦しみからあなたを解放するために、今日はInsomniaのテストスイート機能を使ったAPI自動テストの極意を伝授します。これをマスターすれば、手動でのポチポチ確認作業から解放され、APIのデグレ(退行バグ)を完全に防ぐ堅牢な開発フローが手に入りますよ。
毎日の作業が劇的に楽になる方法、一緒に見ていきましょう!
—
1. なぜInsomniaのテスト機能なのか?
APIクライアントといえばPostmanが有名ですが、軽量でモダンなInsomniaも、実は非常に強力なテスト自動化機能を持っています。
一般的なAPI開発の流れはこうです:
1. エンドポイントを作る
2. Insomniaでリクエストを送って手動で確認する
3. 修正するたびに、また手動でポチポチ確認する(←ここでバグを見落とす)
これだと、人間は疲れるし、変更に怯えながらコードを書くことになります。
Insomniaの「テストスイート(Test Suite)」を使えば、「リクエストを送り、期待通りのステータスコードか、JSONのキーに意図した値が入っているか」をワンクリック(あるいはCI連携)で一瞬のうちに検証できるようになります。
—
2. 基礎セットアップ:テストの世界へ踏み出す
まずは、Insomniaでテストを書くための舞台を整えましょう。
ステップ1:コレクション(フォルダー)の用意
テストは、整理されたリクエストの集まり(コレクション)に対して実行します。
まだの場合は、適当なワークスペースを作り、いくつかAPIリクエスト(例: ユーザー取得APIなど)を登録しておいてください。
ステップ2:Unit(テスト)タブを開く
Insomniaの左側メニュー、または上部タブに 「Test」 という項目があります。ここをクリックしてください。これが、あなたのAPIの「品質を守る要塞」となるテストスイート作成画面です。
—
3. HelloWorld的・最初のテストを書いてみよう
百聞は一見に如かず。実際に最もシンプルなテストを書いて動作確認をしてみましょう。
今回は、`GET https://jsonplaceholder.typicode.com/users/1` という公開APIを例に使います。このAPIは、以下のようなJSONを返してくれます。
{
“id”: 1,
“name”: “Leanne Graham”,
“username”: “Bret”,
“email”: “Sincere@april.biz”
}
テストコードの書き方
Insomniaのテストでは、JavaScript(Chaiアサクショングラマーベース)を使って検証を行います。「えっ、プログラミングしなきゃいけないの?」と思った方、安心してください。決まり文パターンを覚えるだけで、誰でも簡単に書けます。
1. Test画面で「New Test Suite」をクリックし、適当な名前(例: `ユーザーAPIの基本テスト`)をつけます。
2. そのスイートの中にテストケースを追加します。
3. 以下のコードを貼り付けてみてください。
// レスポンスが正常(200 OK)かどうかのテスト
describe(‘GET /users/1 の基本検証’, () => {
// 1. ステータスコードが200であること
it(‘ステータスコードが200であること’, async () => {
const response = await insomnia.send(); // 紐づけられたリクエストを送信
expect(response.status).to.equal(200);
});
// 2. レスポンスボディのキー「name」が文字列として存在すること
it(‘ユーザー名が正しく返却されること’, async () => {
const response = await insomnia.send();
const body = await response.json();
// idが1であることの確認
expect(body.id).to.equal(1);
// nameプロパティが存在し、空でないこと
expect(body.name).to.be.a(‘string’);
expect(body.name).to.equal(‘Leanne Graham’);
});
});
> 先輩からのアドバイス:
> Insomniaのテストスクリプトは、Node.jsでお馴染みの `expect` 構文がそのまま使えます。`expect(実際の値).to.equal(期待する値)` という形を覚えておくだけで、大半のテストは書けてしまいます。
これを実行(Run)して、すべて緑色のチェックマーク(Pass)がついたときの爽快感、ぜひ味わってほしいです!
—
4. 実戦投入!現場で使える「実用的なテストコード」のレシピ
基本が分かったところで、次は「実務で絶対に役立つ」応用パターンを2つ紹介します。
パターンA:POSTリクエストの作成とレスポンス検証
データを新規作成するPOST APIでは、「正しく作成され、生成されたIDが返ってくるか」をテストするのが定石です。
describe(‘POST /users の作成検証’, () => {
it(‘新しいユーザーが作成され、IDが付与されること’, async () => {
const response = await insomnia.send();
const body = await response.json();
// ステータスが 201 Created であること
expect(response.status).to.equal(201);
// サーバ側で自動採番されたIDが存在するか(数値であるか)
expect(body).to.have.property(‘id’);
expect(body.id).to.be.a(‘number’);
});
});
パターンB:環境変数(Environment)を組み合わせた動的テスト
実務では、開発環境(Dev)やステージング環境(Staging)など、環境ごとにURLが変わりますよね。Insomniaの環境変数機能とテストを組み合わせることで、どの環境でも同じテストを使い回せます。
例えば、環境変数に `base_url` が設定されている場合、リクエスト側のURLを `{{ _.base_url }}/users/1` のように記述しておけば、Insomniaのテストスイートは現在の環境設定を引き継いでそのまま実行してくれます。
—
5. まとめ:今日から始める自動テストの習慣
いかがでしたでしょうか?
「Insomniaのテストスイート機能」と言われると難しそうに聞こえますが、実態は「お気に入りのAPIクライアントに、ちょっとしたJavaScriptの確認コードを添えるだけ」の非常にシンプルで強力なツールです。
これを導入するだけで:
- 「あれ、このパラメータ変更して他の場所壊れてないっけ…?」という不安が消える
- API仕様のドキュメント代わりになる
- 手動テストの時間がゼロになり、新しい機能の実装に集中できる
といった恩恵をすぐに受けることができます。
まずは今日、あなたが普段よく使うお気に入りのAPIリクエストを一つだけ選んで、「ステータスコードが200かチェックするテスト」から書き始めてみてください。
あなたの開発ライフが、もっと快適で、もっとクリエイティブなものになることを応援しています!