Pengembangan Berbasis Perilaku - Gherkin

Gherkin adalah bahasa yang digunakan untuk menulis Features, Scenarios, and Steps. Tujuan Gherkin adalah membantu kami menulis persyaratan konkret.

Untuk memahami apa yang kami maksud dengan persyaratan konkret, perhatikan contoh berikut -

Pelanggan harus dicegah memasukkan rincian kartu kredit yang tidak valid.

Melawan

Jika pelanggan memasukkan nomor kartu kredit yang panjangnya tidak tepat 16 digit, saat mereka mencoba mengirimkan formulir, nomor tersebut harus ditampilkan ulang dengan pesan kesalahan yang memberi tahu mereka tentang jumlah digit yang benar.

Yang terakhir tidak memiliki ambiguitas dan menghindari kesalahan dan jauh lebih dapat diuji.

Gherkin dirancang untuk menciptakan persyaratan yang lebih konkret. Di Gherkin, contoh di atas terlihat seperti -

Feature

Umpan balik ketika memasukkan rincian kartu kredit yang tidak valid Feature Definition

Dalam pengujian pengguna, kami telah melihat banyak orang yang melakukan kesalahan Dokumentasi

Background True for all Scenarios Below

Given Saya telah memilih item untuk dibeli,

And Saya akan memasukkan nomor kartu kredit saya

Scenario - Nomor kartu kredit terlalu pendekScenario Definition

When Saya memasukkan nomor kartu yang panjangnya kurang dari 16 digit

And semua detail lainnya benar

And Saya mengirimkan formulirSteps

Then formulir harus ditampilkan kembali

And Saya akan melihat pesan yang memberi tahu saya tentang jumlah digit yang benar

Format dan Sintaks Gherkin

File Gherkin adalah File teks biasa dan memiliki ekstensi .feature. Setiap baris yang tidak kosong harus diawali dengan kata kunci Gherkin, diikuti dengan teks yang Anda suka. Kata kuncinya adalah -

  • Feature

  • Scenario

  • Diberikan, Kapan, Lalu, Dan, Tapi (Langkah)

  • Background

  • Skenario Outline

  • Examples

  • "" "(Doc Strings)

  • | (Tabel Data)

  • @ (Tag)

  • # (Komentar)

  • *

Fitur

Itu FeatureKata kunci digunakan untuk mendeskripsikan fitur perangkat lunak, dan untuk mengelompokkan skenario yang terkait. Fitur memiliki tiga elemen dasar -

  • Kata kunci - Fitur.

  • Nama fitur, disediakan di baris yang sama dengan kata kunci Fitur.

  • Deskripsi opsional (tetapi sangat disarankan) yang dapat menjangkau beberapa baris yaitu semua teks di antara baris yang berisi fitur kata kunci, dan baris yang dimulai dengan Skenario, Latar Belakang, atau Kerangka Skenario.

Selain nama dan deskripsi, Fitur berisi daftar skenario atau kerangka skenario, dan latar belakang opsional.

Adalah konvensional untuk menamai a .featurefile dengan mengambil nama Fitur, mengubahnya menjadi huruf kecil dan mengganti spasi dengan garis bawah. Sebagai contoh,

feedback_when_entering_invalid_credit_card_details.feature

Untuk mengidentifikasi Fitur di sistem Anda, Anda dapat menggunakan apa yang disebut sebagai "template injeksi fitur".

Untuk <memenuhi beberapa tujuan> sebagai <tipe pengguna> Saya menginginkan <a fitur>

Deskripsi

Beberapa bagian dari dokumen Gherkin tidak harus dimulai dengan kata kunci.

Di baris yang mengikuti Fitur, skenario, kerangka skenario, atau contoh, Anda dapat menulis apa pun yang Anda suka, selama tidak ada baris yang dimulai dengan kata kunci. Ini adalah cara untuk memasukkan Deskripsi.

Skenario

Untuk mengekspresikan perilaku sistem Anda, Anda melampirkan satu atau lebih skenario dengan setiap Fitur. Biasanya melihat 5 hingga 20 skenario per Fitur untuk sepenuhnya menentukan semua perilaku di sekitar Fitur itu.

Skenario mengikuti pola berikut -

  • Jelaskan konteks awal

  • Jelaskan sebuah acara

  • Jelaskan hasil yang diharapkan

Kami mulai dengan konteks, mendeskripsikan tindakan, dan memeriksa hasilnya. Ini dilakukan dengan langkah-langkah. Gherkin memberikan tiga kata kunci untuk menjelaskan setiap konteks, tindakan, dan hasil sebagai langkah-langkah.

  • Given - Tetapkan konteks

  • When - Lakukan aksi

  • Then - Periksa hasilnya

Kata kunci ini memberikan pembacaan skenario.

Example

Scenario - Menarik uang dari akun.

  • Given Saya memiliki $ 100 di akun saya.

  • When Saya meminta $ 20.

  • Then $ 20 harus dibagikan.

Jika ada beberapa Given atau When langkah di bawah satu sama lain, Anda dapat menggunakan And atau But. Mereka memungkinkan Anda menentukan skenario secara detail.

Example

Scenario - Coba penarikan menggunakan kartu curian.

  • Given Saya memiliki $ 100 di akun saya.

  • But kartu saya tidak valid.

  • When Saya meminta $ 50.

  • Then kartu saya tidak boleh dikembalikan.

  • And Saya harus diberitahu untuk menghubungi bank.

Saat membuat skenario, ingatlah 'setiap skenario harus masuk akal dan dapat dijalankan secara independen dari skenario lain' '. Artinya -

  • Anda tidak dapat memiliki kondisi sukses dari satu skenario bergantung pada fakta bahwa beberapa skenario lain telah dijalankan sebelumnya.

  • Setiap skenario membuat konteksnya sendiri, menjalankan satu hal, dan menguji hasilnya.

Skenario seperti itu memberikan manfaat berikut -

  • Tes akan lebih sederhana dan lebih mudah dipahami.

  • Anda dapat menjalankan hanya sebagian dari skenario Anda dan Anda tidak perlu khawatir tentang kerusakan set pengujian Anda.

  • Bergantung pada sistem Anda, Anda mungkin dapat menjalankan pengujian secara paralel, mengurangi jumlah waktu yang dibutuhkan untuk menjalankan semua pengujian Anda.

Skenario Outline

Jika Anda harus menulis skenario dengan beberapa input atau output, Anda mungkin akan membuat beberapa skenario yang hanya berbeda nilainya. Solusinya adalah dengan menggunakan kerangka skenario. Untuk menulis kerangka skenario,

  • Variabel dalam langkah kerangka skenario diberi markup dengan <dan>.

  • Berbagai nilai variabel diberikan sebagai contoh dalam tabel.

Example

Misalkan Anda sedang menulis Fitur untuk menambahkan dua angka pada kalkulator.

Feature - Tambahkan.

Scenario Outline: Add two numbers.
Given the input "<input>"
When the calculator is run
Then the output should be <output>"
Examples
| input    | output |
| 2+2      | 4      | 
| 98+1     | 99     |
| 255+390  | 645    |

Bagian kerangka skenario selalu diikuti oleh satu atau beberapa bagian contoh, yang merupakan wadah untuk tabel. Tabel harus memiliki baris header yang sesuai dengan variabel dalam langkah-langkah kerangka skenario. Setiap baris di bawah ini akan membuat skenario baru, dengan mengisi nilai variabel