| Nächste Überarbeitung | Vorhergehende Überarbeitung |
| modul:m323:learningunits:lu07:aufgaben:characterization [2026/09/09 11:15] – LU07.A07 - Sicherheitsnetz zuerst (neu) admin | modul:m323:learningunits:lu07:aufgaben:characterization [2026/09/09 13:53] (aktuell) – Repo-Verlinkung korrigiert: nodisp im Footer statt Link im Text admin |
|---|
| </code> | </code> |
| |
| ==== Detaillierte Aufgabenstellung ==== | ==== 1. Verhalten erkunden ==== |
| |
| - **Verhalten erkunden:** Rufen Sie die Funktion mit mindestens sechs Eingaben auf und protokollieren Sie die Ergebnisse. Denken Sie an Grenzfälle: leere Liste, ''maximum = 0'', mehr Punkte als das Maximum, exakt die Höchstpunktzahl. | Rufen Sie die Funktion mit verschiedenen Eingaben auf und notieren Sie, was herauskommt. Denken Sie an die Ränder: leere Liste, ''maximum = 0'', mehr Punkte als das Maximum, exakt die Höchstpunktzahl. |
| - **Festhalten:** Schreiben Sie die beobachteten Werte als ''pytest''-Tests. Auch dann, wenn Ihnen ein Ergebnis falsch vorkommt - der Test hält fest, was //ist//, nicht was sein sollte. | |
| - **Refactoren:** Machen Sie die Funktion lesbar. Sprechende Namen, benannte Konstanten, die Rundungsregel als eigene Funktion. | ==== 2. Verhalten festhalten ==== |
| - **Bewerten:** Notieren Sie, welche Ergebnisse Sie für fachlich falsch halten - und was zu tun wäre, um das zu ändern. | |
| | In ''main_test.py'' sind sechs Tests vorbereitet, die noch ''0'' als erwarteten Wert enthalten. Tragen Sie den **beobachteten** Wert ein - auch dann, wenn er Ihnen falsch vorkommt. Ein Characterization Test hält fest, was //ist//, nicht was sein sollte. |
| | |
| | <WRAP center round important 80%> |
| | Raten Sie nicht. Ein geratener Wert fällt sofort durch, weil die Funktion etwas anderes liefert. |
| | </WRAP> |
| | |
| | Auch der Absturz gehört dazu: ''test_leere_punkteliste'' erwartet eine Ausnahme. Tragen Sie ein, welche tatsächlich auftritt. |
| | |
| | ==== 3. Refactoren ==== |
| | |
| | Erst jetzt: sprechende Namen, benannte Konstanten, die Rundungsregel als eigene Funktion. Nach jedem Schritt ''pytest''. Alle sieben Tests bleiben grün. |
| | |
| | ==== 4. Bewerten ==== |
| | |
| | Notieren Sie in ''BEFUND.md'', welche Ergebnisse Sie für fachlich falsch halten und was zu tun wäre. **Ändern Sie das Verhalten nicht** - das wäre ein Bugfix und gehört in einen eigenen Commit nach dem Refactoring. |
| | |
| | ==== Bewertung ==== |
| | |
| | ^ Teil ^ Punkte ^ |
| | | Tests (''main_test.py'') | 14 | |
| | | pylint (''main.py'') | 5 | |
| | |
| | Die Punkte gibt es nur, wenn der eingetragene Wert dem tatsächlichen Verhalten entspricht **und** die Funktion nach dem Refactoring immer noch so reagiert. |
| |
| ==== Leitfragen ==== | ==== Leitfragen ==== |
| |
| ---- | ---- |
| | <nodisp>https://github.com/templates-python/m323-lu07-a07-characterization</nodisp> |
| {{tag>M323-LU07 M323-D1I}} | {{tag>M323-LU07 M323-D1I}} |
| [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi | [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi |
| |