Cucumber : Cümle Kurar Gibi Test Yazın

Cucumber ile cümle kurar gibi ve eğlenerek testler yazmak mümkün!

Geliştirilen yazılımlar için test yazmak genellikle ikinci plana atılan, sonra yaparız denilerek geciktirilen veya hiç yapılmayan, ancak yazılımın geliştirme sürecinin sağlıklı ilerlemesi ve her şeyin olması gerektiği gibi çalıştığını anlamak için en doğru yol gerekli testlerin oluşturulması ve uygulanmasıdır.

Testlerin ihmal edilme nedenlerinden biri de genellikle bu sürecin zahmetli olması, uzmanlık gerektirmesi veya karmaşık söz dizimi yüzünden sıkıcı bir hal almasıdır. Ancak günümüzde geliştirilen test araçları çok daha esnek olmalarıyla beraber test yazımını eğlenceli bir hale bile getirebilmektedir. Cucumber isimli araç da tam olarak bunu sağlamaktadır.

Cucumber Nedir?

Cucumber, Behaviour-Driven Development ( Davranış Odaklı Geliştirme ) destekli bir test aracıdır.

Test edilecek durumlar, Gherkin isimli bir gramer yapısını kullanarak varsayılan olarak İngilizce olmakla beraber, mevcut çevirileri kullanılarak Türkçe dahil birçok diğer dilde de basit cümleler kurarak yazılabilmektedir. Bu sayede herhangi bir teknik bilgisi olmayan kişilerin dahi yazılım testi oluşturabilmesine imkan vermektedir. Kurulumu, testlerin yazımı ve kullanımı gayet kolay olduğu için test yazma işini yorucu ve sıkıcı bir durum olmaktan kurtarak eğlenceli ve kolay bir hale getirmektedir.

Cucumber aracı Ruby dili ile geliştirilmiştir ve Ruby, Python, Java, JavaScript, C++ , Lua, Kotlin, .NET ve php başta olmak üzere birçok dilde test yazmayı desteklemektedir.

Gherkin Nedir

Gherkin, Cucumber ile test durumları yazarken kullanılan gramer yapısının genel adıdır. Gayet basit ve anlaması kolay olan bu yapıda kurulan cümleler günlük konuşma dilindeki cümlelere oldukça yakın olduğu için test durumlarını yazarken adeta yazılımla konuşuyormuş hissiyatı oluşturur.

Gherkin dili belirli anahtar kelimelerden faydalanır.

Bir testi ve senaryoları isimlendirmek için kullanılan anahtar kelimeler aşağıdaki gibidir:

  • Feature : Testi Yapılacak Özelliğin Adı
  • Scenario : Uygulanacak Senaryo Adı
  • Scenario Outline: Aynı senaryoyu birden fazla durum için çalıştırmak gerektiğinde taslak senaryo oluşturmak için kullanılır.


Tanımlanan senaryoda uygulanacak işlem adımlarını tanımlamak için de aşağıdaki anahtar kelimeler kullanılır. Bu işlemlerin her birine “Step” yani adım adı verilir.

  • Given: Sistemin başlangıç durumunu tanımlar. Sistemin tanımlanmış bir duruma geçmesini sağlar.
  • When: Bir olay yada aksiyonu tanımlamak için kullanılır. Yapılmak istenen bir eylem bu anahtar kelimeden sonra yazılır.
  • Then: Beklenen bir sonucu yada durumu tanımlamak için kullanılır. Beklenen durumla gerçekleşen durumu karşılaştırdığımız ifade bu anahtar kelimeden sonra yazılır.
  • And, But: Yukarıda bahsedilen Given ,When ve Then ifadelerinden birden fazla ardarda yazılmak istendiğinde bu anahtar kelimeler kullanılır.

Örnek bir test dosyasının içeriği ise şu şekilde olacaktır:

Feature: Test Login Page
  Örnek bir giriş sayfamız olduğunu varsayalım ve bu giriş
  sayfasının doğru çalışıp çalışmadığını kontrol edelim.
  Feature anahtar kelimesinden sonra bu şekilde yazdığımız
  metinler o özelliğin açıklamasını oluşturur.

  Scenario: Login with existing user
    When I type username "user01"
    And I type password "pass01"
    Then Login should success

  Scenario: Login with non-existing user
    When I  type username  "user02"
    And I  type password "pass02"
    Then Login should fail

Daha önce de belirttiğimiz gibi test cümlelerinizin İngilizce olması zorunlu değildir. Aynı testleri Türkçe olarak da yazabiliriz:

Özellik: Giriş Sayfasını Test Et
  Örnek bir giriş sayfamız olduğunu varsayalım ve bu giriş
  sayfasının doğru çalışıp çalışmadığını kontrol edelim.
  Özellik anahtar kelimesinden sonra bu şekilde yazdığımız
  metinler o özelliğin açıklamasını oluşturur.

  Senaryo: Var olan bir kullanıcı ile giriş yap
    Eğer ki kullanıcı adını "user01" olarak verdiysem
    Ve kullanıcı parolasını "pass01" olarak verdiysem
    O zaman giriş başarılı olmalı

  Senaryo: Var olmayan bir kullanıcı ile giriş yap
    Eğer ki kullanıcı adını "user02" olarak verdiysem
    Ve kullanıcı parolasını "pass02" olarak verdiysem
    O zaman giriş başarısız olmalı

Gherkin söz dizimini kullanarak oluşturduğumuz test durumlarımızın anlamlı bir hal alabilmesi için yazdığımız adımların arka planda hangi işlevleri çalıştıracağını tanımlamamız gerekmektedir. Bu işlem hangi dilde test yaptığınıza göre değişmekle birlikte genel olarak yapısı birbirine benzerdir.

Cucumber aracını incelemek isterseniz internet sayfasını inceleyebilir, dokümanlarını okuyabilirsiniz.

Cucumber ile ilgili yazı serimiz devam edecektir. Cucumber kurulumu, örnek adım tanımlamaları, bir web sayfasının Cucumber ile test edilmesi gibi konular sonraki yazılarda incelenecektir.

Cucumber ve diğer konulardaki güncel içerikler için Peptr Blogu takipte kalın.
Son yazılardan en kısa sürede haberdar olmak için Twitter veya LinkedIn‘den takip edebilirsiniz.

Leave a comment