📖
Genel Bilgiler
  • Genel
  • Yazılım Teknolojiileri
    • SOLID
    • Mimariler ve Mimari Paternleri
    • MVC, MVP, MVVM
    • Mikroservis Yaklaşımı
    • DDD
    • Nesne Yönelimli Programlama
    • Hangi Programlama Dili Hangi Framework Öğrenilmeli?
    • Programlama Dilleri Üzerine tecrübeler
    • Microsoft .NET Teknolojileri
    • Microsoft .NET CORE 3.x ile Katmanlı Mimari Tasarımı
    • Test
    • Hangi Geliştirme ve Deployment Ortamı (Windows vs Linux)
    • Veri Tabanları ve Veri Tabanı Mimarileri
    • Asysnc/Awake
    • Oyun Geliştirme
      • WebAssembly vs Asm.ts
      • Unity ve Devler Ligi
      • Godot Oyun Motoru
      • Three.js ve Alternetif Javascript 3D Kütüphaneler/Framework' ler
    • Aspect Oriented Programming
  • Sanallaştırma
    • Sanallaştırma (Hypervisor ve Container & Docker)
    • Kubernetes
  • Yazılım Kültürleri
    • DevOps
    • Jenkins
    • SAST, DAST, SCA, Pentest
    • Glusterfs
    • Yazılım Üzerine Tartışmalar/Sohbetler
    • TUBITAK BILGEM YTE
  • Metro/Tren Sinyalizasyonu
  • Yapay Zeka (Artificial Intelligence)
  • Embedded Realtime Linux
  • Süper Bilgisayarlar Neden Süperler
  • Lock Free Tasarım
  • Git ile Çalışmak
  • CPU, APU, PPU, NPU, TPU ...
  • CANBUS
  • MERHABA (HELLO)
Powered by GitBook
On this page
  • Tests
  • UNIT TEST
  • INTEGRATION TEST
  • GUI TEST
  • Diğer Videolar
  • 2020

Was this helpful?

  1. Yazılım Teknolojiileri

Test

Unit and Integration Test

PreviousMicrosoft .NET CORE 3.x ile Katmanlı Mimari TasarımıNextHangi Geliştirme ve Deployment Ortamı (Windows vs Linux)

Last updated 5 years ago

Was this helpful?

Tests

UNIT TEST

Herhangi bir IO çağrısı yapmadan yazılan testlerdir. O tarz erişimlerinizi bağımlılıklarınızı sahteleriyle (Fake Stub, Mock) değiştirmeniz gerekiyor. Fake, stub ile Mock içine alan tabirdir.

Unit test yazabilmek için kodumuzu yazarken SOLID prensiplerinden Dependency Injection göre kodumuzu yazmamız gerekir.

Stub, enjecte ettiğiniz class ın metodlarını kullanıp kullanmadığını merak etmediğiniz halidir. Mock, ise merak ediyorsanız ki halidir. Örneğin futbol sahasının fiskiye sistemiyle sulanmasını düşünelim. Testimiz sahanın sulanıp sulanmadığını gözlemlemek. İki yöntemle yapabiliriz. Bir cihaz ile sahanın çimlerinin ıslak olup olmadığı kontrol edilebilir. İkinci yöntem ise muslukların başına sensör eklenerek çalıştıklarının tespitiyle sahanın da sulanmış olacağını farz edebiliriz. Birinci yöntemde musluklarla ilgilenmediğimizden onlar stub oluyor, ikinci yöntem de musluklar bizim mock mız olur. İkinci yöntemle musluk çalıştımı çalışmadı mı kaç defa çalıştı gibi ek bilgiler elde edebiliyoruz. Stub testinizi fail ettirmez ama mock ettirir. Çünkü çağrılıp çağrılmadığına bakıyorsunuz.

Kodunuzdaki CRUD işlemleri sonrasında verilerin veritabanına yazılıp yazılmadığını save metodunun çağrılıp çağrılmadığına bakarak anlarsınız. bu mock olur. Ama gidip veri tabanından kontrol etmeye kalkarsak stub olur. Unit test için de doğru bir yöntemde değildir.

Unit testleriniz içerisinde lojik olmamalıdır. İf else gibi dallanmalar oluşturan koşullar olmasın. Triple A kavramına uygun yazılmalıdır.

  • Arrange (gerekli objeleri oluştur)

  • Act (test etmek istediğin metodu çağır)

  • Assert (beklenen veri mi metoddan döndü kontrol et)

Unit test geliştirmiş olduğunuz kodu test etmek için yazdığınız kod bloğudur ve esas olarak kodun veya fonksiyonun belirli bir biriminin davranışını kontrol eder ve geliştirdiğiniz kod dizinindeki akışa dayalı olarak acceptance criteria'ları cover ediyor mu etmiyor mu ölçebilmek adına da büyük öneme sahiptir.

Bazı Unit Test Frameworkleri

JAVA da JUnit tartışmasız kullanılırken, C++ tarafında oturaklı unit test framework olarak neler olduğunu internette araştırmak gerekir. Boost kütüphanesi güçlü bir kütüphane ve kendi içerisinde unit test çözümü de barındırmaktadır.

INTEGRATION TEST

Unit test veya integration test projenizde bulunan business logic'lerin belirtilen input'lar çerçevesinde ne şekilde çalışması gerektiğini garanti ettiğimiz yapılar olup projelerimiz için oldukça önemli bir Must layer olmaktadır.

Integration test; projenizde yer alan birden fazla modülün belirtilen input'lar ile beklendiği şekilde çalışmasını test eden yapıdır. Diğer bir deyişle, bir biri ile bağlı şekilde çalışan modüler yapıları ve onların sahip oldukları business logic'leri toplu bir şekilde ele alıp doğruluğunu veya yanlışlığını test etmemizi sağlayan yapıdır.

Integration Test bize bir şeyin çalışıp çalışmadığını söylerken, Unit Test neden çalışmadığını söyler. Unit Test yazılımcı perspektifinden bakarken, Integration Test kullanıcı perspektifinden yazılır.

Integration test, unit test’e göre çok daha maliyetlidir.

GUI TEST

Diğer Videolar

2020

MSTest
NUnit
xUnit
MBunit
LogoComparing xUnit.net to other frameworksxUnit.net
Unit Test Nedir
LogoYazılım Performans Testi Çeşitleri - Types of Performance Testing for Software
LogoGitHub - unittest-cpp/unittest-cpp: A lightweight unit testing framework for C++GitHub
Exploring the C++ Unit Testing Framework JungleGames from Within
Asp.​Net Core Unit Test Nedir Nasıl Yazılır
LogoGitHub - google/googletest: GoogleTest - Google Testing and Mocking FrameworkGitHub
LogoUnit testing for C++ code - Tools and methodologyStack Overflow
Moq Library Kullanarak Unit Test Yazma
Repository Katmanı için Mocking Infrastructure Oluşturma (Moq Library)
Repository Pattern CRUD İşlemleri Dışında Bulunan Specific Metotlar İçin Mocking
Asp.Net Core Unit Testing Database and Repository, In Memory Database Kullanımı
Asp.Net Core Web Api Integration Test Nedir Nasıl Yazılır
LogoAdam Storr - Integration Testing with ASP.NET Core 3.1Adam Storr
LogoEntegrasyon (Integration) Testi Nedir ve Tipleri Nelerdir – Gökhan Gökalp
LogoUnit Test mi? Integration Test mi?Medium
LogoEntegrasyon (Integration) Testi Nedir ve Nasıl Yapılır?
Logo35+ Best GUI Testing Tools with Complete Details [2023 LIST]Software Testing Help