DEV Community

Cover image for Panduan Praktis: Pengujian Otomasi API dengan Robot Framework
Walse
Walse

Posted on • Originally published at apidog.com

Panduan Praktis: Pengujian Otomasi API dengan Robot Framework

Robot Framework memiliki pendekatan berbeda dari alat yang mengutamakan kode. Alih-alih menulis pengujian sebagai kode program, Anda menulisnya sebagai tabel kata kunci yang mudah dibaca manusia. Untuk pengujian API, RequestsLibrary mengubah panggilan HTTP menjadi kata kunci seperti GET On Session, POST On Session, dan Status Should Be.

Coba Apidog hari ini

Panduan ini menunjukkan cara mengotomatisasi pengujian API dengan Robot Framework dari awal hingga siap dijalankan di CI. Anda akan menginstal framework, menulis test case pertama, mengelola sesi, melakukan assersi pada status code dan body JSON, lalu membuat kata kunci reusable agar suite lebih mudah dipelihara.

Apa itu Robot Framework dan mengapa cocok untuk pengujian API

Robot Framework adalah framework otomatisasi open source untuk test automation dan robotic process automation. Ciri utamanya adalah sintaks berbasis kata kunci: pengujian ditulis dalam tabel sederhana, sementara perilaku kompleks dibangun dari library keyword yang diimplementasikan dalam Python atau Java.

Untuk pengujian API, pendekatan ini berguna karena:

  • Test case mudah dibaca oleh QA, developer, dan product owner.
  • Keyword dapat digunakan ulang untuk login, setup data, validasi respons, dan cleanup.
  • RequestsLibrary membungkus library requests Python dan mengekspos operasi HTTP sebagai keyword.
  • Library tambahan dapat dipakai untuk JSON, database, SSH, dan kebutuhan lain.

Jika struktur berbasis kata kunci masih baru bagi Anda, baca juga panduan tentang kerangka kerja pengujian otomatisasi.

Menginstal Robot Framework dan library-nya

Gunakan virtual environment agar dependensi proyek tetap terisolasi:

python -m venv .venv
source .venv/bin/activate
pip install robotframework
pip install robotframework-requests
pip install robotframework-jsonlibrary
Enter fullscreen mode Exit fullscreen mode

Paket yang digunakan:

  • robotframework: engine utama dan test runner.
  • robotframework-requests: RequestsLibrary untuk mengirim HTTP request.
  • robotframework-jsonlibrary: helper untuk membaca dan memverifikasi data JSON.

Cek instalasi:

robot --version
Enter fullscreen mode Exit fullscreen mode

Referensi sintaks resmi tersedia di Panduan pengguna Robot Framework.

Satu hal penting: Robot Framework sensitif terhadap whitespace. Keyword dan argumen dipisahkan oleh minimal dua spasi, bukan satu. Jika file .robot gagal diparse, periksa spacing terlebih dahulu.

Menulis pengujian API pertama

File Robot Framework menggunakan ekstensi .robot dan biasanya berisi beberapa section:

  • *** Settings ***
  • *** Variables ***
  • *** Test Cases ***
  • *** Keywords ***

Contoh test sederhana untuk endpoint user:

*** Settings ***
Library           RequestsLibrary
Library           Collections

*** Variables ***
${BASE_URL}       https://api.example.com/v1

*** Test Cases ***
Get User Returns 200
    Create Session    api    ${BASE_URL}
    ${response}=      GET On Session    api    /users/42
    Status Should Be  200    ${response}

Get User Returns Expected Email
    Create Session    api    ${BASE_URL}
    ${response}=      GET On Session    api    /users/42
    ${body}=          Set Variable    ${response.json()}
    Should Be Equal As Integers    ${body}[id]    42
    Should Be Equal    ${body}[status]    active
Enter fullscreen mode Exit fullscreen mode

Penjelasan singkat:

  • Library RequestsLibrary mengaktifkan keyword HTTP.
  • Create Session membuat sesi HTTP bernama api.
  • GET On Session mengirim request ke endpoint relatif.
  • Status Should Be memvalidasi status code.
  • ${response.json()} mengubah body respons menjadi objek JSON.

Jalankan test:

robot tests.robot
Enter fullscreen mode Exit fullscreen mode

Robot Framework akan menghasilkan:

  • output.xml
  • log.html
  • report.html

Bekerja dengan sesi

Create Session tidak hanya menyimpan base URL. Sesi juga dapat menyimpan header default, cookie, dan autentikasi. Ini penting untuk API yang membutuhkan login.

Contoh alur login lalu membuat order:

*** Test Cases ***
Create Order With Authenticated Session
    Create Session    api    ${BASE_URL}
    ${login}=         POST On Session    api    /auth/login
    ...               json={"email": "qa@example.com", "password": "test-pass"}
    ${token}=         Set Variable    ${login.json()}[token]
    ${headers}=       Create Dictionary    Authorization=Bearer ${token}
    ${order}=         POST On Session    api    /orders
    ...               json={"product_id": 7, "quantity": 2}
    ...               headers=${headers}
    Status Should Be  201    ${order}
Enter fullscreen mode Exit fullscreen mode

Catatan implementasi:

  • ... digunakan untuk melanjutkan keyword ke baris berikutnya.
  • Create Dictionary membuat map header.
  • Token dari respons login dipakai sebagai Authorization header.
  • Sesi api dapat digunakan lagi untuk request berikutnya.

Dokumentasi lengkap keyword sesi tersedia di referensi RequestsLibrary.

Melakukan assersi pada body respons

Status code saja tidak cukup. Untuk API test yang berguna, validasi juga struktur dan nilai body respons.

Contoh validasi JSON:

*** Settings ***
Library           RequestsLibrary
Library           JSONLibrary
Library           Collections

*** Variables ***
${BASE_URL}       https://api.example.com/v1

*** Test Cases ***
Order Response Has Correct Shape
    Create Session    api    ${BASE_URL}
    ${response}=      POST On Session    api    /orders
    ...               json={"product_id": 7, "quantity": 2}
    Status Should Be  201    ${response}
    ${body}=          Set Variable    ${response.json()}
    Dictionary Should Contain Key    ${body}    total
    Should Be Equal As Integers      ${body}[quantity]    2
    ${status}=        Get Value From Json    ${body}    $.status
    Should Be Equal    ${status}[0]    pending
Enter fullscreen mode Exit fullscreen mode

Keyword yang digunakan:

  • Dictionary Should Contain Key: memastikan field ada.
  • Should Be Equal As Integers: membandingkan nilai numerik.
  • Get Value From Json: mengambil data dengan JSONPath.

Untuk daftar validasi yang umum dijalankan pada respons API, lihat panduan tentang assersi API.

Membangun kata kunci yang dapat digunakan kembali

Jika Create Session dan login diulang di banyak test case, pindahkan ke custom keyword. Ini membuat suite lebih ringkas dan mudah diubah.

Contoh:

*** Keywords ***
Authenticate And Open Session
    Create Session    api    ${BASE_URL}
    ${login}=         POST On Session    api    /auth/login
    ...               json={"email": "qa@example.com", "password": "test-pass"}
    ${token}=         Set Variable    ${login.json()}[token]
    Set Suite Variable    ${AUTH_HEADERS}    Bearer ${token}

*** Test Cases ***
Create Order
    Authenticate And Open Session
    ${headers}=       Create Dictionary    Authorization=${AUTH_HEADERS}
    ${order}=         POST On Session    api    /orders
    ...               json={"product_id": 7, "quantity": 2}    headers=${headers}
    Status Should Be  201    ${order}
Enter fullscreen mode Exit fullscreen mode

Dengan custom keyword:

  • Login hanya ditulis sekali.
  • Perubahan endpoint login cukup diperbarui di satu tempat.
  • Test case lebih fokus pada perilaku yang diverifikasi.

Untuk suite yang lebih besar, pindahkan keyword bersama ke file resource. Prinsip modular ini juga dibahas dalam panduan tentang menulis skrip pengujian otomatis.

Menggunakan file resource

File resource adalah file .robot tanpa test case. Biasanya berisi:

  • *** Variables ***
  • *** Keywords ***

Contoh common.robot:

*** Variables ***
${BASE_URL}       https://api.example.com/v1

*** Keywords ***
Open API Session
    Create Session    api    ${BASE_URL}
Enter fullscreen mode Exit fullscreen mode

Impor dari file test:

*** Settings ***
Library           RequestsLibrary
Resource          common.robot
Enter fullscreen mode Exit fullscreen mode

Struktur umum untuk proyek yang mulai membesar:

tests/
  users.robot
  orders.robot
resources/
  common.robot
  auth.robot
  users_keywords.robot
  orders_keywords.robot
Enter fullscreen mode Exit fullscreen mode

Pemisahan test case dari logic pendukung adalah inti dari struktur berbasis keyword. Pendekatan ini membantu suite tetap mudah dibaca saat jumlah test bertambah. Lihat juga panduan tentang kerangka kerja pengujian otomatisasi.

Menjalankan Robot Framework di CI

Robot Framework cocok untuk CI karena:

  • Dapat berjalan headless.
  • Mengembalikan exit code non-zero saat test gagal.
  • Menghasilkan report HTML dan XML secara otomatis.

Contoh command untuk CI:

robot --outputdir results --variable BASE_URL:https://staging.example.com/v1 tests/
Enter fullscreen mode Exit fullscreen mode

Flag yang sering dipakai:

  • --outputdir: menentukan folder output.
  • --variable: menyuntikkan nilai environment seperti base URL.
  • --include: menjalankan test dengan tag tertentu.
  • --exclude: mengecualikan test dengan tag tertentu.

Contoh menggunakan tag:

*** Test Cases ***
Get User Smoke Test
    [Tags]    smoke    users
    Create Session    api    ${BASE_URL}
    ${response}=      GET On Session    api    /users/42
    Status Should Be  200    ${response}
Enter fullscreen mode Exit fullscreen mode

Jalankan hanya smoke test:

robot --include smoke --outputdir results tests/
Enter fullscreen mode Exit fullscreen mode

Pola umum pipeline:

  1. Checkout repository.
  2. Setup Python.
  3. Install dependensi.
  4. Jalankan robot.
  5. Publish log.html, report.html, dan output.xml sebagai artifact.

Ini mengikuti pola yang sama seperti panduan pengujian API di CI/CD.

Kapan platform API khusus lebih membantu

Robot Framework kuat ketika Anda membutuhkan test berbasis keyword yang mudah dibaca dan dapat dipelihara oleh tim dengan latar belakang teknis yang berbeda.

Namun, Robot Framework kurang praktis jika Anda juga membutuhkan:

  • desain API,
  • mocking,
  • debugging request,
  • validasi skema OpenAPI otomatis,
  • manajemen environment visual,
  • eksekusi data-driven tanpa banyak custom keyword.

Apidog menangani kebutuhan tersebut secara langsung. Apidog menyediakan pembangun pengujian visual, validasi skema OpenAPI otomatis, eksekusi berbasis data dari CSV dan JSON, manajemen environment, laporan HTML, serta runner CLI untuk CI.

Banyak tim menggunakan keduanya: Robot Framework untuk suite berbasis keyword yang mudah dibaca, dan Apidog untuk mendesain, melakukan mocking, debugging, dan menguji API secara lebih visual. Anda dapat mengunduh Apidog dan membuat suite pengujian API tanpa menulis library keyword sendiri.

Pertanyaan yang Sering Diajukan

Apakah Robot Framework hanya untuk pengujian UI?

Tidak. Robot Framework adalah framework otomatisasi generik. Dengan RequestsLibrary, Robot Framework dapat digunakan untuk pengujian API. Library lain juga tersedia untuk database, SSH, dan kebutuhan otomatisasi lainnya. Robot Framework populer untuk UI testing melalui SeleniumLibrary, tetapi API testing juga merupakan penggunaan yang umum.

Apa perbedaan antara Create Session dan request biasa?

Create Session membuat sesi HTTP bernama yang persisten. Sesi ini menyimpan base URL, header, cookie, dan autentikasi. Keyword seperti GET On Session dan POST On Session menggunakan kembali state tersebut. Request tanpa sesi tidak membawa cookie atau autentikasi antar panggilan, sehingga Anda harus mengirim ulang semuanya setiap kali.

Apakah saya perlu tahu Python untuk menggunakan Robot Framework?

Tidak untuk menulis pengujian. Sintaks tabel keyword dirancang agar dapat digunakan tanpa menulis kode Python. RequestsLibrary sudah menyediakan keyword HTTP yang siap dipakai. Python baru diperlukan jika Anda ingin membuat library keyword baru. Untuk banyak kebutuhan API testing, library yang ada sudah cukup.

Bagaimana perbandingan Robot Framework dengan pytest untuk pengujian API?

Pytest bersifat code-first dan cocok untuk tim Python yang ingin menulis test dekat dengan kode aplikasi. Robot Framework berbasis keyword dan cocok untuk tim yang mengutamakan test case yang mudah dibaca oleh berbagai peran. Keduanya dapat berjalan di CI dan menghasilkan laporan. Pilihan bergantung pada siapa yang akan menulis dan memelihara suite.

Dapatkah Robot Framework memvalidasi respons terhadap skema OpenAPI?

Tidak secara native. Anda dapat melakukan assersi field individual dengan keyword bawaan dan JSONLibrary. Library komunitas juga dapat menambahkan validasi skema. Jika validasi otomatis terhadap dokumen OpenAPI adalah bagian utama workflow Anda, platform seperti Apidog dapat mengurangi kebutuhan untuk merangkai dan memelihara banyak library sendiri.

Top comments (0)