Introduction to Behavior-Driven Development: BDD Series Part 1

Behavior-Driven Development and How It Benefits Your Team

Mona Natasha
ecomindo-dev
4 min readAug 12, 2020

--

BDD Series membahas mengenai Behavior-Driven Development (BDD) melalui beberapa bagian. Bagian pertama dari series ini menjelaskan pengenalan BDD, penulisan test pada BDD, serta keuntungan dari penerapan BDD. Bagian berikutnya dari series ini akan dilanjutkan dengan pemaparan tutorial untuk melakukan automation testing menggunakan BDD.

1. Introduction to BDD

Kita mungkin sudah cukup sering mendengar istilah Test-Driven Development (TDD). TDD merupakan proses software development yang menerapkan penulisan test cases sebelum pengembang menuliskan production code. Proses TDD sendiri berfokus kepada komponen-komponen dalam sistem, dan test cases ditulis dalam bahasa pemograman.

Serupa dengan Test-Driven Development (TDD), Behavior-Driven Development (BDD) juga menerapkan konsep test-first, namun dengan fokus yang berbeda. Dalam BDD test, tim pengembang akan menuliskan berbagai skenario yang menjelaskan behavior sistem dari perspektif pengguna. Skenario dituliskan menggunakan format bahasa yang mudah dipahami oleh seluruh stakeholder dalam pengembangan sistem.

Differences Between TDD and BDD

Purpose

Dalam proses pengembangan sebuah sistem, terkadang terdapat gap antara technical stakeholders dan business stakeholders terkait dengan:

  • Pemahaman technical stakeholders (developer) mengenai kebutuhan bisnis dari sistem yang dibangun, dan
  • Pemahaman business stakeholders mengenai isu teknis dari business requirements yang diberikan.

BDD memiliki tujuan utama untuk meningkatkan komunikasi dan kolaborasi antara seluruh stakeholders — tim bisnis maupun teknikal — yang terlibat dalam pengembangan sistem. Hal ini dapat membantu memastikan bahwa:

  • Fitur-fitur dalam sistem dapat dipahami dengan baik oleh seluruh anggota tim. Komunikasi yang baik dapat menyatukan persepsi stakeholders yang berbeda-beda dalam suatu pemahaman dan ekspektasi yang sama.
  • Fitur-fitur dalam sistem dapat memenuhi kebutuhan pengguna dan menghasilkan business value.

Concept

Prinsip dasar dari BDD adalah mendeskripsikan behavior dari sebuah sistem tanpa melibatkan penjelasan implementasinya secara rinci. Terdapat pemisahan antara keduanya.

Illustration of Behavior-Driven Development Concept

Dalam pendekatan BDD, seluruh stakeholders (technical & non-technical) saling berkolaborasi untuk mendeskripsikan kebutuhan pengguna dan kebutuhan fungsional (behavior) sistem, yang dituliskan melalui feature files. Deskripsi yang ada dalam feature files berperan sebagai test logic, yang kemudian akan menjadi dasar bagi Quality Assurance (QA) dalam menuliskan test script untuk implementasi pengujian, dan dasar bagi developer dalam menuliskan implementation code untuk membangun sistem.

Feature files pada BDD dituliskan menggunakan bahasa Gherkin, dengan format berbahasa Inggris yang mudah dipahami oleh siapa pun — terlepas dari technical knowledge yang dimiliki. Dengan demikian, non-technical stakeholders dapat tetap memahami test logic tanpa perlu memahami implementasi menggunakan kode pemrograman yang lebih kompleks. Begitu pula sebaliknya, technical stakeholders atau developer dapat turut memahami aspek bisnis dari sistem yang mereka implementasikan.

2. Writing Tests in BDD

Secara mendasar, terdapat tiga tahapan untuk melakukan test dalam BDD:

  • Tahap 1 — Menentukan user stories; untuk menjelaskan kebutuhan pengguna dan fungsionalitas sistem yang diharapkan
  • Tahap 2 — Menuliskan skenario (dalam feature files, menggunakan Gherkin) berdasarkan user stories
  • Tahap 3 — Mengimplementasikan test script (dalam step files) berdasarkan skenario

Simple Example

User story memiliki format standar:

As a <role>, I want to <need/goal>, so that <why>.”

Dalam menjelaskan kebutuhan pengguna untuk log in dalam suatu akun, user story yang terbentuk adalah:

As an existing user, I want to log into my account, so that I can see my home page.”

Selanjutnya, user story dituliskan dalam skenario. Sebuah feature file terdiri dari satu atau lebih skenario yang menjelaskan apa yang seharusnya dilakukan oleh sistem dalam situasi tertentu. Terdapat 3 keyword sebagai elemen utama dalam skenario BDD:

  • Given — menjelaskan konteks dari skenario
  • When — menjelaskan tindakan yang dilakukan oleh user
  • Then — menjelaskan outcome dari tindakan yang dilakukan oleh user

Kita juga dapat menggunakan keyword lainnya seperti And, But, Background, Scenario Outline, dan Examples. Silakan baca referensi berikut untuk memahami penggunaan berbagai keyword dalam bahasa Gherkin.

Berikut adalah contoh sederhana dari penulisan skenario menggunakan bahasa Gherkin untuk log in dalam suatu akun.

Feature: Log inScenario: Logging in as an existing userGiven I go to my application's log in pageWhen I fill in correct username and passwordAnd I click Log InThen I see my home page

Skenario dalam feature file tersebut kemudian akan digunakan sebagai panduan untuk mengimplementasikan test script — yang disebut dengan steps dalam BDD. Contoh pengimplementasian test script (step file) dari sebuah skenario (feature file) akan dijelaskan lebih lanjut dalam tutorial pada bagian berikutnya dari series ini.

3. Advantages of Implementing BDD

  • Meningkatkan komunikasi dan kolaborasi — BDD memungkinkan keseluruhan stakeholders terlibat dan memiliki pemahaman yang sama dalam pengembangan produk, termasuk non-technical stakeholders yang tidak memahami kode pemrograman.
  • Implementasi sistem yang mengutamakan pengguna dan sesuai dengan kebutuhan bisnis — BDD dapat meminimalisir terbentuknya fitur yang tidak dibutuhkan, karena implementasi sistem mengacu kepada kebutuhan pengguna dalam skenario yang telah dirumuskan oleh seluruh stakeholders.
  • Test report yang mudah dipahami — Karena ditampilkan bersesuaian dengan skenario dalam feature files.
  • Dapat beradaptasi dengan cepat terhadap perubahan — BDD dirancang untuk mendukung agile development, yang kini banyak diterapkan dalam lingkungan bisnis yang cepat berubah. Pendekatan BDD memudahkan tim pengembang untuk merespon perubahan secara cepat dengan meminimalisir time waste dan excessive rework.

Bagian selanjutnya dari series ini akan menjelaskan tutorial untuk melakukan test automation dalam BDD menggunakan Katalon Studio.

--

--