Download CV

FONKSİYONEL TEST NEDİR?

Aralık 17, 2021

Fonksiyonlar sistemin yaptıklarıdır dolayısıyla fonksiyonel testlerde sistemin yapabildikleriyle ilgilenir. Fonksiyonel testlerde temel olarak bileşen veya sistem fonksiyonunun testleri yapılır. Fonksiyonel testler tüm test seviyelerinde gerçekleştirilebilir.

Fonksiyonel testler yapılmadan önce kullanım durum senaryolarından test senaryolarının türetilmesi gerekmektedir. Test senaryoları hazırlandıktan sonra test yürütme sürecine geçilebilir. Test yürütme sürecinde aktör ile sistem arasında etkileşim test edilir. Bu testlerle beraber yazılan fonksiyonel gereksinim maddeleri de onaylanmış olur. Fonksiyonel testlerde genellikle yazılımın harici davranışları, girdi ve çıktılar dikkate alınır. Fonksiyonel testler analist ve yazılım test uzmanları tarafından yapılır.

Fonksiyonel Testte neyi test ediyorsunuz?

İşlevsel 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 testini içerir. Bir kullanıcının herhangi bir zorluk yaşamadan ekranlar arasında özgürce gezinip gidemeyeceğini kontrol eder.

Erişilebilirlik : Kullanıcı için sistemin 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örüntülenip görüntülenmediğini kontrol eder.

FONKSİYONEL TEST TÜRLERİ

Yazılımınızı doğrulayan birçok farklı işlevsel test türü vardır. İşte en yaygın olanlardan bazıları:

Birim Test

Birim Testi, bir yazılımın ayrı birimlerinin veya bileşenlerinin test edildiği bir yazılım testi türüdür. Amaç, yazılım kodunun her biriminin beklendiği gibi çalıştığını doğrulamaktır. Unit Test, geliştiriciler tarafından bir uygulamanın geliştirilmesi (kodlama aşaması) sırasında yapılır. Unit Testleri bir kod bölümünü izole eder ve doğruluğunu onaylar. Unit, bireysel bir işlev, yöntem, prosedür, modül veya nesne olabilir.

SDLC, STLC, V Modeli, Unit test, entegrasyon testinden önce yapılan ilk test seviyesidir. Birim testi, genellikle geliştirici tarafından gerçekleştirilen bir WhiteBox test tekniğidir. Gerçek dünyada, geliştiricilerin testlere isteksizliği veya zaman sıkıntısı nedeniyle, QA mühendisleri aynı zamanda birim testleri(unit test) de yapar.

Birim Testi için Araçlar

Birim testine yardımcı olacak birkaç otomatik araç vardır. Aşağıda birkaç örnek verildi:

  1. JUnit : Junit, Java programlama dili için kullanılan ücretsiz bir test aracıdır. Test yöntemini belirlemek için iddialar sağlar. Bu araç önce verileri test eder ve ardından kod parçasına eklenir.
  2. NUnit : NUnit, tüm .net dilleri için yaygın olarak kullanılan birim testi çerçeve kullanımıdır. Manuel olarak komut dosyası yazılmasına izin veren açık kaynaklı bir araçtır. Paralel olarak çalışabilen veriye dayalı testleri destekler.
  3. JMockit : JMockit, açık kaynaklı Birim test aracıdır. Çizgi ve yol metriklerine sahip bir kod kapsama aracıdır. Kayıt ve doğrulama sözdizimi ile alay API’sine izin verir. Bu araç, Hat kapsamı, Yol Kapsamı ve Veri Kapsamı sunar.
  4. EMMA : EMMA, Java dilinde yazılmış kodu analiz etmek ve raporlamak için açık kaynaklı bir araç setidir. Emma, ​​yöntem, çizgi, temel blok gibi kapsama türlerini destekler. Java tabanlı olduğundan harici kitaplık bağımlılıkları yoktur ve kaynak koduna erişebilir.
  5. PHPUnit : PHPUnit, PHP programcısı için bir birim test aracıdır. Birim adı verilen küçük kod bölümlerini alır ve her birini ayrı ayrı test eder.

Test Güdümlü Geliştirme (TDD) ve Birim Testi

TDD’deki birim testi, test frameworklerinin kapsamlı kullanımını içerir. Otomatik birim testleri oluşturmak için bir birim testi framework kullanılır. Aşağıda, TDD’nin birim testi dünyasına getirdiği kurallar:

  • Testler koddan önce yazılır
  • Test çerçevelerine büyük ölçüde güvenin
  • Uygulamalardaki tüm sınıflar test edilir
  • Hızlı ve kolay entegrasyon mümkündür

Entegrasyon Testleri

Entegrasyon testi, birbirinden bağımsız olarak test edilmiş olan iki yazılım ürününün birbirine bağlanması, birbiri arasında veri aktarımının sağlanması için birleştirilen modüllerin test edilmesidir. Entegrasyon testinin amacı bu birleşim sırasında ortaya çıkabilecek hataları gidererek sorunsuz birleşimi sağlamaktır. Yazılımsal ürünlerin entegre edilecek modüllerinin tamamı test edilir. Üç farklı test yöntemi bulunmaktadır.

Big Bang Entegrasyon Testi

Big Bang testinde, birleştirilecek tüm modüllerin testleri bir arada, bütün olarak yapılmaktadır. Böylelikle hızlıca test yapılacağından dolayı büyük zaman kazancı sağlanır. Ancak tümden yapılan testlerde herhangi bir hata çıkması durumunda hatanın tespit edilmesindeki zorluk olumsuzluk yaratmaktadır. Hatanın nereden kaynaklandığının araştırılması uzun sürmektedir.

Top Down Entegrasyon Testi

Top Down testinde, birleştirilen modüllerin bir bütün olarak yukarıdan aşağıya doğru ele alınırken aynı zamanda modüllerin ayıklanarak test işlemlerinin uygulandığı yöntemdir. Bu yöntemde her bir aşama kök olarak adlandırılır ve testin son aşamasında her bir kök kendi içerisinde test edilmiş olur. Buradaki amaç her bir modül kendi içerisinde test edilirken kesinlikle hatasız olmalıdır ki, iki hatasız modül birleştirildiğinde herhangi bir hataya olanak sağlamasın. Bu test ile modüllerde kırılım yaratılarak hatanın kolay saptanması sağlanır.

Bottom Up Entegrasyon Testi

Bottom Up testinde, birim test adı altında tüm modüller ayrı ayrı test edilmektedir. Her bir modül önce kendi içerisinde test edilir ve daha sonra bir üst seviyesi ile birlikte ele alınarak test işlemlerine devam edilir. Bitiş noktasına kadar tüm modüllerin bu şekilde test edilmesi ile işlem tamamlanır. Burada da aşağıdan yukarı doğru test edilme mantığı bulunmakta ve aynı şekilde kendi içerisinde test edilen modülün test sonucu hatasız olması durumunda bir üst seviyeye ilerlemektedir. Bu test ile hatalar kolayca bulunabilir.

Arayüz Testleri

Arayüz testi, iki farklı yazılım parçasının birbiriyle iletişim kurup kuramadığını kontrol eder.

Aşağıdakiler için arayüz testi yapabilirsiniz:

  • İş akışları
  • Uç vakalar
  • Performans, yük ve ağ testi
  • Bireysel sistemler

Arayüz testi şu amaçlarla yapılır:

  • Sunucu yürütmesinin doğru olup olmadığını kontrol etmek için.
  • Hata işleme düzgün bir şekilde yapılır ve uygulama veya yazılım tarafından yapılan sorgular için uygun hata mesajları gösterilir.
  • Sunucuya bağlantı sıfırlandığında sonucu kontrol etmek için.
  • Bileşenler kendi aralarında iletişim kurduğunda güvenlik yönünü kontrol etmek için.
  • Ağ arızasının bileşenler arasındaki iletişim üzerindeki etkisini kontrol etmek için.

Arayüz Testi için Araçlar

Arayüzü manuel olarak test etmek çok yorucu, karmaşık ve zaman alıcı bir süreç olabilir.

Arabirim testi gerçekleştirmenin en iyi yöntemi, otomasyonu kullanmak ve arabirim testini otomasyon planınıza dahil etmektir.

1) Postman

Bazı test kullanıcıları IDE ile aynı kodlama dilini kullanmaktan hoşlanmaz. Bu tür insanlar için Postman, otomasyon için iyi bir seçenektir. Bu aynı zamanda keşifsel bir arayüz testi için iyi bir seçenektir.

Postman basit bir REST istemcisidir ve Chrome eklentisinden hızla yararlanmaya başlayabilir. Mac, Linux ve Windows için kullanılabilen yerel bir sürümü vardır. İsteklerin oluşturulmasına ve alınan yanıtın kontrol edilmesine yardımcı olan bir UI’ye sahiptir.

2) SoapUI

Ekibiniz yalnızca API testi yapıyorsa, harika bir seçim olabilir. API testine ayrılmış eksiksiz bir işlevsel test aracıdır. Ayrıca, verilerin CSV veya excel biçiminde aktarılabildiği Veriye dayalı testi destekler. Ayrıca, web hizmeti testi için daha da iyi ve geliştirilmiş özellikler sunan SoapUI Pro adlı ücretli bir sürümü vardır.

Bazı belirli iş akışları veya işlevler için fazladan kod eklemek istiyorsanız, komut dosyalarınız için Groovy’yi kullanın. Ayrıca, bir genel değişken ayarı oluşturabilir ve her test için ayrı ayrı başlatmak yerine tüm bu değişkenleri testlerinizde kullanabilirsiniz.

3) JMeter

JMeter, yük testi için yaygın olarak kullanılır ve arayüz testi için de kullanılabilir. JMeter kayıt ve oynatma desteğine sahiptir ve okunması ve anlaşılması kolay HTML raporları oluşturur. JMeter, CSV dosyalarıyla uyumlu olduğundan, test için benzersiz parametreler oluşturmanıza olanak tanır.

Jenkins ile kolayca entegre edilebilir, böylece testleriniz CI’ye dahil edilebilir. Aynı aracı bir arayüz ve yük testi için kullanmak isterseniz, JMeter değerli bir seçim olacaktır.

4) Fiddler

Fiddler HTTP isteklerini kontrol etmenize ve (tekrar) kullanmanıza yardımcı olur. Uzantıları ile web sitesi sorunlarını gidermenize yardımcı olacak birçok özelliğe sahiptir ve çok daha fazlasını yapabilirsiniz. Şifrelenmiş isteğin şifresini çözmek ve ardından istekleri test amacıyla değiştirmek üzere yapılandırılabildiğinden güvenlik testi için de iyi bir araçtır.

Fiddler’ın uzantılarından biri APITest uzantısıdır, bu, bir arayüzün web davranışını doğrulamaya yardımcı olur.

Duman Testleri

Duman testi, yazılımın test aşamasına geçmek için yeterince iyi çalıştığını doğrular. Genellikle bir derleme tamamlandıktan sonra uygulanır fakat daha fazla test yapılmadan önce yapılır. Bu, daha sonra testlerde bulunan kusurları azaltır. (Bu, test çabalarınızı daha uygun maliyetli hale getirir.)

Duman testi genellikle manuel olarak yapılır. Ancak test sürecini hızlandırmak için otomatik hale getirilebilir.

Regresyon Testleri

Regresyon testleri, kod değişikliklerinden sonra mevcut işlevselliğin çalışmasını sağlar. Regresyon testinde, daha önce çalıştırdığınız testleri tekrar çalıştırmanız yeterlidir.

Regresyon testlerini çalıştırmak çokça zaman ve kaynak gerektirir. Bu nedenle, tüm test paketini yeniden çalıştırmak yerine bir test alt kümesi seçmek genellikle en iyisidir. Bu, sonuçları en üst düzeye çıkarırken maliyetleri en aza indirir.

Uygunluk Testi

Uygunluk testi, bir yapıda küçük kod değişiklikleri yapıldıktan sonra hataların giderildiğini doğrular. DevOps’ta, sürüm aşamasında uygunluk testleri yapılır. Ve genellikle sadece etkilenen bileşenler üzerinde çalışırlar.

Yazılımın kabaca beklendiği gibi çalıştığını doğrulamak için uygunluk testlerini kullanabilirsiniz. Duman testleri gibi, uygunluk testleri de test sürecinde zamandan tasarruf etmenin bir yolunu sağlar.

Kabul Testleri

Kabul testleri, yazılımın beklentileri karşıladığını doğrular. Bu aynı zamanda beta testi veya kullanılabilirlik testi olarak da bilinir.

Yazılım mühendisliğinde, Uluslararası Yazılım Test Yeterlilik Kurulu(ISTQB) kabul testini şu şekilde tanımlar:
Bir sistemin kabul kriterlerini karşılayıp karşılamadığını belirlemek ve kullanıcının, müşterilerin ve ya diğer yetkili birimin sistemi kabul edip etmeyeceğini belirlemek için gerçekleştirilen kullanıcı ihtiyaçları, gereksinimleri ve iş süreçleri ile ilgili testlerdir.

Kabul testi, organizasyon içindeki kişiler tarafından yapılabilir. Bu, dâhili kabul testi olarak bilinir. Veya kuruluşunuzun dışındaki kişiler tarafından da yapılabilir. Müşteri kabul testi ve kullanıcı kabul testi olarak bilinir.

Kabul testi aynı zamanda kullanıcı kabul testi (UAT), son kullanıcı testi, operasyonel kabul testi (OAT), kabul testine dayalı geliştirme (ATTD) ve ya alan (kabul) testi olarak da bilinir. Kabul kriterleri, bir sistem veya bileşenin kullanıcı, müşteri ve ya diğer yetkili bir kurum tarafından kabul edilebilmesi için yerine getirmesi gereken kriterlerdir.

Sistem Testleri

Sistem testi, entegre bir uygulama üzerinde yapılır. Tüm sistemi uyumluluk gereksinimlerine göre doğrular.

  • Yük
  • Kurtarma
  • Taşıma
  • Donanım/Yazılım

Hangi Test Türünü Seçmeliyim?

  • Eğer amacınız geliştirme anında hızlı bir şekilde hata bulmak ise; birim testi.
  • Eğer amacınız sistemi bir bütün (veritabanı ya da dosya sistemi, yani yazılımın çalıştığı ortam ile birlikte) olarak test etmek ise; entegrasyon testi.
  • Eğer amacınız ortamdan ve yan etkilerden bağımsız olararak sadece bir fonksiyonun test edilmesi ise; fonksiyonel testi.
  • Eğer amacınız yazılımdan beklenen işlemlerin yapılıp yapılamadığını kontrol etmek ise; kabul testi.

Örneklerle açıklamak gerekirse;

  • Kullanıcının kaç gündür kayıtlı olduğunu hesaplayan fonksiyonun testi; birim test.
  • Kullanıcının veri tabanına kaydedilebilmesinin testi; entegrasyon testi.
  • Bir resme tıklandığında modal açılması; fonksiyonel test.
  • Yeni bir kullanıcı kaydedilmesinin arayüz üzerinden testi; kabul testi.
Posted in Software Testing
Write a comment