UI TEST NEDİR? SMOKE TEST NEDİR? NEDEN YAZILIMLARI TEST EDERİZ?

Ece Akgül
4 min readJan 24, 2021

--

Her şeyden önce ürünler neden test edilmelidir bunu konuşalım. Yazılım ürünleri birçok aşamadan geçerek son kullanıcıya kadar geliyor. Fakat ürün geliştirme ile son kullanıcı arasında bir aşama ve biri var. Evet, test aşaması ve test mühendisi. Kullanıcının gördüğü ve etkileşimde olduğu kısmın, yani önyüzün testine UI (User Interface) Test ismi veriliyor. Yazılım test aşaması, yazılım oluşturulmaya başlandığı andan itibaren başlayan ve paralel yürütülmesi gereken bir alandır. Geliştirilen özellikler doğru ve aktif bir şekilde kullanılıyor mu? Ürün son aşamaya kadar hatasız ve işlevsel bir şekilde geldi mi? Var olan hatalar ürünün fonksiyonalitesini etkiliyor mu? Ürün istenilen tüm cihazlarda aynı görünüme sahip mi? Tüm cihazlarda kullanılabilirliği sorunsuz mu?

Bu aşamada iki tane test türü ortaya çıkıyor. Manuel test ve otomasyon testi.

Manuel test, diğer ismiyle fonksiyonel test isminden de anlaşılacağı üzere test mühendisinin kendini son kullanıcının yerine koyarak bütün fonksiyonaliteyi test etmesi demektir. Test senaryolarını otomatik bir araç kullanmadan manuel olarak yürütür. Tüm senaryolar ve durumlar test cihazı tarafından son kullanıcı düşünülerek yapılır. Butonlar doğru çalışıyor mu? Kullanıcı bu özelliği doğru bir şekilde kullanabiliyor mu? Bu özellik işe yarıyor mu? gibi soruların cevabını arar. Manuel test hem görünür hem de görünür olmayan hataları yakalamaya olanak sağlar. Geliştirilen her yeni özellik için manuel test zorunludur. Manuel testin başarılı olmasının en önemli kuralı, yazılımın gereksinimlerinin ve hedeflerinin testi yapan kişi tarafından kusursuz bir şekilde bilinmesidir.

Manuel Test Teknikleri;

· Beyaz kutu (WhiteBox) Testi

· Kara kutu (BlackBox) Testi

· Kabul (Acceptence) Testi

· Birim (Unit) Testi

· Sistem (System) Testi

· Entegrasyon (Integration) Testi

Gelelim birazda işin kod kısmına. Otomasyona. Nedir otomasyon dediğimiz şey? Test yapmanın kodla ne alakası olabilir? Gibi soruları duyar gibiyim. Otomasyon, bu işi tekrar ve kalıcılığa dökmenin ta kendisidir diyebiliriz. Ürün geliştirmek demek devamlı olarak o ürüne yeni özellikler eklemek ve var olan özellikleri de sürekli güncellemek, düzenlemek, bakımını yapmak demektir. Bir geliştirme hiç ummadığımız yerleri halk diliyle söyleyecek olursak bozabiliyor. Buna iş dünyasında ‘kırmak’ diyoruz. Örneğin Google 23 Nisan için doodle hazırlarken search butonunu kırdı gibi.

Otomasyonun temel mantığı, yapılan değişikliklerin nereyi bozduğunu daha kolay tespit edebilmek. Ürünün üzerinde otomasyon dediğimiz test aşaması gerçekleştiğinde ve devamlı koşan test kümeleri olduğunda kırılan yerleri bulmamız, görmemiz, onarmamız daha kolay oluyor. Gözle görülemeyecek, fark edilmesi zaman alacak sorunları hızlıca tespit edebiliyoruz.

Her geçen yıl test dünyasına yepyeni toollar, frameworkler ve araçlar kazandırılıyor. Kaliteli yazılıma erişmek ve bunu sürdürebilmek adına yazılım testine gereken önemin verilmesi gerekir. UI otomasyon toolları cazip ve olmazsa olmazlardandır. Nedir bu otomasyon toolları? Selenium, Cypress, Ghost Inspector, WatiN, Appium gibi toolları örnek verebiliriz.

Peki bir web sitesinin test yazılımına uygun dizayn edildiğini anlamak kolay mıdır? Çok kolay. Otomasyon kısmında sayfadaki her bir input, textbox, button gibi alanlara element adı veriyoruz ve bu elementleri yakalamak için çeşitli yöntemlerimiz var. CssSelector, Xpath, Id bunlardan birkaçı. Örneğin Loadium sitesini inceleyelim.

Görüldüğü gibi email input alanı için id tanımlanmış. Bu otomasyonu rahatlatan ve kullanışlı kılan bir durum. Burdaki email input elementini input#username olarak yakalayabiliriz. Burdaki elementler unique(benzersiz) değerler almalıdır ki otomasyon aracı aynı selektöre ait başka input değerlerini almasın. Görüldüğü gibi developer veya development ekibi ürünü yazarken test aşamasını da göz önünde bulundurmalı ve kodlamayı yaparken bunlara dikkat etmelidir.

Son olarak biraz da yazılım testleri için en önemli kısımlardan biri olan Smoke Testten biraz bahsetmek istiyorum.

Smoke(Duman) Test aslında donanım testinden türeyerek gelen bir isme sahiptir. Donanım testinde önce makine fişe takılır ve kablolar yanmadan, ateş veya duman çıkmadan sistem devredeyse ancak diğer testlere geçilir. Test kümeleri içerisinde yazılım ürünü için hayati önem taşıyan, çalıştığından her gün emin olunmak istenen ve kırılan yerlerin hızlıca tespit edilip düzeltilmesi gereken senaryoları içerisinde barındıran yapıdır. Proje build edildiğinde ilk olarak smoke test koşulur. Çok derine inmeden “sayfanın patlayıp patlamadığını” kontrol eder. Amacı hataları erken aşamada farkedip zamandan ve maliyetten tasarruf sağlamaktır.

Proje deploya alındığından test ekibi tarafından smoke teste tabi tutulur. Smoke test projenin en temel en önemli fonksiyonlarının bozulup bozulmadığını kontrol eder. Eğer proje genel olarak çalışır durumdaysa ve smoke test kısmından başarı elde ettiyse daha detaylı testler için hazır demektir. Fakat başarısız sonuç aldıysa geliştirici ekibe kırılan yerler bildirilir. Eksiklik ve bozukluk olan yazılımın fonksiyonel teste gönderilmesi mantıklı olmayacaktır. Böylece, ürünün daha kaliteli ve kullanılabilir hale gelmesine olanak sağlanır. Kısacası test, ürünü kaliteli kılan bir yapıdır.

--

--