Skip to main content

Verwenden der automatischen Bewertung

Du kannst automatisch Feedback zu Codeübermittlungen von deinen Kursteilnehmern bereitstellen, indem du Tests konfigurierst, die im Aufgabenrepository ausgeführt werden.

Wer kann dieses Feature verwenden?

Organization owners who are admins for a classroom can set up and use autograding on assignments in a classroom. Weitere Informationen zu Kursraumadministrator*innen findest du unter Verwalten von Kursräumen.

Informationen zur automatischen Bewertung

Du kannst die automatische Bewertung verwenden, um die Aufgaben eines Kursteilnehmers automatisch in GitHub Classroom zu überprüfen. Du konfigurierst Tests für eine Aufgabe, und die Tests werden jedes Mal sofort ausgeführt, wenn ein Kursteilnehmer einen Push für ein Aufgabenrepository auf GitHub.com ausführt. Der Kursteilnehmer kann die Testergebnisse anzeigen, Änderungen vornehmen und pushen, um neue Ergebnisse anzuzeigen.

Nachdem ein Lernender eine Aufgabe angenommen hat, führt GitHub Actions bei jedem Push in das Aufgabenrepository (oder gemäß einem von der Lehrkraft definierten Zeitplan) die Befehle für deinen Test mit automatischer Bewertung in einer Linux-Umgebung aus, die den neuesten Code des Lernenden enthält. GitHub Classroom erstellt die notwendigen Workflows für GitHub Actions. Du benötigst keine Erfahrung mit GitHub Actions, um die automatische Bewertung zu nutzen, aber du kannst die Workflow-Konfigurationen optional an deine Bedürfnisse anpassen. Weitere Informationen zur Verwendung von Workflows und GitHub Actions findest du unter Info zu Continuous Integration mit GitHub Actions.

Du kannst ein Testframework verwenden, einen benutzerdefinierten Befehl ausführen, Eingabe-/Ausgabetests schreiben oder verschiedene Testmethoden kombinieren. Die Linux-Umgebung zur automatischen Bewertung umfasst viele beliebte Softwaretools. Weitere Informationen findest du in den Details zur neuesten Version von Ubuntu unter Verwenden von auf GitHub gehosteten Runnern.

Eine Übersicht darüber, welche Kursteilnehmer die Tests mit automatischer Bewertung bestanden haben, erhältst du, indem du in GitHub Classroom zur Aufgabe navigierst. Ein grünes Häkchen bedeutet, dass alle Tests für den Kursteilnehmer bestanden wurden, bei einem roten X wurden einige oder alle Tests nicht bestanden. Wenn du Punkte für einen oder mehrere Tests vergibst, zeigt eine Blase die Punktzahl für die Tests im Verhältnis zur maximal möglichen Punktzahl für die Aufgabe an.

Bewertungsmethoden

GitHub Classroom bietet verschiedene Vorgaben für Tests mit automatischer Bewertung, die du verwenden kannst, wenn du GitHub Actions-Workflows nicht selbst konfigurieren möchtest. Du kannst auch benutzerdefiniertes GitHub Actions YAML verwenden, um einen eigenen Workflow für die automatische Bewertung zu definieren.

Verwenden der GitHub-Voreinstellungen

Du kannst Voreinstellungen ohne Kenntnisse von GitHub Actions verwenden. Du kannst Informationen zu deinen Tests mit automatischer Bewertung eingeben und GitHub Classroom fügt die erforderlichen Dateien automatisch zu den Aufgaben-Repositorys für Lernende hinzu.

Es gibt drei Arten von Voreinstellungen: Eingabe-/Ausgabetests, Python-Tests und Skriptausführungstests.

E/A-Test

Ein E/A-Test führt optional einen Setupbefehl aus und liefert dann eine Standardeingabe für einen Testbefehl. GitHub Classroom wertet die Ausgabe des Testbefehls anhand eines erwarteten Ergebnisses aus.

EinstellungBESCHREIBUNG
TestnameDer Name des Tests, um den Test in Protokollen zu identifizieren
SetupbefehlOptional: Ein Befehl, der vor den Tests ausgeführt wird, z. B. Kompilierung oder Installation
AusführungsbefehlDer Befehl zum Ausführen des Tests und zum Generieren der Standardausgabe für die Auswertung
EingabenStandardeingabe für den Ausführungsbefehl
Erwartete AusgabeDie Ausgabe, die du als Standardausgabe des Ausführungsbefehls erwartest
VergleichDie Art des Vergleichs zwischen der Ausgabe des Ausführungsbefehls und der erwarteten Ausgabe

  • Enthalten: Der Test gilt als bestanden, wenn die erwartete Ausgabe
    an beliebiger Stelle in der Standardausgabe des Ausführungsbefehls enthalten ist.
  • Genau: Der Test gilt als bestanden, wenn die erwartete Ausgabe
    exakt mit der Standardausgabe des Ausführungsbefehls übereinstimmt.
  • RegEx: Der Test gilt als bestanden, wenn der reguläre Ausdruck in der erwarteten
    Ausgabe mit der Standardausgabe des Ausführungsbefehls übereinstimmt.
TimeoutZeitraum in Minuten, die ein Test ausgeführt werden kann, bevor ein Fehler auftritt.
PointsOptional: Die Anzahl von Punkten, die für den Test in eine Gesamtpunktzahl einfließen

Python-Test

Ein Python-Test führt einen Setupbefehl und dann pytest aus. Die Anzahl der vergebenen Punkte hängt davon ab, wie viele Tests in der pytest-Testsuite der Lernende bestanden hat. Jeder Test ist die gleiche Anzahl von Punkten wert. Du kannst ändern, wie viele Punkte die gesamte Testsuite wert ist, indem du die Points-Einstellung änderst.

EinstellungBESCHREIBUNG
TestnameDer Name des Tests, um den Test in Protokollen zu identifizieren
SetupbefehlOptional. Ein Befehl, der vor den Tests ausgeführt wird, z. B. Kompilierung oder Installation Einige Abhängigkeiten sind bereits installiert, du kannst bei Bedarf aber mehr installieren. Du musst sudo nicht verwenden und solltest pip anstelle von pip3 verwenden.
AusführungsbefehlDer Befehl zum Ausführen des Tests und zum Generieren eines Exitcodes für die Auswertung
TimeoutZeitraum in Minuten, die ein Test ausgeführt werden kann, bevor ein Fehler auftritt.
PointsOptional. Die Gesamtanzahl der Punkte, die die gesamte pytest-Suite wert ist. Jeder Test ist Points / number_of_tests wert

Ausführungsbefehlstest

Ein Ausführungsbefehlstest führt einen Setupbefehl und anschließend einen Testbefehl aus. GitHub Classroom überprüft den Beendigungsstatus des Testbefehls. Der Exitcode 0 bedeutet, dass der Vorgang erfolgreich war, jeder andere Exitcode führt zu einem Fehler.

GitHub Classroom stellt Voreinstellungen für sprachspezifische Ausführungsbefehlstests für eine Vielzahl von Programmiersprachen bereit. Zum Beispiel wird für den Test Knoten ausführen der Setupbefehl mit npm install und der Testbefehl mit npm test vorausgefüllt.

EinstellungBESCHREIBUNG
TestnameDer Name des Tests, um den Test in Protokollen zu identifizieren
SetupbefehlOptional: Ein Befehl, der vor den Tests ausgeführt wird, z. B. Kompilierung oder Installation
AusführungsbefehlDer Befehl zum Ausführen des Tests und zum Generieren eines Exitcodes für die Auswertung
TimeoutZeitraum in Minuten, die ein Test ausgeführt werden kann, bevor ein Fehler auftritt.
PointsOptional: Die Anzahl von Punkten, die für den Test in eine Gesamtpunktzahl einfließen

Verwenden eines benutzerdefinierten GitHub Actions-Workflows

Anstatt Voreinstellungen zu verwenden, kannst du auch einen beliebigen GitHub Actions-Workflow zu der .github/workflows/classroom.yml-Datei in Ihrem Startercode-Repository hinzufügen.

Du kannst die Datei .github/workflows/classroom.yml direkt über die Aufgabenbearbeitungsseite bearbeiten, indem du anstelle von GitHub-Voreinstellungen Benutzerdefiniertes YAML auswählst. Wenn du auf In Workflow-Datei konvertieren klickst, wist du aufgefordert, die Änderungen an das Startercode-Repository zu übergeben. Diese Synchronisierung funktioniert nur, wenn sich dein Startercode-Repository in derselben Organisation wie dein Classroom befindet. Wenn sich dein Startercode-Repository in einer anderen Organisation befindet, musst du die Datei .github/workflows/classroom.yml manuell bearbeiten.

Konfigurieren von Tests mit automatischer Bewertung für eine Aufgabe

Du kannst beim Erstellen einer neuen Aufgabe Tests mit automatischer Bewertung hinzufügen. Weitere Informationen findest du unter Erstellen einer Einzelaufgabe oder Erstellen einer Gruppenaufgabe.

Du kannst Tests mit automatischer Bewertung für eine vorhandene Aufgabe hinzufügen, bearbeiten oder löschen. Alle Änderungen, die du über die Classroom-Benutzeroberfläche vornimmst, werden in die vorhandenen Repositorys der Kursteilnehmer gepusht. Deshalb solltest du beim Bearbeiten deiner Tests mit Bedacht vorgehen.

  1. Melde dich bei GitHub Classroom an.

  2. Klicke in der Liste der Klassenzimmer auf das Klassenzimmer, das du anzeigen möchtest.

  3. Klicke rechts neben der Aufgabe, die du bearbeiten möchtest, auf .

  4. Klicke in der linken Seitenleiste auf Bewertung und Feedback.

  5. Füge einen Test mit automatischer Bewertung hinzu, bearbeite oder lösche ihn.

    • Wähle unter „Tests mit automatischer Bewertung hinzufügen“ das Dropdownmenü Test hinzufügen aus, und klicke dann auf die gewünschte Bewertungsmethode. Konfiguriere den Test, und klicke dann auf Testfall speichern.

    • Um einen Test zu bearbeiten, klickst du rechts neben dem Testnamen auf . Konfiguriere den Test, und klicke dann auf Testfall speichern.

    • Um einen Test zu löschen, klickst du rechts neben dem Testnamen auf .

  6. Klicke unten auf der Seite auf Aufgabe aktualisieren.

Konfigurieren, wann Tests mit automatischer Bewertung ausgeführt werden

Standardmäßig werden Tests mit automatischer Bewertung automatisch ausgeführt, wenn ein Lernender auf GitHub.com an ein Aufgaben-Repository überträgt. Wenn du jedoch deine GitHub Actions-Minuten verwalten möchtest, kannst du dieses Verhalten ändern.

  1. Melde dich bei GitHub Classroom an.
  2. Klicke in der Liste der Klassenzimmer auf das Klassenzimmer, das du anzeigen möchtest.
  3. Klicke rechts neben der Aufgabe, die du bearbeiten möchtest, auf .
  4. Klicke in der linken Seitenleiste auf Bewertung und Feedback.
  5. Unterhalb der Liste deiner Tests mit automatischer Bewertung kannst du konfigurieren, wann die Tests ausgeführt werden.
    • Jedes Mal, wenn Lernende eine Aufgabe übermitteln: Das ist das Standardverhalten.
    • Gemäß Zeitplan: Du kannst jeden Tag oder jede Woche eine Uhrzeit für die Ausführung von Tests mit automatischer Bewertung festlegen.
    • Manuell: Die Ausführung von Tests mit automatischer Bewertung wird manuell über das Aufgaben-Dashboard ausgelöst.

Anzeigen und Herunterladen von Ergebnissen für Tests mit automatischer Bewertung

Herunterladen von Ergebnissen der automatischen Bewertung

Sie können eine CSV mit Details zu den Aufgaben Ihrer Kursteilnehmer herunterladen, indem Sie die Schaltfläche "Herunterladen" auf der Übersichtsseite verwenden. Dadurch wird eine CSV-Datei generiert und heruntergeladen, die einen Link zum Repository des Kursteilnehmers, das zugehörige GitHub-Handle, die Kursplan-ID, den Zeitstempel der Übermittlung und die Punktzahl der automatischen Bewertung enthält.

Anzeigen einzelner Protokolle

  1. Melde dich bei GitHub Classroom an.
  2. Klicke in der Liste der Klassenzimmer auf das Klassenzimmer, das du anzeigen möchtest.
  3. Klicke in der Liste der Aufgaben auf die Aufgabe, die du anzeigen möchtest.
  4. Klicke rechts neben einer Übermittlung auf .
  5. Überprüfe die Testausgabe. Weitere Informationen finden Sie unter Verwenden von Workflowausführungsprotokollen.

Weiterführende Themen