{"id":2780,"date":"2026-04-01T17:41:55","date_gmt":"2026-04-01T15:41:55","guid":{"rendered":"https:\/\/g7itchme.wordpress.com\/?p=2780"},"modified":"2026-04-01T17:41:55","modified_gmt":"2026-04-01T15:41:55","slug":"der-unsichtbare-baumeister-eine-kulturgeschichte-des-softwaretests-und-die-kunst-der-validierung","status":"publish","type":"post","link":"https:\/\/technodidact.de\/en\/der-unsichtbare-baumeister-eine-kulturgeschichte-des-softwaretests-und-die-kunst-der-validierung\/","title":{"rendered":"Der unsichtbare Baumeister: Eine Kulturgeschichte des Softwaretests und die Kunst der Validierung"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Ein zehnt\u00e4giger Selbstlernkurs \u00fcber die Grundlagen des Softwaretests und der Validierung<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Einleitung: Warum dieser Kurs anders ist<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt Berufe, die erst dann wahrgenommen werden, wenn sie versagen. Einer von ihnen ist der Softwaretester. In einer Welt, die von Code durchdrungen ist \u2013 vom Wecker am Morgen bis zum Flugzeug, das uns \u00fcber Kontinente tr\u00e4gt \u2013 bleibt die Arbeit jener, die sicherstellen, dass dieser Code funktioniert, meist unsichtbar. Dabei ist sie eine der anspruchsvollsten, verantwortungsvollsten und historisch interessantesten Disziplinen der Technikgeschichte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Kurs ist kein schneller Ratgeber. Er ist eine Einladung, die Grundlagen des Softwaretests und der Validierung nicht nur praktisch zu erlernen, sondern auch zu verstehen: als kulturelle Praxis, als historisch gewachsene Denkweise und als ethische Verpflichtung. Er richtet sich an Berufseinsteiger, neugierige Anf\u00e4nger und alle, die verstehen wollen, warum digitale Systeme heute so funktionieren \u2013 oder eben nicht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Das Ziel:<\/strong>&nbsp;Sie erwerben nicht nur handwerkliches Wissen \u00fcber Testebenen, Testarten und Testfallentwurf. Sie entwickeln ein Gesp\u00fcr f\u00fcr die Qualit\u00e4t von Software, lernen systematisch Fehler zu denken und werden zu einem kritischen Begleiter digitaler Entwicklungsprozesse. Nach Abschluss dieses Kurses sind Sie in der Lage, eigene Testf\u00e4lle zu erstellen, Testprozesse einzuordnen und fundiert \u00fcber Softwarequalit\u00e4t zu sprechen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Format:<\/strong>&nbsp;Dieser Kurs ist als zehnt\u00e4giges Selbstlernprogramm konzipiert. Jeder Tag umfasst eine Lerneinheit von etwa einer Stunde. Die Inhalte bauen logisch aufeinander auf \u2013 von den historischen Wurzeln bis zur praktischen Abschluss\u00fcbung.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 1: Was ist Softwaretest? \u2013 Warum testen wir?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Verstehen, warum Softwaretests unverzichtbar sind und welche gesellschaftliche Bedeutung sie haben.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fchrung: Der unsichtbare Baumeister<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Stellen Sie sich vor, Sie bestellen ein Produkt in einem Online-Shop. Sie legen etwas in den Warenkorb, geben Ihre Adresse ein, bezahlen \u2013 und dann passiert nichts. Keine Bestellbest\u00e4tigung, kein Paket. Oder schlimmer: Es wird der falsche Betrag abgebucht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Solche Probleme entstehen durch Fehler in der Software. Softwaretests sollen genau solche Fehler vor der Auslieferung finden und beheben. Doch die Geschichte des Softwaretests ist auch eine Geschichte des Lernens durch Scheitern.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Historische Tiefe: Die Katastrophen, die uns lehrten<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Notwendigkeit systematischer Tests wurde der \u00d6ffentlichkeit erst durch spektakul\u00e4re Fehlschl\u00e4ge bewusst:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Jahr<\/th><th class=\"has-text-align-left\" data-align=\"left\">Ereignis<\/th><th class=\"has-text-align-left\" data-align=\"left\">Folge<\/th><\/tr><\/thead><tbody><tr><td>1962<\/td><td>Mariner 1 (Venus-Sonde) explodiert kurz nach Start<\/td><td>Fehler in der Flugbahnberechnungssoftware \u2013 ein einziger fehlender Bindestrich im Code<\/td><\/tr><tr><td>1985<\/td><td>Therac-25 (Strahlentherapieger\u00e4t) verursacht t\u00f6dliche \u00dcberdosierungen<\/td><td>Race Conditions in der Software \u2013 bis zu sechs Todesf\u00e4lle<\/td><\/tr><tr><td>1996<\/td><td>Ariane 5 (Tr\u00e4gerrakete) explodiert 37 Sekunden nach Start<\/td><td>Integer-\u00dcberlauf bei der Umwandlung einer 64-Bit-Zahl in eine 16-Bit-Zahl \u2013 Verlust von 370 Millionen US-Dollar<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Vorf\u00e4lle zeigen: Softwaretests sind keine l\u00e4stige Pflicht, sondern eine ethische Verantwortung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was ist ein Softwaretest?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Softwaretest ist der Prozess, ein Programm auszuf\u00fchren, um Fehler zu entdecken und sicherzustellen, dass es die Anforderungen erf\u00fcllt. Der amerikanische Informatiker&nbsp;<strong>Glenford Myers<\/strong>&nbsp;definierte bereits 1979 in seinem Klassiker&nbsp;<em>The Art of Software Testing<\/em>:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>\u201eTesting is the process of executing a program with the intent of finding errors.\u201c<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Test umfasst mehr als das blo\u00dfe Ausf\u00fchren:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Planung:<\/strong>\u00a0Was wird getestet?<\/li>\n\n\n\n<li><strong>Entwurf:<\/strong>\u00a0Wie testet man?<\/li>\n\n\n\n<li><strong>Durchf\u00fchrung:<\/strong>\u00a0Testf\u00e4lle ausf\u00fchren<\/li>\n\n\n\n<li><strong>Auswertung:<\/strong>\u00a0Ergebnisse pr\u00fcfen und dokumentieren<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Warum ist Testen wichtig?<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Grund<\/th><th class=\"has-text-align-left\" data-align=\"left\">Erkl\u00e4rung<\/th><\/tr><\/thead><tbody><tr><td><strong>Qualit\u00e4tssicherung<\/strong><\/td><td>Software soll zuverl\u00e4ssig und korrekt arbeiten<\/td><\/tr><tr><td><strong>Kosteneinsparung<\/strong><\/td><td>Ein Fehler in der Produktion ist teurer als einer in der Entwicklung (Faktor 10 bis 100)<\/td><\/tr><tr><td><strong>Sicherheit<\/strong><\/td><td>Fehler k\u00f6nnen zu Datenverlust, Verletzungen oder Todesf\u00e4llen f\u00fchren<\/td><\/tr><tr><td><strong>Kundenzufriedenheit<\/strong><\/td><td>Fehlerfreie Software erh\u00f6ht das Vertrauen der Nutzer<\/td><\/tr><tr><td><strong>Einhaltung von Standards<\/strong><\/td><td>Viele Branchen fordern Nachweise \u00fcber Tests (Medizin, Luftfahrt, Finanzen)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Praxisbeispiel: Der Warenkorb im Online-Shop<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein einfaches Beispiel:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Anforderung:<\/strong>\u00a0Der Warenkorb soll den Gesamtpreis korrekt berechnen.<\/li>\n\n\n\n<li><strong>M\u00f6glicher Fehler:<\/strong>\u00a0Beim Hinzuf\u00fcgen eines zweiten Artikels wird der Preis \u00fcberschrieben statt addiert.<\/li>\n\n\n\n<li><strong>Konsequenz:<\/strong>\u00a0Der Kunde zahlt zu wenig oder zu viel \u2013 beides ist problematisch.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Testfall:<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Artikel A (10 \u20ac) in den Warenkorb legen \u2192 Gesamtpreis 10 \u20ac<\/li>\n\n\n\n<li>Artikel B (5 \u20ac) hinzuf\u00fcgen \u2192 Gesamtpreis 15 \u20ac (erwartet)<\/li>\n\n\n\n<li>Tats\u00e4chlicher Preis: 5 \u20ac \u2192\u00a0<strong>Fehler gefunden!<\/strong><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung Tag 1<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Softwaretests finden Fehler, bevor sie den Nutzer erreichen.<\/li>\n\n\n\n<li>Testen spart Geld, sch\u00fctzt vor Sch\u00e4den und sichert die Qualit\u00e4t.<\/li>\n\n\n\n<li>Ein guter Test ist systematisch und nachvollziehbar.<\/li>\n\n\n\n<li>Die Geschichte des Softwaretests ist eine Geschichte des Lernens aus Katastrophen.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe Tag 1 (ca. 15 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Denken Sie an eine App oder Software, die Sie regelm\u00e4\u00dfig nutzen (z.\u202fB. Messenger, Banking-App, Navigations-App).<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Beschreiben Sie\u00a0<strong>eine Funktion<\/strong>\u00a0dieser Software.<\/li>\n\n\n\n<li>\u00dcberlegen Sie:\u00a0<strong>Was k\u00f6nnte schiefgehen?<\/strong>\u00a0Nennen Sie mindestens zwei m\u00f6gliche Fehler.<\/li>\n\n\n\n<li>Notieren Sie,\u00a0<strong>welche Auswirkungen<\/strong>\u00a0diese Fehler h\u00e4tten.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 2: Der Softwareentwicklungszyklus (SDLC) und die Rolle des Tests<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Phasen der Softwareentwicklung verstehen und einordnen, wo und wie Tests in diesen Phasen eingebunden werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fchrung: Vom Wasserfall zur kontinuierlichen Pr\u00fcfung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Software entsteht nicht einfach. Sie durchl\u00e4uft einen Lebenszyklus \u2013 von der ersten Idee bis zur Wartung nach der Auslieferung. Die Art und Weise, wie Tests in diesen Zyklus eingebettet werden, hat sich \u00fcber die Jahrzehnte dramatisch ver\u00e4ndert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die klassischen Phasen des SDLC<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Phase<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Testaktivit\u00e4t<\/th><\/tr><\/thead><tbody><tr><td><strong>Anforderungsanalyse<\/strong><\/td><td>Was soll die Software tun?<\/td><td>Anforderungen auf Vollst\u00e4ndigkeit, Widerspr\u00fcche und Testbarkeit pr\u00fcfen<\/td><\/tr><tr><td><strong>Entwurf<\/strong><\/td><td>Wie wird die Software gebaut?<\/td><td>Architektur und Schnittstellen auf Machbarkeit pr\u00fcfen<\/td><\/tr><tr><td><strong>Implementierung<\/strong><\/td><td>Programmieren des Codes<\/td><td><strong>Unittests<\/strong>&nbsp;durch Entwickler<\/td><\/tr><tr><td><strong>Test<\/strong><\/td><td>Systematisches Pr\u00fcfen der Software<\/td><td>Integrationstests, Systemtests, Abnahmetests<\/td><\/tr><tr><td><strong>Auslieferung<\/strong><\/td><td>Bereitstellung f\u00fcr Nutzer<\/td><td>Rauchtests, Deployment-Tests<\/td><\/tr><tr><td><strong>Wartung<\/strong><\/td><td>Fehlerbehebungen, Erweiterungen<\/td><td>Regressionstests<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Historischer Wandel: Vom Wasserfall zum Shift Left<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In den 1970er und 1980er Jahren dominierte das&nbsp;<strong>Wasserfallmodell<\/strong>: Tests waren eine eigene Phase am Ende des Entwicklungsprozesses. Doch diese sp\u00e4te Integration erwies sich als problematisch \u2013 Fehler, die erst im Test entdeckt wurden, waren extrem teuer zu beheben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Erkenntnis, die sich in den 1990er Jahren durchsetzte:&nbsp;<strong>Je fr\u00fcher ein Fehler gefunden wird, desto g\u00fcnstiger ist die Behebung.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Entdeckungszeitpunkt<\/th><th class=\"has-text-align-left\" data-align=\"left\">Relative Kosten der Fehlerbehebung<\/th><\/tr><\/thead><tbody><tr><td>Anforderungsphase<\/td><td>1<\/td><\/tr><tr><td>Entwurfsphase<\/td><td>5<\/td><\/tr><tr><td>Implementierungsphase<\/td><td>10<\/td><\/tr><tr><td>Testphase<\/td><td>20<\/td><\/tr><tr><td>Produktion<\/td><td>50\u2013100<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Zahlen (nach Barry Boehm,&nbsp;<em>Software Engineering Economics<\/em>, 1981) f\u00fchrten zum Prinzip des&nbsp;<strong>Shift Left<\/strong>: Testaktivit\u00e4ten so fr\u00fch wie m\u00f6glich im Entwicklungsprozess beginnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel: Eine Banking-App<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Phase<\/th><th class=\"has-text-align-left\" data-align=\"left\">M\u00f6glicher Fehler<\/th><th class=\"has-text-align-left\" data-align=\"left\">Wenn unentdeckt<\/th><\/tr><\/thead><tbody><tr><td>Anforderung<\/td><td>\u201e\u00dcberweisung\u201c wurde als \u201eEinzahlung\u201c definiert<\/td><td>Falsche Gesch\u00e4ftslogik, Neuentwicklung n\u00f6tig<\/td><\/tr><tr><td>Entwurf<\/td><td>Schnittstelle zur Bank nicht geplant<\/td><td>Integration scheitert, Verz\u00f6gerungen<\/td><\/tr><tr><td>Implementierung<\/td><td>Zinsberechnung falsch programmiert<\/td><td>Kunden erhalten falsche Zinsen, Reputationsschaden<\/td><\/tr><tr><td>Test<\/td><td>Testfall f\u00fcr Sonderfall vergessen<\/td><td>Fehler kommt in Produktion<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung Tag 2<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Der SDLC beschreibt die Phasen der Softwareentwicklung.<\/li>\n\n\n\n<li>Tests sind nicht nur eine Phase, sondern ein\u00a0<strong>kontinuierlicher Prozess<\/strong>.<\/li>\n\n\n\n<li><strong>Shift Left<\/strong>\u00a0bedeutet: Testaktivit\u00e4ten so fr\u00fch wie m\u00f6glich beginnen.<\/li>\n\n\n\n<li>Je fr\u00fcher ein Fehler gefunden wird, desto g\u00fcnstiger ist die Behebung.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe Tag 2 (ca. 15 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Stellen Sie sich vor, Sie entwickeln eine&nbsp;<strong>App f\u00fcr To-Do-Listen<\/strong>.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Zeichnen Sie eine einfache Grafik mit den SDLC-Phasen (oder beschreiben Sie sie in Stichpunkten).<\/li>\n\n\n\n<li>Markieren Sie f\u00fcr jede Phase\u00a0<strong>eine m\u00f6gliche Testaktivit\u00e4t<\/strong>.<\/li>\n\n\n\n<li>Beschreiben Sie kurz, was passiert, wenn ein Fehler in der Anforderungsphase unentdeckt bleibt.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 3: Grundbegriffe \u2013 Verification vs. Validation, Fehler vs. Defekt<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die wichtigsten Fachbegriffe des Softwaretests sicher unterscheiden k\u00f6nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fchrung: Die Sprache der Qualit\u00e4t<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Um \u00fcber Qualit\u00e4t zu sprechen, braucht es eine klare Sprache. Im Softwaretest hat sich ein Begriffssystem etabliert, das oft missverstanden wird. Zwei Unterscheidungen sind besonders zentral:&nbsp;<strong>Verification vs. Validation<\/strong>&nbsp;und&nbsp;<strong>Error vs. Defekt vs. Failure<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verification und Validation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Diese beiden Begriffe wurden auf der ber\u00fchmten NATO-Konferenz 1968 in Garmisch-Partenkirchen als zentrale Konzepte der Softwaretechnik etabliert.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Begriff<\/th><th class=\"has-text-align-left\" data-align=\"left\">Bedeutung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Frage<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beispiel<\/th><\/tr><\/thead><tbody><tr><td><strong>Verification<\/strong><\/td><td>Pr\u00fcft, ob das Produkt gem\u00e4\u00df den Spezifikationen gebaut wurde<\/td><td>\u201eBauen wir das Produkt richtig?\u201c<\/td><td>Code-Review, Unittest pr\u00fcft, ob eine Funktion korrekt programmiert wurde<\/td><\/tr><tr><td><strong>Validation<\/strong><\/td><td>Pr\u00fcft, ob das Produkt die tats\u00e4chlichen Bed\u00fcrfnisse der Nutzer erf\u00fcllt<\/td><td>\u201eBauen wir das richtige Produkt?\u201c<\/td><td>Abnahmetest mit echten Nutzern<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Merksatz:<\/strong><br><em>Verification<\/em>&nbsp;pr\u00fcft gegen das&nbsp;<strong>Pflichtenheft<\/strong>&nbsp;(technische Spezifikation).<br><em>Validation<\/em>&nbsp;pr\u00fcft gegen die&nbsp;<strong>Anforderungen<\/strong>&nbsp;(Nutzerbed\u00fcrfnisse).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Error, Defekt und Failure<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Kette \u2013 vom menschlichen Irrtum \u00fcber den im Code verankerten Defekt bis hin zum sichtbaren Versagen \u2013 ist zentral, um zu verstehen, warum Testen nicht einfach \u201eAusprobieren\u201c ist, sondern systematische Fehlersuche.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Begriff<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beispiel<\/th><\/tr><\/thead><tbody><tr><td><strong>Error (Fehler)<\/strong><\/td><td>Ein menschlicher Fehler im Denken oder Handeln<\/td><td>Ein Entwickler schreibt&nbsp;<code>if (a = b)<\/code>&nbsp;statt&nbsp;<code>if (a == b)<\/code><\/td><\/tr><tr><td><strong>Defekt (Bug)<\/strong><\/td><td>Die Abweichung im Programm (Ursache)<\/td><td>Der Code enth\u00e4lt eine Zuweisung statt eines Vergleichs<\/td><\/tr><tr><td><strong>Failure (Versagen)<\/strong><\/td><td>Der Defekt zeigt sich w\u00e4hrend der Ausf\u00fchrung<\/td><td>Das Programm st\u00fcrzt ab oder liefert falsches Ergebnis<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Kette:<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Mensch macht&nbsp;<strong>Error<\/strong>&nbsp;\u2192 Programm enth\u00e4lt&nbsp;<strong>Defekt<\/strong>&nbsp;\u2192 Bei Ausf\u00fchrung tritt&nbsp;<strong>Failure<\/strong>&nbsp;auf<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiele zur Veranschaulichung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beispiel 1: Taschenrechner<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Error:<\/strong>\u00a0Entwickler denkt, dass Division durch 0 erlaubt ist.<\/li>\n\n\n\n<li><strong>Defekt:<\/strong>\u00a0Code erlaubt Division durch 0.<\/li>\n\n\n\n<li><strong>Failure:<\/strong>\u00a0Programm st\u00fcrzt ab, wenn Nutzer durch 0 teilt.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beispiel 2: Anmeldefunktion<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Error:<\/strong>\u00a0Anforderung \u201ePasswort muss 8 Zeichen haben\u201c wurde \u00fcbersehen.<\/li>\n\n\n\n<li><strong>Defekt:<\/strong>\u00a0Passw\u00f6rter mit 3 Zeichen werden akzeptiert.<\/li>\n\n\n\n<li><strong>Failure:<\/strong>\u00a0Nutzer meldet: \u201eIch konnte mich mit &#8218;abc&#8216; anmelden \u2013 das ist unsicher!\u201c<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung Tag 3<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Verification<\/strong>\u00a0= richtig gebaut?<\/li>\n\n\n\n<li><strong>Validation<\/strong>\u00a0= das Richtige gebaut?<\/li>\n\n\n\n<li><strong>Error<\/strong>\u00a0= menschlicher Fehler<\/li>\n\n\n\n<li><strong>Defekt<\/strong>\u00a0= Fehler im Code<\/li>\n\n\n\n<li><strong>Failure<\/strong>\u00a0= sichtbares Versagen bei Ausf\u00fchrung<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe Tag 3 (ca. 15 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Gegeben ist folgende Situation:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Ein Entwickler programmiert eine Funktion, die den Rabatt berechnet:<br><em>\u201eBei einem Einkauf \u00fcber 100 \u20ac gibt es 10 % Rabatt.\u201c<\/em><br>Er schreibt:<br><code>if (einkaufswert &gt; 100) { rabatt = einkaufswert * 0.1; }<\/code><br>Tats\u00e4chlich soll der Rabatt aber ab&nbsp;<strong>100 \u20ac<\/strong>&nbsp;(inklusive) gew\u00e4hrt werden.<\/p>\n<\/blockquote>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Was ist hier der\u00a0<strong>Error<\/strong>?<\/li>\n\n\n\n<li>Was ist der\u00a0<strong>Defekt<\/strong>?<\/li>\n\n\n\n<li>Wann w\u00fcrde ein\u00a0<strong>Failure<\/strong>\u00a0auftreten?<\/li>\n\n\n\n<li>Handelt es sich bei der Pr\u00fcfung des Codes durch einen Kollegen um\u00a0<strong>Verification<\/strong>\u00a0oder\u00a0<strong>Validation<\/strong>? Begr\u00fcnden Sie.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 4: Testebenen \u2013 Unit-, Integrations-, System- und Abnahmetest<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die vier klassischen Testebenen kennen und voneinander abgrenzen k\u00f6nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fchrung: Ein Schichtenmodell der Pr\u00fcfung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Software besteht aus vielen kleinen Teilen. Man testet nicht alles auf einmal, sondern auf verschiedenen Ebenen. Jede Ebene hat einen eigenen Zweck und findet unterschiedliche Fehlerarten. Dieses Schichtenmodell hat sich seit den 1980er Jahren als Industriestandard etabliert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die vier Testebenen im \u00dcberblick<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Ebene<\/th><th class=\"has-text-align-left\" data-align=\"left\">Was wird getestet?<\/th><th class=\"has-text-align-left\" data-align=\"left\">Wer f\u00fchrt durch?<\/th><th class=\"has-text-align-left\" data-align=\"left\">Typische Fehler<\/th><\/tr><\/thead><tbody><tr><td><strong>Unit-Test<\/strong><\/td><td>Einzelne Funktion, Methode oder Klasse<\/td><td>Entwickler<\/td><td>Logikfehler, falsche Berechnungen<\/td><\/tr><tr><td><strong>Integrationstest<\/strong><\/td><td>Zusammenspiel mehrerer Einheiten<\/td><td>Entwickler oder Tester<\/td><td>Schnittstellenfehler, falsche Daten\u00fcbergabe<\/td><\/tr><tr><td><strong>Systemtest<\/strong><\/td><td>Das gesamte System im produktions\u00e4hnlichen Umfeld<\/td><td>Tester<\/td><td>Gesamtverhalten, Performance, Sicherheit<\/td><\/tr><tr><td><strong>Abnahmetest (UAT)<\/strong><\/td><td>Das System aus Sicht des Nutzers<\/td><td>Endnutzer, Fachabteilung<\/td><td>Erf\u00fcllung der Gesch\u00e4ftsanforderungen<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Detaillierte Betrachtung<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Unit-Test<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Testet die kleinste testbare Einheit isoliert.<\/li>\n\n\n\n<li>Meist automatisiert (z.\u202fB. mit JUnit, pytest, NUnit).<\/li>\n\n\n\n<li>Entwickler schreiben Unit-Tests oft parallel zum Code oder sogar davor (Test-Driven Development).<\/li>\n\n\n\n<li><strong>Beispiel:<\/strong>\u00a0Eine Funktion\u00a0<code>addiere(a, b)<\/code>\u00a0wird mit verschiedenen Werten getestet: (2, 3) \u2192 5, (-1, 1) \u2192 0.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Integrationstest<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Testet das Zusammenspiel zwischen Komponenten.<\/li>\n\n\n\n<li>Kann von unten nach oben (Bottom-up) oder von oben nach unten (Top-down) erfolgen.<\/li>\n\n\n\n<li><strong>Beispiel:<\/strong>\u00a0Pr\u00fcfen, ob die Datenbankverbindung funktioniert und ob die Anmeldekomponente korrekt mit der Benutzerdatenbank kommuniziert.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Systemtest<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Testet das vollst\u00e4ndige, integrierte System.<\/li>\n\n\n\n<li>Umfasst funktionale und nicht-funktionale Tests.<\/li>\n\n\n\n<li><strong>Beispiel:<\/strong>\u00a0Die gesamte Anwendung wird in einer Testumgebung installiert und alle Funktionen werden durchgetestet \u2013 vom Login bis zur Abmeldung.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Abnahmetest (User Acceptance Testing, UAT)<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Letzte Teststufe vor der Auslieferung.<\/li>\n\n\n\n<li>Wird von den sp\u00e4teren Nutzern durchgef\u00fchrt.<\/li>\n\n\n\n<li><strong>Beispiel:<\/strong>\u00a0Ein Mitarbeiter aus der Buchhaltung pr\u00fcft, ob die neue Rechnungssoftware alle ben\u00f6tigten Gesch\u00e4ftsprozesse abdeckt.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel: Eine Bestellplattform<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Ebene<\/th><th class=\"has-text-align-left\" data-align=\"left\">Testgegenstand<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beispiel<\/th><\/tr><\/thead><tbody><tr><td>Unit<\/td><td>Funktion&nbsp;<code>preisBerechnen(menge, preisProStueck)<\/code><\/td><td>Test mit menge=2, preis=10 \u2192 Ergebnis=20<\/td><\/tr><tr><td>Integration<\/td><td>Warenkorb + Preisberechnung<\/td><td>Artikel in Warenkorb legen \u2192 Gesamtpreis korrekt<\/td><\/tr><tr><td>System<\/td><td>Gesamte Plattform<\/td><td>Bestellung von A bis Z durchspielen (Login, Artikel suchen, Warenkorb, Bezahlung, Best\u00e4tigung)<\/td><\/tr><tr><td>Abnahme<\/td><td>Endnutzer testet<\/td><td>\u201eKann ich als Kunde mit Rabattcode bestellen?\u201c<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung Tag 4<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Unit-Test: Kleinste Einheit isoliert<\/li>\n\n\n\n<li>Integrationstest: Zusammenspiel<\/li>\n\n\n\n<li>Systemtest: Gesamtsystem<\/li>\n\n\n\n<li>Abnahmetest: Nutzerakzeptanz<\/li>\n\n\n\n<li>Alle Ebenen sind wichtig \u2013 keine ersetzt die andere.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe Tag 4 (ca. 15 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ordnen Sie die folgenden Testaktivit\u00e4ten der richtigen Testebene zu:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Aktivit\u00e4t<\/th><th class=\"has-text-align-left\" data-align=\"left\">Testebene<\/th><\/tr><\/thead><tbody><tr><td>Ein Entwickler testet eine einzelne Funktion, die den Rabatt berechnet.<\/td><td><\/td><\/tr><tr><td>Ein Fachanwender pr\u00fcft, ob die neue Software den Arbeitsablauf im B\u00fcro unterst\u00fctzt.<\/td><td><\/td><\/tr><tr><td>Es wird getestet, ob die Datenbank und der Webserver korrekt miteinander kommunizieren.<\/td><td><\/td><\/tr><tr><td>Die gesamte Anwendung wird auf einem Testserver installiert und umfassend gepr\u00fcft.<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zusatzfrage:<\/strong><br>Welche Testebene fehlt, wenn Sie nur Unit- und Systemtests durchf\u00fchren? Welche Fehler k\u00f6nnten \u00fcbersehen werden?<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 5: Testarten \u2013 Funktionale und nicht-funktionale Tests<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Den Unterschied zwischen funktionalen und nicht-funktionalen Tests kennen und Beispiele f\u00fcr beide Kategorien nennen k\u00f6nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fchrung: Was vs. Wie gut<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nicht jeder Test pr\u00fcft, ob eine Funktion \u201efunktioniert\u201c. Manchmal geht es um Eigenschaften der Software: Wie schnell ist sie? Wie sicher? Wie benutzerfreundlich?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Unterscheidung ist nicht akademisch \u2013 sie hat praktische Konsequenzen f\u00fcr Testplanung, Ressourcen und Werkzeuge.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Funktionale Tests<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sie pr\u00fcfen&nbsp;<em>was<\/em>&nbsp;die Software tut \u2013 ob sie die spezifizierten Funktionen korrekt ausf\u00fchrt.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Testart<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beispiel<\/th><\/tr><\/thead><tbody><tr><td><strong>Funktionstest<\/strong><\/td><td>Pr\u00fcft einzelne Funktionen gegen Anforderungen<\/td><td>Login funktioniert mit korrekten Daten<\/td><\/tr><tr><td><strong>Integrationstest<\/strong>&nbsp;(funktional)<\/td><td>Pr\u00fcft Zusammenspiel von Funktionen<\/td><td>Nach erfolgreichem Login wird das Dashboard geladen<\/td><\/tr><tr><td><strong>Systemtest<\/strong>&nbsp;(funktional)<\/td><td>Pr\u00fcft Gesamtfunktionalit\u00e4t<\/td><td>Bestellprozess vollst\u00e4ndig durchlaufen<\/td><\/tr><tr><td><strong>Regressionstest<\/strong><\/td><td>Pr\u00fcft, ob neue \u00c4nderungen bestehende Funktionen zerst\u00f6rt haben<\/td><td>Nach einem Update funktioniert der Login noch<\/td><\/tr><tr><td><strong>Smoke Test<\/strong><\/td><td>Grober Test, ob das System startet und grundlegend funktioniert<\/td><td>App startet und Hauptmen\u00fc ist erreichbar<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Nicht-funktionale Tests<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sie pr\u00fcfen&nbsp;<em>wie gut<\/em>&nbsp;die Software etwas tut \u2013 die Qualit\u00e4tsmerkmale.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Testart<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beispiel<\/th><\/tr><\/thead><tbody><tr><td><strong>Performancetest<\/strong><\/td><td>Pr\u00fcft Geschwindigkeit, Antwortzeiten<\/td><td>1000 Nutzer gleichzeitig \u2192 Antwortzeit unter 2 Sekunden<\/td><\/tr><tr><td><strong>Lasttest<\/strong><\/td><td>Pr\u00fcft Verhalten unter erwarteter Last<\/td><td>Black Friday: 10.000 Bestellungen pro Minute<\/td><\/tr><tr><td><strong>Stresstest<\/strong><\/td><td>Pr\u00fcft Verhalten \u00fcber der Belastungsgrenze hinaus<\/td><td>50.000 Nutzer \u2192 System st\u00fcrzt kontrolliert ab<\/td><\/tr><tr><td><strong>Sicherheitstest<\/strong><\/td><td>Pr\u00fcft Schutz vor Angriffen<\/td><td>SQL-Injection, Passwort sicher gespeichert<\/td><\/tr><tr><td><strong>Usability-Test<\/strong><\/td><td>Pr\u00fcft Benutzerfreundlichkeit<\/td><td>Finden neue Nutzer die Funktion zum Zur\u00fccksetzen des Passworts?<\/td><\/tr><tr><td><strong>Kompatibilit\u00e4tstest<\/strong><\/td><td>Pr\u00fcft auf verschiedenen Ger\u00e4ten\/Browsern<\/td><td>Website funktioniert auf Chrome, Firefox, Safari und mobil<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel: Online-Banking-Login<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Testart<\/th><th class=\"has-text-align-left\" data-align=\"left\">Kategorie<\/th><th class=\"has-text-align-left\" data-align=\"left\">Testfall<\/th><\/tr><\/thead><tbody><tr><td>Login mit korrekten Daten<\/td><td>funktional<\/td><td>Zugang gew\u00e4hrt<\/td><\/tr><tr><td>Login mit falschem Passwort<\/td><td>funktional<\/td><td>Fehlermeldung erscheint<\/td><\/tr><tr><td>Ladezeit unter 3 Sekunden<\/td><td>nicht-funktional (Performance)<\/td><td>Seite l\u00e4dt schnell genug<\/td><\/tr><tr><td>Login auch mit Screenreader bedienbar<\/td><td>nicht-funktional (Usability \/ Barrierefreiheit)<\/td><td>Zug\u00e4nglichkeit f\u00fcr blinde Nutzer<\/td><\/tr><tr><td>Mehrere falsche Eingaben f\u00fchren zu Sperre<\/td><td>nicht-funktional (Sicherheit)<\/td><td>Schutz vor Brute-Force-Angriffen<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung Tag 5<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Funktionale Tests:<\/strong>\u00a0Pr\u00fcfen die Erf\u00fcllung der fachlichen Anforderungen.<\/li>\n\n\n\n<li><strong>Nicht-funktionale Tests:<\/strong>\u00a0Pr\u00fcfen Qualit\u00e4tsmerkmale wie Performance, Sicherheit, Benutzerfreundlichkeit.<\/li>\n\n\n\n<li>Beide sind wichtig f\u00fcr eine hochwertige Software.<\/li>\n\n\n\n<li>Der amerikanische Qualit\u00e4tsexperte\u00a0<strong>Gerald Weinberg<\/strong>\u00a0bemerkte:\u00a0<em>\u201eDer Mensch neigt dazu, das zu testen, was er erwartet, nicht das, was tats\u00e4chlich da ist.\u201c<\/em><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe Tag 5 (ca. 15 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sie testen eine&nbsp;<strong>Wetter-App<\/strong>. Nennen Sie f\u00fcr jede der folgenden Kategorien&nbsp;<strong>einen konkreten Testfall<\/strong>:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Funktionale Anforderung<\/li>\n\n\n\n<li>Performance<\/li>\n\n\n\n<li>Sicherheit<\/li>\n\n\n\n<li>Usability<\/li>\n\n\n\n<li>Kompatibilit\u00e4t<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beispiel:<\/strong><br>Funktional: \u201eDie App zeigt die aktuelle Temperatur f\u00fcr den eingegebenen Ort an.\u201c<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 6: White-Box- vs. Black-Box-Testing<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die beiden grundlegenden Testans\u00e4tze verstehen und entscheiden k\u00f6nnen, wann welcher Ansatz sinnvoll ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fchrung: Zwei Welten des Testens<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt zwei grunds\u00e4tzliche Perspektiven, aus denen man Software testen kann. Diese Unterscheidung wurde in den 1970er Jahren von&nbsp;<strong>Glenford Myers<\/strong>&nbsp;und anderen systematisch herausgearbeitet und ist bis heute grundlegend.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Black-Box-Testing<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Merkmal<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><\/tr><\/thead><tbody><tr><td><strong>Perspektive<\/strong><\/td><td>Au\u00dfensicht (wie ein Nutzer)<\/td><\/tr><tr><td><strong>Kenntnis<\/strong><\/td><td>Keine Kenntnis des Quellcodes<\/td><\/tr><tr><td><strong>Grundlage<\/strong><\/td><td>Anforderungen, Spezifikationen<\/td><\/tr><tr><td><strong>Ziel<\/strong><\/td><td>Pr\u00fcfen, ob das System die Anforderungen erf\u00fcllt<\/td><\/tr><tr><td><strong>Techniken<\/strong><\/td><td>\u00c4quivalenzklassenbildung, Grenzwertanalyse, Entscheidungstabellen<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beispiel:<\/strong><br>Sie testen eine Suchmaschine. Sie geben Suchbegriffe ein und pr\u00fcfen, ob relevante Ergebnisse erscheinen. Sie wissen nicht, wie der Algorithmus im Inneren arbeitet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">White-Box-Testing<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Merkmal<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><\/tr><\/thead><tbody><tr><td><strong>Perspektive<\/strong><\/td><td>Innensicht (wie ein Entwickler)<\/td><\/tr><tr><td><strong>Kenntnis<\/strong><\/td><td>Quellcode ist bekannt<\/td><\/tr><tr><td><strong>Grundlage<\/strong><\/td><td>Code-Struktur, Logikpfade<\/td><\/tr><tr><td><strong>Ziel<\/strong><\/td><td>Sicherstellen, dass alle Pfade, Zweige und Bedingungen getestet werden<\/td><\/tr><tr><td><strong>Techniken<\/strong><\/td><td>Anweisungs\u00fcberdeckung, Zweig\u00fcberdeckung, Pfad\u00fcberdeckung<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beispiel:<\/strong><br>Sie testen eine Funktion, die je nach Eingabe unterschiedliche Zweige durchl\u00e4uft. Sie stellen sicher, dass&nbsp;<strong>jeder Zweig<\/strong>&nbsp;mindestens einmal ausgef\u00fchrt wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00dcberdeckungsarten (White-Box)<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">\u00dcberdeckungsart<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beispiel<\/th><\/tr><\/thead><tbody><tr><td><strong>Anweisungs\u00fcberdeckung (Statement Coverage)<\/strong><\/td><td>Jede Code-Zeile wurde mindestens einmal ausgef\u00fchrt<\/td><td>100 % = alle Zeilen getestet<\/td><\/tr><tr><td><strong>Zweig\u00fcberdeckung (Branch Coverage)<\/strong><\/td><td>Jede m\u00f6gliche Verzweigung (if\/else) wurde getestet<\/td><td>if (a &gt; b) \u2013 beide F\u00e4lle (true und false)<\/td><\/tr><tr><td><strong>Pfad\u00fcberdeckung (Path Coverage)<\/strong><\/td><td>Jeder m\u00f6gliche Weg durch das Programm wurde getestet<\/td><td>Alle Kombinationen von Verzweigungen<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Einfaches Code-Beispiel:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">python<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">def rabatt(preis):\n    if preis &gt; 100:\n        return preis * 0.9\n    else:\n        return preis<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Anweisungs\u00fcberdeckung:<\/strong>\u00a0Ein Test mit preis=150 deckt beide Zeilen ab? Nein \u2013 nur den if-Zweig. Die else-Zeile wird nicht ausgef\u00fchrt.<\/li>\n\n\n\n<li><strong>Zweig\u00fcberdeckung:<\/strong>\u00a0Man braucht zwei Tests: preis=150 und preis=50.<\/li>\n\n\n\n<li><strong>Pfad\u00fcberdeckung:<\/strong>\u00a0Hier identisch mit Zweig\u00fcberdeckung (da nur eine Verzweigung).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Vergleich<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Kriterium<\/th><th class=\"has-text-align-left\" data-align=\"left\">Black-Box<\/th><th class=\"has-text-align-left\" data-align=\"left\">White-Box<\/th><\/tr><\/thead><tbody><tr><td>Wissen \u00fcber Code<\/td><td>Keins<\/td><td>Vollst\u00e4ndig<\/td><\/tr><tr><td>Durchf\u00fchrender<\/td><td>Tester, Nutzer<\/td><td>Entwickler, Tester mit Code-Zugriff<\/td><\/tr><tr><td>Fehlerarten<\/td><td>Falsches Verhalten, fehlende Funktionen<\/td><td>Logikfehler, nicht ausgef\u00fchrte Pfade<\/td><\/tr><tr><td>Aufwand<\/td><td>Mittel<\/td><td>Hoch (bei vollst\u00e4ndiger \u00dcberdeckung)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung Tag 6<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Black-Box:<\/strong>\u00a0Test von au\u00dfen, basierend auf Anforderungen.<\/li>\n\n\n\n<li><strong>White-Box:<\/strong>\u00a0Test von innen, basierend auf Code-Struktur.<\/li>\n\n\n\n<li>Beide Ans\u00e4tze sind wichtig: Black-Box pr\u00fcft das\u00a0<em>Was<\/em>, White-Box pr\u00fcft die\u00a0<em>Vollst\u00e4ndigkeit<\/em>\u00a0der Tests.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe Tag 6 (ca. 15 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Gegeben ist folgender Code:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">python<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">def zugang_gewaehren(alter, mitgliedschaft):\n    if alter &gt;= 18 and mitgliedschaft == \"aktiv\":\n        return \"Zugang erlaubt\"\n    else:\n        return \"Zugang verweigert\"<\/pre>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Black-Box:<\/strong>\u00a0Nennen Sie zwei Testf\u00e4lle nur auf Basis der Beschreibung.<\/li>\n\n\n\n<li><strong>White-Box:<\/strong>\u00a0Welche Tests sind n\u00f6tig, um 100 % Zweig\u00fcberdeckung zu erreichen?<\/li>\n\n\n\n<li><strong>Zusatz:<\/strong>\u00a0Warum reicht Black-Box allein nicht aus, um alle Fehler zu finden?<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 7: Testfall-Entwurf \u2013 Struktur, Techniken, Beispiele<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Professionelle Testf\u00e4lle aufbauen und mit einfachen Techniken systematisch entwerfen k\u00f6nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fchrung: Die Kunst der systematischen Pr\u00fcfung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Testfall ist mehr als eine Idee. Er ist ein pr\u00e4zises, reproduzierbares Dokument. Gute Testf\u00e4lle sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Wiederholbar:<\/strong>\u00a0Jeder Tester kommt zum gleichen Ergebnis<\/li>\n\n\n\n<li><strong>Eindeutig:<\/strong>\u00a0Keine Interpretationsspielr\u00e4ume<\/li>\n\n\n\n<li><strong>Nachvollziehbar:<\/strong>\u00a0Auch sp\u00e4ter versteht man, was gepr\u00fcft wurde<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Struktur eines Testfalls (nach IEEE 829)<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Feld<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beispiel<\/th><\/tr><\/thead><tbody><tr><td><strong>Testfall-ID<\/strong><\/td><td>Eindeutige Kennung<\/td><td>TC_LOGIN_001<\/td><\/tr><tr><td><strong>Beschreibung<\/strong><\/td><td>Kurzer Titel, was gepr\u00fcft wird<\/td><td>Login mit korrekten Daten<\/td><\/tr><tr><td><strong>Vorbedingungen<\/strong><\/td><td>Was muss vorher erf\u00fcllt sein?<\/td><td>Benutzer ist registriert, Browser ge\u00f6ffnet<\/td><\/tr><tr><td><strong>Testschritte<\/strong><\/td><td>Detaillierte Schritt-f\u00fcr-Schritt-Anleitung<\/td><td>1. E-Mail eingeben<br>2. Passwort eingeben<br>3. Klick auf \u201eAnmelden\u201c<\/td><\/tr><tr><td><strong>Erwartetes Ergebnis<\/strong><\/td><td>Was soll passieren?<\/td><td>Weiterleitung zum Dashboard, Begr\u00fc\u00dfung \u201eHallo Max\u201c<\/td><\/tr><tr><td><strong>Tats\u00e4chliches Ergebnis<\/strong><\/td><td>(wird bei Ausf\u00fchrung ausgef\u00fcllt)<\/td><td><\/td><\/tr><tr><td><strong>Status<\/strong><\/td><td>Bestanden \/ Nicht bestanden<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Testfall-Entwurfstechniken<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\u00c4quivalenzklassenbildung<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Man teilt m\u00f6gliche Eingaben in Klassen ein, bei denen das Verhalten gleich sein sollte.<br>Es reicht,&nbsp;<strong>einen Vertreter pro Klasse<\/strong>&nbsp;zu testen. Diese Technik geht auf&nbsp;<strong>Glenford Myers<\/strong>&nbsp;zur\u00fcck und reduziert die Anzahl notwendiger Tests erheblich.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beispiel:<\/strong>&nbsp;Alter (0\u2013120 Jahre)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>G\u00fcltige Klasse: 0 bis 120<\/li>\n\n\n\n<li>Ung\u00fcltige Klasse: unter 0<\/li>\n\n\n\n<li>Ung\u00fcltige Klasse: \u00fcber 120<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u2192 Testf\u00e4lle: Alter = 50 (g\u00fcltig), Alter = -5 (ung\u00fcltig), Alter = 150 (ung\u00fcltig)<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Grenzwertanalyse<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Man testet die&nbsp;<strong>Grenzen<\/strong>&nbsp;zwischen \u00c4quivalenzklassen. Hier treten besonders h\u00e4ufig Fehler auf \u2013 ein Ph\u00e4nomen, das in der Praxis immer wieder beobachtet wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beispiel:<\/strong>&nbsp;Alter (0\u2013120)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Grenzen: 0, 1, 119, 120<\/li>\n\n\n\n<li>Testf\u00e4lle: 0 (g\u00fcltig), 1 (g\u00fcltig), 119 (g\u00fcltig), 120 (g\u00fcltig), -1 (ung\u00fcltig), 121 (ung\u00fcltig)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel: Postleitzahlenfeld (5-stellig, nur Zahlen)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c4quivalenzklassen:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>G\u00fcltig: 5-stellige Zahl (z.\u202fB. 10115)<\/li>\n\n\n\n<li>Ung\u00fcltig: weniger als 5 Zeichen<\/li>\n\n\n\n<li>Ung\u00fcltig: mehr als 5 Zeichen<\/li>\n\n\n\n<li>Ung\u00fcltig: enth\u00e4lt Buchstaben<\/li>\n\n\n\n<li>Ung\u00fcltig: leer<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Testf\u00e4lle:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">ID<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Eingabe<\/th><th class=\"has-text-align-left\" data-align=\"left\">Erwartet<\/th><\/tr><\/thead><tbody><tr><td>TC_PLZ_001<\/td><td>G\u00fcltige PLZ<\/td><td>10115<\/td><td>Akzeptiert<\/td><\/tr><tr><td>TC_PLZ_002<\/td><td>Zu kurz<\/td><td>1234<\/td><td>Fehlermeldung<\/td><\/tr><tr><td>TC_PLZ_003<\/td><td>Zu lang<\/td><td>123456<\/td><td>Fehlermeldung<\/td><\/tr><tr><td>TC_PLZ_004<\/td><td>Enth\u00e4lt Buchstaben<\/td><td>12A45<\/td><td>Fehlermeldung<\/td><\/tr><tr><td>TC_PLZ_005<\/td><td>Leeres Feld<\/td><td>(leer)<\/td><td>Fehlermeldung<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung Tag 7<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ein Testfall besteht aus ID, Beschreibung, Vorbedingungen, Schritten, erwartetem Ergebnis.<\/li>\n\n\n\n<li><strong>\u00c4quivalenzklassenbildung<\/strong>\u00a0reduziert die Anzahl notwendiger Tests.<\/li>\n\n\n\n<li><strong>Grenzwertanalyse<\/strong>\u00a0pr\u00fcft die kritischen Stellen an den Grenzen.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe Tag 7 (ca. 15 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sie testen ein&nbsp;<strong>Altersfeld<\/strong>&nbsp;f\u00fcr eine Website, auf der man nur ab 18 Jahren bestellen darf.<br>Erlaubt sind&nbsp;<strong>Zahlen von 18 bis 99<\/strong>.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Bilden Sie die\u00a0<strong>\u00c4quivalenzklassen<\/strong>\u00a0(g\u00fcltig und ung\u00fcltig).<\/li>\n\n\n\n<li>F\u00fchren Sie eine\u00a0<strong>Grenzwertanalyse<\/strong>\u00a0durch.<\/li>\n\n\n\n<li>Erstellen Sie\u00a0<strong>drei Testf\u00e4lle<\/strong>\u00a0in Tabellenform (mit ID, Beschreibung, Eingabe, erwartetem Ergebnis).<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 8: Testplanung und User Acceptance Testing (UAT)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Verstehen, wie Tests organisiert werden und was bei der finalen Abnahme durch Nutzer zu beachten ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fchrung: Vom Plan zur Freigabe<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Testen passiert nicht einfach \u201eirgendwie\u201c. Es wird geplant. Ein Testplan legt fest, was, wie, wann und von wem getestet wird. Am Ende des Testprozesses steht der&nbsp;<strong>Abnahmetest (UAT)<\/strong>, bei dem die Nutzer best\u00e4tigen, dass die Software ihren Anforderungen entspricht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bestandteile eines Testplans (nach IEEE 829)<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Bestandteil<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><\/tr><\/thead><tbody><tr><td><strong>Testumfang<\/strong><\/td><td>Welche Funktionen werden getestet? Was ist ausgeschlossen?<\/td><\/tr><tr><td><strong>Testziele<\/strong><\/td><td>Was soll mit den Tests erreicht werden?<\/td><\/tr><tr><td><strong>Teststrategie<\/strong><\/td><td>Welche Testebenen und -arten werden eingesetzt?<\/td><\/tr><tr><td><strong>Ressourcen<\/strong><\/td><td>Wer f\u00fchrt Tests durch? Welche Werkzeuge?<\/td><\/tr><tr><td><strong>Testumgebung<\/strong><\/td><td>Hardware, Software, Datenbanken, Netzwerk<\/td><\/tr><tr><td><strong>Testdaten<\/strong><\/td><td>Welche Daten werden f\u00fcr Tests ben\u00f6tigt?<\/td><\/tr><tr><td><strong>Zeitplan<\/strong><\/td><td>Wann beginnen und enden die Tests?<\/td><\/tr><tr><td><strong>Risiken<\/strong><\/td><td>Was k\u00f6nnte schiefgehen? (z.\u202fB. Zeitmangel, fehlende Umgebung)<\/td><\/tr><tr><td><strong>Kriterien<\/strong><\/td><td>Wann gilt ein Test als bestanden? Wann ist das Produkt freigabereif?<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">User Acceptance Testing (UAT)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der UAT ist die&nbsp;<strong>letzte Teststufe<\/strong>&nbsp;vor der Auslieferung. Er wird von&nbsp;<strong>Endnutzern oder der Fachabteilung<\/strong>&nbsp;durchgef\u00fchrt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ziel:<\/strong>&nbsp;Sicherstellen, dass die Software die&nbsp;<strong>Gesch\u00e4ftsanforderungen<\/strong>&nbsp;erf\u00fcllt und im Arbeitsalltag funktioniert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Historische Bedeutung:<\/strong>&nbsp;Der UAT ist ein sozialer und organisatorischer Prozess, nicht nur ein technischer. Er entscheidet \u00fcber Freigabe oder Ablehnung \u2013 und damit \u00fcber den Erfolg oder Misserfolg eines Projekts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Typische UAT-Aktivit\u00e4ten:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Gesch\u00e4ftsprozesse werden mit der Software durchgespielt<\/li>\n\n\n\n<li>Pr\u00fcfung auf Vollst\u00e4ndigkeit der Funktionen<\/li>\n\n\n\n<li>Pr\u00fcfung auf Benutzerfreundlichkeit aus Fachperspektive<\/li>\n\n\n\n<li>Formale Best\u00e4tigung (Akzeptanzkriterien erf\u00fcllt)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Voraussetzungen f\u00fcr UAT:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Systemtest ist abgeschlossen<\/li>\n\n\n\n<li>Kritische Fehler sind behoben<\/li>\n\n\n\n<li>Testumgebung ist stabil<\/li>\n\n\n\n<li>Fachabteilung hat Zeitfenster einger\u00e4umt<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel: UAT f\u00fcr eine Rechnungssoftware<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Aktivit\u00e4t<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beteiligte<\/th><th class=\"has-text-align-left\" data-align=\"left\">Ergebnis<\/th><\/tr><\/thead><tbody><tr><td>Rechnung erstellen<\/td><td>Buchhalter<\/td><td>Funktion vorhanden, alle Pflichtfelder da<\/td><\/tr><tr><td>Rechnung versenden<\/td><td>Buchhalter<\/td><td>Versand per E-Mail funktioniert<\/td><\/tr><tr><td>Zahlungseingang buchen<\/td><td>Buchhalter<\/td><td>Buchung wird korrekt erfasst<\/td><\/tr><tr><td>Offene Posten anzeigen<\/td><td>Buchhalter<\/td><td>\u00dcbersicht ist klar und vollst\u00e4ndig<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nach erfolgreichem UAT wird die&nbsp;<strong>Akzeptanz formal best\u00e4tigt<\/strong>&nbsp;(z.\u202fB. durch Unterschrift oder Freigabe im Tool).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung Tag 8<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ein\u00a0<strong>Testplan<\/strong>\u00a0organisiert den gesamten Testprozess.<\/li>\n\n\n\n<li><strong>UAT<\/strong>\u00a0ist der finale Test durch die Nutzer.<\/li>\n\n\n\n<li>Ohne UAT besteht das Risiko, dass die Software zwar technisch korrekt ist, aber im Gesch\u00e4ftsalltag nicht funktioniert.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe Tag 8 (ca. 15 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Stellen Sie sich vor, Sie planen Tests f\u00fcr eine&nbsp;<strong>Mitarbeiter-App zur Urlaubsbeantragung<\/strong>.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Nennen Sie\u00a0<strong>drei Punkte<\/strong>, die in den Testplan geh\u00f6ren.<\/li>\n\n\n\n<li>Beschreiben Sie\u00a0<strong>zwei Szenarien<\/strong>\u00a0f\u00fcr den UAT (wer f\u00fchrt was durch?).<\/li>\n\n\n\n<li>Nennen Sie\u00a0<strong>ein Kriterium<\/strong>, das erf\u00fcllt sein muss, bevor der UAT starten darf.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 9: Best Practices &amp; Industriestandards<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bew\u00e4hrte Praktiken aus der Industrie kennen und verstehen, welche Standards im Softwaretest eine Rolle spielen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fchrung: Von der Kunst zum Handwerk<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Softwaretest hat sich von einer oft stiefm\u00fctterlich behandelten \u201el\u00e4stigen Pflicht\u201c zu einer professionellen Disziplin entwickelt. Dies ist nicht zuletzt der Arbeit von Organisationen wie dem&nbsp;<strong>ISTQB<\/strong>&nbsp;(gegr\u00fcndet 2002) und der Etablierung von&nbsp;<strong>Industriestandards<\/strong>&nbsp;zu verdanken.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Best Practices im Softwaretest<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Best Practice<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><\/tr><\/thead><tbody><tr><td><strong>Shift Left<\/strong><\/td><td>Testaktivit\u00e4ten fr\u00fch im Entwicklungsprozess beginnen (bereits in der Anforderungsphase)<\/td><\/tr><tr><td><strong>Testautomatisierung<\/strong><\/td><td>Sich wiederholende Tests (z.\u202fB. Regressionstests) automatisieren, um Zeit zu sparen<\/td><\/tr><tr><td><strong>Unabh\u00e4ngigkeit der Tester<\/strong><\/td><td>Entwickler sollten ihre eigenen Arbeiten nicht allein testen \u2013 ein unabh\u00e4ngiger Tester findet mehr Fehler<\/td><\/tr><tr><td><strong>Nachvollziehbare Testf\u00e4lle<\/strong><\/td><td>Testf\u00e4lle so dokumentieren, dass sie jederzeit von anderen ausgef\u00fchrt werden k\u00f6nnen<\/td><\/tr><tr><td><strong>Risikobasierter Ansatz<\/strong><\/td><td>Mehr Testaufwand in kritische Bereiche investieren<\/td><\/tr><tr><td><strong>Kontinuierliches Testen<\/strong><\/td><td>Testen als fortlaufenden Prozess verstehen, nicht als Phase am Ende<\/td><\/tr><tr><td><strong>Testdatenmanagement<\/strong><\/td><td>Realistische Testdaten bereitstellen, ohne sensible Daten zu verwenden<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Wichtige Industriestandards<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Standard<\/th><th class=\"has-text-align-left\" data-align=\"left\">Bereich<\/th><th class=\"has-text-align-left\" data-align=\"left\">Bedeutung<\/th><\/tr><\/thead><tbody><tr><td><strong>ISTQB<\/strong><\/td><td>Grundlagenwissen<\/td><td>Internationaler Standard f\u00fcr Test-Ausbildungen. Bietet ein gemeinsames Begriffssystem, das weltweit von Tausenden Unternehmen genutzt wird.<\/td><\/tr><tr><td><strong>ISO\/IEC 25010<\/strong><\/td><td>Softwarequalit\u00e4t<\/td><td>Definiert Qualit\u00e4tsmerkmale: Funktionalit\u00e4t, Zuverl\u00e4ssigkeit, Benutzbarkeit, Effizienz, Wartbarkeit, Portabilit\u00e4t. Nachfolger der bekannten ISO 9126.<\/td><\/tr><tr><td><strong>ISO\/IEC 29119<\/strong><\/td><td>Testprozesse<\/td><td>Internationaler Standard f\u00fcr Testprozesse, -dokumentation und -techniken<\/td><\/tr><tr><td><strong>IEEE 829<\/strong><\/td><td>Testdokumentation<\/td><td>Standard f\u00fcr Testpl\u00e4ne, Testfallbeschreibungen, Testberichte. Seit 2008 in der \u00dcberarbeitung, aber immer noch weit verbreitet.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Shift Left \u2013 im Detail<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u201eShift Left\u201c bedeutet, Tests nach links im Entwicklungsprozess zu verschieben \u2013 also&nbsp;<strong>fr\u00fcher<\/strong>&nbsp;zu beginnen. Der Begriff wurde in den 2000er Jahren im Zuge agiler Entwicklungsmethoden popul\u00e4r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beispiel f\u00fcr Shift Left:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Traditionell: Test beginnt nach der Implementierung<\/li>\n\n\n\n<li>Shift Left:\n<ul class=\"wp-block-list\">\n<li>Anforderungen werden schon auf Testbarkeit gepr\u00fcft<\/li>\n\n\n\n<li>Entwickler schreiben Unittests\u00a0<strong>vor<\/strong>\u00a0dem Code (Test-Driven Development)<\/li>\n\n\n\n<li>Code-Reviews finden vor der Integration statt<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Vorteil:<\/strong>&nbsp;Fehler werden fr\u00fcher gefunden \u2013 die Behebung ist g\u00fcnstiger und schneller. Die bereits in Tag 2 dargestellte Kostentabelle ist die empirische Grundlage dieses Prinzips.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Zusammenfassung Tag 9<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Best Practices<\/strong>\u00a0wie Shift Left, Testautomatisierung und risikobasierter Ansatz erh\u00f6hen die Testeffizienz.<\/li>\n\n\n\n<li><strong>Industriestandards<\/strong>\u00a0(ISTQB, ISO 25010) schaffen eine gemeinsame Basis f\u00fcr professionelles Testen.<\/li>\n\n\n\n<li>Wer diese Prinzipien anwendet, wird im Berufsalltag als wertvoller Qualit\u00e4tsexperte gesch\u00e4tzt.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe Tag 9 (ca. 15 Minuten)<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Erkl\u00e4ren Sie in Ihren eigenen Worten, was\u00a0<strong>\u201eShift Left\u201c<\/strong>\u00a0bedeutet und warum es wichtig ist.<\/li>\n\n\n\n<li>Nennen Sie\u00a0<strong>zwei Situationen<\/strong>, in denen sich\u00a0<strong>Testautomatisierung<\/strong>\u00a0besonders lohnt.<\/li>\n\n\n\n<li>Welches\u00a0<strong>Qualit\u00e4tsmerkmal aus ISO 25010<\/strong>\u00a0ist f\u00fcr eine\u00a0<strong>Banking-App<\/strong>\u00a0besonders wichtig? Begr\u00fcnden Sie kurz.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tag 10: Abschluss\u00fcbung \u2013 Testf\u00e4lle f\u00fcr eine Beispielanwendung<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lernziel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Alle bisher gelernten Inhalte praxisnah anwenden und einen vollst\u00e4ndigen Testsatz f\u00fcr eine konkrete Funktion erstellen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Szenario: Anmeldefunktion<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sie testen eine&nbsp;<strong>Anmeldefunktion<\/strong>&nbsp;f\u00fcr eine Webanwendung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Regeln:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>E-Mail-Adresse: muss ein g\u00fcltiges Format haben (z.\u202fB.\u00a0name@domain.de)<\/li>\n\n\n\n<li>Passwort: mindestens 8 Zeichen, mindestens eine Zahl<\/li>\n\n\n\n<li>Button \u201eAnmelden\u201c: nur aktiv, wenn beide Felder g\u00fcltig sind<\/li>\n\n\n\n<li>Bei falschen Daten: Fehlermeldung \u201eAnmeldedaten ung\u00fcltig\u201c<\/li>\n\n\n\n<li>Bei korrekten Daten: Weiterleitung zum Dashboard<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Teil 1: Testf\u00e4lle erstellen (ca. 30 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie mindestens&nbsp;<strong>6 Testf\u00e4lle<\/strong>&nbsp;in folgender Tabellenform:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">ID<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Vorbedingungen<\/th><th class=\"has-text-align-left\" data-align=\"left\">Testschritte<\/th><th class=\"has-text-align-left\" data-align=\"left\">Erwartetes Ergebnis<\/th><\/tr><\/thead><tbody><tr><td>TC_LOGIN_001<\/td><td>&#8230;<\/td><td>&#8230;<\/td><td>&#8230;<\/td><td>&#8230;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ber\u00fccksichtigen Sie:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>G\u00fcltige Kombinationen<\/li>\n\n\n\n<li>Ung\u00fcltige Kombinationen<\/li>\n\n\n\n<li>Grenzf\u00e4lle (z.\u202fB. Passwort genau 8 Zeichen, Passwort 7 Zeichen)<\/li>\n\n\n\n<li>Leere Felder<\/li>\n\n\n\n<li>Sonderf\u00e4lle (z.\u202fB. E-Mail ohne @)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Teil 2: Analyse (ca. 15 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Beantworten Sie folgende Fragen zu Ihren Testf\u00e4llen:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Testebenen:<\/strong>\u00a0Auf welcher Testebene befinden sich diese Tests? Begr\u00fcnden Sie.<\/li>\n\n\n\n<li><strong>Black-Box oder White-Box:<\/strong>\u00a0Handelt es sich um Black-Box- oder White-Box-Tests? Begr\u00fcnden Sie.<\/li>\n\n\n\n<li><strong>\u00c4quivalenzklassen:<\/strong>\u00a0Welche \u00c4quivalenzklassen haben Sie f\u00fcr das Passwort gebildet?<\/li>\n\n\n\n<li><strong>Nicht-funktionaler Test:<\/strong>\u00a0Beschreiben Sie einen nicht-funktionalen Test f\u00fcr die Anmeldefunktion.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Teil 3: Reflexion (ca. 10 Minuten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Notieren Sie kurz:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Was war f\u00fcr Sie die gr\u00f6\u00dfte Herausforderung bei der Erstellung der Testf\u00e4lle?<\/li>\n\n\n\n<li>Welches Thema aus den letzten zwei Wochen fanden Sie am wichtigsten?<\/li>\n\n\n\n<li>Wo sehen Sie Ihre n\u00e4chsten Schritte, um sich im Bereich Softwaretest weiterzuentwickeln?<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">L\u00f6sungsvorschlag f\u00fcr die Abschluss\u00fcbung<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Teil 1: Testf\u00e4lle<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">ID<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Vorbedingungen<\/th><th class=\"has-text-align-left\" data-align=\"left\">Testschritte<\/th><th class=\"has-text-align-left\" data-align=\"left\">Erwartetes Ergebnis<\/th><\/tr><\/thead><tbody><tr><td>TC_LOGIN_001<\/td><td>G\u00fcltige Anmeldung mit korrekten Daten<\/td><td>Benutzer ist registriert (max@beispiel.de&nbsp;\/ passwort123)<\/td><td>1. E-Mail:&nbsp;max@beispiel.de&nbsp;eingeben<br>2. Passwort: passwort123 eingeben<br>3. Button \u201eAnmelden\u201c klicken<\/td><td>Weiterleitung zum Dashboard<\/td><\/tr><tr><td>TC_LOGIN_002<\/td><td>Passwort genau 8 Zeichen mit Zahl<\/td><td>Benutzer ist registriert (test@mail.de&nbsp;\/ passwort1)<\/td><td>1. E-Mail:&nbsp;test@mail.de&nbsp;eingeben<br>2. Passwort: passwort1 eingeben<br>3. Button \u201eAnmelden\u201c klicken<\/td><td>Weiterleitung zum Dashboard (Grenzwertanalyse)<\/td><\/tr><tr><td>TC_LOGIN_003<\/td><td>Passwort 7 Zeichen (zu kurz)<\/td><td>Benutzer ist registriert<\/td><td>1. E-Mail:&nbsp;beliebig@mail.de&nbsp;eingeben<br>2. Passwort: passwor1 (7 Zeichen) eingeben<br>3. Button \u201eAnmelden\u201c klicken<\/td><td>Fehlermeldung \u201eAnmeldedaten ung\u00fcltig\u201c<\/td><\/tr><tr><td>TC_LOGIN_004<\/td><td>Passwort ohne Zahl<\/td><td>Benutzer ist registriert<\/td><td>1. E-Mail:&nbsp;beliebig@mail.de&nbsp;eingeben<br>2. Passwort: passwort (ohne Zahl) eingeben<br>3. Button \u201eAnmelden\u201c klicken<\/td><td>Fehlermeldung \u201eAnmeldedaten ung\u00fcltig\u201c<\/td><\/tr><tr><td>TC_LOGIN_005<\/td><td>Ung\u00fcltiges E-Mail-Format<\/td><td>\u2013<\/td><td>1. E-Mail:&nbsp;<a href=\"https:\/\/max.beispiel.de\/\" target=\"_blank\" rel=\"noreferrer noopener\">max.beispiel.de<\/a>&nbsp;(ohne @) eingeben<br>2. Passwort: passwort123 eingeben<\/td><td>Button \u201eAnmelden\u201c bleibt inaktiv (kein Klick m\u00f6glich)<\/td><\/tr><tr><td>TC_LOGIN_006<\/td><td>Beide Felder leer<\/td><td>\u2013<\/td><td>1. E-Mail-Feld leer lassen<br>2. Passwort-Feld leer lassen<\/td><td>Button \u201eAnmelden\u201c bleibt inaktiv<\/td><\/tr><tr><td>TC_LOGIN_007<\/td><td>Korrekte E-Mail, falsches Passwort<\/td><td>Benutzer ist registriert<\/td><td>1. E-Mail:&nbsp;max@beispiel.de&nbsp;eingeben<br>2. Passwort: falschesPasswort eingeben<br>3. Button \u201eAnmelden\u201c klicken<\/td><td>Fehlermeldung \u201eAnmeldedaten ung\u00fcltig\u201c<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Teil 2: Analyse<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Testebenen<\/strong><br>Diese Tests befinden sich auf der&nbsp;<strong>Systemtest-Ebene<\/strong>.<br>Begr\u00fcndung: Es wird das vollst\u00e4ndige, integrierte System getestet \u2013 nicht nur eine isolierte Funktion (Unit) und nicht nur das Zusammenspiel zweier Komponenten (Integration). Die Anmeldefunktion wird im Gesamtkontext der Webanwendung gepr\u00fcft, inklusive Weiterleitung zum Dashboard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Black-Box oder White-Box?<\/strong><br>Es handelt sich um&nbsp;<strong>Black-Box-Tests<\/strong>.<br>Begr\u00fcndung: Die Tests basieren ausschlie\u00dflich auf den Anforderungen und Regeln (E-Mail-Format, Passwortl\u00e4nge, Button-Verhalten, Fehlermeldungen). Es wird kein Blick in den Quellcode genommen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. \u00c4quivalenzklassen f\u00fcr das Passwort<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Klasse<\/th><th class=\"has-text-align-left\" data-align=\"left\">Bereich<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beispiel<\/th><th class=\"has-text-align-left\" data-align=\"left\">Erwartung<\/th><\/tr><\/thead><tbody><tr><td>G\u00fcltig<\/td><td>\u2265 8 Zeichen, mind. 1 Zahl<\/td><td>passwort1<\/td><td>Akzeptiert<\/td><\/tr><tr><td>Ung\u00fcltig \u2013 zu kurz<\/td><td>&lt; 8 Zeichen<\/td><td>passwor1<\/td><td>Abgelehnt<\/td><\/tr><tr><td>Ung\u00fcltig \u2013 keine Zahl<\/td><td>\u2265 8 Zeichen, aber keine Zahl<\/td><td>passwort<\/td><td>Abgelehnt<\/td><\/tr><tr><td>Ung\u00fcltig \u2013 leer<\/td><td>\u2013<\/td><td>(leer)<\/td><td>Abgelehnt (Button inaktiv)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Grenzwertanalyse:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>7 Zeichen mit Zahl \u2192 ung\u00fcltig<\/li>\n\n\n\n<li>8 Zeichen mit Zahl \u2192 g\u00fcltig<\/li>\n\n\n\n<li>8 Zeichen ohne Zahl \u2192 ung\u00fcltig<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. Nicht-funktionaler Test<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">ID<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Testschritte<\/th><th class=\"has-text-align-left\" data-align=\"left\">Erwartetes Ergebnis<\/th><\/tr><\/thead><tbody><tr><td>NF_001<\/td><td>Antwortzeit bei gleichzeitigen Anmeldungen<\/td><td>100 Nutzer simulieren, die sich gleichzeitig anmelden<\/td><td>Die durchschnittliche Antwortzeit liegt unter 3 Sekunden<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Alternative nicht-funktionale Tests:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Sicherheit:<\/strong>\u00a0Nach 5 fehlgeschlagenen Anmeldeversuchen wird der Account f\u00fcr 15 Minuten gesperrt.<\/li>\n\n\n\n<li><strong>Usability:<\/strong>\u00a0Die Fehlermeldung \u201eAnmeldedaten ung\u00fcltig\u201c erscheint innerhalb von 1 Sekunde nach Klick.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Teil 3: Reflexion (Beispielantworten)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Gr\u00f6\u00dfte Herausforderung:<\/strong><br>Die gr\u00f6\u00dfte Herausforderung war, alle Grenzf\u00e4lle und ung\u00fcltigen Kombinationen systematisch zu erfassen. Besonders die Kombination aus mehreren ung\u00fcltigen Bedingungen zu ber\u00fccksichtigen, war aufwendig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wichtigstes Thema:<\/strong><br>Das Thema Testfall-Entwurf mit \u00c4quivalenzklassen und Grenzwertanalyse. Dadurch kann ich systematisch vorgehen und muss nicht \u201ewild drauflos testen\u201c.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>N\u00e4chste Schritte:<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Praktische Erfahrung sammeln, z.\u202fB. durch Testen von Open-Source-Projekten.<\/li>\n\n\n\n<li>Grundlagen der Testautomatisierung erlernen (z.\u202fB. mit Selenium).<\/li>\n\n\n\n<li>ISTQB-Foundation-Level-Zertifizierung in Betracht ziehen.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Glossar: Wichtige Fachbegriffe des Softwaretests<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Begriff<\/th><th class=\"has-text-align-left\" data-align=\"left\">Erkl\u00e4rung<\/th><\/tr><\/thead><tbody><tr><td><strong>Acceptance Testing<\/strong><\/td><td>Abnahmetest; letzte Teststufe, bei der der Nutzer pr\u00fcft, ob die Software die Gesch\u00e4ftsanforderungen erf\u00fcllt.<\/td><\/tr><tr><td><strong>\u00c4quivalenzklassenbildung<\/strong><\/td><td>Testentwurfstechnik; Eingaben werden in Klassen eingeteilt, bei denen das Verhalten gleich sein sollte.<\/td><\/tr><tr><td><strong>Best Practices<\/strong><\/td><td>Bew\u00e4hrte Vorgehensweisen in der Branche, z.\u202fB. Shift Left, Testautomatisierung, risikobasierter Ansatz.<\/td><\/tr><tr><td><strong>Black-Box-Testing<\/strong><\/td><td>Testansatz ohne Kenntnis des Quellcodes; basiert auf Anforderungen und Spezifikationen.<\/td><\/tr><tr><td><strong>Defekt<\/strong><\/td><td>Fehler im Programmcode, der zu einem falschen Verhalten f\u00fchren kann. Auch Bug genannt.<\/td><\/tr><tr><td><strong>Error<\/strong><\/td><td>Menschlicher Fehler, der zu einem Defekt f\u00fchrt.<\/td><\/tr><tr><td><strong>Failure<\/strong><\/td><td>Sichtbares Versagen der Software w\u00e4hrend der Ausf\u00fchrung (z.\u202fB. Absturz, falsches Ergebnis).<\/td><\/tr><tr><td><strong>Grenzwertanalyse<\/strong><\/td><td>Testentwurfstechnik; testet die Grenzen zwischen \u00c4quivalenzklassen, wo Fehler besonders h\u00e4ufig auftreten.<\/td><\/tr><tr><td><strong>Integration Testing<\/strong><\/td><td>Testebene, die das Zusammenspiel mehrerer Komponenten oder Module pr\u00fcft.<\/td><\/tr><tr><td><strong>ISO 25010<\/strong><\/td><td>Internationaler Standard f\u00fcr Softwarequalit\u00e4t; definiert Qualit\u00e4tsmerkmale wie Funktionalit\u00e4t, Zuverl\u00e4ssigkeit, Benutzbarkeit.<\/td><\/tr><tr><td><strong>ISTQB<\/strong><\/td><td>International Software Testing Qualifications Board; weltweit anerkannte Zertifizierung f\u00fcr Testwissen.<\/td><\/tr><tr><td><strong>Regression Testing<\/strong><\/td><td>Wiederholung von Tests nach \u00c4nderungen, um sicherzustellen, dass bestehende Funktionen nicht beeintr\u00e4chtigt wurden.<\/td><\/tr><tr><td><strong>Shift Left<\/strong><\/td><td>Prinzip, Testaktivit\u00e4ten fr\u00fch im Entwicklungsprozess zu beginnen.<\/td><\/tr><tr><td><strong>System Testing<\/strong><\/td><td>Testebene, die das vollst\u00e4ndige, integrierte System im produktions\u00e4hnlichen Umfeld pr\u00fcft.<\/td><\/tr><tr><td><strong>Testfall<\/strong><\/td><td>Detaillierte Beschreibung von Eingaben, Schritten und erwarteten Ergebnissen zur Pr\u00fcfung einer bestimmten Funktion.<\/td><\/tr><tr><td><strong>Testplan<\/strong><\/td><td>Dokument, das Umfang, Ressourcen, Zeitplan, Strategie und Kriterien f\u00fcr die Tests festlegt.<\/td><\/tr><tr><td><strong>UAT (User Acceptance Testing)<\/strong><\/td><td>Benutzerabnahmetest; siehe Acceptance Testing.<\/td><\/tr><tr><td><strong>Unit Testing<\/strong><\/td><td>Testebene, die kleinste Einheiten (z.\u202fB. Funktionen) isoliert pr\u00fcft; meist durch Entwickler.<\/td><\/tr><tr><td><strong>Validation<\/strong><\/td><td>\u201eBauen wir das richtige Produkt?\u201c Pr\u00fcft, ob die Software die tats\u00e4chlichen Nutzerbed\u00fcrfnisse erf\u00fcllt.<\/td><\/tr><tr><td><strong>Verification<\/strong><\/td><td>\u201eBauen wir das Produkt richtig?\u201c Pr\u00fcft, ob die Software gem\u00e4\u00df den Spezifikationen gebaut wurde.<\/td><\/tr><tr><td><strong>White-Box-Testing<\/strong><\/td><td>Testansatz mit Kenntnis des Quellcodes; pr\u00fcft interne Struktur, Pfade und Zweige.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Quellen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Boehm, B. W. (1981).\u00a0<em>Software Engineering Economics<\/em>. Prentice Hall.<\/li>\n\n\n\n<li>Brooks, F. P. (1975).\u00a0<em>The Mythical Man-Month: Essays on Software Engineering<\/em>. Addison-Wesley.<\/li>\n\n\n\n<li>IEEE Std 829-2008.\u00a0<em>IEEE Standard for Software and System Test Documentation<\/em>.<\/li>\n\n\n\n<li>ISO\/IEC 25010:2011.\u00a0<em>Systems and software engineering \u2013 Systems and software Quality Requirements and Evaluation (SQuaRE) \u2013 System and software quality models<\/em>.<\/li>\n\n\n\n<li>ISTQB (2023).\u00a0<em>Standard Glossary of Terms Used in Software Testing<\/em>, Version 3.5.<\/li>\n\n\n\n<li>Myers, G. J. (1979).\u00a0<em>The Art of Software Testing<\/em>. John Wiley &amp; Sons.<\/li>\n\n\n\n<li>NATO Science Committee (1969).\u00a0<em>Report on the Conference on Software Engineering<\/em>, Garmisch-Partenkirchen.<\/li>\n\n\n\n<li>Weinberg, G. M. (1971).\u00a0<em>The Psychology of Computer Programming<\/em>. Van Nostrand Reinhold.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit: Vom Anf\u00e4nger zum kritischen Pr\u00fcfer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Kurs hat Sie von den historischen Wurzeln des Softwaretests \u00fcber die begrifflichen Grundlagen bis hin zu konkreten Techniken des Testfallentwurfs gef\u00fchrt. Sie kennen nun die vier Testebenen, unterscheiden funktionale von nicht-funktionalen Tests, verstehen den Unterschied zwischen Black-Box und White-Box und wissen, wie ein Testplan aufgebaut ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Ziel war nicht, Sie zu einem \u201efertigen\u201c Tester zu machen \u2013 das w\u00e4re nach zwei Wochen anma\u00dfend. Aber Sie haben das Fundament gelegt, um:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>eigene Testf\u00e4lle systematisch zu entwerfen,<\/li>\n\n\n\n<li>Testprozesse in Entwicklungsprojekten einzuordnen,<\/li>\n\n\n\n<li>Fachgespr\u00e4che \u00fcber Softwarequalit\u00e4t zu f\u00fchren,<\/li>\n\n\n\n<li>und sich gezielt weiterzuentwickeln \u2013 etwa durch eine ISTQB-Zertifizierung oder praktische Erfahrung in Open-Source-Projekten.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In einer Zeit, in der digitale Systeme immer tiefer in unser Leben eindringen, wird die F\u00e4higkeit, ihre Qualit\u00e4t zu pr\u00fcfen und ihre Grenzen zu verstehen, zu einer Kernkompetenz \u2013 nicht nur f\u00fcr Ingenieure, sondern f\u00fcr alle, die Verantwortung f\u00fcr die Gestaltung unserer digitalen Welt \u00fcbernehmen wollen.<\/p>","protected":false},"excerpt":{"rendered":"<p>Ein zehnt\u00e4giger Selbstlernkurs \u00fcber die Grundlagen des Softwaretests und der Validierung Einleitung: Warum dieser Kurs anders ist Es gibt Berufe, die erst dann wahrgenommen werden, wenn sie versagen. Einer von ihnen ist der Softwaretester. In einer Welt, die von Code durchdrungen ist \u2013 vom Wecker am Morgen bis zum Flugzeug, das uns \u00fcber Kontinente tr\u00e4gt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39,40,17,18],"tags":[869,970,3465,5644,6294,6432,6435,6957,7317,7398],"class_list":["post-2780","post","type-post","status-publish","format-standard","hentry","category-arbeit-mensch","category-denkwerkzeuge","category-im-herz","category-im-kopf-methoden-werkzeuge","tag-berufseinsteiger","tag-black-box-testing","tag-istqb","tag-qualitatssicherung","tag-shift-left","tag-softwareentwicklung","tag-softwaretest","tag-testfallentwurf","tag-validierung","tag-verification-und-validation"],"_links":{"self":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/2780","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/comments?post=2780"}],"version-history":[{"count":0,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/2780\/revisions"}],"wp:attachment":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/media?parent=2780"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/categories?post=2780"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/tags?post=2780"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}