Toplu TC Kimlik No Üretici
Toplu TC kimlik no üretici ile 10.000'e kadar benzersiz, algoritmaya uygun TC kimlik numarası üret; JSON, CSV, SQL ya da düz liste olarak kopyala veya indir.
46806859770
97828621418
36022312852
89459628898
49728016344
97355452134
43127800702
99546150638
86222396558
96858506580
38179612434
34280602814
85551152002
71137021596
82959025044
88754971098
68049023978
83308548290
35712085090
76949569410
19704721494
19239334510
66292925360
79094081110
24865158560
73203428896
81543891324
82848812304
52435853072
63815626018… 70 satır daha
Toplu TC kimlik no üretici rehberi
Hangi biçimi ne zaman seçeceğin, veritabanına aktarırken dikkat edeceklerin ve benzersizliğin neden önemli olduğu.
Toplu TC kimlik no üretici neden gerekir?
Tek bir form testinde bir numara yeterlidir, ama bir uygulamayı gerçeğe yakın koşullarda denemek için binlerce kayıt, yani toplu TC kimlik numarası gerekir. Toplu TC kimlik no üretici bu listeyi tek tıkla, tekrar etmeyen numaralarla hazırlar. Geliştirme ve staging veritabanlarını doldurmak (seed), yük ve performans testlerinde her sanal kullanıcıya farklı bir kimlik vermek, veri taşıma (migration) betiklerini büyük tablolarda denemek ve raporlama ekranlarını dolu verilerle görmek en yaygın ihtiyaçlardır.
Bu işler için gerçek müşteri verisini kopyalamak hem KVKK açısından risklidir hem de üretim verisinin geliştirici makinelerine yayılması demektir. Algoritmaya uygun sentetik numaralar, doğrulama kurallarından geçen ama kimseye ait olduğunu bilmediğimiz verilerle aynı testi yapmanı sağlar.
Hangi çıktı biçimini seçmeliyim?
JSON
Cypress ve Playwright fixture dosyaları, Postman koleksiyonları, mock API yanıtları ve Jest ya da Vitest test verileri için en uygun biçimdir. "Dizi" seçeneği düz bir metin dizisi, "Nesne" seçeneği her satırı {"tckn": "..."} biçiminde verir; alan adını kendi modeline göre değiştirebilirsin.
CSV
Excel ve Google Sheets'te açmak, içe aktarma ekranlarını denemek ya da JMeter'ın CSV Data Set Config bileşeniyle her sanal kullanıcıya ayrı bir numara vermek için kullanılır. Dosya UTF-8 kodlamasıyla ve başlık satırıyla iner.
SQL
Seçtiğin tablo ve alan adıyla hazır INSERT komutları üretir. Dosyayı veritabanı istemcinde çalıştırman ya da migration betiğine eklemen yeterlidir.
Liste
Her satırda bir numara olan düz metin. k6 ya da Locust gibi araçlarda satır satır okumak ve kabuk betiklerinde kullanmak için en sade biçimdir.
Yük testinde TC kimlik no listesi kullanmak
Yük testinde her sanal kullanıcının farklı bir kimlikle kayıt olması gerekir; aynı numarayla yüzlerce kayıt denemesi gerçek trafiği yansıtmaz ve benzersizlik kuralına takılır. JMeter'da CSV biçiminde indirdiğin dosyayı CSV Data Set Config bileşenine verip tckn sütununu bir değişken olarak kullanabilirsin. k6'da ise düz liste biçimindeki dosyayı open() ile okuyup SharedArray içine yüklemek, belleği bütün sanal kullanıcılar arasında paylaştırır. Senaryondaki kullanıcı sayısından fazla numara gerekiyorsa birkaç kez toplu TC no üret ve dosyaları birleştir; her liste kendi içinde benzersizdir. Çoklu TC kimlik no listelerini test ortamına yüklemeden önce toplu doğrulama aracıyla bir kez kontrol etmek de iyi bir alışkanlıktır.
Veritabanına aktarırken dikkat edilecekler
TC kimlik numarasını sayı değil metin olarak sakla; CHAR(11) ya da VARCHAR(11) uygun bir alan tipidir. Numara üzerinde hiçbir zaman aritmetik işlem yapılmaz ve bazı sistemlerde baştaki sıfırlar ya da biçim önemli olabilir. Gerçek uygulamada kimlik alanına benzersiz bir indeks koyduysan test verisinin de bu kısıtı sağlaması gerekir; bu yüzden üretilen liste her zaman benzersizdir.
SQL Server tek bir VALUES listesinde en fazla 1.000 satır kabul eder. Bu sınıra takılmaman için SQL çıktısı 1.000'er satırlık ayrı INSERT komutlarına bölünür; aynı dosya MySQL, PostgreSQL ve SQLite'ta da değişiklik yapmadan çalışır.
Benzersizlik neden önemli?
İlk hanesi 1 ile 9 arasında olan ve son iki hanesi hesaplanan TC kimlik numarası sayısı 900 milyondur. Bu büyük bir sayı gibi görünse de rastgele seçilen 10.000 numara arasında en az bir tekrar çıkma olasılığı yaklaşık yüzde 5'tir. Benzersiz indeksi olan bir tabloya veri basarken bu, yirmi denemeden birinde testin "duplicate key" hatasıyla durması demektir.
Bu araç her numarayı bir kümede tutarak tekrarları baştan ayıklar. Kendi kodunda üretiyorsan aşağıdaki örneklerdeki gibi bir küme (Set) kullanman yeterlidir. Doğrulama kodunu da test etmek istiyorsan listeyi toplu doğrulama aracına yapıştırabilirsin.
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 tcknListesi(adet) {
const set = new Set();
while (set.size < adet) set.add(tcknUret());
return [...set];
}
import random
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 tckn_listesi(adet: int) -> list[str]:
s: set[str] = set()
while len(s) < adet:
s.add(tckn_uret())
return list(s)
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 tcknListesi(int $adet): array
{
$set = [];
while (count($set) < $adet) $set[tcknUret()] = true;
return array_map('strval', array_keys($set));
}
Sık sorulan sorular
Adet sınırı, dosya biçimleri ve tekrarsızlık hakkında sorular.
Toplu TC kimlik numarası üretirken tek seferde en fazla kaç numara alabilirim?
Tarayıcıda tek seferde 10.000 benzersiz numara üretilir. Daha büyük veri setleri için aşağıdaki kodu kendi projende çalıştırabilir ya da test verisi API'sini kullanabilirsin.
Üretilen numaralar birbirinden farklı mı?
Evet. Liste oluşturulurken her numara bir kümede tutulur, tekrar eden numara listeye eklenmez. 10.000 numaralık bir listede aynı numara iki kez geçmez.
SQL çıktısı hangi veritabanlarında çalışır?
Standart çok satırlı INSERT INTO ... VALUES sözdizimi kullanılır; MySQL, MariaDB, PostgreSQL, SQLite ve SQL Server'da çalışır. SQL Server tek bir VALUES listesinde en fazla 1.000 satır kabul ettiği için çıktı 1.000'er satırlık INSERT komutlarına bölünür.
JSON çıktısını nerede kullanabilirim?
Cypress ve Playwright fixture dosyalarında, Postman koleksiyonlarında, mock API yanıtlarında ve unit test verilerinde. "Nesne" seçeneği her numarayı {"tckn": "..."} biçiminde verir; alan adını değiştirebilirsin.
Yabancı kimlik numarası da üretebilir miyim?
Evet. "Tür" seçeneğinden "Yabancı (99)" seçersen 99 ile başlayan, aynı algoritmaya uygun numaralar üretilir. Tek numara için yabancı kimlik no üretici sayfasına bakabilirsin.
Numaralar sunucuya gönderiliyor ya da kaydediliyor mu?
Hayır. Liste tamamen tarayıcında oluşturulur ve dosya doğrudan bilgisayarına iner. Hiçbir numara sunucuya gönderilmez.
Her üretimde farklı numaralar mı geliyor?
Evet, her seferinde yeni rastgele numaralar üretilir. Testlerinde her koşuda aynı veriyi kullanmak istiyorsan bir kez üretip dosyayı projene eklemen yeterli.
Ayarlarımı paylaşılabilir bir linke çevirebilir miyim?
Evet. Adresin sonuna ?adet=1000&format=json gibi parametreler ekleyebilirsin. Sayfa bu ayarlarla açılır ve listeyi hemen üretir.
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.