.NET ile Sahte Kullanıcı Verisi Üretme: Bogus Kütüphanesi
Günümüz yazılım projelerinde, yazılım kalitesini artırmak ve hataları en aza indirmek için test süreçleri büyük bir öneme sahiptir.
Ancak test süreçlerinde gerçek verilerle çalışmak her zaman mümkün veya pratik olmayabilir. Özellikle erken aşamalarda, gerçek verilere erişim sınırlı olabilir veya bu verilerin kullanımı yasal veya etik sebeplerle kısıtlanabilir. İşte tam da bu noktada sahte veriler ihtiyacımız olan şey!
Sahte veriler gerçekçi görünümlü ancak tamamen rastgele üretilmiş bilgilerdir. Bu veriler, yazılım geliştirme ve test süreçlerinde kullanılarak uygulamanın farklı senaryolarda nasıl davrandığını gözlemlememizi sağlar. Örneğin, bir e-ticaret uygulaması için sahte kullanıcılar, ürünler veya siparişler oluşturarak, sistemin performansını ve tutarlılığını test edebiliriz.
Peki, .NET dünyasında bu ihtiyacı karşılayan en popüler araç nedir?
Cevap: Bogus!
Bu makalede, Bogus kütüphanesini kullanarak sahte kullanıcı (User) verileri üretmeyi öğreneceğiz. İki farklı yaklaşımı ele alacağız:
- Statik metod ile sahte veri üretmek: Bu yöntem, hızlı ve basit bir şekilde sahte veri üretmek isteyenler için ideal.
- Faker sınıfından türetilmiş bir alt sınıf ile sahte veri üretmek: Bu yöntem ise daha genişletilebilir ve yeniden kullanılabilir bir yapı sunuyor.
Bogus Kütüphanesi Nedir?
Bogus, .NET ekosisteminde sahte veriler üretmek için kullanılan güçlü ve esnek bir kütüphanedir. İsimler, adresler, telefon numaraları, e-posta adresleri, tarihler ve daha birçok alanda gerçekçi görünümlü sahte veriler üretebilirsiniz. Bogus, özellikle test senaryolarında, demo verileri oluşturmada ve prototip geliştirmede oldukça kullanışlıdır.
Bogus’un en büyük avantajı, ürettiği verilerin anlamlı ve gerçekçi olmasıdır. Örneğin, rastgele bir e-posta adresi üretirken kullanıcının adı ve soyadıyla tutarlı bir e-posta oluşturabilir. Bu sayede test verileriniz sadece rastgele değil, aynı zamanda mantıklı ve kullanılabilir olur.
- Bogus kütüphanesini .NET Core veya .NET Framework projelerinize eklemek oldukça basittir. Aşağıdaki komutlardan birini kullanarak kütüphaneyi projenize ekleyebilirsiniz:
Install-Package Bogus
Ya da .NET CLI kullanıyorsanız:
dotnet add package Bogus
Kütüphaneyi yükledikten sonra, sahte veri üretmeye başlayabiliriz.
Kullanıcı (User) Modelimizi Tanımlayalım
Öncelikle, sahte verilerini üreteceğimiz bir User
sınıfı oluşturalım. Bu sınıf, her kullanıcının sahip olabileceği temel bilgileri içerecek:
public class User
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
public DateOnly BirthDate { get; set; }
public string Address { get; set; }
}
Bu model, her kullanıcı için benzersiz bir ID, ad, soyad, e-posta, telefon numarası, doğum tarihi ve adres gibi bilgileri içerir.
Statik Metod ile Sahte Veri Üretmek
Bu yöntemde, BogusUserGenerator
adında bir statik sınıf oluşturuyoruz ve bu sınıf içinde Faker<User>
nesnesini tanımlıyoruz. Her seferinde CreateFaker()
metodunu çağırarak yeni bir Faker<User>
nesnesi elde ediyoruz.
public static class BogusUserGenerator
{
public static Faker<User> CreateFaker()
{
return new Faker<User>()
.RuleFor(u => u.Id, f => f.Random.Guid())
.RuleFor(u => u.FirstName, f => f.Name.FirstName())
.RuleFor(u => u.LastName, f => f.Name.LastName())
.RuleFor(u => u.Email, (f, u) => f.Internet.Email(u.FirstName, u.LastName))
.RuleFor(u => u.PhoneNumber, f => f.Phone.PhoneNumber())
.RuleFor(u => u.BirthDate, f => f.Date.PastDateOnly(30))
.RuleFor(u => u.Address, f => f.Address.FullAddress());
}
}
Bu metodu kullanarak rastgele 10 kullanıcı oluşturabiliriz:
var generator = BogusUserGenerator.CreateFaker();
var users = generator.Generate(10);
Bu yaklaşım hızlı, basit ve tek seferlik kullanımlar için idealdir. Ancak daha geniş kapsamlı kullanım ve genişletilebilirlik için bir alt sınıf oluşturabiliriz.
Faker Sınıfından Türetilmiş Bir Alt Sınıf Kullanmak
Bu yöntemde ise UserGenerator
adında, Faker<User>
sınıfından türetilmiş bir sınıf oluşturuyoruz. Burada, kurallar bir kez tanımlandıktan sonra, bu sınıfı tekrar tekrar kullanabiliriz. Yani UserGenerator
sınıfı üzerinden bir nesne oluşturup, her seferinde aynı kurallara göre veri üretmeye devam edebiliriz. Bu yaklaşım daha geniş projelerde, yeniden kullanılabilirlik ve bakım kolaylığı açısından daha avantajlıdır. Özellikle test senaryolarında veya modüler projelerde daha faydalıdır.
public class UserGenerator : Faker<User>
{
public UserGenerator()
{
RuleFor(u => u.Id, f => f.Random.Guid());
RuleFor(u => u.FirstName, f => f.Name.FirstName());
RuleFor(u => u.LastName, f => f.Name.LastName());
RuleFor(u => u.Email, (f, u) => f.Internet.Email(u.FirstName, u.LastName));
RuleFor(u => u.PhoneNumber, f => f.Phone.PhoneNumber());
RuleFor(u => u.BirthDate, f => f.Date.PastDateOnly(30));
RuleFor(u => u.Address, f => f.Address.FullAddress());
}
}
Bu alt sınıfı kullanarak sahte kullanıcılar üretebiliriz:
var generator = new UserGenerator();
var users = generator.Generate(10);
Bu yöntem yeniden kullanılabilirlik, bakım kolaylığı ve genişletilebilirlik açısından avantaj sağlar.
Metot vs. Alt Sınıf: Hangisini Kullanmalıyım?
- Statik Metot: Hızlı ve basit kullanımlar için idealdir. Özellikle tek seferlik veri üretimi gereken durumlarda tercih edilir.
- Alt Sınıf: Yeniden kullanılabilirlik ve genişletilebilirlik açısından avantajlıdır. Büyük projelerde ve test senaryolarında daha uygundur.
#region Statik Metod Kullanarak Faker Nesnesi Tanımlama
// Statik metod kullanarak sahte kullanıcıları oluşturuyoruz
var generatorStatic = BogusUserGenerator.CreateFaker(); // Faker<User> nesnesi
var usersStatic = generatorStatic.Generate(10); // 10 adet sahte kullanıcı oluşturuyoruz
// Statik metod ile oluşturduğumuz kullanıcıları yazdırıyoruz
Console.WriteLine("Statik Metod ile Oluşturulan Kullanıcılar:");
foreach (var user in usersStatic)
{
Console.WriteLine($"{user.FirstName} {user.LastName} - {user.Email}");
}
#endregion
#region Faker Sınıfından Türetilmiş Bir Alt Sınıf Kullanma
// UserGenerator sınıfından nesne oluşturuyoruz
var generatorSubclass = new UserGenerator(); // UserGenerator nesnesi
var usersSubclass = generatorSubclass.Generate(10); // 10 adet sahte kullanıcı oluşturuyoruz
// Alt sınıf ile oluşturduğumuz kullanıcıları yazdırıyoruz
Console.WriteLine("\nFaker Alt Sınıf ile Oluşturulan Kullanıcılar:");
foreach (var user in usersSubclass)
{
Console.WriteLine($"{user.FirstName} {user.LastName} - {user.Email}");
}
#endregion
Demo veri oluşturmak istediğinizde ve bunu .NET özelinde yapmak istediğinizde yolunuz bu makaleye düşerse umarım faydalı olur…
Daha fazla bilgi için Bogus’un resmi GitHub deposuna göz atabilirsiniz:
Sevgiler,