Cohorts
  • Discover
  • About Us
  • Blog
  • Patika.dev
  • Web3

.Net Core

Tarihçe, .Net Framework vs .Net Core vs .Net5

.NET 5 Kurulumu
Visual Studio Code kurulumu

Http Protokolü
Restful Servisler
Restful vs Soap
JSON (JavaScript Object Notation)

Örnek Web Api Yaratmak

Startup ve Program Sınıfları
Ortam dosyaları

Controller Sınıfı
Route Kavramı
Action Methodlar
Okunabilir API tasarımı

Swagger Nedir? Nasıl Kullanılır?
Postman Nedir? Nasıl Kullanılır?
Api Debug Nasıl Yapılır?

Get ve GetById endpoint'lerinin yazılması
Put ve Post endpoint'lerinin yazılması
Delete endpoint'inin yazılması

İlişkisel ve NoSql Veritabanları
Table,Primary Key, Foreign Key Kavramları
Tablo İlişkileri

Temel SQL
ORM Nedir? ORM Araçları Nelerdir? Entity Framework Core'a Giriş
Örnek Projeye EF Core Dahil Etmek
DB Context kullanarak CRUD işlemler
Auto Increment ID kolonunun eklenmesi
Linq ile Crud İşlemler

Entity Kavramı
ViewModel ve Dto Kavramı
Ödev - Model Kullanımı
Ödev Çözümü - Model Kullanımı
AutoMapper

Modellerin Doğrulanması ve FluentValidation Kütüphanesi
Model Validasyonu - Ödev
Model Validasyonu - Ödev Çözümü

Middleware Kavramı
Custom Exception Middleware Yaratılmak

Dependency Nedir ?
Dependency Injection (DI) Kavramı
DI Container Kavramı
.NET Core DI Container (Services)
Projeye DI Container Kullanarak Logger Servis Eklemek

Pratik - Projeye Genre Controller ve Servislerin Eklenmesi

Ödev - Projeye Author Controller ve Servislerin Eklenmesi

Test Kavramı ve Çeşitleri
TDD (Test Driven Development) Nedir ?
Örnek Test Yazımı
Pratik - Command ve Validator Sınıflarının Testlerinin Yazılması

Ödev - Projenin eksik testlerinin tamamlanması

Token Bazlı Kimlik Doğrulama ve Access Token Kullanımı
Refresh Token Kullanımı

Proje Ödevi - Movie Store Uygulaması

Proje Ödevi 2 - Serbest Proje Seçimi

TDD (Test Driven Development) Nedir ?


Test Güdümlü Geliştirme yani TDD son yıllarda çokça duyduğumuz ve yaygınlaşmaya başlayan bir pratik. Temelde söylediği şey uygulama kodunu yazmadan önce testinin yazılması gerektiğidir. Yazılıma yeni başlayan biri için adapte olması başlangıçta çok zordur. Ama geleneksel yöntemlerle yazılım geliştirmeye alışkın olan biri için adapte olması çok daha zordur :)


Peki neden önce testleri yazmak gerek? "Önce kodu yazsak sonra testleri yazsak olmaz mı? Hem stopper da olmamış olur, uygulama test ortamında iş birimleri tarafından test edilirken biz de arkadan birim testleri yazarız ne olacak ki?" gibi düşünebilirsiniz. Ben de size direnç mekanizmanız iş başında derim.


Bu testlerin önce yazılması sadece bir sıralama meselesi değildir. Testleri düşünürken siz üzerinde çalıştığınız feature üzerine daha fazla düşünme şansı yakalarsınız. Yani alelade bir yazılım prosesi değildir testler. Günlük hayatta gelen işler çoğunlukla acildir. Ve bu aciliyet ve yoğunluktan işleri hakkıyla yazmak yerine, sadece gereksinimi karşılamak üzere hızlıca yazar ve devreye alırız. Ama bir süre sonra bu özensiz yazılmış kodlar uygulamayı tıkar bir bakmışsınız uygulama genişleyemez hale gelmiş. Yada canlıya 1 haftada çıktığınız bir ürün için 2 hafta canlıya hata desteği verirsiniz. Bunların çoğu da yazılım hatası yada eksiğidir. Yazılımı geliştirirken hep mutlu senaryo dediğimiz happy-path'lere göre yazmışızdır. Ama ürün canlıya çıktığında bir süre edge-case yani uç senoryo yaşanır. Ve çoğu durumda da validasyonlar eksiktir. Teknik borçlar boğazımıza kadar dayanmadan aksiyon almamız gerekir.


Yukarıda bahsettiğim senorya tahmin edilenden çok daha yaygın yaşanan bir senoryodur. Çözmenin ise tek ve basit bir yolu var. O da ilgili feature üzerine daha fazla düşünmek. Kod penceresini ilk değil en son açmak. Yazacağımız ürün ile düşünce aşamasında daha fazla zaman geçirmeliyiz. İşte TDD yaklaşımı tam olarak bunu yapabilmemiz için bize alan açar. Testleri düşünürken genelde uç senoryaları düşünürüz. Kodu yazarken bu kodu nasıl yazarım, gereksinimi nasıl karşılarım diye düşünürken, test yazarken bu feature'da olması gerekenlerle birlikte olmaması gerekenleri kodu patlatabilecek senoryoları da düşünürüz. İşin güzel tarafı bu zorlama değil içgüdüsel de bir yaklaşımdır. Kodu görmeden testi yazmak başlangıçta insanı çok zorlayabiliyor ama aradaki farkı gördükten sonra vazgeçilebilecek bir fayda değil :)


TDD'deki akışa daha yakından bakalım. Önce uygulama yada özelliğin tüm testleri yazılır. Doğal olarak tüm testler başlangıçta hata alacaktır çünkü kodları yoktur. Daha sonra adım adım kodlar yazılır. Kodlar tamamlandıkça testlerin bazıları geçmeye başlar. Kodlar tamamlandığındaysa tüm testlerin hatasız bir şekilde çalışıyor olması beklenir. Hata varsa koda dönüp yeniden refaktor yapılmalıdır. Sonra tüm testler yeniden çalıştırılmalıdır. Burda önemli olan nokta testlerin tümüyle ilgilenmek. Yazmış olduğumuz kod bir testin geçmesini sağlarken başka bir testin fail etmesine neden olabilir.


Ben TDD'nin bir yazılım geliştirme pratiğinden çok bir kültür meselesi olduğu görüşündeyim. Şirket genelinde yayılmadığı ve içgüdüsel olarak uygulanmadığı sürece zorlama bir pratik olarak kalmaya devem edecektir.

TDD'nin ne olduğunu az çok anladık. Biraz da nerden geldiğine bakalım istiyorum. TDD ilk olarak Kent Beck adında bir yazılımcı tarafından agile proje geliştirme metodoljisi olan extreme programming çatısı altında kullanıldı. Yazılım dünyasına ilk duyurulduğunda adından da anlaşılacağı üzere çok extreme bulunduğu için yaygın kullanılamadı. Hala günümüzde çok yaygınlaşabildiği söylenemez. Ama faydası da tartışılamaz. O nedenle günlük hayatımıza adapte edip bir prensip haline getirmek gerekiyor. Tam da bu nedenden ötürü TDD bir kültür meselesidir.


Okuma Önerisi: Test Driven Development ile ilgili daha detay bilgi sahibi olmak için tıklayınız.


İnceleme Önerisi: TDD'yi ilk öne süren kişi olan Kent Beck'in makalelerini incelemek ve test first yaklaşım ile ilgili daha detay bilgi sahibi olmak için tıklayınız.

Previous
Next

Lesson discussion

Swap insights and ask questions about “.Net Core”.

Enroll to participate
Start the course to unlock the discussion. Enrolling helps us keep conversations relevant to learners.
Cohorts
WebsiteDiscoverBlogPatika.devRise In
CoursesCircleRustSoliditySolanaWeb3 FundamentalsBlockchain Basics
CompanyAbout UsTerms of UsePrivacy PolicyGDPR NoticeCookies
Don't miss any update!

Disclaimer: The information, programs, and events provided on https://cohorts.patika.dev is strictly for upskilling and networking purposes related to the technical infrastructure of blockchain platforms. We do not provide financial or investment advice, nor do we make any representations regarding the value, profitability, or future price of any blockchain or cryptocurrency. Users are encouraged to conduct their own research and consult with licensed financial professionals before engaging in any investment activities. https://cohorts.patika.dev disclaims any responsibility for financial decisions made by users based on the information provided here.

© 2026 Cohorts, All rights reserved