Sınır ötesi adres senaryoları, tek bir ülke etrafında kurulmuş sipariş akışlarında en çok gözden kaçan başlıktır; çünkü akış çalışır, ekran doğru görünür ve hata ancak işin içine ikinci bir ülke girdiğinde ortaya çıkar. Faturalama ile teslimat farklı ülkelere düştüğünde, her alanın hangi tarafın kuralına göre değerlendirileceği baştan yazılı değilse, sistem sessizce tek bir tarafı esas alır. Bu yazıda bir siparişte kaç ülke geçtiğini, hangi alanın hangi tarafa bağlandığını ve uzun değerlerin nereleri zorladığını ele alıyoruz.
Bir siparişin içinde kaç ülke geçer?
Tek ülke varsayımı, siparişin yalnızca bir ülke boyutu olduğunu düşünmekten doğar. Gerçekte aynı siparişte birbirinden bağımsız birkaç ülke boyutu bulunur ve bunlar çoğu zaman farklı değerler alır.
| Boyut | Neyi anlatır | Sık sık ayrıştığı yer |
|---|---|---|
| Faturalama ülkesi | Ödemenin bağlandığı yer | Teslimatla aynı olmayabilir |
| Teslimat ülkesi | Gönderinin gideceği yer | İade sürecini belirler |
| Kayıtlı iş yeri | Hesabın bağlı olduğu yer | Kullanıcının bulunduğu yerden farklı |
| Kimlik ülkesi | Belgeye bağlı ülke | İkamet yerinden farklı |
| İletişim ülkesi | Telefonun ait olduğu yer | Adresle ilgisiz olabilir |
Bu boyutların her biri, kendi ülke alanını hak eder. Tek bir ülke alanından diğerlerini türetmek, ilk bakışta alan sayısını azaltır; ama türetilen değer, gerçek durumu yansıtmadığı anda bütün zinciri yanlış hale getirir.
Boyutları ayırmanın bir bedeli vardır: form uzar, doğrulama kuralları çoğalır ve kullanıcıdan daha fazla bilgi istenir. Bu bedeli azaltmanın doğru yolu, bir boyutu diğerinden türetmek değil, gereksiz boyutları ürün kararıyla kaldırmaktır. Hangi boyutun gerekli olduğu, işleyişe ve yasal gereklere bağlıdır ve bu yazının konusu değildir.
Faturalama ve teslimat ülkesi ayrıştığında hangi taraf esas alınır?
Bu soru, sınır ötesi akışların merkezindedir ve cevabı alan alan değişir. Her alan için hangi tarafın kuralına bakılacağını baştan belirlemek gerekir; çünkü aynı alanın iki taraftan birine göre değerlendirilmesi, geçerli bir kaydı reddedebilir.
Genel yaklaşım, alanları üç gruba ayırmaktır. Birinci grupta teslimat ülkesine bağlı alanlar bulunur: gönderinin ulaşacağı yeri tanımlayan her şey bu tarafa göre değerlendirilir. İkinci grupta faturalama ülkesine bağlı alanlar vardır: ödeme ve belge düzeniyle ilgili alanlar bu tarafa göre işlenir. Üçüncü grupta ise hiçbir tarafa bağlanmayan alanlar kalır; bunlar her iki taraftan da bağımsız biçimde değerlendirilir.
Bu gruplamayı yapmanın faydası, tartışmayı alan bazına indirmesidir. “Hangi ülkeye göre doğrulanacak” sorusu bütün form için değil, tek bir alan için sorulur ve cevap yazılı kalır. Yeni bir alan eklendiğinde de aynı soru tekrarlanır.
Yanlış varsayımın en sık görülen biçimi, bütün alanları teslimat ülkesine bağlamaktır. Bu varsayım çoğu siparişte sorun çıkarmaz; ancak iki ülke ayrıştığında faturalama tarafındaki bir alan, olmadık bir kurala göre değerlendirilir ve kullanıcı düzeltemeyeceği bir hatayla karşılaşır.
Bunun tersi de aynı ölçüde yanıltıcıdır: bütün alanları faturalama ülkesine bağlamak, teslimatın gideceği yeri tanımlayan alanları yanlış kurala tabi kılar. İki uç da tek bir gerçeği gözden kaçırır: siparişin içinde birden fazla ülke vardır ve alanlar bu ülkelere dağılır.
Telefon, para birimi ve saat dilimi neden ayrı ele alınmalı?
Bu üç alan, adres ülkesine en çok benzeyen ama en sık ayrışan alanlardır. Bir kullanıcı bir ülkede yaşarken başka bir ülkenin telefon numarasını kullanabilir, başka bir para biriminde ödeme yapabilir ve başka bir saat diliminde işlem yapabilir. Bu alanları adres ülkesinden türetmek, tam olarak bu durumlarda yanlış sonuç verir.
Telefon alanı, ayrışmanın en görünür olduğu yerdir. Numarayı adres ülkesine göre yorumlayan bir akış, farklı bir ülkeye ait numarayı geçersiz sayar ya da yanlış biçimde çözer. Bu alanın kendi ülke boyutu olmalıdır; ayrıntılarını telefon ön eki ve yerleşim eşleşmesi yazısında bulabilirsiniz.
Para birimi, adres ülkesinden bağımsız olarak seçilebilir. Kullanıcı kendi ülkesinde olup başka bir para biriminde ödeme yapabilir; bu, ürünün sunduğu bir seçenekse formun da bunu ifade edebilmesi gerekir. Para birimini adres ülkesinden türetmek, bu seçeneği görünmez kılar.
Saat dilimi ise en çok tarih ve teslim aralığı hesaplarında ortaya çıkar. Sipariş anı, teslim penceresi ve belge tarihi farklı saat dilimlerinde farklı günlere düşebilir. Bu alanı sabit bir varsayıma bağlamak, tarih sınırındaki siparişlerde beklenmedik sonuçlar üretir.
Üç alanın ortak özelliği, adres ülkesiyle tutarlı olmak zorunda olmamalarıdır. Test senaryoları da bu yüzden tutarsız bileşimleri kapsamalıdır; yalnızca tutarlı bileşimlerle yapılan testler, bu alanların bağımsızlığını hiç sınamaz.
Uzun ülke adları ve uzun adresler nereleri zorlar?
Sınır ötesi senaryolarda uzun değerler aynı anda ortaya çıkar: uzun bir ülke adı, uzun bir bölge adı ve birden fazla satıra yayılan bir adres. Bu bileşim, dar alanlarda tasarlanmış arayüzleri zorlar.
İlk zorlanan yer, formun kendisidir. Dar bir sütunda gösterilen uzun bir ülke adı kesilir ya da satırı taşırır; kullanıcı seçtiği ülkeyi okuyamaz hale gelir. Alanın genişliği sabit varsayıldığında, bu durum yalnızca uzun adlı ülkelerde görünür ve test kümesinde o ülke yoksa hiç fark edilmez.
İkinci zorlanan yer, belge ve etiket şablonlarıdır. Sabit genişlikli bir hücreye yazılan uzun bir ülke adı, kendisinden sonra gelen alanı iter ya da kendisi kesilir. Kesilen bir ad, belgenin okunabilirliğini bozar; itilen bir alan ise şablonun dengesini dağıtır.
Üçüncü zorlanan yer, özet ve onay ekranlarıdır. Bu ekranlar genellikle tek satırlık kısa özetler için tasarlanır; uzun değerler geldiğinde kullanıcı ne onayladığını tam olarak göremez. Onay ekranında kesilen bir bilgi, kullanıcının yanlış bir siparişi onaylamasına yol açabilir.
Bu zorlanmaların testi, yalnızca uzun bir değer girmekle yapılmaz. Aynı ekranın kısa ve uzun değerlerle yan yana görülmesi gerekir; çünkü sorun genellikle değerin kendisinde değil, alanın sabit varsayılan genişliğindedir.
Teslimat desteği olmaması ile biçim hatası neden ayrı söylenmeli?
Bu iki durum kullanıcıya aynı cümleyle anlatıldığında, kullanıcı yapamayacağı bir şeyi düzeltmeye çalışır. Teslimat desteğinin bulunmaması bir iş kararıdır; biçim hatası ise verinin kuralla uyuşmamasıdır. İkisinin çözümü tamamen farklıdır.
Destek olmaması durumunda kullanıcının yapabileceği bir düzeltme yoktur; doğru davranış, durumu açıkça söylemek ve alternatif bir yol varsa onu göstermektir. Biçim hatasında ise kullanıcı girdisini düzeltebilir; mesajın hangi alanın neden reddedildiğini göstermesi gerekir.
İki durumu aynı mesajda birleştirmenin en kötü sonucu, kullanıcının adresini defalarca değiştirmesidir. Kullanıcı biçimi düzeltmeye çalışır, her denemede aynı mesajı alır ve sonunda akışı bırakır. Sorun adreste değildir; mesaj yanlış sebebi göstermektedir.
Bu ayrımın testi de ayrı yapılmalıdır. Desteklenmeyen bir ülkenin seçilmesi ile geçerli bir ülkede geçersiz bir biçimin girilmesi iki ayrı senaryodur ve ikisinin de beklenen davranışı ayrı yazılmalıdır.
Geliştiriciler için: hangi tarafın esas alındığını açık bir parametre yapmak
Bir alanın hangi ülkeye göre değerlendirildiğini kodun akışından çıkarmak, sınır ötesi hataların en yaygın kaynağıdır. Bunun yerine, her doğrulama çağrısı hangi ülke boyutunu kullandığını açıkça belirtmelidir. Böylece kural seçimi, kodun herhangi bir yerindeki varsayılana değil, çağrının kendisine bağlı olur.
Ülke boyutlarını tek bir nesnede toplayın ve alanlara bu nesne üzerinden erişin. Faturalama ve teslimat ülkeleri ayrı alanlar olarak durursa, bir alanın hangi tarafa bağlandığı tek bir satırda görülür ve gözden geçirmesi kolaylaşır.
Varsayılan değerleri görünür kılın. Bir alan için varsayılan atanıyorsa, bu atamanın nerede yapıldığı ve hangi koşulda geçerli olduğu yazılı olsun. Gizli varsayılanlar, testte tutarlı görünen ama tutarsız bileşimlerde bozulan davranışlar üretir.
Mesaj katmanını da kural katmanından ayırın. Hatanın türü kuraldan gelir, metni ise ayrı üretilir. İki katman ayrıldığında, aynı kural hatası farklı dillerde doğru anlatılabilir ve iş kararı değiştiğinde yalnızca mesaj güncellenir.
Sonraki adımlar
Sınır ötesi akışlarda en çok zorlanan nesneler, küçük bölgeler ve özel statülü yerlerdir; bunların veri içinde nasıl ele alındığını küçük bölgeler ve özel kodlar yazısında bulabilirsiniz. Hangi ülkenin hangi dil ve bölge bileşimiyle geldiğini anlamak için ülke ve dil aynı değildir yazısına bakabilirsiniz. Farklı ülkelerin alanlarını yan yana görmek için sitemizdeki ülke ve bölge dizini sayfasını kullanabilirsiniz.
Bu yazıdaki sipariş örnekleri, ülke alanları, adres değerleri ve ülke bileşimleri yalnızca konuyu açıklamak için kurulmuş kurgusal örneklerdir; gerçek bir işlemi, gerçek bir müşteriyi ya da gerçek bir gönderiyi temsil etmez ve ticari bir belge olarak kullanılamaz.