Use Cases

Otomasi API Test dengan Claude Code: Panduan Praktis QA

Otomasi API Test menggunakan Claude Code. Panduan Praktis QA. Dilengkapi contoh kode praktis.

Mempraktikkan Otomasi API Test dengan Claude Code

Testing yang komprehensif sangat penting untuk menjamin kualitas API. Dengan Claude Code, mulai dari desain test case hingga generate mock dan integrasi CI bisa diotomatisasi sekaligus.

Desain Test Case

Test CRUD REST API

> Buat test CRUD untuk User API dengan Vitest + supertest.
> Cakup normal case, error case, dan boundary value test.
// tests/api/users.test.ts
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
import request from 'supertest';
import { app } from '../../src/app';
import { resetDatabase, seedUsers } from '../helpers/db';

describe('Users API', () => {
  beforeEach(async () => {
    await resetDatabase();
    await seedUsers();
  });

  describe('GET /api/users', () => {
    it('bisa mengambil daftar user', async () => {
      const res = await request(app)
        .get('/api/users')
        .expect(200);

      expect(res.body.data).toBeInstanceOf(Array);
      expect(res.body.data.length).toBeGreaterThan(0);
      expect(res.body.data[0]).toHaveProperty('id');
      expect(res.body.data[0]).toHaveProperty('name');
      expect(res.body.data[0]).not.toHaveProperty('password');
    });

    it('pagination bekerja dengan benar', async () => {
      const res = await request(app)
        .get('/api/users?page=1&limit=5')
        .expect(200);

      expect(res.body.data.length).toBeLessThanOrEqual(5);
      expect(res.body.meta).toHaveProperty('totalPages');
      expect(res.body.meta).toHaveProperty('currentPage', 1);
    });
  });

  describe('POST /api/users', () => {
    it('bisa membuat user baru', async () => {
      const newUser = {
        name: 'Test User',
        email: 'test@example.com',
        password: 'SecurePass123!',
      };

      const res = await request(app)
        .post('/api/users')
        .send(newUser)
        .expect(201);

      expect(res.body.data.name).toBe(newUser.name);
      expect(res.body.data.email).toBe(newUser.email);
    });

    it('mengembalikan 400 untuk alamat email tidak valid', async () => {
      const res = await request(app)
        .post('/api/users')
        .send({ name: 'Test', email: 'invalid', password: 'Pass123!' })
        .expect(400);

      expect(res.body.errors).toBeDefined();
    });

    it('mengembalikan 409 untuk alamat email duplikat', async () => {
      await request(app)
        .post('/api/users')
        .send({ name: 'User1', email: 'dup@example.com', password: 'Pass123!' });

      await request(app)
        .post('/api/users')
        .send({ name: 'User2', email: 'dup@example.com', password: 'Pass456!' })
        .expect(409);
    });
  });
});

Generate Mock dan Stub

Test Dependensi External API

> Buat mock untuk Stripe payment API.
> Gunakan MSW.
// tests/mocks/handlers.ts
import { http, HttpResponse } from 'msw';

export const handlers = [
  http.post('https://api.stripe.com/v1/charges', () => {
    return HttpResponse.json({
      id: 'ch_test_123',
      amount: 1000,
      currency: 'jpy',
      status: 'succeeded',
    });
  }),

  http.post('https://api.stripe.com/v1/refunds', () => {
    return HttpResponse.json({
      id: 're_test_456',
      amount: 1000,
      status: 'succeeded',
    });
  }),
];

Contract Test

Contract test yang memverifikasi konsistensi antara spesifikasi API dan implementasi juga bisa di-generate dengan Claude Code. Test yang membandingkan schema OpenAPI dan respons secara otomatis bisa dibangun.

Performance Test

> Buat script load test API menggunakan k6.
> Dengan skenario peningkatan beban bertahap.
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '1m', target: 50 },
    { duration: '3m', target: 50 },
    { duration: '1m', target: 100 },
    { duration: '3m', target: 100 },
    { duration: '1m', target: 0 },
  ],
  thresholds: {
    http_req_duration: ['p(95)<500'],
    http_req_failed: ['rate<0.01'],
  },
};

Summary

Dengan Claude Code, mulai dari desain API test hingga implementasi dan integrasi CI bisa diotomatisasi sekaligus. Lihat juga Panduan Strategi Testing dan Pembangunan CI/CD Pipeline.

Untuk detail API testing, lihat Dokumentasi Resmi Vitest.

#Claude Code #API testing #automation #testing #quality assurance

Tingkatkan alur kerja Claude Code kamu

50 template prompt yang sudah teruji, siap copy-paste ke Claude Code sekarang juga.

Gratis

PDF Gratis: Cheatsheet Claude Code dalam 5 Menit

Perintah penting, pintasan, dan contoh prompt dalam satu halaman siap cetak.

Unduh PDF
M

Tentang Penulis

Masa

Engineer yang aktif menggunakan Claude Code. Mengelola claudecode-lab.com, media teknologi 10 bahasa dengan lebih dari 2.000 halaman.