Test Kişi Verisi Üretici
Test kişi verisi üretici ile ad, soyad, TC kimlik no, doğum tarihi, telefon, e-posta, adres ve IBAN'ı olan sahte kişiler üret; kayıt formlarını, CRM ekranlarını ve demo veritabanlarını gerçek veri olmadan doldur.
Ramazan Arslan
Erkek · 30 yaşında
Test kişi verisi üretici rehberi
Gerçekçi test verisinin neden önemli olduğu, Türkçe karakterlerin yazılımda yarattığı tuzaklar ve güvenli e-posta ve telefon kullanımı.
Test kişi verisi üretici neden kullanılır?
Bir kayıt formunu, müşteri listesini ya da fatura ekranını "Test Test" ve "1111" gibi değerlerle denemek, gerçek kullanıcıların karşılaşacağı sorunları gizler. Test kişi verisi üretici bunun yerine gerçeğe benzeyen ama gerçek olmayan sahte kişi verisi hazırlar; "sahte kişi üretici" ya da "fake data" diye aranan araç da budur. Uzun soyadlar tablo sütunlarını taşırır, Türkçe karakterler arama ve sıralamayı bozar, aynı e-posta adresinin tekrar kullanılması benzersizlik kurallarına takılır. Gerçeğe benzeyen ama gerçek olmayan kişilerle çalışmak bu sorunları canlıya çıkmadan görmeni sağlar.
Gerçek müşteri verisini test ortamına kopyalamak ise KVKK açısından risklidir: ad, telefon, adres ve kimlik numarası kişisel veridir ve test ortamları genellikle canlı ortam kadar sıkı korunmaz. Sahte kişi verisi bu riski baştan ortadan kaldırır, ekran görüntülerini ve demo videolarını da rahatça paylaşmanı sağlar.
Test veritabanını tutarlı kişilerle doldurmak
Geliştirme ya da demo veritabanını doldururken her kişinin kendi içinde tutarlı olması önemlidir: aynı kayıttaki ad, e-posta, kimlik numarası ve IBAN tek bir kişiyi anlatmalı. Test kişi verisi üretici her satırı tek bir tutarlı kişi olarak hazırlar; e-posta adresi kişinin adından türetilir, TC kimlik numarası ve IBAN algoritmalara uyar. SQL çıktısını doğrudan seed betiğine, JSON çıktısını Cypress ya da Playwright fikstürüne koyabilirsin.
Test verisi oluşturma sırasında üç noktaya dikkat et. Üretilen kişiler 18 ile 70 yaş arasındadır; yaş sınırı olan bir formu deniyorsan sınırın hemen altındaki ve üstündeki doğum tarihlerini elle eklemelisin. E-posta adreslerine rastgele bir sayı eklenir ama yüzlerce kişide aynı adres tekrar edebilir; e-posta alanın benzersiz indeksliyse yüklemeden önce tekrarları ayıkla. Son olarak, yalnızca ad ve soyad alanlarını açık bırakırsan aracı rastgele isim üretici olarak da kullanabilir, sıralama ve arama ekranlarını sahte ad soyad listeleriyle deneyebilirsin.
Türkçe karakterlerin yazılımdaki tuzakları
Büyük ve küçük harf dönüşümü
Türkçede "i" harfinin büyüğü "İ", "ı" harfinin büyüğü "I"dır. Çoğu programlama dilinin varsayılan dönüşümü bunu bilmez: JavaScript'te "istanbul".toUpperCase() "ISTANBUL" verir. Doğru sonuç için toLocaleUpperCase('tr-TR') kullanılmalıdır. Listedeki İbrahim, Işık ve Yıldırım gibi isimler bu hatayı testte yakalamanı sağlar.
Sıralama ve arama
Varsayılan sıralama Ç, Ğ, İ, Ö, Ş ve Ü harflerini alfabenin sonuna atar; "Çelik" "Zeybek"ten sonra gelir. JavaScript'te localeCompare(b, 'tr'), MySQL'de utf8mb4_turkish_ci gibi Türkçeye uygun bir sıralama kuralı kullanmalısın. Aramada da "sahin" yazan kullanıcının "Şahin"i bulabilmesi için normalize edilmiş bir arama alanı tutmak işe yarar.
E-posta ve kullanıcı adları
E-posta adreslerinde Türkçe karakter kullanılmaz; ad ve soyadtan adres türetirken harfleri ASCII karşılıklarına çevirmen gerekir. Aşağıdaki kod örnekleri bu dönüşümü yapar.
E-posta ve telefon numaralarında dikkat
Üretilen e-posta adresleri her zaman @example.com ile biter. Bu alan adı internet standartlarında test ve dokümantasyon için ayrılmıştır; test ortamın yanlışlıkla e-posta gönderse bile kimseye ulaşmaz. Kendi test verini hazırlarken de gerçek alan adları yerine bunu kullanmalısın. Aynı standart example.net ve example.org alan adlarını ve .test uzantısını da bu amaçla ayırır; farklı sistemleri birbirinden ayırmak istiyorsan örneğin müşteri e-postaları için example.com, çalışan e-postaları için example.org kullanabilirsin.
Telefon numaraları ise gerçek operatör önekleriyle üretilir ve bir kişiye ait olabilir. Bu numaraları biçim ve doğrulama testlerinde kullan, ama SMS ya da arama gönderen bir test akışında asla kullanma.
Kendi projende sahte veri üretmek
Python'da Faker kütüphanesinin tr_TR yerel ayarı ve JavaScript'te @faker-js/faker paketinin Türkçe sürümü Türkçe isim, adres ve telefon üretebilir. TC kimlik numarası, vergi numarası ve IBAN gibi kontrol haneli alanlar içinse algoritmayı kendin uygulaman gerekir; aşağıdaki örnekler bunu küçük bir fonksiyonla gösterir. Tek tek alanlar için TC kimlik no, VKN ve IBAN üreticilerini kullanabilirsin.
const ADLAR = ['Ayşe', 'Mehmet', 'Zeynep', 'Emre', 'Elif', 'İbrahim'];
const SOYADLAR = ['Yılmaz', 'Kaya', 'Demir', 'Şahin', 'Çelik', 'Öztürk'];
const sec = (a) => a[Math.floor(Math.random() * a.length)];
function asciiYap(s) {
const harf = { ç: 'c', ğ: 'g', ı: 'i', ö: 'o', ş: 's', ü: 'u' };
return s.toLocaleLowerCase('tr-TR').replace(/[çğıöşü]/g, (c) => harf[c]);
}
function tcknUret() {
const d = [1 + Math.floor(Math.random() * 9)];
for (let i = 0; i < 8; i++) d.push(Math.floor(Math.random() * 10));
const tek = d[0] + d[2] + d[4] + d[6] + d[8];
const cift = d[1] + d[3] + d[5] + d[7];
d.push(((tek * 7 - cift) % 10 + 10) % 10);
d.push(d.reduce((a, b) => a + b, 0) % 10);
return d.join('');
}
function testKisisi() {
const ad = sec(ADLAR), soyad = sec(SOYADLAR);
return { ad, soyad, tckn: tcknUret(), eposta: `${asciiYap(ad)}.${asciiYap(soyad)}@example.com` };
}
import random
ADLAR = ["Ayşe", "Mehmet", "Zeynep", "Emre", "Elif", "İbrahim"]
SOYADLAR = ["Yılmaz", "Kaya", "Demir", "Şahin", "Çelik", "Öztürk"]
TR = str.maketrans("ÇĞİIÖŞÜçğıöşü", "cgiiosucgiosu")
def ascii_yap(s: str) -> str:
return s.translate(TR).lower()
def tckn_uret() -> str:
d = [random.randint(1, 9)] + [random.randint(0, 9) for _ in range(8)]
tek = d[0] + d[2] + d[4] + d[6] + d[8]
cift = d[1] + d[3] + d[5] + d[7]
d.append((tek * 7 - cift) % 10)
d.append(sum(d) % 10)
return "".join(map(str, d))
def test_kisisi() -> dict:
ad, soyad = random.choice(ADLAR), random.choice(SOYADLAR)
return {"ad": ad, "soyad": soyad, "tckn": tckn_uret(),
"eposta": f"{ascii_yap(ad)}.{ascii_yap(soyad)}@example.com"}
const ADLAR = ['Ayşe', 'Mehmet', 'Zeynep', 'Emre', 'Elif', 'İbrahim'];
const SOYADLAR = ['Yılmaz', 'Kaya', 'Demir', 'Şahin', 'Çelik', 'Öztürk'];
function asciiYap(string $s): string
{
return strtolower(strtr($s, ['Ç' => 'c', 'Ğ' => 'g', 'İ' => 'i', 'I' => 'i', 'Ö' => 'o', 'Ş' => 's', 'Ü' => 'u',
'ç' => 'c', 'ğ' => 'g', 'ı' => 'i', 'ö' => 'o', 'ş' => 's', 'ü' => 'u']));
}
function tcknUret(): string
{
$d = [random_int(1, 9)];
for ($i = 0; $i < 8; $i++) $d[] = random_int(0, 9);
$tek = $d[0] + $d[2] + $d[4] + $d[6] + $d[8];
$cift = $d[1] + $d[3] + $d[5] + $d[7];
$d[] = (($tek * 7 - $cift) % 10 + 10) % 10;
$d[] = array_sum($d) % 10;
return implode('', $d);
}
function testKisisi(): array
{
$ad = ADLAR[array_rand(ADLAR)];
$soyad = SOYADLAR[array_rand(SOYADLAR)];
return ['ad' => $ad, 'soyad' => $soyad, 'tckn' => tcknUret(),
'eposta' => asciiYap($ad) . '.' . asciiYap($soyad) . '@example.com'];
}
Sık sorulan sorular
Örnek kişi kayıtları, alanlar ve dışa aktarma hakkında merak edilenler.
Test kişi verisi üretici ile üretilen kişiler gerçek mi?
Hayır. Ad, soyad, adres ve diğer alanlar listelerden rastgele birleştirilir. TC kimlik numarası ve IBAN algoritmaya uygundur ama rastgele seçildiği için tesadüfen gerçek bir kişiye ya da hesaba denk gelebilir; bunu bilmeyiz ve sorgulamayız.
E-posta adresleri neden example.com ile bitiyor?
example.com, internet standartlarında (RFC 2606) dokümantasyon ve test için ayrılmış bir alan adıdır; hiçbir gerçek kişiye ait değildir. Test ortamın yanlışlıkla e-posta gönderse bile bu adreslere giden posta kimseye ulaşmaz.
Telefon numaralarıyla SMS testi yapabilir miyim?
Hayır. Telefon numaraları gerçek operatör önekleriyle ve gerçek biçimde üretilir, bu yüzden bir kişiye ait olabilir. Form ve biçim testlerinde kullan; SMS ve arama testleri için sağlayıcının test numaralarını ya da kendi numaranı kullan.
Hangi il ve ilçeler var?
Nüfusu en yüksek 20 il ve bu illerin bilinen ilçeleri kullanılır. Adres satırındaki mahalle ve sokak adları yaygın isimlerden rastgele seçilir; gerçek bir adresi göstermesi amaçlanmaz.
Tek seferde kaç kişi üretebilirim?
Bu sayfada 100 kişiye kadar üretip JSON, CSV ya da SQL olarak indirebilirsin. Yalnızca TC kimlik numarası gerekiyorsa toplu üretici 10.000 adede kadar çıkarır.
Alanları seçebilir miyim?
Evet. Kimlik, doğum tarihi, telefon, e-posta, adres ve IBAN alanlarını tek tıkla açıp kapatabilirsin. Kapattığın alanlar tabloda ve indirilen dosyada yer almaz. Seçimlerin tarayıcında hatırlanır.
Veriler sunucuya gönderiliyor mu?
İlk kişi sayfa açılırken sunucuda üretilir; sonraki bütün kişiler tarayıcında üretilir. Hiçbir veri kaydedilmez.
Kendi projemde böyle veri üretmek için kütüphane var mı?
Python'da Faker kütüphanesinin tr_TR yerel ayarı, JavaScript'te @faker-js/faker paketinin Türkçe sürümü Türkçe isim ve adres üretir. TC kimlik numarası için aşağıdaki kodu ya da test verisi API'sini kullanabilirsin.
Aynı işte lazım olacak diğer araçlar
Vergi numarası, IBAN, test kartı ve sahte kişi verisi: hepsi aynı mantıkla, tarayıcında.