Fonksiyonel Test ve Tipleri

Kerem Metin
4 min readAug 10, 2021

--

Fonksiyonel Test, yazılım sistemini işlevsel gereksinimlere/spesifikasyonlara karşı doğrulayan bir tür yazılım testidir. Fonksiyonel testlerin amacı, uygun girdi sağlayarak ve çıktıyı Fonksiyonel gereksinimlere göre test edildiği bir tür kara kutu testidir.

Fonksiyonel test, esas olarak kara kutu testini içerir ve uygulamanın kaynak koduyla ilgilenmez. Bu test, Kullanıcı Arayüzü, API’ler, Veritabanı, Güvenlik, İstemci/Sunucu iletişimi ve test edilen uygulamanın diğer işlevlerini kontrol eder. Test, manuel olarak veya otomasyon kullanılarak yapılabilir.

https://medium.com/@crescenttech555/functional-testing-49ab1e85b123

Kara Kutu’dan da biraz bahsetmek gerekirse, Kara kutu Testi,
Fonksiyonel testler sırasında test uzmanları, uygulama özelliklerini kullanıcı özelliklerine göre doğrular. Bu, birim testi olan geliştiriciler tarafından yapılan testlerden tamamen farklıdır. Kodun beklendiği gibi çalışıp çalışmadığını kontrol eder. Birim testi, kodun iç yapısına odaklandığından, beyaz kutu testi olarak adlandırılır. Öte yandan, fonksiyonel test, kodun iç yapısına bakmadan uygulamanın işlevlerini kontrol eder, bu nedenle kara kutu testi olarak adlandırılır. Çeşitli bireysel kod bileşenleri ne kadar kusursuz olsa da, tüm bileşenler birleştirildiğinde uygulamanın beklendiği gibi çalışıp çalışmadığını kontrol etmek önemlidir.

Fonksiyonel Testte neyi test ediyoruz ?
Fonksiyonel testin temel amacı, yazılım sisteminin işlevlerini kontrol etmektir. Esas olarak;

Ana hat işlevleri: Bir uygulamanın ana işlevlerini test etme
Temel Kullanılabilirlik: Sistemin temel kullanılabilirlik testlerini içerir. Bir kullanıcının herhangi bir zorluk yaşamadan ekranlar arasında özgürce gezinip dolaşamayacağını kontrol eder.
Erişilebilirlik: Sistemin kullanıcı için erişilebilirliğini kontrol eder.
Hata Koşulları: Hata koşullarını kontrol etmek için test tekniklerinin kullanılması. Uygun hata mesajlarının gösterilip gösterilmediğini kontrol eder.

Fonksiyonel Test Türleri

Unit Testing : Birim testi, bir bileşende geliştirilen kodun her bir parçasının istenen çıktıyı vermesini sağlar. Birim testinde, geliştiriciler yalnızca bir bileşenin arayüzüne ve belirtimine bakar. Kodun her birimi, başka bir birime geçmeden önce bağımsız olarak kapsamlı bir şekilde test edildiğinden, kod geliştirmenin dokümantasyonunu sağlar.

Birim testleri, kırılma olasılığı en yüksek olan kodu uygulayarak fonksiyonel testleri destekler.

Duman Testi, temel işlevlerin çalışıp çalışmadığını doğrulamak için geliştiriciler tarafından QA ekibine verilen ‘yeni’ yapı üzerinde duman testi yapılır. Önemli fonksiyonel test türlerinden biridir. Bu, herhangi bir yeni yapı üzerinde yapılacak ilk test olmalıdır. Duman testinde, seçilen test senaryoları sistemin en önemli işlevselliğini veya bileşenini kapsar. Amaç, kapsamlı testler yapmak değil, sistemin kritik işlevselliğinin iyi çalıştığını doğrulamaktır.

Entegrasyon Testi, birlikte nasıl çalıştıklarını kontrol etmek için ayrı bileşenleri test etmek için gerçekleştirilir. Yani tek tek iyi çalışan ve entegre edildiğinde hata göstermeyen modülleri test etmek için yapılır. En yaygın fonksiyonel test türüdür ve otomatik test olarak gerçekleştirilir.

Genellikle geliştiriciler, sistemin/yazılımın farklı modüllerini aynı anda oluşturur ve diğerlerine odaklanmazlar. Bireysel modüllerde yaygın olarak birim testleri olarak bilinen kapsamlı siyah beyaz kutu işlevsel doğrulaması gerçekleştirirler. Entegrasyon testleri, modüller arasında veri ve operasyonel komutların akmasına neden olur, bu da bunların tek tek bileşenlerden ziyade bütün bir sistemin parçaları olarak hareket etmeleri gerektiği anlamına gelir. Bu genellikle UI işlemleri, veri biçimleri, işlem zamanlaması, API çağrıları ve veritabanı erişimi ve kullanıcı arabirimi işlemi ile ilgili sorunları ortaya çıkarır.

Regresyon Testi, Geliştiriciler işlevselliği/özelliği değiştirdiğinde veya değiştirdiğinde, bu güncellemelerin beklenmedik davranışlara neden olma olasılığı çok yüksektir. Bir değişikliğin veya eklemenin mevcut işlevselliklerden herhangi birini bozmadığından emin olmak için regresyon testi yapılır. Amacı, yanlışlıkla mevcut yapıya girmiş olabilecek hataları bulmak ve daha önce kaldırılan hataların ölü kalmaya devam etmesini sağlamaktır. Regresyon testini destekleyen birçok işlevsel test aracı vardır.

Sistem Testi, belirtilen gereksinimlere uygunluğunu değerlendirmek için eksiksiz, entegre bir sistem üzerinde gerçekleştirilen testtir.

Entegrasyon testinin tamamlanmasının ardından ürün, sistem testine geçilir. Sistem testi, programın geliştirilmesinde rol oynamamış bağımsız test uzmanları tarafından gerçekleştirilir. Bu test, üretimi yakından yansıtan bir ortamda gerçekleştirilir. Sistem Testi, uygulamanın paydaş tarafından belirlenen teknik, işlevsel ve iş gereksinimlerini karşıladığını doğruladığı için çok önemlidir.

Kullanıcı kabul testi (UAT), yazılım test sürecinin son aşamasıdır. UAT’de gerçek yazılım/uygulama kullanıcıları, gerçek dünya senaryolarında gerekli görevleri yerine getirebildiğinden emin olmak için yazılımı test eder. Genel olarak, tüm fonksiyonel test türleri arasında nihai bir kontrol noktası olarak paydaşlara ürün teslimi sırasında gerçekleştirilir.

Yazılım/uygulama, başlangıçtan dağıtıma kadar, test ekibi ve geliştiriciler tarafından çeşitli test türlerinden geçer. Tüm çabaların nihai hedefi, kullanıcıların gereksinimlerini ve müşterinin beklentilerini karşılayan çalışan bir yazılım/uygulama sunmaktır.

--

--

Kerem Metin

Electrical - Electronics Engineer Software Engineer in Test