Menü

Test verisini ülkeler arasında ölçeklemek: değişmezler ve istisnalar

Test verisini ülkeler arasında ölçeklemek, kayıt sayısını artırmak değil, hangi kuralın her ülkede geçerli olduğunu ayırmaktır. Bu yazıda ölçeklemenin yollarını anlatıyoruz.

Yayın tarihi

  • ölçekleme
  • değişmezler
  • istisna listesi

Test verisini ülkeler arasında ölçeklemek, çoğu ekipte “daha çok ülke ekleyelim” cümlesiyle başlar ve kısa süre sonra bakımı imkânsız bir yığına dönüşür. Bunun nedeni ölçek değil, ölçeğin nasıl kurulduğudur: her yeni ülke kendi kuralını getirdiğinde, kural sayısı ülke sayısıyla birlikte büyür. Doğru kurulum, ülkeye özgü olanı ülkeden bağımsız olandan ayırmaktır. Bu yazıda ölçeklemenin gerçek maliyetini, kural katmanlarını ve yeni bir ülke eklendiğinde ne yapılacağını ele alıyoruz.

Birkaç ülkeden onlarca ülkeye çıkarken asıl zorluk nerede?

Zorluk veri hacminde değildir; onlarca ülkenin kaydı zaten küçük bir hacim tutar. Zorluk, hangi kuralın hangi ülkeye ait olduğunun kaybolmasındadır.

İlk ülkeler eklenirken genellikle her ülke için ayrı bir kontrol yazılır. Bu yaklaşım az sayıda ülkede okunabilir kalır; sayı arttığında aynı kural onlarca yerde tekrarlanır ve birinde yapılan düzeltme diğerlerine yansımaz. Kural kopyalandıkça, kopyalar arasındaki farklar da sessizce çoğalır.

İkinci zorluk, ülkeye özgü bir davranışın bütün ülkelere yayılmasıdır. Tek bir ülke için yazılmış bir ayrıcalık, zamanla genel kural gibi davranmaya başlar ve o ülkeye uymayan diğer ülkeler gereksiz yere zorlanır.

Üçüncü zorluk, verinin kendisinin çoğaltılmasıdır. Her ülke için elle tutulan örnekler, bir noktadan sonra güncellenemez hale gelir; yeni bir alan eklendiğinde onlarca dosyada tek tek değişiklik yapmak gerekir.

Ölçekleme yolu Kural nerede durur Uzun vadede bedeli
Ülke başına ayrı kontrol Her ülkenin kendi içinde Kopyalar arası fark
Ortak kural ve istisna listesi Tek yerde, istisnalar ayrı Listenin güncel tutulması
Kayıttan türetilen kontrol Kurallar veride Kuralın görünmez olması

Bu üç yolun ilk ikisi sıklıkla birlikte kullanılır; üçüncüsü ise yalnızca kuralın açıkça yazıldığı yerlerde güvenlidir. Kural yalnızca kayıtların içinde yaşıyorsa, onu gözden geçirmek için veriyi okumak gerekir ve bu, denetimi zorlaştırır.

İddiaları değişmezler ve istisna listesi olarak ayırmak

Ölçeklenebilir bir test kümesinin çekirdeği iki katmandır. Birinci katman, her ülkede geçerli olması gereken değişmezlerdir. İkinci katman, yalnızca belirli ülkeler için geçerli olan istisnalardır. İki katman ayrıldığında, yeni bir ülke eklemek bir kural yazmayı değil, mevcut kuralları çalıştırmayı gerektirir.

Değişmezler ülkeden bağımsızdır ve sayıca az olmalıdır. Her ülkenin tek bir iki harfli kodu olması, bu kodların küme içinde benzersiz olması, aynı kaydın iki kez üretilmemesi ve sıralamanın her çalıştırmada aynı sonucu vermesi bu gruba girer. Bu maddelerin hiçbiri ülkeye özgü bir bilgi gerektirmez.

İstisnalar ise ülkeye bağlıdır ve açıkça listelenmelidir. Hangi ülkelerde posta kodu bulunmadığı, hangilerinin Latin alfabesi dışındaki karakterler kullandığı, hangilerinde adresin daha fazla satıra yayıldığı bu listede yer alır. İstisna listesi kısa tutulur ve her satırın gerekçesi yazılır.

Katman Kapsam Örnek konu
Değişmez Bütün ülkeler Kodun varlığı ve benzersizliği
İstisna Belirli ülkeler Posta kodu alanının bulunmaması

İki katmanı karıştırmanın en yaygın sonucu, bir istisnanın değişmez sanılmasıdır. Böyle bir durumda, istisnaya uymayan ülkeler testten geçemez ve ekip kuralı değiştirmek yerine testi görmezden gelmeye başlar. Testin görmezden gelinmeye başlaması, ölçeklemenin bittiği andır.

Üretilen veri neden tekrar tekrar aynı çıkmalı?

Ölçeklenen bir test kümesinde beklenen sonuçlar, verinin kendisine bağlıdır. Veri her çalıştırmada değişirse, bir testin kırmızıya dönmesinin sebebi kod olabilir de, veri de olabilir. Bu belirsizlik, hatanın bulunmasını yavaşlatır.

Bu yüzden veri üretimi sabit bir girdiyle başlamalıdır. Aynı girdi verildiğinde aynı kayıtlar üretilmeli ve beklenen sonuçlar değişmemelidir. Böylece testin kırmızıya dönmesi tek bir anlama gelir: kod beklenenden farklı davranmıştır.

Tekrarlanabilirlik, veriyi sürümlemeyi de gerektirir. Üretilen küme bir sürüm numarası taşırsa, eski bir testin hangi veriyle yazıldığı bilinir. Bu bilgi olmadan, veri değiştiğinde testlerin neden kırıldığını anlamak tahmine dönüşür.

Üretimin bir diğer gereği, kayıtların elle düzenlenmemesidir. Elle düzeltilen bir kayıt, üretim bir sonraki çalıştırmada onu geri yazdığında kaybolur. Elle yapılması gereken düzeltmeler, üretim kuralına dönüştürülmelidir.

Son olarak, üretilen veri ile elle tutulan örnekleri ayrı tutun. Üretim yaygın durumları kapsar; elle tutulan küçük örnekler ise kural dışı davranışları. İkisini tek dosyada birleştirmek, üretimin her çalıştırmasında elle tutulan örnekleri riske atar.

Hangi noktadan sonra örneklemek gerekir?

Bütün ülkeleri her kontrolün içinden geçirmek, küme büyüdükçe yavaşlar ve sonunda kimse çalıştırmak istemez. Bu noktada çözüm, kapsamı daraltmak değil, kapsamı katmanlara ayırmaktır.

Her değişmez, bütün ülkeler üzerinde çalıştırılabilir; çünkü bu kontroller ülkeye özgü bilgi gerektirmez ve maliyeti düşüktür. Asıl maliyet, ülkeye özgü ayrıntıları sınayan kontrollerdedir; örnekleme ihtiyacı burada doğar.

Örnekleme yaparken davranış gruplarını esas alın. Aynı davranışı gösteren ülkelerden birini seçmek yeterlidir; farklı davranan her gruptan en az bir ülke bulunmalıdır. Böylece küçülen küme, kapsamını değil yalnızca tekrarını kaybeder.

Buna karşılık, istisna listesindeki her satır her çalıştırmada sınanmalıdır. Liste zaten küçüktür ve tam olarak kural dışı durumları taşır; buradan örnekleme yapmak, korunması gereken ayrımları görünmez kılar.

Yeni bir ülke eklendiğinde hangi kontroller çalışır?

Yeni bir ülke eklemek, yeni bir kural yazmak değil, mevcut iki katmanı o ülkeye uygulamaktır. Sıra önemlidir; çünkü değişmezlerden biri başarısız olursa, ayrıntı kontrollerinin sonucu anlamsız kalır.

İlk adım, ülkenin değişmezleri sağladığını doğrulamaktır: kodu var mı, küme içinde benzersiz mi, kayıt iki kez üretiliyor mu, sıralama kararlı mı. Bu dört kontrol hızlıdır ve ülkeye özgü hiçbir bilgi gerektirmez.

İkinci adım, ülkenin istisna listesindeki yerini belirlemektir. Posta kodu bulunmayan bir ülke mi, Latin alfabesi dışındaki karakterleri kullanan bir ülke mi, adresi daha fazla satıra yayılan bir ülke mi? Cevap, listeye bir satır eklenmesini ya da hiçbir satır eklenmemesini gerektirir.

Üçüncü adım, kullanıcıya görünen yüzeyleri gözden geçirmektir. Alanların sırası, zorunluluk durumu ve seçim listesindeki görünüm, o ülke için beklenen davranışı veriyor mu? Bu kontrol, verinin doğru olduğu ama arayüzün ona uymadığı durumları yakalar.

Dördüncü adım, mevcut kontrollerin bozulmadığını göstermektir. Yeni bir ülke eklemek, eski ülkelerin sonuçlarını değiştirmemelidir. Değişiklik varsa, sorun büyük olasılıkla yeni ülkede değil, ortak kuralın kendisindedir.

Geliştiriciler için: istisna listesini sürüm kontrolünde tutmak

İstisna listesi, ölçeklenen bir kümenin en değerli belgesidir; çünkü ülkeye özgü bilginin tek toplandığı yerdir. Bu belgenin kodla aynı yerde, aynı değişiklik akışıyla tutulması gerekir.

Listeyi kod incelemesinden geçirin. Bir satırın eklenmesi ya da değişmesi, tıpkı bir kural değişikliği gibi gözden geçirilmelidir. Bu disiplin, listeye sessizce eklenen maddeleri engeller ve gerekçeyi kayda geçirir.

Her satıra bir gerekçe ve bir tarih ekleyin. Gerekçe, satırın neden gerekli olduğunu; tarih ise en son ne zaman doğrulandığını gösterir. Bu iki alan, listeyi zamanla denetlenebilir tutar.

Listeyi test edilebilir kılın. Her satırın hangi davranışı beklediğini bir kontrol olarak yazın; böylece liste yalnızca bir belge değil, çalışan bir sözleşme olur. Kural dışı durumlar böylece unutulmaktan çıkar.

Kapsamı yazılı tutun. Ölçekleme sırasında küme büyürken hangi alanların dahil edildiği ve hangilerinin dışarıda bırakıldığı belirsiz kalırsa, eksik kapsam sessizce tamamlanmış sayılır. Kapsamı yazmak, hem ekibi hem de sonraki okuyucuyu korur.

Alanların hangi ülkelerde bulunduğunu karşılaştırmak ve kendi örnek kümenizi kurmak için sitemizdeki ülke ve bölge dizini sayfasını kullanabilirsiniz.

Sonraki adımlar

Kapsamın hangi durumları anlattığını ve hangi alanların asgari olduğunu ülke verisi kapsam listesi yazısında, verinin zamanla nasıl eskidiğini ve kaynağının nasıl izlendiğini ise ülke verisinin güncelliği yazısında ele alıyoruz.

Bu yazıdaki ülke kümeleri, istisna satırları ve sürüm numaraları yalnızca yöntemi göstermek amacıyla uydurulmuş örneklerdir; gerçek bir ülke listesine, gerçek bir ölçüme ya da gerçek bir veri sürümüne karşılık gelmez.

Okumaya devam edin

Ülkelere göre adres ve kimlik verisi biçimleri hakkında makaleler