FowApps
Published in

FowApps

Photo by Joshua Lawrence on Unsplash

AAA Pattern (Arrange, Act, Assert)

Geliştirdiğimiz birimler, modüller veya uygulamalar birer matematik formülü gibidir. Her formül bir hipotez olarak ortaya çıkar. Bu hipotezler çeşitli sağlamalar sonucunda bir teoriye dönüştürülür. Doğruluğu her senaryoda kanıtlanmış teoriler birer kural olarak hayatımıza girer.

2*2=4

Çarpma işlemi içinde gizli bir toplama işlemi barındırır. Onluk sayı sisteminde bu işlem bir hipotezdir. Toplama işlemi ile sağlaması yapıldığında bir teori haline gelir. Ardından yapılan testler sonucunda artık bir kanun olur ve herkes tarafından kabul edilir.

Yazılımlar matematik formülleri gibidir. Eğer uygun sağlamalar ile harmanlanmaz ise birer hipotez olarak kalır. Unutmayın ki hipotezlerin doğruluğu kesin değildir. Sadece öyle olduğu varsayılır. Ancak yazılımda kesinlik önemli bir parametredir. Geliştirdiğimiz kodların doğruluğunu varsaymamalıyız. Geliştirdiğimiz her birim için uygun sağlamalar yapmalıyız.

Birçok geliştirici bu kısmı hafife alıyor. Hatta birçok organizasyon geliştirdiği ve binlerce insana kullandırdığı uygulamaların testlerinin olmamasını normal karşılıyor. Hadi gelin bu algıyı kıralım. 🥸

Hadi kenara bir not alalım. Testler üretimi yapan kaynak koddan bile daha net yazılmalıdır. Umarım buradaki espriyi anlamışsınızdır. Sadece test yazmak da bir çözüm değildir. Yazdığımız testler kaynak kodumuzdan bile daha net olmalıdır.

Çünkü geliştirdiğimiz kodların doğru yürütülmesi bizim ilk amacımızdır. Ancak testler ile geliştirdiğimiz kodların davranışını belgelemiş oluruz. Bu nedenle, testlerin ilk tüketicileri geliştiricinin kendisidir.

Geliştirdiğimiz koddan daha net testler yazmak da bizi nihai hedefimize ulaştırmaz. Geliştirdiğimiz testlerin de okunabilir olması gerekir. İşte tam bu noktada AAA Pattern hayatımıza giriyor. Arrange, Act ve Assert yani Düzenle, Harakete Geç ve İddia Et kalıbı hayatımızı daha eğlenceli bir hale getirecek.

C# üzerinde bazı örnekler ile bu konuyu özetleyebiliriz.

En ilkel bakış açısı ile “Testler pass olduğu sürece sorun yok” diyebiliriz.

Evet, test pass olur, ancak okumanız ve anlamanız gerektiğinde her şey daha az anlaşılır hale gelir.

Bu nedenle, testin bölümlerini açıkça ayırmak daha iyidir. Unutmayın, bu sadece bir okunabilirlik meselesi.

Hadi tartışalım. Neden AAA Pattern?

Arrange, Act, Assert her birinin önemli bir anlamı ve tanımı olduğunu tekrar hatırlayalım. Düzenle, Harekete Geç, İddia Et.

Arrange

Bu bölümde testler için gerekli tüm ön koşulların sağlanması gerekiyor. Test edilecek değerler, mock objelerin konfigürasyonu ve gereken her şey bu bölümde bulunmalıdır.

Act

Test edeceğimiz birimi çalıştırdığımız bölümdür.

Assert

Test için tanımlanan başarı kriterleri bu bölümde bulunur. Her test senaryosunda tek bir Assert deyiminin bulunmasını önerilir.

Testleri fizik deneyleri olarak düşünün: önce ortamı kuruyorsunuz, ardından testi çalıştırıyorsunuz ve son olarak sonucun beklediğiniz gibi olup olmadığını kontrol ediyorsunuz.

AAA Pattern bize testlerin daha okunaklı ve daha kolay değiştirilebilmesini sağlayacaktır.

Son olarak en son yazdığım endpoint testini aşağıya bırakıyorum. Bakalım AAA Pattern size detayı ile ilgili hiçbir bilginiz olmadığı bir senaryoyu okunaklı kılacak mı?

Yazdığınız kodlar production ortamında hatasız çalışsın. Testler sizi korusun. 🙏

What is Unit Testing? Definition from WhatIs.com (techtarget.com)

What Is Unit Testing? | SmartBear

Unit Testing and Coding Best Practices for Unit Tests | Toptal

Unit Testing and the Arrange, Act and Assert (AAA) Pattern | by Paulo Gomes | Medium

The Arrange, Act, and Assert (AAA) Pattern: A Functional Approach | Mews Developers

Making Better Unit Tests: part 1, the AAA pattern — Manning

Utilize Arrange, Act, Assert (AAA) Pattern — Telerik JustMock

Fundamentals of Unit Testing: Understand AAA in Unit Testing (c-sharpcorner.com)

Clean Code Tip: AAA pattern for tests: why is it important? — Code4IT

--

--

FowApps is a spinoff of BilgeAdam Technologies which has over 24 years of experience, 1,000+ full-time employees including 600+ highly qualified engineers, serving 900+ highly satisfied global / national companies and governmental agencies.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Furkan Güngör

Furkan Güngör

Solution Developer — I want to change the world, give me the source code.