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.
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".
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