Skip to main content
15 Dezember, 2022

Demodaten generieren für automatisierte Softwaretests

15 Dezember, 2022

Automatisierte Tests sind ein wichtiger Bestandteil der Softwareentwicklung. Sie helfen dabei, die Qualität und Zuverlässigkeit von Code sicherzustellen und Fehler frühzeitig zu entdecken. Dabei spielen Demodaten eine entscheidende Rolle. In diesem Blogartikel werden wir uns ansehen, warum Demodaten für automatisierte Tests unverzichtbar sind und wie man sie mithilfe der Bogus Library in C# generieren kann.

Was sind Demodaten und warum sind sie wichtig?

Demodaten werden unter anderem für die Durchführung von automatisierten Tests verwendet. Sie dienen dazu, die Funktionalität von Software zu testen und zu überprüfen, ob sie wie erwartet funktioniert. Demodaten sind wichtig, da sie es ermöglichen, Tests in einem kontrollierten Umfeld durchzuführen und auf zuverlässige Ergebnisse zu überprüfen.

Ein weiterer wichtiger Aspekt von Demodaten ist, dass sie es ermöglichen, die Leistungsfähigkeit von Software zu messen und zu vergleichen. Sie können auch verwendet werden, um die Benutzerfreundlichkeit einer Software zu testen und sicherzustellen, dass sie intuitiv und einfach zu bedienen ist. Schließlich können Demodaten auch dazu beitragen, mögliche Fehler in der Software frühzeitig zu erkennen und zu beheben, bevor sie in der realen Welt auftreten.

Warum Demodaten beim Testen besser sind als reale Daten

Demodaten bieten einige Vorteile gegenüber realen Daten. Zum einen können sie einfach und schnell generiert werden, was insbesondere bei großen Datenmengen von Vorteil ist. Zum anderen sind Demodaten im Vergleich zu realen Daten weniger anfällig für Datenschutzprobleme und andere rechtliche Herausforderungen. Außerdem können Demodaten einfach angepasst werden, um verschiedene Testfälle abzudecken. Ein weiterer Vorteil von Demodaten ist, dass sie in einem kontrollierten Umfeld generiert werden können. Dadurch ist es möglich, die Daten genau zu definieren und sicherzustellen, dass sie für die Durchführung von Tests relevant und aussagekräftig sind. Auf diese Weise können Tests schneller und zuverlässiger durchgeführt werden. Schließlich sind Demodaten auch deshalb besser als reale Daten, weil sie reproduzierbar sind. Das bedeutet, dass die gleichen Tests immer wieder mit den gleichen Demodaten durchgeführt werden können, wodurch die Ergebnisse genau miteinander verglichen werden können und so ermittelt werden kann, ob sich die Software im Laufe der Zeit verbessert hat. Insgesamt bieten Demodaten beim Testen von Software also eine Reihe von Vorteilen gegenüber realen Daten. Sie ermöglichen es, Tests schneller und zuverlässiger durchzuführen und sicherzustellen, dass die Software ordnungsgemäß funktioniert.

Wie können Demodaten einfach generiert werden?

In den folgenden Beispielen verwenden wir die Bibliothek Bogus in der Programmiersprache C#, um die Erzeugung von Demodaten zu veranschaulichen. Die Bogus Library ist ein Open-Source-Tool, das es ermöglicht, Demodaten in C# zu generieren. Sie bietet eine einfache und intuitive API, die es erlaubt, verschiedene Datentypen wie Zahlen, Zeichenketten und Datumsangaben zu erzeugen. Aber auch komplexe Datenobjekte lassen sich mit Hilfe der Bibliothek erzeugen, indem bestimmte Regeln definiert werden. Im Folgenden schauen wir uns einige Möglichkeiten zur Erzeugung verschiedener Demodaten an.

Die Bogus Library kann für C# über das entsprechende NuGet-Paket entweder über den Paket-Manager oder den folgenden Befehl installiert werden.

Install-Package Bogus    

Sobald die Bibliothek einmal installiert ist, kann Bogus wie folgt verwendet werden.

using Bogus;

// Erstelle einen neuen Bogus-Generator
var generator = new Faker();

// Generiere einen zufälligen Namen
var name = generator.Name.FullName();

// Generiere eine zufällige Adresse
var address = generator.Address.FullAddress();

// Gib die generierten Werte auf der Konsole aus
Console.WriteLine($"Name: {name}");
Console.WriteLine($"Adresse: {address}");

Hier wird ein neuer Faker-Generator erstellt und verwendet, um zufällige Werte für einen Namen und eine Adresse zu generieren. Die generierten Werte werden dann auf der Konsole ausgegeben.

Oftmals sind die Datenstrukturen in der objektorientierten Programmierung jedoch deutlich komplexer. Doch auch das stellt für Bogus kein Problem dar! So lassen sich auch gesamte Objekte als Demodaten erzeugen, wie das folgende Beispiel veranschaulichen soll.

using Bogus;

var personFaker = new Faker()
.RuleFor(p => p.FirstName, f => f.Name.FirstName())
      .RuleFor(p => p.LastName, f => f.Name.LastName())
      .RuleFor(p => p.Email, (f, p) => f.Internet.Email(p.FirstName, p.LastName))
      .RuleFor(p => p.Birthday, f => f.Date.Past(50, new DateTime(2002, 1, 1)));

var people = personFaker.Generate(100);

class Person
{
public string FirstName { get; set; }
      	public string LastName { get; set; }
      	public string Email { get; set; }
      	public DateTime Birthday { get; set; }
}

Dieses Codebeispiel verwendet das Bogus-Framework, um 100 zufällige Personen zu erstellen. Jede Person hat einen Vornamen, einen Nachnamen, eine E-Mail-Adresse und ein Geburtsdatum. Die E-Mail-Adresse wird basierend auf dem Vornamen und Nachnamen der Person generiert. Selbst Beziehungen zu anderen Objekten lassen sich simulieren. Im folgenden Beispiel erhält jede Person zusätzlich eine Beziehung zu einer Instanz eines Berufs, den diese Person ausführt.

using Bogus;

var personFaker = new Faker()
.RuleFor(p => p.FirstName, f => f.Name.FirstName())
      	.RuleFor(p => p.LastName, f => f.Name.LastName())
      	.RuleFor(p => p.Email, (f, p) => f.Internet.Email(p.FirstName, p.LastName))
     	.RuleFor(p => p.Birthday, f => f.Date.Past(50, new DateTime(2002, 1, 1)))
	.RuleFor(p => p.Job, (f, p) => {
		p.Job = new Job(f.Company.CompanyName(), f.Name.JobTitle());
		return p.Job;
	});

var people = personFaker.Generate(100);

class Person
{
public string FirstName { get; set; }
      	public string LastName { get; set; }
     	public string Email { get; set; }
      	public DateTime Birthday { get; set; }
	public Job Job { get; set; }
}

class Job
{
	public string JobTitle { get; set; }
	public string CompanyName { get; set; }

	public Job(string companyName, string jobTitle){
		this.JobTitle = jobTitle; 
		this.CompanyName = companyName; 
	}	
}

Insgesamt bietet die Bogus Library eine einfache und flexible Möglichkeit, Demodaten in C# zu generieren. Durch die Verwendung von Demodaten in automatisierten Tests kann die Qualität und Zuverlässigkeit von Software verbessert werden.

Unser Fazit

In diesem Blogartikel haben wir uns angeschaut, warum Demodaten für automatisierte Tests unverzichtbar sind und wie man sie mithilfe der Bogus Library in C# generieren kann. Demodaten bieten eine Vielzahl von Vorteilen gegenüber realen Daten, wie die Möglichkeit, schnell und einfach große Datenmengen zu generieren, sowie die Vermeidung von Datenschutzproblemen und die Umgehung von rechtlichen Herausforderungen. Die Bogus Library ist ein nützliches Open-Source-Tool, das es erlaubt, Demodaten zu erzeugen und somit die Durchführung von automatisierten Tests zu erleichtern. Insgesamt kann die Verwendung von Demodaten dazu beitragen, die Qualität und Zuverlässigkeit von Software erheblich zu verbessern.