Ilker Furkan Kahyalar

Ilker Furkan Kahyalar

Software Engineer


Home

Podcast

Projects

References

Contact


Subscribe


Yazılım Test Otomasyonu | Okulda Başlayan Aşk

Herkese merhabalar, uzun zamandır yazılım test otomasyonuyla alakalı bir şeyler yazmak istiyordum. Bu yazımda genel olarak “Test otomasyonla nasıl tanıştım ve nasıl bir yol izledim.” üzerinde duracağım. Vakit buldukça daha teknik kısımlara da geçmeye çalışacağım.

Naçizane ricam, yazı içeriği ya da genel olarak aklınıza takılan bir şey olursa benimle iletişime geçinmekten çekinmeyin. Yapıcı yorumlarınıza ve sorularınıza her zaman açığım ve görmekten büyük mutluluk duyarım.

Test otomasyon ile 3. sınıfın ilk döneminde N11.com’un seçmeli dersi olan “Introduction to Software Testing” dersini alarak başladım. Taylan Derinbay hocam ile de bu ders sayesinde tanıştım. O zamana kadar testle alakam(manuel testing dahil) sıfırdı. Çünkü ders programımız SDLC ile uyumlu bir şekilde ilerliyor ve testing dersimiz de son sınıfa denk geliyor bu yüzden.

Kişisel olarak kod yazmaktan çok keyif alan birisiyim, ne yalan söyleyeyim, testing o zamana pek ilgimi çekmemişti. Fakat dersten bir kaç hafta önce böyle bir mail almak açıkçası “n’oluyoruz ya?” dedirtmişti bana.

Mail

Giriş kısmını geçelim artık, peki neler oldu ve neler öğrendim? Esasında dersin en ilgi çekici kısmı Taylan hocamın yaklaşımıydı. Ders çünkü pek introduction gibi değildi, hocam saygılar :)

Başta da belirttiğim gibi bu yazı biraz hikaye yazısı gibi olacağından derste kullandığımız bütün teknolojileri yazıp yola devam edeceğim. Yazmaya devam ettikçe her bir tool/platform/framework vs.’nin üstünden tek tek geçeceğim. Bir dönem boyunca kullandığımız teknolojiler:

1-) Selenium 
2-) Selenium IDE*
3-) JUnit
4-) Maven**
5-) Git ve GitHub
* : Başlangıç için iyi olabilir fakat native clientlarından bariz zayıf.
**: Otomasyon yazmayı düşündüğünüz dilin build ve dependency management toolu diyeyim. (Java için Maven yada Gradle)

Fakat bunların ötesinde hocamın bunları da araştırın, kulağınıza çalınmış olsun diyip ekstra olarak Docker, SonarQube ve Jenkins’ten bahsetmişti. Son olarak süremiz yetmediği için göremediğimiz, fakat staj zamanındaki sevgilim Appium vardı.

Dersi olduğu gibi anlatmaya imkan tabiki yok; fakat derste üstünde bariz durduğumuz bazı şeyler var ve bunlar bence test alanında ilerlemeyi düşünen herkes için çok çok önemli diye düşünüyorum. Bunlardan ilki test çeşitleriydi. Ders kitabı olarak ISTQB Foundation Level dökümanını kullanıyorduk. O yüzden kitabı okumak isteyen olursa, mutlaka okuyun bence, linkten bulabilirsiniz. Test çeşitlerini, Fonksiyonel Testler / Fonksiyonel Olmayan Testler / Regresyon Testleri / Yapısal Testler ve alt başlıkları olarak düşünebilirsiniz. Bunları öğrenmek bence hayati bir önem taşıyor. Testleri anlatan önemli bilgilerin yanı sıra, ileride test işiyle uğraşmayı düşünürseniz; bunları bilmek diğer testçilerle aynı dili konuşmanıza yardım eder.

Gelelim bir diğerine: “Test Seviyeleri”. Bu kısım bana göre test çeşitlerinden daha önemli. Çok yüzeysel bahsetmek gerekirse Birim/Entegrasyon/Kabul ve Sistem olarak farklı seviyeler var ve her bir seviyede yazılan testin amacı — tahmin edersiniz ki — birbirinden oldukça farklı. Ki bu konuları bilmeden tam bir testçi olunmamalı bence. Çünkü yazılım mimarisi bilmeden geliştirici olmaya benzer diye düşünüyorum. Olunamaz kesinlikle değil fakat sağlam temellere oturtulmuş test bilgisi de en az geliştiricilik kadar zor. Fakat anlamadığım bir şekilde ama testin ve testçiliğin değerini olması gerekenden daha aşağılarda görüyorum.

Bana göre derste gördüğümüz ve kafaya kazınması gereken en önemli şey “Yedi Test İlkesi”. Çünkü bu ilke bu işin önde gelen testçileri/yazılımcıları tarafından oluşturulmuş ve siz de okuyunca bunları ilke olarak benimsemelisiniz diye düşünüyorum.

  1. Testin amacı, yazılımda hataların olduğunu göstermektir; yazılımda hata kalmadığını ispatlamak değildir.
  2. Yazılımı %100 test etmek imkansızdır.
  3. Teste yazılım geliştirme sürecinin başında başlamak gerekir.
  4. Hatalar yazılımın belli alanlarında yoğunlaşır.
  5. Antibiyotik Direnci*
  6. Test yaklaşımı ve aktiviteleri yazılım projesinin koşullarına göre değişiklik gösterir.
  7. Yeni hata bulamıyoruz başarılı bir yazılım elde ettik yanılgısı.

*: Test senaryolarının belirli aralıklarla güncellenmesi ve revize edilmesi gerekmektedir. Bunun yanında yazılımın farklı ve daha önce test edilmemiş parçalarını test eden yeni test senaryolarının hazırlanması, yeni test tekniklerinin kullanılması yazılımda daha fazla hatanın tespitine olanak sağlayacaktır.

Kod, tool, framework işlerine girişmeden önce böyle bir yazının daha ilgi çekici olduğunu düşündüm. Güçlü bir temel için bana kalırsa Java, Selenium, vs.’den önce dersimizin ana kalıpları olan bu üç kavrama odaklanmak ileride kod yazarken odaklanılması gereken yerlere olan yaklaşımınızı değiştirecektir.

Yazımın başlığındaki aşkın karşılığı ise bu alanda tutkulu olmak size bambaşka bakış açıları ve bambaşka fırsatlar sunabilir. Bu bana Türkiye’nin en iyi test firmalarından birinde 6 ay boyunca staj yapma imkanı sağlayacaktı. Bu yazımdan sonraki ilk yazımda da staj dönemimi bu şekilde yazmayı planlıyorum. Umarım bu yazımı beğenir, o yazıyı da okumak istersiniz. Kabul ediyorum; çoğu zaman hikaye yazıları, teknik yazılar kadar ilgi çekici değildir. Bu yazıları yazma amacım 3. sınıf öğrencisi olarak başladığım serüvenime 1.5 yıl da neler kattığımı ve bu yola çıkmayı düşünen diğer dostlara nelerin mümkün olabileceğini anlatmaya çalıştığım bir şeyler karalamaktı.

Ayrıca burada adı geçen her şey ve daha fazlasıyla alakalı güzel güzel şeyler yazmaya çalışacağım. Fakat bu süreçte yazılım test otomasyonuna giriş yapmak isteyen dostlar varsa yukarıda belirttiğim ilk dörtlüyü mutlaka araştırsınlar.

Ben kendi adıma burada geçenler ve daha fazlasını araştırıp, kendime geniş bir takım çantası yarattım diyebilirim. İleride geliştirici ya da testçi olarak bir kariyer izlense bile test otomasyon hibrit bir yaklaşım diyebiliriz. Bana kalırsa çok hızlı gelişen bir alan, yeni iş imkanlarına açık, çok eğlenceli, bolca yaratıcılık ve araştırma gerektiren çok güzel bir alan.

tl;dr: Öğrenin, öğretin, kullanın, kullandırın, kitabı okuyun, okutun! :) Taylan Hocam, her şey için teşekkürler tekrardan, saygılar! :)

Kapanış

Beni ve sitemi desteklemek isterseniz; yazıyı paylaşıp daha fazla insana ulaşmasına yardımcı olabilirsiniz. 🦄

Yandaki menüye mailinizi yazıp, göndererek siteye abone olabilirsiniz. Böylece ben de yeni bir içerik yayınlar yayınlamaz size haber vereceğim, söz!

Ayrıca bana ulaşmak için yine sol menüdeki iletişim formunu kullanabilirsiniz. Tüm mesajları özenle okuyup, elimden gelen en hızlı şekilde geri dönmeye çalışıyorum. Yorumlarınızı ve önerilerinizi duymayı heyecanla bekliyorum!

Son olarak da, bir kahve ısmarlamak isterseniz de, aşağıdaki link aracılığıyla siteme yardımcı olabilirsiniz. Tüm destekleriniz için şimdiden teşekkür ederim! 🤩

Buy Me A Coffee

Bir sonrakinde görüşmek üzere,
Furkan