Ekipler genellikle testlerinin nasıl organize edildiği sorusunu çözdüğünü varsayarak “otomasyon kullanıyoruz” derler. Ancak durum böyle değildir. İki test paketi de otomatikleştirilebilir ve yine de tamamen farklı şekillerde yapılandırılabilir, bakımı için tamamen farklı maliyetler söz konusu olabilir. Yapı bir framework'tür ve seçtiğiniz framework türü, testlerin ne kadar hızlı büyüdüğünü, kod yazmayanların ne kadar kolay katkıda bulunduğunu ve küçük bir kullanıcı arayüzü (UI) değişikliğinin kodunuzda ne kadar kötü dalgalanmalara yol açtığını belirler.
Bu makale, altı klasik otomasyon testi framework türünü ele almaktadır: doğrusal (linear), modüler (modular), veri odaklı (data-driven), anahtar kelime odaklı (keyword-driven), hibrit (hybrid) ve davranış odaklı (behavior-driven). Her birinin ne olduğunu, nerede öne çıktığını ve nerede zorluklar çıkardığını açıklıyor, böylece son mühendisin kurduğu yapıyı devralmak yerine ekibinize uygun bir yapı seçebilirsiniz. Bu kavramlar UI, API ve birim testleri için geçerlidir.
Otomasyon testi framework'ü nedir
Otomasyon testi framework'ü, otomatik testlerin nasıl yazıldığını, organize edildiğini ve yürütüldüğünü tanımlayan bir dizi yönerge, kural ve yeniden kullanılabilir bileşendir. Kurduğunuz bir araç değildir. Testlerinizin içinde yaşadığı mimaridir.
Bir framework, test yazmaya başlamadan önce yapısal soruları yanıtlar. Test verileri nerede bulunur? Yeniden kullanılabilir adımlar nasıl paylaşılır? Kimler katkıda bulunabilir, sadece kod yazanlar mı yoksa analistler de mi? Sonuçlar nasıl raporlanır? Farklı framework türleri bu soruları farklı şekilde yanıtlar ve onları ayıran da budur. Bu genel fikre yeniyseniz, otomatik testin ne olduğuna dair genel bakışımız, aşağıdaki tür ayrımından önce faydalı bir arka plan sunar.
Bunun önemli olmasının nedeni bakımdır. İlk yüz otomatik testi yazmak kolaydır. Uygulama haftalık olarak değişirken bin tanesini sürdürmek zordur ve framework türü, bu bakımın maliyetini belirleyen en büyük faktördür.
Somut bir örnek düşünün. Bir giriş ekranı alan etiketlerini değiştiriyor. Bir test paketinde, bu değişiklik iki testi bozuyor ve düzeltmek on dakika sürüyor. Aynı uygulamayı test eden başka bir pakette ise iki yüz testi bozuyor ve iki gün sürüyor. Uygulama aynı; sadece framework yapısı farklı. Bu fark, kod yazdıktan sonra değil, önce framework türünü düşünmeye değer olmasının temel nedenidir.
Altı framework türü
1. Doğrusal (kaydet ve oynat)
Doğrusal bir framework, eylemlerinizi kaydeder ve bir komut dosyası olarak oynatır. Her test, paylaşılan işlevler ve veri ile mantık ayrımı olmaksızın düz bir adım dizisidir. Araçlar komut dosyasını sizin için oluşturur, bu nedenle giriş engeli neredeyse sıfırdır.
Cazibesi, küçük projeler, hızlı demolar veya tek seferlik bir smoke testi için hız sağlamasıdır. Maliyeti hızla ortaya çıkar. Hiçbir şey yeniden kullanılmadığı için aynı giriş adımları her teste kopyala-yapıştır yapılır. Giriş sayfası değiştiğinde, elli komut dosyasını düzenlersiniz. Doğrusal framework'ler ölçeklenmez ve çoğu ekip birkaç hafta içinde bunları aşar.
2. Modüler
Modüler bir framework, uygulamayı küçük, bağımsız modüllere ayırır ve her biri için yeniden kullanılabilir bir işlev yazar. Bir test daha sonra bu işlevlerin bir bileşimidir: oturum açma, arama, sepete ekleme, ödeme. Giriş ekranı değiştiğinde, tek bir işlevi düzeltirsiniz ve her test bundan faydalanır.
Bu, gerçekten ölçeklenen ilk yapıdır. Değiş tokuş, önceden yapılan tasarımdır. Testler hızlı akmadan önce birinin modül sınırlarına karar vermesi ve soyutlama katmanını oluşturması gerekir. Çoğu mühendislik ekibi için modüler, mantıklı bir varsayılan seçenektir ve otomatik test komut dosyaları yazma rehberimizde açıklanan disiplinle iyi uyum sağlar.
3. Veri Odaklı
Veri odaklı bir framework, test mantığını test verilerinden ayırır. Bir test işlevi, bir CSV dosyasında, JSON dosyasında, elektronik tabloda veya veritabanında saklanan giriş satırlarına karşı birçok kez çalışır. Kapsam, kod yazarak değil, satırlar ekleyerek büyür.
Bu tür, aynı iş akışının düzinelerce giriş kombinasyonuna karşı doğrulanması gerektiğinde idealdir: geçerli oturum açma, geçersiz oturum açma, sınır değerleri, yerel varyasyonlar. Özellikle API'ler için, CSV ve JSON ile veri odaklı bir test yaklaşımı, tek bir isteği yüzlerce senaryoya dönüştürür. Dezavantajı, test mantığının kendisinin sabit olmasıdır; veri odaklı yapı, davranışları değil, girdileri genişletir.
4. Anahtar Kelime Odaklı
Anahtar kelime odaklı bir framework, eylemleri Login, SearchProduct veya VerifyTotal gibi adlandırılmış anahtar kelimelere soyutlar. Testler, genellikle bir elektronik tabloda, anahtar kelimelerin ve argümanların tabloları olarak yazılır, böylece kod yazmayan bir kişi koda dokunmadan testleri bir araya getirebilir.
Gücü erişilebilirliktir. Kalite güvence analistleri ve iş ekibi doğrudan testleri oluşturabilir ve okuyabilir. Maliyeti ise anahtar kelime kütüphanesidir: mühendisler her anahtar kelimenin arkasındaki uygulamayı inşa etmeli ve sürdürmelidir ve kötü tasarlanmış bir anahtar kelime seti kendi başına bir bakım yükü haline gelir. Anahtar kelime odaklı yapı, test yazımı ve test altyapısının farklı roller arasında bölündüğü ekipler için uygundur.
5. Hibrit
Hibrit bir framework, yukarıdakilerden iki veya daha fazlasını birleştirir; en yaygın olarak modüler yeniden kullanım, veri odaklı girdiler ve anahtar kelime soyutlamasını içerir. Farklı yerlerde farklı yapılara ihtiyaç duyan gerçek projelerin pragmatik bir tanınması olmaktan öte, ayrı bir tür değildir.
Çoğu olgun test paketi, birkaç bin teste ulaştığında hibrit hale gelir. Risk tutarsızlıktır: kombinasyon kasıtlı olarak tasarlanmazsa, her türün bakım maliyetini ve hiçbirinin netliğini elde edersiniz. Hibrit bir framework, karışım kasıtlı ve belgelenmiş olduğunda işe yarar.
6. Davranış Odaklı (BDD)
Davranış odaklı bir framework, testleri Given-When-Then (Verilen-Ne Zaman-O Halde) desenini kullanarak neredeyse doğal dilde ifade eder, tipik olarak Gherkin dilinde yazılır ve Cucumber gibi araçlar tarafından yürütülür. Bir senaryo bir cümle gibi okunur: kayıtlı bir kullanıcı verildiğinde, geçerli kimlik bilgilerini gönderdiğinde, gösterge paneline ulaşır.
BDD'nin değeri paylaşılan anlayıştır. Ürün, Kalite Güvence ve mühendislik aynı spesifikasyonu okur, bu da istenen ile inşa edilen arasındaki boşluğu azaltır. Maliyeti iki katmandır: okunabilir Gherkin ve onu uygulayan adım tanımları. Ürün ekibi senaryoları gerçekten okumazsa, BDD'nin vergisini faydasını almadan ödemiş olursunuz. BDD API testi için Gherkin rehberimiz, API'lere uygulanan deseni gösterir.
Framework türlerini karşılaştırma
| Framework türü | Yeniden Kullanım | Kod Yazmayanlar Oluşturabilir | Kurulum maliyeti | Ölçeklenebilirlik |
|---|---|---|---|---|
| Doğrusal | Yok | Evet, kayıt yoluyla | Çok düşük | Kötü |
| Modüler | Yüksek | Hayır | Orta | İyi |
| Veri Odaklı | Orta | Kısmen | Orta | Girdiler için iyi |
| Anahtar Kelime Odaklı | Yüksek | Evet | Yüksek | İyi |
| Hibrit | Yüksek | Bazen | Yüksek | Çok iyi |
| BDD | Yüksek | Evet, okumak ve oluşturmak için | Yüksek | İyi |
Tablo, kalıbı açıkça ortaya koyuyor. Daha ucuz kurulum genellikle daha kötü ölçeklenebilirlik anlamına gelir ve kod yazmayanları içeren yapılar, perde arkasında daha fazla mühendislik yatırımı gerektirir. Ücretsiz bir seçenek yoktur, yalnızca kısıtlamalarınıza uygun bir seçenek vardır.
Yaygın framework hataları
Mantıklı bir tür seçen ekipler bile pratikte onu baltalarlar. Üç hata tekrar tekrar ortaya çıkar.
Birincisi, erken soyutlamadır. Bir ekip, on beş testi olan bir paket için anahtar kelime odaklı veya hibrit bir yapı benimser. Soyutlama katmanı, hizmet verdiği testlerden daha fazla inşa etme ve sürdürme maliyetine sahiptir. Yapı ölçeği takip etmelidir; gerçek mükerrerliğin bir sonraki yeniden kullanım katmanını haklı çıkarmasına izin verin.
İkincisi ise tam tersidir: evrimleşmeyi reddetmek. Yirmi testte çalışan doğrusal bir paket, dört yüz testte hala doğrusaldır ve her uygulama değişikliği şimdi kopyala-yapıştır komut dosyalarının ağrılı bir taramasını tetikler. Doğrusal kalmanın maliyeti, tek bir küçük değişiklik bir günü silip süpürene kadar sessizce artar. Tek bir ürün değişikliği için birçok testi düzenlemek olan sinyali izleyin ve acı rutin hale gelmeden önce modülerliğe doğru yeniden düzenleme yapın.
Üçüncüsü, sahip olmadığı bir kitle için bir tür seçmektir. BDD yalnızca mühendis olmayanlar Gherkin'i gerçekten okuduğunda karşılığını verir. Anahtar kelime odaklı yalnızca analistler gerçekten test yazdığında karşılığını verir. Bu kişiler test paketine hiç dokunmazlarsa, ek katmanın maliyetini hiçbir fayda sağlamadan taşımış olursunuz. Türü, teoride olabilecek kişilere değil, gerçekten katılanlara göre eşleştirin.
Framework türü nasıl seçilir
Modaya göre değil, ekibinize ve projenize göre seçin.
- Boyut ve kullanım ömrü. Tek kullanımlık bir komut dosyası doğrusal olabilir. Bir çeyrekten fazla bakımı yapılacak herhangi bir şey en az modüler olmalıdır.
- Testleri kimin yazdığı. Tüm mühendisler modüler veya hibrit yapıyı işaret eder. Karışık roller anahtar kelime odaklı veya BDD'yi işaret eder.
- Giriş çeşitliliği. Kararlı iş akışlarına karşı birçok giriş kombinasyonu veri odaklı yapıyı işaret eder.
- İletişim boşlukları. Ürün ve mühendislik arasındaki sık yanlış anlaşmalar BDD'yi işaret eder, çünkü paylaşılan spesifikasyon onun ana faydasıdır.
- Mevcut beceriler. En iyi framework türü, ekibinizin gerçekten sürdürebileceği bir türdür. Kimsenin anlamadığı şık bir yapı, herkesin anladığı sade bir yapıdan daha hızlı başarısız olur.
Çoğu ekip hibrit bir yapıya yönelir: omurga olarak modüler yeniden kullanım, yüksek varyasyonlu durumlar için veri odaklı girdiler ve işbirliğinin en önemli olduğu yerlerde BDD. Basit başlayın ve gerçek sıkıntıların, teorinin değil, ek yapıyı haklı çıkarmasına izin verin. Framework türünün ötesinde test stratejisi için, test senaryosu ve test durumu rehberimizdeki ayrım, her testin neyi kapsaması gerektiğini belirlemenize yardımcı olur.
Bir platformun yardımcı olduğu yerler
Bir framework türü seçmek bir mimari kararıdır. Bunu iyi uygulamak yine de doğru araçları gerektirir. Özellikle API testi için, Apidog, paylaşılan, parametreli istekler aracılığıyla modüler yeniden kullanımı, CSV ve JSON dosyalarından veri odaklı çalıştırmaları ve kod yazmayanların testleri bir araya getirmesini sağlayan görsel bir test oluşturucuyu destekler; bu, el yapımı bir anahtar kelime kütüphanesine ihtiyaç duymadan anahtar kelime odaklı yapının ruhudur.
Bu önemlidir çünkü bir framework türü, ancak ekibin onu tutarlı bir şekilde takip etme yeteneği kadar iyidir. Yapıyı içinde barındıran bir platform, paket büyüdükçe ve insanlar katıldıkça ve ayrıldıkça testleri tutarlı tutar. Bu desenlerin pratikte nasıl hissettirdiğini görmek için Apidog'u indirebilir, ardından ne kadar özel framework koduna hala ihtiyacınız olduğuna karar verebilirsiniz. Dürüst cevap genellikle beklediğinizden daha azdır, çünkü Apidog, el yapımı bir framework'ün aksi takdirde yeniden uygulayacağı istek, veri ve raporlama katmanlarını zaten halleder.
Sıkça sorulan sorular
Otomasyon aracı ile otomasyon testi framework'ü arasındaki fark nedir?
Bir araç, bir tarayıcı sürücüsü veya bir HTTP istemcisi gibi testleri yürütür. Bir framework ise bu araçların etrafındaki yapıdır: testleri organize etme, mantığı paylaşma, veri sağlama ve sonuçları raporlama kuralları. Bir framework olmadan bir araca sahip olabilirsiniz, ancak testlerin bakımı zor olacaktır. Otomasyonu sürdürülebilir kılan şey framework'tür.
En iyi otomasyon testi framework türü hangisidir?
Evrensel olarak en iyi diye bir şey yoktur. Doğrusal, tek kullanımlık komut dosyalarına, modüler çoğu mühendislik ekibine, veri odaklı yüksek giriş çeşitliliğine, anahtar kelime odaklı ve BDD karma becerilere sahip ekiplere ve hibrit büyük, olgun paketlere uyar. En popüler seçeneği seçmek yerine türü ekibinizin becerilerine ve projenin ömrüne göre eşleştirin.
BDD sadece API veya sadece UI testi için midir?
İkisi de değil. BDD bir yapısal desendir, bir katman değil. Given-When-Then formatı birim, API ve UI testleri için aynı şekilde çalışır. Gerçek gereksinimi test katmanı değil, hedef kitledir: BDD yalnızca mühendis olmayanlar senaryoları gerçekten okuduğunda veya yazdığında karşılığını verir.
Bir paket oluşturduktan sonra framework türlerini değiştirebilir miyim?
Evet, ancak bu, paket boyutuna orantılı bir çaba gerektirir. Doğrusaldan modülere geçmek, kopyala-yapıştır yapılan komut dosyalarından yeniden kullanılabilir işlevleri çıkarmak anlamına gelir. Ders şudur ki, binlerce teste bir framework türünü sonradan uydurmak, doğru olanla başlamaktan çok daha zor olduğundan, erken ölçeklenebilen bir yapı seçmektir.
Küçük projelerin bir framework'e ihtiyacı var mı?
Gerçekten kısa ömürlü bir proje, gerçek bir framework olmadan doğrusal, kaydedilmiş bir komut dosyası üzerinde çalışabilir. Ancak "küçük" projelerin büyüme alışkanlığı vardır. Bir paket birkaç haftadan daha uzun süre kullanılacaksa veya birden fazla kişi tarafından ele alınacaksa, hafif modüler bir yapı bile hızla kendini amorti eder.
