Rastgele adres üretici, tek bir ülkenin adres kurallarına uyan ve alanları birbiriyle çelişmeyen kayıtları seri biçimde üretmek için kullanılır. Adındaki rastgelelik, değerlerin her seferinde farklı olması anlamına gelir; ama bu farklılık hiçbir zaman tutarsızlığa dönüşmemelidir. Bu yazıda rastgeleliğin neden bir tutarlılık sözleşmesiyle birlikte gelmesi gerektiğini, aynı anahtarın neden aynı kaydı üretmesi gerektiğini, çok ülkeli üretimde hangi alanların birbirini tutmadığını ve toplu dışa aktarmanın veri odaklı testlerde nasıl kullanıldığını bulacaksınız.
Rastgele adres üretici tam olarak ne üretir?
Bu araç, seçtiğiniz ülkeye ait bir adres kaydını bütün alanlarıyla üretir. Sokak, şehir, idari bölüm ve posta kodu gibi alanlar rastgele seçilir; ama seçim birbirinden bağımsız yapılmaz. Posta kodu, şehrin bulunduğu bölgenin deseniyle uyumlu olur; telefon numarası ülke kodunu taşır; ad ve soyad o dilin yaygın yazım kalıplarına uyar.
İkinci özellik, üretimin biçimsel kurallara bağlı kalmasıdır. Gereken yerde kontrol basamağı hesaplanır, gereken yerde alan uzunluğu ülke kurallarına göre ayarlanır. Böylece üretilen kayıt, bir doğrulama kodundan geçebilecek kadar doğru biçimde olur.
Üçüncü özellik ise yeniden üretilebilirliktir. Aynı anahtar ve aynı ülke seçildiğinde, her çalıştırmada aynı kayıt geri gelir. Bu, rastgeleliğin test sürecinde işe yaramasının ön koşuludur. Aracın ürettiği kayıtları canlı görmek için adres üretici sayfasından başlayabilirsiniz.
Rastgelelik neden tutarlılıkla birlikte gelmek zorundadır?
Rastgele ile gelişigüzel aynı şey değildir. Bir adres kaydında rastgelelik yalnızca hangi şehrin, hangi sokağın ve hangi posta kodunun seçileceğini belirler. Bu değerlerin birbirine uyup uymayacağı ise rastgeleliğe bırakılamayacak bir karardır.
Tutarlılık bozulduğunda test sonuçları yanıltıcı hâle gelir. Eyaleti ile posta kodu uyuşmayan bir kayıt, doğrulama kodunuz doğru çalışsa bile hataya düşer; siz de kendi kodunuzu hatalı sanıp gereksiz yere değiştirirsiniz. Bu tür yanlış alarmlar, test verisinin en pahalı sonucudur.
Bu yüzden üreticinin ülke başına bir kurallar kümesi taşıması gerekir. Alanların hangi sırayla dizileceği, hangi alanın zorunlu olduğu ve hangi değerin hangi değerle çeliştiği bu kümede tanımlıdır. Bu ayrımı adres doğrulama ve normalleştirme yazısı daha geniş biçimde ele alıyor.
Aynı anahtar neden her seferinde aynı kaydı üretmelidir?
Her yenilemede yeni bir kayıt üreten bir araç, ilk bakışta daha kullanışlı görünür. Oysa test sürecinde bunun tam tersi geçerlidir. Bir hata kaydında gördüğünüz adresi yeniden açamıyorsanız, hatanın nedenini araştırmanız neredeyse imkânsız hâle gelir.
Sabit anahtar bu sorunu çözer. Kaydı üreten anahtarı hata raporuna yazdığınızda, aynı anahtarı tekrar girerek aynı kaydı geri getirebilirsiniz. Aynı form doldurulur, aynı doğrulama çalışır ve aynı hata yeniden üretilir.
Bu yaklaşımın ikinci faydası ekip çalışmasıdır. Aynı anahtarı paylaşan iki geliştirici, kendi bilgisayarlarında aynı kaydı görür. Sorunun ortam farkından mı yoksa koddan mı kaynaklandığı böylece ayrılabilir.
Çok ülkeli üretimde en sık hangi alanlar birbirini tutmaz?
Birden fazla ülkeyi kapsayan test kümelerinde en sık görülen sorun, idari bölüm ile posta kodunun uyuşmamasıdır. Bir ülkenin bölge listesinden seçilen değer, başka bir ülkenin posta kodu desenine bağlanırsa kayıt biçimsel olarak doğru ama anlamsız olur.
İkinci sık sorun telefon alanıdır. Ülke kodu doğru seçilse bile alan kodu şehirle eşleşmeyebilir. Bu, insan gözüyle hemen fark edilmeyen ama otomatik doğrulamada yanlış sonuç üreten bir tutarsızlıktır.
Üçüncüsü, adres satırı sayısıdır. Bazı ülkelerde adres üç satıra kadar uzarken bazılarında tek satır yeterlidir. Satır sayısını tüm ülkeler için sabit varsaymak, geçerli kayıtları gereksiz yere uzatır ya da kısaltır. Sınır ötesi senaryoların ayrıntıları için sınır ötesi adres senaryoları yazısına bakabilirsiniz.
Toplu dışa aktarma veri odaklı testlerde nasıl kullanılır?
Tek tek üretilen kayıtlar elle yapılan denemeler için uygundur; otomatik testler ise genellikle hazır bir kümeye ihtiyaç duyar. Toplu dışa aktarma, yüzlerce satırlık bir dosyayı tek seferde üretip test paketine bağlamanın yoludur.
Bu dosyanın biçimi basit tutulmalıdır. Virgülle ayrılmış metin ya da benzeri düz bir biçim, hem okunması hem sürüm denetiminde izlenmesi kolay olduğu için yeterlidir. Her satırın bir kayda karşılık gelmesi, hata ayıklamayı da kolaylaştırır.
Kümeyi sürüm denetimine eklerken iki kural işe yarar. Birincisi, kümeyi üreten anahtarı ve üretim tarihini dosyanın başında belirtmektir; böylece küme gerektiğinde yeniden üretilebilir. İkincisi, kümeyi elle düzenlememektir; elle yapılan her düzeltme, kaydın neden o hâle geldiğini açıklanamaz kılar. Bu yaklaşımın ayrıntılarını test veri kümesi hazırlama yazısı ele alıyor.
Yük testlerinde ve form bulanıklaştırmada rastgele veri nasıl işe yarar?
Yük testlerinde amaç, sistemin çok sayıda kaydı kaldırıp kaldıramadığını görmektir. Burada üretilen kayıtların birbirinden farklı olması gerekir; aynı adresi bin kez göndermek önbellek ve yinelenen kayıt denetimi gibi katmanları hiç zorlamaz.
Form bulanıklaştırmada ise amaç, beklenmeyen girdilerin sistemi kırmasını görmektir. Uzun sokak adları, beklenmeyen karakterler ve boş bırakılmış zorunlu alanlar bu amaçla üretilir. Bu kayıtların geçerli olması gerekmez; ama hangi alanın hangi sınırı aştığını bilmek, çıkan hatayı yorumlamayı kolaylaştırır.
Her iki senaryoda da ülke başına ayrı kümeler kullanmak daha sağlıklıdır. Farklı ülkelerin kayıtlarını aynı kefeye koymak, alan uzunluğu ve karakter kümesi farklarını görünmez kılar. Karşılaştırmalı örnekler için ülkeler arası ölçekleme yazısı yararlı olabilir.
Sabit örnek ile rastgele üretim arasında nasıl denge kurulur?
İki yaklaşımın yeri farklıdır ve ikisi birbirinin yerini almaz. Sabit örnek, belirli bir hatayı yakalamak ve o hatayı tekrar üretmek için gereklidir. Rastgele üretim ise kapsamı genişletmek, tek bir örneğin gösteremeyeceği kırılmaları ortaya çıkarmak için kullanılır.
Bu dengeyi kurmanın pratik yolu, test paketini iki katmana ayırmaktır. İlk katman az sayıda sabit kayıt içerir ve her çalıştırmada aynı sonucu verir. İkinci katman geniş bir rastgele kümedir ve yalnızca kapsamı genişletmek gerektiğinde devreye girer.
Böyle bir ayrım, başarısız bir testin hangi katmandan geldiğini de netleştirir. Sabit katman başarısız oluyorsa sorun büyük olasılıkla kodda, rastgele katman başarısız oluyorsa büyük olasılıkla doğrulama kurallarının kapsamındadır.
Üretilen kayıt neden bir tutarlılık sözleşmesine bağlı olmalıdır?
Bir adres kaydı, alanların yan yana durduğu bir liste değildir; aralarında kurallar vardır. Posta kodu şehre, telefon alan kodu ülkeye, idari bölüm ülkenin yapısına bağlıdır. Bu kurallar yazılı olmadığında üretici her çalıştırmada farklı bir varsayım üretir.
Sözleşmeyi yazılı hâle getirmek, testlerin de temelini oluşturur. Hangi alanın hangi alana bağlı olduğunu bilmek, bilerek bozulmuş bir örnek üretmeyi mümkün kılar. Bozuk örnek olmadan doğrulamanın çalıştığı gösterilemez.
Sözleşmenin ikinci faydası, ülkeler arasında tutarlı bir arayüz sağlamasıdır. Aynı alan adları ve aynı bağlar kullanıldığında, yeni bir ülke eklemek kod değişikliği değil veri ekleme işine dönüşür.
Sık kullanılan ülkelerde hangi tuzaklar öne çıkar?
Amerika Birleşik Devletleri’nde en yaygın tuzak, eyalet kısaltması ile posta kodunun ayrı ayrı doğrulanmasıdır. İki alan tek başına geçerli görünür, birlikte yanlış olabilir.
Türkiye’de tuzak harf dönüşümündedir. Büyük harfe çevirme işlemi Türkçe kurallara uymazsa yer adları bozulur ve aynı kayıt iki farklı dize olarak saklanır. Bir diğer tuzak, posta kodunun il koduyla uyuşmamasıdır.
Japonya’da sıralama tersine döner; büyükten küçüğe yazılan adresi küçükten büyüğe bekleyen bir ayrıştırıcı alanları karıştırır. Almanya ve Fransa gibi ülkelerde ise posta kodu ile şehir arasındaki bağ güçlüdür ve çoğu hatayı yakalar. Bu farkların karşılaştırması için ülkelere göre adres formatı yazısı iyi bir başlangıçtır.
Veri odaklı testlerde kayıtlar nasıl beslenir?
Veri odaklı bir test, girdiyi koddan değil dosyadan alır. Aynı test yüzlerce kayıtla çalıştırılır ve her kayıt için beklenen sonuç ayrıca tanımlanır. Bu düzenin avantajı, yeni bir örnek eklemek için kod değiştirmek gerekmemesidir.
Dosyanın biçimi basit tutulmalıdır. Her satır bir kaydı, her sütun bir alanı temsil etsin. Beklenen sonuç için ayrı bir sütun bulunsun; böylece test kodu tek bir karşılaştırma yapar.
Kayıtların üretildiği anahtarı dosyanın başında saklamak, kümenin ileride yeniden üretilmesini sağlar. Dosyayı elle düzenlemek yerine üreticiden yeniden almak, kaydın neden o hâle geldiğini açıklanabilir kılar.
Başarısız bir test kaydı nasıl ayıklanır?
Bir test başarısız olduğunda ilk adım, kullanılan kaydı sabitlemektir. Rastgele üretim kullanılıyorsa aynı anahtar tekrar girilir ve kayıt yeniden üretilir. Bu, sorunun tekrarlanabilir olduğunu gösterir.
İkinci adım, kaydı en küçük hâline indirmektir. Hangi alanın hatayı tetiklediği bulunana kadar diğer alanlar sabit tutulur. Bu yaklaşım, uzun bir hata ayıklama oturumunu kısa bir denemeye indirir.
Üçüncü adım, bulunan örneği kalıcı kümeye eklemektir. Böylece aynı hata bir daha ortaya çıktığında ilk saniyede yakalanır. Hatanın kendisi düzeltilse bile örnek, ileride yapılacak değişiklikler için bir koruma görevi görür.
Yeniden üretilebilirlik testte nasıl kullanılır?
Bir test başarısız olduğunda, aynı girdinin tekrar üretilebilmesi gerekir. Rastgele üretim anahtarla kontrol edilmezse, hata bir daha görülemeyebilir.
Anahtarın testin çıktısına yazılması, bu sorunu çözer. Hata raporunda anahtar bulunduğunda, kayıt saniyeler içinde yeniden üretilir ve inceleme başlayabilir.
İkinci fayda, testlerin paralel çalışabilmesidir. Her test kendi anahtarını kullandığında kayıtlar çakışmaz ve sonuçlar birbirine karışmaz.
Ülke ağırlıkları nasıl belirlenir?
Gerçek trafikte ülkeler eşit dağılmaz. Kullanıcıların çoğu birkaç ülkeden gelir; testin de bu dağılımı yansıtması gerekir.
Ağırlıklı üretim, bu ihtiyacı karşılar. Her ülkeye bir ağırlık atanır ve kayıtlar bu ağırlığa göre seçilir. Böylece sık kullanılan ülkeler testte daha çok görünür.
Ağırlıkların koda gömülmemesi gerekir. Trafik değiştiğinde yalnızca yapılandırma güncellenmeli, test kodu değişmemelidir.
Rastgelelik testin kendisini nasıl etkiler?
Rastgele girdi, testin kararlılığını doğrudan etkiler. Her çalıştırmada farklı bir kayıt kullanılırsa, başarısız bir testin nedeni belirsiz kalır.
Bu yüzden iki tür test birlikte kullanılır. Sabit kümeyle çalışan testler, bilinen davranışı korur; rastgele üretimle çalışan testler ise yeni durumları keşfeder.
Keşif testleri ayrı bir iş olarak çalıştırılmalıdır. Bu testlerin sonucu, ana test paketini bloke etmemelidir; aksi hâlde ekip her gün farklı bir hata görür.
Test kümesini ülkeden ülkeye nasıl genişletirim?
Küme büyütülürken her ülke kendi kurallarıyla eklenmelidir. Ortak bir şablonu bütün ülkelere uygulamak, biçimi doğru ama içeriği yanlış kayıtlar üretir.
İlk adım, ülkenin alan kümesini belirlemektir. Bazı ülkelerde eyalet, bazılarında ilçe bulunur; bazılarında ise posta kodu hiç kullanılmaz.
İkinci adım, o ülkeye ait örnek kayıtları gözden geçirmektir. Yerel bir kullanıcı için anlamsız görünen bir kayıt, testin güvenilirliğini sessizce düşürür.
Üretilen kaydı başka bir ekiple nasıl paylaşırım?
Paylaşım, üretimin son adımıdır ve en çok ihmal edilen kısımdır. Kaydı yalnızca üreten kişinin bilmesi, testin tek kişiye bağımlı kalmasına yol açar.
İlk kural, kaydın kaynağıyla birlikte paylaşılmasıdır. Hangi ülke, hangi anahtar ve hangi sürüm? Bu üç bilgi olmadan kayıt tekrar üretilemez.
İkinci kural, kaydın ortak bir yerde tutulmasıdır. Sohbet geçmişine gömülen bir örnek, kısa sürede bulunamaz hâle gelir ve yeniden üretilmek zorunda kalınır.
Bu kayıtların sınırı nedir?
Bu araçla üretilen adresler sentetik test verisidir. Biçimleri seçilen ülkenin kurallarına uyar ve alanları birbiriyle tutarlıdır; ama bu kayıtlar gerçek kişilere ya da gerçek adreslere karşılık gelmez, posta gönderimi için kullanılamaz.
Kayıtlar kendi uygulamanızı, formunuzu ve doğrulama mantığınızı sınamak amacıyla üretilir. Bir başkasının kimliğine bürünmek, gerçek bir hesap açmak ya da bir kontrol sürecini yanıltmak için kullanılması aracın amacının dışındadır.