Cara Menggunakan Cucumber untuk Pengujian BDD

Ashley Goolam

Ashley Goolam

23 December 2025

Cara Menggunakan Cucumber untuk Pengujian BDD

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Pengembangan Berbasis Perilaku (Behavior-Driven Development) telah secara fundamental mengubah cara tim memandang kualitas perangkat lunak dengan membuat pengujian dapat dibaca oleh semua orang! Menggunakan Cucumber untuk pengujian BDD adalah keterampilan yang menjembatani kesenjangan antara persyaratan bisnis dan implementasi teknis, menciptakan dokumentasi langsung yang benar-benar dieksekusi. Jika Anda kesulitan dengan kasus uji yang menjadi usang saat ditulis, panduan ini akan menunjukkan cara yang lebih baik.

tombol

Apa itu Cucumber dan BDD?

Cucumber adalah alat sumber terbuka yang menjalankan pengujian otomatis yang ditulis dalam bahasa sederhana. Ini mengimplementasikan Behavior-Driven Development (BDD), sebuah metodologi di mana pengembang, penguji, dan pemangku kepentingan bisnis berkolaborasi untuk mendefinisikan perilaku perangkat lunak menggunakan contoh konkret.

BDD berfokus pada menjawab satu pertanyaan: "Apa yang harus dilakukan sistem?" daripada "Bagaimana kita harus mengujinya?" Hasilnya adalah bahasa bersama yang menghilangkan kesalahpahaman dan menciptakan pengujian yang berfungsi sebagai spesifikasi dan validasi yang dapat dieksekusi.

Cucumber membaca file .feature yang berisi skenario yang ditulis dalam sintaks Gherkin dan mengeksekusinya terhadap definisi langkah—kode yang melakukan otomatisasi yang sebenarnya. Pemisahan ini berarti pemangku kepentingan bisnis dapat meninjau skenario pengujian tanpa membaca kode, sementara pengembang mengimplementasikan detail teknis secara terpisah.

cucumber

Menginstal Cucumber untuk JavaScript

Menyiapkan Cucumber dalam proyek Node.js hanya membutuhkan beberapa perintah:

Prasyarat:

verifikasi apakah npm dan node terinstal di mesin lokal Anda
# Buat direktori proyek baru
mkdir cucumber-bdd-demo && cd cucumber-bdd-demo

# Inisialisasi npm
npm init -y

# Instal Cucumber dan dependensi pengujian
npm install --save-dev @cucumber/cucumber chai axios
siapkan cucumber dalam proyek

package.json Anda harus menyertakan skrip pengujian:

{
  "scripts": {
    "test": "cucumber-js"
  }
}

Buat struktur direktori ini:

project/
├── features/
│   └── user-management.feature
├── step-definitions/
│   └── user-steps.js
├── package.json
└── cucumber.json

Panduan Praktis: Menulis Pengujian BDD Pertama Anda

Mari kita buat pengujian untuk API manajemen pengguna untuk mendemonstrasikan Cara Menggunakan Cucumber untuk Pengujian BDD dalam praktik.

Langkah 1: Tulis File Fitur

Buat features/user-management.feature:

Feature: User Management API
  As an API client
  I want to manage users
  So that I can integrate user functionality into my application

  Scenario: Create a new user successfully
    Given I have a valid user payload
    When I send a POST request to "/api/users"
    Then the response status should be 201
    And the response should contain a user ID

  Scenario: Attempt to create user with invalid email
    Given I have a user payload with invalid email
    When I send a POST request to "/api/users"
    Then the response status should be 400
    And the response should contain "Invalid email format"

Langkah 2: Implementasi Definisi Langkah

Buat step-definitions/user-steps.js:

const { Given, When, Then } = require('@cucumber/cucumber');
const { expect } = require('chai');
const axios = require('axios');

let requestPayload;
let response;

Given('I have a valid user payload', function() {
  requestPayload = {
    name: 'Test User',
    email: 'test@example.com',
    password: 'ValidPass123'
  };
});

Given('I have a user payload with invalid email', function() {
  requestPayload = {
    name: 'Test User',
    email: 'invalid-email',
    password: 'ValidPass123'
  };
});

When('I send a POST request to {string}', async function(endpoint) {
  try {
    response = await axios.post(`http://localhost:3000${endpoint}`, requestPayload);
  } catch (error) {
    response = error.response;
  }
});

Then('the response status should be {int}', function(statusCode) {
  expect(response.status).to.equal(statusCode);
});

Then('the response should contain a user ID', function() {
  expect(response.data).to.have.property('userId');
  expect(response.data.userId).to.match(/^[0-9a-fA-F]{24}$/);
});

Then('the response should contain {string}', function(message) {
  expect(response.data.message).to.include(message);
});

Langkah 3: Edit File Cucumber.json

Buat file "cucumber.json" di direktori root proyek Anda dan tambahkan kode berikut:

{
    "default": {
        "formatOptions": {
            "snippetInterface": "synchronous"
        }
    }
}

Langkah 4: Jalankan Pengujian

Eksekusi pengujian Anda dengan:

npm test

Cucumber akan menampilkan hasil terperinci yang menunjukkan langkah mana yang berhasil, tidak terdefinisi, atau gagal.

Aturan untuk Menulis Skenario BDD yang Baik

Mempelajari Cara Menggunakan Cucumber untuk Pengujian BDD secara efektif memerlukan mengikuti aturan-aturan yang terbukti ini:

1. Struktur Given-When-Then

Setiap skenario harus memiliki tiga bagian ini secara berurutan:

2. Tulis secara Deklaratif, Bukan Imperatif

Buruk:

Given I open the browser
And I navigate to "/login"
And I type "test@example.com" in the email field
And I type "password" in the password field
And I click the login button

Baik:

Given I am on the login page
When I log in with valid credentials
Then I should see the dashboard

Fokus pada apa yang Anda uji, bukan bagaimana Anda melakukannya.

3. Satu Skenario, Satu Tujuan

Setiap skenario harus menguji satu perilaku tunggal. Skenario gabungan menyembunyikan kegagalan dan mempersulit debugging.

4. Gunakan Bahasa Bisnis

Tulis skenario yang dapat dipahami oleh pemangku kepentingan bisnis. Hindari jargon teknis dan detail implementasi.

5. Buat Skenario Independen

Skenario tidak boleh bergantung satu sama lain. Masing-masing harus menyiapkan datanya sendiri dan membersihkannya setelahnya.

Fitur Lanjut Cucumber: Tabel Data dan Garis Besar Skenario

Tabel Data untuk Input Kompleks

Ketika Anda perlu menguji dengan beberapa titik data, gunakan tabel:

Scenario: Create users with different roles
  Given I have the following user data:
    | name     | email             | role    |
    | Alice    | alice@example.com | admin   |
    | Bob      | bob@example.com   | user    |
  When I send a POST request to "/api/users"
  Then all users should be created successfully

Definisi langkah:

Given('I have the following user data:', function(dataTable) {
  requestPayload = dataTable.hashes();
});

Garis Besar Skenario untuk Pengujian Berbasis Data

Ketika Anda ingin menjalankan skenario yang sama dengan data yang berbeda, gunakan garis besar:

Scenario Outline: Login with various credentials
  Given I am on the login page
  When I enter "<email>" and "<password>"
  Then I should see "<result>"

  Examples:
    | email             | password   | result          |
    | test@example.com  | validPass  | Dashboard       |
    | test@example.com  | wrongPass  | Invalid password|
    | invalid@email.com | validPass  | Invalid email   |

Ini secara otomatis membuat tiga skenario pengujian terpisah.

Mengatur Pengujian dengan Tag

Tag membantu Anda mengategorikan dan memfilter skenario:

@smoke @regression
Scenario: User login
  Given I am on the login page
  When I log in with valid credentials
  Then I should see the dashboard

@api @critical
Scenario: API health check
  Given the API is running
  When I request "/health"
  Then the response status should be 200

Jalankan hanya tag tertentu:

npm test -- --tags "@smoke"

Bagaimana Apidog Membantu Pengujian API dalam Alur Kerja BDD

Meskipun Cucumber unggul dalam mendefinisikan perilaku, Apidog mengotomatiskan pekerjaan berat dalam pembuatan dan eksekusi pengujian API, menjadikan Cucumber untuk pengujian BDD jauh lebih efisien.

Pembuatan Kasus Uji API Bertenaga AI

Daripada menulis definisi langkah secara manual untuk panggilan API, Apidog menghasilkannya dari spesifikasi OpenAPI Anda menggunakan AI:

# Your API spec
paths:
  /api/users:
    post:
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name: string
                email: string
      responses:
        '201':
          description: User created

Apidog secara otomatis membuat skenario siap uji:

tombol
menghasilkan kasus uji di apidog

Pertanyaan yang Sering Diajukan

P1: Apakah saya perlu tahu pemrograman untuk menulis pengujian Cucumber?

Jwb: Menulis skenario Gherkin tidak memerlukan pengkodean—hanya pemikiran yang jelas tentang perilaku. Namun, mengimplementasikan definisi langkah memerlukan pengetahuan JavaScript (atau bahasa lain). Alat seperti Apidog mengurangi beban ini dengan menghasilkan kode definisi langkah secara otomatis.

P2: Apa perbedaan Cucumber dengan kerangka kerja pengujian tradisional?

Jwb: Kerangka kerja tradisional (Jest, Mocha) berfokus pada implementasi teknis. Cucumber berfokus pada perilaku bisnis. Skenario Cucumber yang sama dapat menggerakkan pengujian UI web (Selenium), pengujian API (Axios), atau pengujian seluler (Appium) tanpa mengubah teks Gherkin.

P3: Bisakah Cucumber menggantikan alat pengujian API?

Jwb: Cucumber menyediakan struktur pengujian, tetapi Anda masih membutuhkan alat untuk mengeksekusi panggilan API (Axios, Supertest) dan memvalidasi respons. Apidog melengkapi Cucumber dengan menangani lapisan eksekusi API sementara Cucumber mengelola alur kerja BDD.

P4: Apa yang membuat skenario Cucumber yang baik?

Jwb: Skenario yang baik bersifat independen, menggunakan bahasa bisnis, mengikuti struktur Given-When-Then, dan menguji satu perilaku masing-masing. Skenario tersebut harus dapat dibaca oleh pemangku kepentingan non-teknis dan berfokus pada apa yang dilakukan sistem, bukan bagaimana ia melakukannya.

P5: Bagaimana Apidog menangani autentikasi dalam pengujian BDD?

Jwb: Apidog mengelola token autentikasi secara otomatis. Anda dapat mendefinisikan langkah "Given I am authenticated" yang menggunakan manajemen kredensial Apidog untuk mengambil token yang valid, menghilangkan penanganan token manual dalam definisi langkah Anda.

Kesimpulan

Menggunakan Cucumber untuk pengujian BDD secara efektif mengubah proses pengembangan Anda dengan menciptakan pemahaman bersama di seluruh tim teknis dan bisnis. Sintaks Gherkin memaksakan kejelasan, sementara pemisahan skenario dan definisi langkah menjaga pengujian tetap dapat dipelihara seiring berkembangnya aplikasi Anda.

Kekuatan sebenarnya datang dari integrasi Cucumber dengan alat otomatisasi modern. Apidog menghilangkan pekerjaan manual yang membosankan dalam menulis kode pengujian API, memungkinkan Anda untuk fokus mendefinisikan perilaku yang berarti sementara ia menangani eksekusi. Kombinasi ini memberikan yang terbaik dari kedua dunia: spesifikasi yang dapat dibaca manusia yang berfungsi sebagai dokumentasi hidup, dan pengujian otomatis yang kuat yang berjalan secara berkelanjutan.

Mulai dari yang kecil. Pilih satu endpoint API. Tulis tiga skenario: sukses, gagal, dan kasus batas. Implementasikan definisi langkah. Jalankan. Tunjukkan hasilnya kepada pemilik produk Anda. Setelah mereka melihat persyaratan bisnis dieksekusi sebagai pengujian, Anda akan mendapatkan dukungan untuk memperluas BDD di seluruh proyek Anda. Saat itulah penggunaan Cucumber untuk pengujian BDD berhenti menjadi praktik teknis dan menjadi gerakan kualitas di seluruh tim.

tombol

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.