Menü

Yaş doğrulama testi: 13, 16, 18 ve 21 sınırları nasıl sınanır?

Yaş doğrulama testinin nasıl kurulduğunu, yaş sınırlarının hangi bağlamlardan geldiğini, sınır günlerinin ve 29 Şubat doğumluların nasıl ele alınacağını anlatıyoruz.

Yayın tarihi

  • yaş doğrulama
  • test verisi
  • sınır değerleri

Yaş doğrulama testi, bir uygulamanın belirli bir yaşın altındaki ya da üstündeki kişilere nasıl davrandığını sınamaktır. Bu yazıda yaygın yaş sınırlarının nereden geldiğini, sınır gününün neden kendi başına bir test olduğunu, beyan edilen tarih ile belge doğrulamasının nasıl ayrıldığını ve test kümenizde hangi kayıtların bulunması gerektiğini bulacaksınız.

Yaygın yaş sınırları nereden gelir?

Bir uygulamada karşımıza çıkan yaş sınırları farklı kaynaklardan gelir ve birbirlerinin yerine geçmez. Bunları tek bir kural gibi düşünmek, tasarımı baştan yanlış kurar.

  • On üç yaş sınırı, çocuklara yönelik çevrimiçi hizmetlerde veri toplamayla ilgili kurallardan gelir.
  • On altı yaş sınırı, bilgi toplumu hizmetlerinde rıza yaşı olarak belirlenen ortak varsayımdır; ülkeler bu sınırı belirli bir aralık içinde değiştirebilir.
  • On sekiz yaş sınırı, çoğu ülkede reşit sayılma yaşıdır ve sözleşme yapma, oy kullanma gibi haklarla bağlantılıdır.
  • Yirmi bir yaş sınırı, bazı yargı bölgelerinde belirli ürünlerin satışı gibi dar kapsamlı durumlarda kullanılır.

Bu sınırların her biri kendi amacına hizmet eder. Bir uygulama aynı akışta birden fazlasını uygulayabilir: kayıt sırasında çocuk verisi toplamamak için bir sınır, promosyonlu bir ödeme akışı için başka bir sınır. Test senaryolarını bu ayrımı koruyarak yazmak gerekir.

Sınır günü neden kendi başına bir test gerektirir?

Yaş doğrulamanın en kritik günü, sınıra tam denk gelen gündür. Bu gün, kuralın hangi tarafında durulduğunu belirleyen tek andır ve hataların çoğu burada ortaya çıkar.

Kabul edilen yaklaşım, doğum günü geldiğinde yeni yaşın başladığıdır; yani sınır yaşına tam o gün ulaşan bir kullanıcı, o gün itibarıyla sınırı geçmiş sayılır. Bu yaklaşım benimsenmezse, doğum gününü kutlayan bir kişi bir gün boyunca yanlış tarafta kalır.

Bu yüzden test kümesinde üç kayıt ayrı ayrı bulunmalıdır: doğum günü dün olan kayıt, doğum günü bugün olan kayıt ve doğum günü yarın olan kayıt. Üçü de aynı sonucu veriyorsa yaş hesabı büyük olasılıkla yanlış kurulmuştur; çünkü bu üç kayıt, kuralın farklı taraflarında durmalıdır.

Bir ayrıntı daha vardır: sınır anı, sunucunun saatine göre belirlenir. Saat dilimi farkı yüzünden gece yarısına yakın işlemlerde bir günlük sapma oluşabilir. Bu sapmanın nasıl ortaya çıktığını doğum tarihi uç durumları yazısında ayrıntılı olarak ele alıyoruz.

Beyan edilen tarih ile belge doğrulaması arasındaki fark nedir?

İki yöntem sıkça aynı şey sanılır ama aralarında büyük bir fark vardır. Beyan edilen doğum tarihi, kullanıcının kendi yazdığı tarihtir; belge doğrulaması ise bu tarihin bağımsız bir kaynakla karşılaştırılmasıdır.

Beyan yönteminde uygulama yalnızca biçimi ve mantıklılığı kontrol eder: tarih gerçekten var olan bir gün mü, gelecekte mi, makul bir aralıkta mı? Bu kontroller kullanıcının doğru söylediğini göstermez; yalnızca yazdığı tarihin tutarlı olduğunu gösterir. Yaş sınırı olan bir akışta bu yöntem, sınırı bilerek yanlış beyan eden bir kullanıcıyı durdurmaz.

Belge doğrulamasında ise kullanıcıdan bir belge istenir ve belgedeki bilgi kendi kaynağında kontrol edilir. Bu yöntem daha güçlüdür ama daha fazla adım, daha fazla maliyet ve daha fazla gizlilik yükü getirir; ayrıca her belge türü her ülkede aynı biçimde bulunmaz.

Test açısından bu ayrım, iki farklı senaryo kümesi anlamına gelir. Beyan akışı için sınır tarihleri, biçim hataları ve gelecekteki tarihler sınanır. Belge akışı için ise belgenin okunamadığı, süresi geçmiş olduğu ya da tarihin beyanla uyuşmadığı durumlar sınanır. İki kümeyi karıştırmak, testin neyi kanıtladığını belirsizleştirir.

29 Şubat doğumlu biri sınırı hangi gün geçer?

Artık yılda doğan bir kişi için doğum günü, artık yıl olmayan yıllarda takvimde bulunmaz. Bu durumda ürünün bir karar vermesi gerekir: doğum günü şubat ayının son günü mü, yoksa mart ayının ilk günü mü sayılacak?

Bu karar, sınır yaşına denk geldiğinde bir günlük fark yaratır ve iki farklı sonuç üretir. Kararın kendisi tartışmalı olabilir; tartışmalı olan şey, kararın hiç verilmemiş olmasıdır. Kod içinde rastlantısal olarak belirlenen bir davranış, sonradan değiştirilmesi en zor olan davranıştır.

Test kümesinde 29 Şubat doğumlu bir kayıt bulundurmak, bu davranışın gerçekten uygulandığını gösterir. Kaydı hem artık yıl olan hem de olmayan bir referans anla denemek gerekir; aksi hâlde kodun yalnızca bir dalı sınanmış olur.

Doğum yılını yaş sanmak hangi hatayı üretir?

Bir kaydın yaşını doğum yılından çıkarmak, ilk bakışta pratik görünür ama düzenli olarak yanlış sonuç verir. Yıl farkı, kişinin o yıl içindeki doğum gününü geçirip geçirmediğini bilmez; bu yüzden yıl boyunca bir yaş sapma oluşur.

Bu sapmanın en görünür olduğu yer, sınır yaşıdır. Sınır yaşına girecek bir kullanıcı, doğum gününe kadar yanlış tarafta kalabilir; doğum gününden sonra ise doğru tarafa geçer. Yılın büyük bölümünde testler geçer, doğum gününe yakın günlerde ise beklenmedik hatalar çıkar.

Doğru yaklaşım, yaşı her zaman doğum tarihinden ve bir referans andan hesaplamaktır. Yaşı ayrı bir alan olarak saklamak da benzer bir sorun üretir: kayıt güncellenmediği sürece saklanan yaş yanlış kalır. Hesaplanan yaş her zaman tutarlıdır ve referans anı değiştirilerek sınırlar kolayca sınanabilir.

Geliştiriciler için: sınır verisi ve yapılandırılabilir eşik

Yaş sınırını kodun içine gömmek, ilk gün kolay görünür ama ikinci senaryoda hemen sorun çıkarır. Sınır, ürün kuralı olarak dışarıdan verilebilir olmalıdır; hangi akışta hangi sınırın geçerli olduğu da açıkça tanımlanmalıdır. Aynı uygulama içinde birden fazla sınır varsa, her birinin hangi bağlamdan geldiğini belgelemek gerekir.

Hesaplama fonksiyonu, referans anı bir parametre olarak almalıdır. Böylece testler sabit bir “bugün” ile çalışır ve sonuçlar yıllar boyunca değişmez. Bu tasarım, doğum gününe denk gelen kayıtları sınamayı da kolaylaştırır; referans anı bir gün ileri alarak sınırın diğer tarafı görülebilir.

Sınır verisi için gereken kayıtlar sınırlıdır: sınır yaşına tam bugün ulaşan kişi, sınıra bir gün kala olan kişi, sınırı bir gün önce geçmiş kişi ve 29 Şubat doğumlu kişi. Bu dört kayıt, yaş mantığının tamamını kapsar. Yaş sınırı olan akışlarda bu kayıtların gerçek bir kişiye karşılık gelmediğini unutmamak gerekir: üretilen veriler yalnızca test amaçlıdır ve gerçek bir kişiyi taklit etmek, bir yaş doğrulamasını geçmek için kullanılamaz. Ürettiğimiz kayıtlarda doğum tarihi ve yaş her zaman birlikte ve tutarlı üretilir; aynı kimlik anahtarı aynı kaydı geri getirir.

Farklı ülkelerin sınır uygulamalarını karşılaştırırken ülke sayfaları yol gösterici olur; örneğin çocuk verisiyle ilgili kuralların belirgin olduğu ABD sayfası ile Avrupa’daki uygulamalar için Almanya sayfası farklı yaklaşımları gösterir. Alanların birbiriyle uyumunu korumak için de kimlik verisi tutarlılığı yazısındaki denetimleri uygulayabilirsiniz.

Sonraki adımlar

Yaş sınırlarını tek bir yerde toplayıp her birinin hangi bağlamdan geldiğini yazın; karışık sınırlar, test edilmesi en zor alandır. Ardından sınır kayıtlarını sabitleyin ve referans anı değiştirerek her iki tarafı da sınayın. Bu kayıtları kendi kümenize eklemek için kimlik üreticisi sayfasında bir ülke seçip üretilen doğum tarihini ve yaşı karşılaştırabilirsiniz.

Okumaya devam edin

Çevrimiçi kimlik ve test verisi üreticisi hakkında makaleler