{"beispielaufgaben":[{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Für eine Software zur Verwaltung von Bibliotheksausleihen existiert eine umfangreiche Sammlung automatisierter Unit-Tests, die nach jeder Codeänderung vollständig ausgeführt wird. Ein neuer Kollege im Entwicklungsteam hält diese wiederholte Ausführung für überflüssigen Aufwand, da die betroffenen Methoden bereits bei ihrer Erstellung getestet wurden.","typ":"absatz"},{"text":"Beschreiben Sie drei Vorteile, die dem Entwicklungsteam durch die wiederholte automatisierte Ausführung der vorhandenen Unit-Tests nach Codeänderungen entstehen. (3 Punkte)","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-beschreiben-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"Je 1 Punkt für einen sinnvoll beschriebenen Vorteil (max. 3 Punkte), z. B.:\n- Regressionen werden erkannt: unbeabsichtigte Fehler in bereits funktionierendem Code fallen sofort auf.\n- Frühe Fehlererkennung direkt nach der Änderung senkt Aufwand und Kosten der Fehlerbehebung.\n- Geringer Aufwand pro Durchlauf, da automatisiert und beliebig oft reproduzierbar ausführbar.\n- Höhere Änderungssicherheit, dadurch Erleichterung von Refactoring und Erweiterungen.\n- Nachvollziehbare Testergebnisse dokumentieren den aktuellen Qualitätsstand der Software.\nBloßes Nennen ohne erkennbare Beschreibung: max. 0,5 Punkte je Aspekt. Mehrfachnennungen desselben Vorteils werden nur einmal gewertet.","typ":"absatz"}],"operator_id":"operator.beschreiben","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":3,"punkterahmen":{"max":3,"min":3},"quellen":["ap2-fiae-2022-sommer-ae2-a02-a-aa","ap2-fiae-2022-sommer-ae2-a02-a-ab","ap2-fiae-2025-winter-ae2-a03-a-aa"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"In einem Fitnessstudio-Verwaltungssystem berechnet die Methode berechneMonatsbeitrag(tarif, alter) den zu zahlenden Beitrag eines Mitglieds. Für diese Methode soll ein einzelner automatisierter Unit-Testfall geschrieben werden. Eine Auszubildende fragt, aus welchen Bestandteilen ein solcher Testfall grundsätzlich aufgebaut ist.","typ":"absatz"},{"text":"Beschreiben Sie den typischen Aufbau eines Unit-Testfalls anhand seiner drei aufeinanderfolgenden Abschnitte. (3 Punkte)","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-beschreiben-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"Je zutreffend beschriebenem Abschnitt 1 Punkt (max. 3 Punkte):\n1. Vorbereitung (Arrange): Testobjekt und benötigte Testdaten/Eingabewerte werden bereitgestellt bzw. initialisiert, z. B. Tarif und Alter als Übergabewerte.\n2. Ausführung (Act): Die zu testende Methode wird mit diesen Testdaten aufgerufen; das Ergebnis bzw. Verhalten wird festgehalten.\n3. Prüfung (Assert): Das tatsächliche Ergebnis wird mit dem zuvor festgelegten erwarteten Ergebnis verglichen; bei Abweichung schlägt der Test fehl.\nAndere Bezeichnungen der Abschnitte (z. B. Arrange-Act-Assert, Given-When-Then) sind zulässig, sofern die Beschreibung inhaltlich passt. Reine Nennung ohne Beschreibung: kein Punkt.","typ":"absatz"}],"operator_id":"operator.beschreiben","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":3,"punkterahmen":{"max":3,"min":3},"quellen":["ap2-fiae-2022-sommer-ae2-a02-a-aa","ap2-fiae-2022-sommer-ae2-a02-a-ab","ap2-fiae-2025-winter-ae2-a03-a-aa"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Für eine Ticket-App eines Verkehrsverbunds liegen sowohl Unit-Tests als auch Integrationstests vor. Im Team ist unklar, worin sich beide Teststufen unterscheiden.","typ":"absatz"},{"text":"Beschreiben Sie den Unterschied zwischen einem Unit-Test und einem Integrationstest hinsichtlich Testgegenstand und Testziel. (3 Punkte)","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-beschreiben-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (je 1 Punkt, insgesamt 3 Punkte):\n1. Unit-Test: Testgegenstand ist eine einzelne, kleine Programmeinheit (z. B. Methode oder Klasse), die möglichst isoliert geprüft wird.\n2. Integrationstest: Testgegenstand ist das Zusammenspiel mehrerer bereits einzeln getesteter Komponenten bzw. Module, einschließlich ihrer Schnittstellen.\n3. Zielunterschied: Der Unit-Test sichert die korrekte interne Logik einer Einheit ab, der Integrationstest deckt Fehler im Datenaustausch und in der Zusammenarbeit der Komponenten auf. Sinngemäße Formulierungen sind zu akzeptieren.","typ":"absatz"}],"operator_id":"operator.beschreiben","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":3,"punkterahmen":{"max":3,"min":3},"quellen":["ap2-fiae-2022-sommer-ae2-a02-a-aa","ap2-fiae-2022-sommer-ae2-a02-a-ab","ap2-fiae-2025-winter-ae2-a03-a-aa"]},{"artefakt_id":"artefakt.quellcode","aufgabe":[{"text":"In einer Anwendung zur Verwaltung von Buchausleihen berechnet die folgende Java-Methode die Mahngebühr in Cent für ein überfälliges Medium. Bei null oder negativen Tagen entstehen keine Gebühren; ansonsten fallen 20 Cent je Tag an, jedoch höchstens 500 Cent.","typ":"absatz"},{"text":"```java\nint berechneMahngebuehr(int tageUeberfaellig) {\n    if (tageUeberfaellig <= 0) {\n        return 0;\n    }\n    int gebuehr = tageUeberfaellig * 20;\n    if (gebuehr > 500) {\n        return 500;\n    }\n    return gebuehr;\n}\n```","typ":"code"},{"text":"Schreiben Sie mit dem Testframework JUnit 5 eine vollständige Testmethode, die diese Methode absichert. Wählen Sie mindestens vier aussagekräftige Testfälle und decken Sie dabei ausdrücklich die fachlichen Randfälle (kein überfälliger Tag, Erreichen der Obergrenze) ab. Nutzen Sie assertEquals(erwartet, tatsächlich) und geben Sie zu jedem Testfall den korrekten Sollwert an.","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-anwenden-quellcode-01","freigabeart":"maschinell","loesung":[{"text":"Erwartete vollständige Testimplementierung (Beispiel; gleichwertige Lösungen und andere Sprachen/Frameworks anerkennen):","typ":"absatz"},{"text":"```java\n@Test\nvoid testeBerechneMahngebuehr() {\nassertEquals(0, berechneMahngebuehr(0));    // Randfall untere Grenze\nassertEquals(0, berechneMahngebuehr(-3));   // negativer Wert\nassertEquals(60, berechneMahngebuehr(3));   // Normalfall\nassertEquals(500, berechneMahngebuehr(25)); // Randfall Obergrenze (25*20=500)\nassertEquals(500, berechneMahngebuehr(40)); // oberhalb der Kappung\n}\n```","typ":"absatz"},{"text":"Bewertung 4 Punkte: je aussagekräftigem Testfall mit fachlich korrektem Sollwert 1 Punkt (max. 4). Enthalten sein müssen der Randfall 0/negativ (Erwartung 0) und der Randfall an der Obergrenze (Erwartung 500). Bewertet werden Auswahl, Güte und passende Sollwerte der Testfälle; ein nur fehlerfrei durchlaufender bzw. inhaltsleerer Test ohne geeignete Sollwerte erhält keine Punkte.","typ":"absatz"}],"operator_id":"operator.anwenden","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-bb"]},{"artefakt_id":"artefakt.quellcode","aufgabe":[{"text":"Ein Versandhändler nutzt in seiner Logistiksoftware die folgende Python-Funktion, um die Versandkosten in Cent anhand des Paketgewichts in Gramm zu bestimmen. Ungültige Gewichte (kleiner oder gleich null) liefern -1; bis 1000 Gramm kosten 395, bis 5000 Gramm 595 und darüber 895 Cent.","typ":"absatz"},{"text":"```python\ndef versandkosten(gewicht_gramm):\n    if gewicht_gramm <= 0:\n        return -1\n    if gewicht_gramm <= 1000:\n        return 395\n    if gewicht_gramm <= 5000:\n        return 595\n    return 895\n```","typ":"code"},{"text":"Implementieren Sie mit dem Modul unittest eine vollständige Testklasse, die diese Funktion prüft. Verwenden Sie mindestens vier aussagekräftige Testfälle und berücksichtigen Sie ausdrücklich die fachlichen Randfälle an den Gewichtsgrenzen sowie das ungültige Gewicht. Setzen Sie self.assertEqual(erwartet, tatsächlich) ein und benennen Sie zu jedem Testfall den korrekten Sollwert.","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-anwenden-quellcode-02","freigabeart":"maschinell","loesung":[{"text":"Erwartete vollständige Testimplementierung (Beispiel; gleichwertige Lösungen und andere Sprachen/Frameworks anerkennen):","typ":"absatz"},{"text":"```python\nimport unittest","typ":"absatz"},{"text":"class TestVersandkosten(unittest.TestCase):\n    def test_versandkosten(self):\n        self.assertEqual(-1, versandkosten(0))     # ungueltig (Randfall)\n        self.assertEqual(395, versandkosten(1000)) # obere Grenze Stufe 1\n        self.assertEqual(595, versandkosten(1001)) # untere Grenze Stufe 2\n        self.assertEqual(595, versandkosten(5000)) # obere Grenze Stufe 2\n        self.assertEqual(895, versandkosten(6200)) # Stufe 3\n```","typ":"code"},{"text":"Bewertung 4 Punkte: je aussagekräftigem Testfall mit fachlich korrektem Sollwert 1 Punkt (max. 4). Enthalten sein müssen der ungültige Randfall (Erwartung -1) und mindestens ein Grenzwert einer Gewichtsstufe (z. B. 1000/1001 oder 5000). Bewertet werden Auswahl, Güte und passende Sollwerte; ein bloß grüner Testlauf oder eine reine Ausführungsbestätigung ohne geeignete Sollwerte erhält keine Punkte.","typ":"absatz"}],"operator_id":"operator.anwenden","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-bb"]},{"artefakt_id":"artefakt.quellcode","aufgabe":[{"text":"Eine Kundenkarten-App eines Sportgeschäfts stuft Mitglieder anhand ihrer gesammelten Bonuspunkte in Statusstufen ein. Die folgende C#-Methode liefert bei negativen Punkten den Text \"ungueltig\", unter 100 Punkten \"Bronze\", unter 500 Punkten \"Silber\" und ab 500 Punkten \"Gold\" zurück.","typ":"absatz"},{"text":"```csharp\nstring BestimmeStufe(int punkte) {\n    if (punkte < 0) {\n        return \"ungueltig\";\n    }\n    if (punkte < 100) {\n        return \"Bronze\";\n    }\n    if (punkte < 500) {\n        return \"Silber\";\n    }\n    return \"Gold\";\n}\n```","typ":"code"},{"text":"Erstellen Sie mit dem Testframework NUnit eine vollständige Testmethode für diese Methode. Wählen Sie mindestens vier aussagekräftige Testfälle und prüfen Sie ausdrücklich die Randfälle an den Stufenübergängen sowie den ungültigen Eingabewert. Verwenden Sie Assert.AreEqual(erwartet, tatsächlich) und geben Sie zu jedem Testfall den erwarteten Rückgabewert an.","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-anwenden-quellcode-03","freigabeart":"maschinell","loesung":[{"text":"Erwartete vollständige Testimplementierung (Beispiel; gleichwertige Lösungen und andere Sprachen/Frameworks anerkennen):","typ":"absatz"},{"text":"```csharp\n[Test]\npublic void TesteBestimmeStufe() {\nAssert.AreEqual(\"ungueltig\", BestimmeStufe(-1)); // Randfall ungueltig\nAssert.AreEqual(\"Bronze\", BestimmeStufe(0));     // untere Grenze Bronze\nAssert.AreEqual(\"Bronze\", BestimmeStufe(99));    // obere Grenze Bronze\nAssert.AreEqual(\"Silber\", BestimmeStufe(100));   // Uebergang Silber\nAssert.AreEqual(\"Gold\", BestimmeStufe(500));     // Uebergang Gold\n}\n```","typ":"absatz"},{"text":"Bewertung 4 Punkte: je aussagekräftigem Testfall mit fachlich korrektem Rückgabewert 1 Punkt (max. 4). Enthalten sein müssen der ungültige Eingabewert (Erwartung \"ungueltig\") und mindestens ein Stufenübergang (z. B. 99/100 oder 500). Bewertet werden Auswahl, Güte und passende Sollwerte; ein nur grüner Testlauf ohne inhaltlich passende Sollwerte erhält keine Punkte.","typ":"absatz"}],"operator_id":"operator.anwenden","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-bb"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ein Entwicklungsteam eines Logistikdienstleisters erweitert die Software zur automatischen Paketsortierung. Für die neuen Methoden zur Berechnung von Zielrampen und zulässigen Gewichtsgrenzen soll eine Testsuite aus Unit-Tests entstehen, die bei jeder Codeänderung automatisch in der Build-Pipeline ausgeführt wird. Bevor das Team mit dem Schreiben beginnt, möchte es festlegen, welche Merkmale ein guter Unit-Test aufweisen muss. Nennen Sie vier voneinander unabhängige Eigenschaften, die ein solcher Unit-Test erfüllen sollte.","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-nennen-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"Je genannte zutreffende Eigenschaft 1 Punkt, insgesamt 4 Punkte. Vier unterscheidbare Mustereigenschaften: (1) schnelle Ausführung, damit häufig getestet werden kann; (2) Unabhängigkeit der Tests voneinander (beliebige Reihenfolge, keine Abhängigkeit vom Ergebnis anderer Tests); (3) Wiederholbarkeit, d. h. bei mehrfacher Ausführung stets gleiches Ergebnis; (4) selbstprüfend/automatisch auswertbar (klares Bestanden oder Fehlgeschlagen ohne manuelle Kontrolle). Gleichwertig anzuerkennen: Isolation auf genau eine Unit, deterministisches Verhalten, vollständige Automatisierbarkeit. Nicht als Musterantwort werten: 'Test vor dem Produktivcode schreiben' sowie bloße allgemeine Qualitätswörter ohne konkreten Testbezug. Je Eigenschaft nur einmal bepunkten; bloße Umformulierungen derselben Eigenschaft geben keinen zweiten Punkt.","typ":"absatz"}],"operator_id":"operator.nennen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-sommer-ae2-a02-a-ab"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"In einer Klinik-IT wird ein Modul zur Online-Terminvergabe entwickelt. Die Berechnung freier Zeitfenster und die Prüfung von Terminüberschneidungen sollen durch Unit-Tests abgesichert werden, bevor das Modul in die bestehende Anwendung integriert wird. Die Teamleitung fragt, an welchen Merkmalen ein aussagekräftiger Unit-Test erkennbar ist. Nennen Sie vier voneinander unabhängige Eigenschaften, die ein solcher Unit-Test erfüllen sollte.","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-nennen-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"Je genannte zutreffende Eigenschaft 1 Punkt, insgesamt 4 Punkte. Vier unterscheidbare Mustereigenschaften: (1) prüft isoliert genau eine abgegrenzte Einheit ohne fremde Abhängigkeiten; (2) läuft schnell, sodass er sehr oft ausgeführt werden kann; (3) liefert bei jeder erneuten Ausführung dasselbe Ergebnis (wiederholbar/deterministisch); (4) wertet sich selbst aus und meldet eindeutig Erfolg oder Fehlschlag ohne manuelle Prüfung. Gleichwertig anzuerkennen: Unabhängigkeit von anderen Tests, vollständige Automatisierbarkeit. Nicht werten: 'zuerst geschrieben werden' (TDD-Vorgehen) sowie inhaltsleere Qualitätsbegriffe. Doppelnennungen derselben Eigenschaft ergeben keinen zusätzlichen Punkt.","typ":"absatz"}],"operator_id":"operator.nennen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-sommer-ae2-a02-a-ab"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ein Softwarehaus liefert eine Bibliothek zur Rabatt- und Preisberechnung für Kassensysteme im Einzelhandel. Die einzelnen Rechenfunktionen sollen künftig durch Unit-Tests abgedeckt werden, die täglich mehrfach über das Testwerkzeug der Entwicklungsumgebung laufen. Das Qualitätsteam möchte klare Anforderungen an diese Tests dokumentieren. Nennen Sie vier voneinander unabhängige Eigenschaften, die ein solcher Unit-Test erfüllen sollte.","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-nennen-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"Je genannte zutreffende Eigenschaft 1 Punkt, insgesamt 4 Punkte. Vier unterscheidbare Mustereigenschaften: (1) automatisiert und selbstprüfend, mit eindeutigem Ergebnis Bestanden oder Fehlgeschlagen; (2) unabhängig voneinander, sodass Tests einzeln, parallel oder in beliebiger Reihenfolge laufen; (3) wiederholbar mit stets gleichem Ergebnis; (4) schnelle Ausführung für häufiges Testen. Gleichwertig anzuerkennen: Beschränkung auf eine einzelne Unit (Isolation), Deterministik. Nicht als Musterantwort werten: 'vor dem Produktivcode schreiben' sowie allgemeine Schlagwörter ohne Testbezug. Je Eigenschaft nur einmal bepunkten; reine Umformulierungen zählen nicht doppelt.","typ":"absatz"}],"operator_id":"operator.nennen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-sommer-ae2-a02-a-ab"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"In einer Stadtbibliothek ermittelt eine Funktion die Rabattstufe eines Ausweises anhand der Anzahl gleichzeitig entliehener Medien. Sollverhalten: Bei weniger als 5 Medien beträgt der Rabatt 0 Prozent, bei 5 bis 9 Medien 5 Prozent, bei 10 bis 19 Medien 10 Prozent und ab 20 Medien 15 Prozent. Der Parameter anzahl ist eine nichtnegative Ganzzahl.","typ":"absatz"},{"text":"Pseudocode:\n1  FUNKTION rabatt(anzahl)\n2    WENN anzahl >= 20 DANN RÜCKGABE 15\n3    WENN anzahl >= 10 DANN RÜCKGABE 10\n4    WENN anzahl >= 7 DANN RÜCKGABE 5\n5    RÜCKGABE 0\n6  ENDE","typ":"absatz"},{"text":"Für jeden der fünf Testfälle ist der erwartete Rückgabewert gemäß Sollverhalten angegeben. Vollziehen Sie den tatsächlichen Funktionswert nach und tragen Sie ausschließlich OK (erwarteter und tatsächlicher Wert stimmen überein) oder Fehler (sie weichen ab) in die Ergebnisspalte ein.","typ":"absatz"},{"kopf":["Testfall","anzahl","erwarteter Rabatt","Ergebnis"],"typ":"tabelle","zeilen":[["1","4","0",""],["2","5","5",""],["3","6","5",""],["4","12","10",""],["5","25","15",""]]}],"beispiel_id":"bsp-unit-tests-ausfuellen-tabelle-01","freigabeart":"maschinell","loesung":[{"text":"Der semantische Fehler liegt in Zeile 4: statt anzahl >= 5 wird anzahl >= 7 geprüft, wodurch die Werte 5 und 6 fälschlich 0 statt 5 zurückgeben.","typ":"absatz"},{"text":"Erwartete Ergebnisspalte (je 1 Punkt, insgesamt 5 Punkte):\n1 | OK (0 = 0)\n2 | Fehler (tatsächlich 0, erwartet 5)\n3 | Fehler (tatsächlich 0, erwartet 5)\n4 | OK (10 = 10)\n5 | OK (15 = 15)","typ":"absatz"},{"text":"Jede zeilenrichtige Angabe OK/Fehler zählt 1 Punkt. Andere Kennzeichnungen mit gleicher eindeutiger Aussage sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.ausfuellen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":5,"punkterahmen":{"max":5,"min":5},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"In einem Versandlager verpackt eine Funktion Bauteile in Transportkisten. Jede Kiste fasst genau 10 Bauteile. Vor dem Verpacken wird die Bauteilzahl aus Sicherungsgründen um einen festen Zuschlag von 3 Ersatzteilen erhöht. Gesucht ist die Zahl vollständig gefüllter Kisten; ein verbleibender Rest, der keine Kiste vollständig füllt, zählt nicht mit. Der Parameter anzahl ist eine nichtnegative Ganzzahl, DIV bezeichnet die Ganzzahldivision und MOD den Rest.","typ":"absatz"},{"text":"Pseudocode:\n1  FUNKTION kisten(anzahl)\n2    gesamt := anzahl + 3\n3    zahl := gesamt DIV 10\n4    WENN gesamt MOD 10 > 0 DANN zahl := zahl + 1\n5    RÜCKGABE zahl\n6  ENDE","typ":"absatz"},{"text":"Für jeden Testfall ist der erwartete Rückgabewert gemäß Sollverhalten angegeben. Ermitteln Sie den tatsächlichen Funktionswert und tragen Sie ausschließlich OK oder Fehler in die Ergebnisspalte ein.","typ":"absatz"},{"kopf":["Testfall","anzahl","erwartete Kisten","Ergebnis"],"typ":"tabelle","zeilen":[["1","7","1",""],["2","5","0",""],["3","17","2",""],["4","8","1",""],["5","25","2",""]]}],"beispiel_id":"bsp-unit-tests-ausfuellen-tabelle-02","freigabeart":"maschinell","loesung":[{"text":"Der semantische Fehler liegt in Zeile 4: der Rest der Ganzzahldivision wird fälschlich als zusätzliche vollständige Kiste gezählt (Aufrunden statt Abrunden), obwohl nur vollständig gefüllte Kisten gefordert sind.","typ":"absatz"},{"text":"Erwartete Ergebnisspalte (je 1 Punkt, insgesamt 5 Punkte):\n1 | OK (gesamt 10, tatsächlich 1 = 1)\n2 | Fehler (gesamt 8, tatsächlich 1, erwartet 0)\n3 | OK (gesamt 20, tatsächlich 2 = 2)\n4 | Fehler (gesamt 11, tatsächlich 2, erwartet 1)\n5 | Fehler (gesamt 28, tatsächlich 3, erwartet 2)","typ":"absatz"},{"text":"Jede zeilenrichtige Angabe OK/Fehler zählt 1 Punkt.","typ":"absatz"}],"operator_id":"operator.ausfuellen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":5,"punkterahmen":{"max":5,"min":5},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"Eine Umweltmessstation klassifiziert die Luftqualität anhand eines Feinstaubwerts in Mikrogramm je Kubikmeter in drei Stufen. Sollverhalten: Werte unter 20 ergeben 'gut', Werte von 20 bis unter 50 ergeben 'mittel' und Werte ab 50 ergeben 'schlecht'. Der Parameter wert ist eine nichtnegative Ganzzahl.","typ":"absatz"},{"text":"Pseudocode:\n1  FUNKTION klasse(wert)\n2    WENN wert < 50 DANN RÜCKGABE 'mittel'\n3    WENN wert < 20 DANN RÜCKGABE 'gut'\n4    RÜCKGABE 'schlecht'\n5  ENDE","typ":"absatz"},{"text":"Für jeden Testfall ist das erwartete Ergebnis gemäß Sollverhalten angegeben. Vollziehen Sie den tatsächlichen Rückgabewert nach und tragen Sie ausschließlich OK oder Fehler in die Ergebnisspalte ein.","typ":"absatz"},{"kopf":["Testfall","wert","erwartete Klasse","Ergebnis"],"typ":"tabelle","zeilen":[["1","8","gut",""],["2","25","mittel",""],["3","48","mittel",""],["4","60","schlecht",""],["5","15","gut",""]]}],"beispiel_id":"bsp-unit-tests-ausfuellen-tabelle-03","freigabeart":"maschinell","loesung":[{"text":"Der semantische Fehler liegt in der vertauschten Grenzreihenfolge: die Prüfung wert < 50 in Zeile 2 steht vor wert < 20, sodass alle Werte unter 20 fälschlich 'mittel' liefern und die Klasse 'gut' unerreichbar ist.","typ":"absatz"},{"text":"Erwartete Ergebnisspalte (je 1 Punkt, insgesamt 5 Punkte):\n1 | Fehler (tatsächlich 'mittel', erwartet 'gut')\n2 | OK ('mittel' = 'mittel')\n3 | OK ('mittel' = 'mittel')\n4 | OK ('schlecht' = 'schlecht')\n5 | Fehler (tatsächlich 'mittel', erwartet 'gut')","typ":"absatz"},{"text":"Jede zeilenrichtige Angabe OK/Fehler zählt 1 Punkt.","typ":"absatz"}],"operator_id":"operator.ausfuellen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":5,"punkterahmen":{"max":5,"min":5},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"Ein Anbieter von Gepäckschließfächern berechnet eine Nachgebühr, wenn ein Fach über die kostenlose Zeit hinaus belegt bleibt. Die Funktion berechneNachgebuehr erhält die Zahl der überzogenen Tage (GANZZAHL, 0 oder größer) sowie den Wahrheitswert grossfach. Sollverhalten: Bei tageUeberzogen kleiner oder gleich 0 wird 0 zurückgegeben. Andernfalls beträgt die Gebühr tageUeberzogen multipliziert mit 2 Euro. Ein Zuschlag von 5 Euro wird ausschließlich dann addiert, wenn das Fach ein Großfach ist UND gleichzeitig mehr als 3 Tage überzogen wurden.","typ":"absatz"},{"text":"Pseudocode:\nFUNKTION berechneNachgebuehr(tageUeberzogen: GANZZAHL, grossfach: WAHRHEITSWERT): GANZZAHL\n  WENN tageUeberzogen <= 0 DANN\n    RÜCKGABE 0\n  gebuehr <- tageUeberzogen * 2\n  WENN grossfach = wahr ODER tageUeberzogen > 3 DANN\n    gebuehr <- gebuehr + 5\n  RÜCKGABE gebuehr","typ":"code"},{"text":"Prüfen Sie die fünf Testfälle. Tragen Sie für jeden Fall den vom Code tatsächlich gelieferten Wert sowie das Urteil OK oder Fehler in die Tabelle ein.","typ":"absatz"},{"kopf":["Testfall","Eingaben (tageUeberzogen, grossfach)","erwarteter Wert","tatsächlicher Wert","Urteil"],"typ":"tabelle","zeilen":[["1","(0, wahr)","0","",""],["2","(2, falsch)","4","",""],["3","(5, wahr)","15","",""],["4","(5, falsch)","10","",""],["5","(2, wahr)","4","",""]]}],"beispiel_id":"bsp-unit-tests-pruefen-tabelle-01","freigabeart":"maschinell","loesung":[{"text":"Fehlerwirkung: Der Zuschlag müsste mit UND verknüpft sein; die ODER-Verknüpfung addiert 5 Euro bereits, wenn nur eine der beiden Bedingungen zutrifft.\nTestfall 1: tatsächlich 0 – OK.\nTestfall 2: tatsächlich 4 – OK.\nTestfall 3: tatsächlich 15 – OK.\nTestfall 4: tatsächlich 15 (erwartet 10) – Fehler.\nTestfall 5: tatsächlich 9 (erwartet 4) – Fehler.\nBewertung: Je vollständige und richtige Soll-Ist-Zeile (tatsächlicher Wert und Urteil) 1 Punkt, insgesamt 5 Punkte. Fachlich gleichwertige Schreibweisen der Zahlenwerte sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.pruefen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":5,"punkterahmen":{"max":5,"min":5},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"In einem offenen Makerspace einer Stadtbibliothek werden Kurzworkshops angeboten. Jeder Raum bietet eine feste Zahl an Sitzplätzen (kapazitaet). Ein Platz bleibt stets für die Kursleitung reserviert und wird nicht an Teilnehmende vergeben. belegt nennt die bereits angemeldeten Teilnehmenden.","typ":"absatz"},{"text":"Sollverhalten: Die Funktion liefert die Zahl der noch für Teilnehmende freien Plätze, also höchstens kapazitaet minus eins abzüglich belegt. Ein rechnerisch negativer Wert oder eine Überbuchung ergeben 0. Alle Eingaben sind nichtnegative Ganzzahlen.","typ":"absatz"},{"text":"Der folgende Pseudocode enthält genau einen semantischen Fehler:","typ":"absatz"},{"text":"FUNKTION freiePlaetze(kapazitaet, belegt)\n  frei ← kapazitaet − belegt\n  WENN frei < 0 DANN\n    frei ← 0\n  ENDE WENN\n  RÜCKGABE frei\nENDE FUNKTION","typ":"code"},{"text":"In allen fünf Testfällen gilt kapazitaet = 12. Tragen Sie je Zeile den tatsächlich vom Code gelieferten Wert und das Urteil ein (OK bei Übereinstimmung mit dem erwarteten Wert, sonst Fehler). Spalten: Testfall, belegt, erwarteter Wert, tatsächlicher Wert, Urteil.","typ":"absatz"},{"text":"Testfälle als belegt; erwarteter Wert: 1) 4; 7. 2) 10; 1. 3) 11; 0. 4) 12; 0. 5) 13; 0.","typ":"absatz"}],"beispiel_id":"bsp-unit-tests-pruefen-tabelle-02","freigabeart":"maschinell","loesung":[{"text":"Fehlerwirkung: Die Zeile frei ← kapazitaet − belegt lässt den stets reservierten Kursleitungsplatz unberücksichtigt (fehlendes „minus eins\"), sodass ein Platz zu viel als frei gezählt wird. Der Fehler wirkt nur, solange belegt kleiner als kapazitaet ist.","typ":"absatz"},{"text":"Testfall 1 (belegt 4): tatsächlich 8, erwartet 7 → Fehler.\nTestfall 2 (belegt 10): tatsächlich 2, erwartet 1 → Fehler.\nTestfall 3 (belegt 11): tatsächlich 1, erwartet 0 → Fehler.\nTestfall 4 (belegt 12): tatsächlich 0, erwartet 0 → OK.\nTestfall 5 (belegt 13): 12 − 13 = −1, wird auf 0 gesetzt; tatsächlich 0, erwartet 0 → OK.","typ":"absatz"},{"text":"Es schlagen genau die Testfälle 1 bis 3 fehl, die Testfälle 4 und 5 sind OK.","typ":"absatz"},{"text":"Bewertung: je vollständige Zeile aus tatsächlichem Wert und Urteil 1 Punkt, insgesamt gebündelt 5 Punkte. Fachlich gleichwertige Schreibweisen der Werte sind anzuerkennen; Fehlerposition, Korrektur oder Begründung werden weder verlangt noch bepunktet.","typ":"absatz"}],"operator_id":"operator.pruefen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":5,"punkterahmen":{"max":5,"min":5},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-ba"]},{"artefakt_id":"artefakt.tabelle","aufgabe":[{"text":"Ein Batteriemanagement stuft den Ladestand eines Akkus in drei Klassen ein. Der Ladestand ladung ist eine GANZZAHL im Bereich 0 bis 100 (Prozent). Sollverhalten: Bei ladung kleiner 20 lautet das Ergebnis \"niedrig\", bei einem Wert von 20 bis einschließlich 80 \"mittel\" und bei ladung größer 80 \"hoch\".","typ":"absatz"},{"text":"Pseudocode:\nFUNKTION klassifiziereLadung(ladung: GANZZAHL): ZEICHENKETTE\n  WENN ladung < 20 DANN\n    RÜCKGABE \"niedrig\"\n  SONST WENN ladung <= 80 DANN\n    RÜCKGABE \"hoch\"\n  SONST\n    RÜCKGABE \"hoch\"","typ":"code"},{"text":"Prüfen Sie die fünf Testfälle. Tragen Sie je Fall den vom Code tatsächlich gelieferten Text und das Urteil OK oder Fehler in die Tabelle ein.","typ":"absatz"},{"kopf":["Testfall","ladung","erwarteter Wert","tatsächlicher Wert","Urteil"],"typ":"tabelle","zeilen":[["1","10","niedrig","",""],["2","50","mittel","",""],["3","20","mittel","",""],["4","90","hoch","",""],["5","80","mittel","",""]]}],"beispiel_id":"bsp-unit-tests-pruefen-tabelle-03","freigabeart":"maschinell","loesung":[{"text":"Fehlerwirkung: Der mittlere Zweig gibt fälschlich \"hoch\" statt \"mittel\" zurück; jeder Wert im Bereich 20 bis 80 wird dadurch falsch klassifiziert.\nTestfall 1: tatsächlich niedrig – OK.\nTestfall 2: tatsächlich hoch (erwartet mittel) – Fehler.\nTestfall 3: tatsächlich hoch (erwartet mittel) – Fehler.\nTestfall 4: tatsächlich hoch – OK.\nTestfall 5: tatsächlich hoch (erwartet mittel) – Fehler.\nBewertung: Je vollständige und richtige Soll-Ist-Zeile (tatsächlicher Wert und Urteil) 1 Punkt, insgesamt 5 Punkte. Gleichwertige Schreibweisen der Klassennamen sind anzuerkennen.","typ":"absatz"}],"operator_id":"operator.pruefen","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":5,"punkterahmen":{"max":5,"min":5},"quellen":["ap2-fiae-2022-sommer-ae2-a02-b-ba"]}],"konzept_id":"fachkonzept.unit-tests","schema_version":3}