Yazılım Kalitesini Artırmak İçin Test Yaklaşımları

Burak Babur
alBarakaTech Global
5 min readJul 20, 2023

Kalite kavramı, tarih boyunca defalarca tanımlanmış ve ürün veya hizmete göre farklı anlamlar taşıyan oldukça geniş bir konudur. Temelde, müşteri memnuniyetini sağlamak ve müşteri beklentilerini karşılamak ve hatta aşmak olarak özetlenebilir. Herhangi bir ürün veya hizmet için geçerlidir ve yazılım da istisna değildir.

Yazılımın kalitesi, kullanıcıların üründen ne kadar memnun olduklarına ve ihtiyaçlarını ne kadar iyi karşıladığına bağlıdır. Yazılım geliştirme sürecinde kalite, başarılı bir ürün elde etmek için kritik bir faktördür. Müşteri memnuniyetini sağlamak, hataları azaltmak ve süreçleri iyileştirmek için bir dizi test yaklaşımı ve defect management sistemlerinin kullanımı giderek önem kazanmaktadır. Bu makalede, yazılım kalitesini artırmak için TDD, BDD gibi yöntemleri inceleyeceğiz.

TDD (Test Driven Development)

Yazılım kalitesi, başarılı bir uygulama geliştirmek ve müşteri memnuniyetini sağlamak için büyük önem taşır. Bu nedenle, geliştirme sürecinde uygulanacak yöntemler ve yaklaşımlar oldukça kritiktir. TDD (Test Driven Development) ve Tasarım Yaklaşımı, yazılım kalitesini artırmak için önemli araçlar sunar.

TDD’nin Temel Adımları:

  1. Test Yazma: Yazılımcı, kodu yazmaya başlamadan önce testleri oluşturur. Bu testler, yazılımın beklendiği şekilde çalışıp çalışmadığını doğrulamak için kullanılır.

2. Test Başarısız Olma: İlk aşamada yazılan testlerin hepsi başarısız olur. Çünkü henüz kod yazılmamıştır ve testlerin karşılanması beklenemez.

3. Test Başarılı Hale Getirme: Yazılımcı, kodu yazarak testlerin başarılı olmasını sağlar. Kod, testlerin geçmesi için uygun şekilde tasarlanır.

4.Tüm Testlerin Başarılı Olması: Tüm testlerin başarılı olması için kod sürekli olarak iyileştirilir ve test edilir. Bu aşama, yazılımcının güvenli bir şekilde kodunu geliştirebileceğini ve mevcut kodu değiştirebileceğini gösterir.

5. Kod Refactoring: Bu aşama, kodun temizlenmesi ve iyileştirilmesi sürecini ifade eder. Mevcut kodun karmaşıklığı azaltılır ve gereksiz kod parçaları kaldırılır.

TDD ile Tasarım Yaklaşımı:

Geleneksel yazılım geliştirme süreçlerinde, yazılımcılar genellikle alttan üste yaklaşımı benimserler. Yani veritabanından başlayarak katmanları teker teker geliştirirler. Bu durum, gereksiz karmaşıklığa ve tekrarlanan kodlara neden olabilir.

Ancak TDD ve Tasarım Yaklaşımı, tamamen farklı bir bakış açısı sunar. Önce testler yazılarak, yazılımın istenen işlevselliğini sağlamak için bir çerçeve oluşturulur. Bu şekilde, yazılımcılar işin temelini oluşturan testleri oluştururken, alttan üste geliştirme anlayışı yerine üstten alta yaklaşımı benimserler.

Bu yaklaşım, gereksiz kod parçalarının önüne geçer ve tasarımın sade ve anlaşılır olmasını sağlar. Yeni özellikler eklenmek istendiğinde, testler kullanılarak işlevselliği kontrol edilir ve sadece gerekli olan değişiklikler yapılır. Bu sayede, yazılımın yaşayan bir organizma gibi sürekli geliştiği ve kolayca yönetilebildiği bir yapı oluşturulur.

Sonuç olarak, TDD ve Tasarım Yaklaşımı, yazılım kalitesini artırmak için önemli bir katkı sağlar. Karmaşıklığı azaltır, gereksiz kod parçalarını ortadan kaldırır ve yazılımın sürekli olarak iyileştirilmesini sağlar. Böylece, müşteri memnuniyetini artırır ve yazılım projelerinin başarılı bir şekilde tamamlanmasına katkıda bulunur.

Behavior Driven Development(BDD)

Yazılım geliştirme sürecinde kullanılan bir yöntemdir ve kullanıcıların işlevselliğe odaklanarak yazılımın davranışlarını anlamasına yardımcı olur. BDD, TDD’nin bir genişlemesi olarak kabul edilir ve yazılımın işlevselliğine yönelik kabul testlerini ön plana çıkarır.

BDD’nin ana amacı, geliştirme ekibi ve iş paydaşları arasındaki iletişimi kolaylaştırmaktır. Bu yöntem, ekiplerin yazılımın ne yapması gerektiğini net bir şekilde anlamasını ve müşteri beklentilerini doğrudan yansıtan test senaryoları oluşturmasını sağlar.

Bir BDD senaryosu genellikle şu adımlardan oluşur:

  1. Görüşme ve Anlaşma: Yazılım ekibi, iş paydaşları ve müşteriler bir araya gelerek istekleri ve gereksinimleri tartışır ve ortak bir dil üzerinde anlaşır.

2 . Özellikler ve Senaryolar: Belirlenen işlevsellik, kullanıcı hikayeleri şeklinde ifade edilir ve bu hikayeleri destekleyen BDD senaryoları yazılır. Senaryolar, doğal dilde ifade edilir ve müşteri beklentilerini yansıtır.

3. Senaryo Yürütme ve Otomasyon: Yazılımcılar, belirlenen senaryoları uygulamaya geçirir ve senaryoların otomasyonunu sağlar. Bu sayede senaryolar sürekli test edilir ve gerçekleştirilen değişikliklerin istenilen davranışı etkileyip etkilemediği izlenir.

4. Testlerin Başarılı Olması: Uygulama ve senaryo otomasyonlarından elde edilen sonuçlar, yazılımın işlevselliğinin doğrulanması için kullanılır. Tüm senaryolar başarılı bir şekilde çalıştırılırsa, yazılımın kabul edilebilir olduğu kabul edilir.

BDD, aynı zamanda farklı roller arasındaki işbirliğini ve anlaşmayı artırmak için önemli bir araçtır. Yazılım ekibi, iş analistleri, test mühendisleri ve iş paydaşları arasındaki iletişimi güçlendirir ve herkesin projenin hedefine doğru birlikte çalışmasını sağlar.

BDD, yazılımın işlevselliğine odaklanarak, müşteri memnuniyetini ve yazılım kalitesini artırmayı hedefler. Müşteri beklentilerini anlamak ve doğru bir şekilde yansıtmak, başarılı bir yazılım geliştirme sürecinin anahtarıdır. BDD, TDD ile birleştirilerek yazılımın hem teknik gerekliliklerini hem de işlevsel beklentilerini başarıyla ele almayı sağlar.

Bdd örnek olarak Gherkin dilini inceleyebiliriz.

Gherkin Language

Gherkin, Behavior Driven Development (BDD) yaklaşımında yaygın olarak kullanılan bir doğal dil temelli betik dilidir. Gherkin, kullanıcıların ve teknik olmayan paydaşların yazılım davranışlarını anlamasını ve açık bir şekilde ifade etmesini sağlar. Aynı zamanda, Gherkin senaryoları sayesinde iş paydaşları ve yazılım ekibi arasındaki işbirliğini kolaylaştırır.

Gherkin Language

Feature: Testini yapacağımız konunun başlığıdır.

Background: Tüm senaryolar için ortak adım olarak kullanılır. Eğer senaryolarınızda uymayan anlamlar varsa yeni bir “Background” yazıp diğer senaryoları onun altına yazabilirsiniz.

Example / Scenario: İki anahtar kelime de aynı anlama gelmektedir. Farklı senaryolar yazarken çok fazla adım yazabilirsiniz ama senaryo başı önerilen adım sayısı 3–5 arasındadır.

Given: Senaryo sahnesini tanımlamak için kullanılır. Zorunludur.

When: Bir olayı veya eylemi tanımlamak için kullanılır.

Then: Beklenen sonucu tanımlamak için kullanılır. Zorunludur.

And: Verilenleri yazarken alt alta “Given” anahtar kelimesi kullanabilirsiniz veya onun yerine “And” anahtar kelimesini kullanarak ilk “Given” tanımından sonra ekleme yapabilirsiniz. (*) ifadesini “And” yerine yazarak da kullanabilirsiniz.

Gherkin dili, senaryoları açık ve anlaşılır bir şekilde ifade etmeyi sağlar. Bu, iş paydaşları ve teknik olmayan kullanıcılar için yazılımın işlevselliğini ve kullanım durumlarını daha iyi anlamalarını kolaylaştırır. Aynı zamanda, Gherkin senaryoları, yazılım ekibi için de otomasyon testlerinin yazılmasını kolaylaştırır.

Gherkin dili, çeşitli BDD araçları ve çerçevelerle birlikte kullanılır. Örneğin, Cucumber, SpecFlow, Behat gibi BDD araçları, Gherkin senaryolarını alarak, bu senaryoları otomatik testler olarak uygulamanıza yardımcı olur. Bu şekilde, yazılımın işlevselliği, belirtilen senaryolara uygun olarak doğrulanabilir ve güvenilirliği artırılabilir.

Sonuç olarak, Gherkin dilinin BDD uygulamalarında kullanımı, yazılım ekibi ve iş paydaşları arasındaki işbirliğini ve anlayışı artırırken, yazılımın doğru ve beklentilere uygun şekilde geliştirilmesine katkı sağlar.

bbabur:)

--

--