Skip to main content

自動採点

課題リポジトリで実行するテストを構成することで、学生から提出されたコードに対するフィードバックを自動的に提供できます。

この機能を使用できるユーザーについて

Organization owners who are admins for a classroom can set up and use autograding on assignments in a classroom. クラスルーム管理者の詳細については、「クラスルームの管理」を参照してください。

自動採点について

GitHub Classroom上で課題に対する学生の作業を自動的にチェックするために、自動評価を利用できます。 課題にテストを構成すると、学生が GitHub.com 上の課題リポジトリにプッシュするたびに、テストがすぐに実行されます。 学生は、テストの結果を見て、変更を行い、新しい結果を見るためにプッシュできます。

学生が課題を受け入れた後、GitHub Actionsは、自動採点テストを行うコマンドを、課題リポジトリへの (または教師定義のスケジュールでの) 各プッシュに対して学生の最新コードを含む Linux 環境で実行します。 GitHub Classroomは、 GitHub Actionsに必要なワークフローを作成します。 自動採点を使用するために GitHub Actions の経験は必要ありませんが、必要に応じて、ニーズに合わせてワークフロー構成を変更することもできます。 ワークフローと GitHub Actions の詳細については、「GitHub Actions による継続的インテグレーションについて」を参照してください。

テストフレームワークを使用したり、カスタムコマンドを実行したり、入出力テストを記述したり、さまざまなテスト方法を組み合わせたりすることができます。 自動採点用のLinux環境には、一般的なソフトウェアツールが数多く含まれています。 詳細については、「GitHub ホステッド ランナーの使用」で Ubuntu の最新バージョンの詳細を参照してください。

GitHub Classroomの課題に移動して、自動採点テストでどの学生が合格したかの概要を表示できます。 緑色のチェックマークは、その学生がすべてのテストに合格したことを意味します。赤色のXは、その学生が一部またはすべてのテストで不合格だったことを意味します。 1つ以上のテストに得点を与えている場合、課題で獲得できる最高得点が吹き出しに表示されます。

採点方法

GitHub Classroom には、GitHub Actions ワークフローを自分で構成しない場合に使用できるさまざまな自動採点テスト プリセットが用意されています。 カスタム GitHub Actions YAML を使用して、独自の自動採点ワークフローを定義することもできます。

GitHub プリセットの使用

GitHub Actions に関する知識がなくてもプリセットを使用できます。 自動採点テストに関する情報を入力すると、GitHub Classroom が学生の課題リポジトリに必要なファイルを自動的に追加します。

プリセットには、入力/出力テスト、Python テスト、実行コマンド テストの 3 種類があります。

入出力テスト

入出力テストは必要に応じてセットアップコマンドを実行してから、テストコマンドに標準出力を渡します。 GitHub Classroomは、テストコマンドの出力を期待する結果と照らし合わせて評価します。

設定説明
テスト名テストの名前。ログでテストを識別するためのものです。
セットアップ コマンドオプション。 コンパイルやインストールなど、テストを実行する前のコマンド。
実行コマンドテストを実行し、評価用の標準出力を生成するコマンド。
入力実行コマンドの標準入力。
想定される出力実行コマンドによる標準出力として期待する出力結果。
比較実行コマンドの出力と期待する出力との比較方法。

  • 含まれる: 予想される出力が
    実行コマンドからの標準出力のどこかに含まれていれば合格にします
  • 正確: 予想される出力が
    実行コマンドからの標準出力と完全に同じであれば合格にします
  • 正規表現: 予想される出力の正規表現が
    実行コマンドからの標準出力と一致していれば合格にします
タイムアウト失敗の結果が出るまでにテストを実行する時間(分単位)。
Pointsオプション。 テストの合計点に占める点数。

Python テスト

Python テストでセットアップ コマンドを実行し、次に pytest を実行します。 付与されるポイントの数は、学生が合格した pytest テスト スイート内のテストの数によって異なります。 各テストは同じ数のポイントの価値があります。Points 設定を変更することで、テスト スイート全体の価値のあるポイントの数を変更できます。

設定説明
テスト名テストの名前。ログでテストを識別するためのものです。
セットアップ コマンド省略可。 コンパイルやインストールなど、テストを実行する前のコマンド。 一部の依存関係は既にインストールされていますが、必要に応じてさらにインストールできます。 sudo を使用する必要はありません。pip3 の代わりに pip を使用する必要があります。
実行コマンドテストを実行し、評価用の終了コードを生成するためのコマンド。
タイムアウト失敗の結果が出るまでにテストを実行する時間(分単位)。
Points省略可。 pytest スイート全体のポイントの合計数は価値があります。 各テストは Points / number_of_tests の価値があります

実行コマンドテスト

実行コマンドテストはセットアップコマンドを実行してから、テストコマンドを実行します。 GitHub Classroomは、テストコマンドの終了ステータスをチェックします。 終了コードが 0 の場合は成功、その他の場合は失敗です。

GitHub Classroomは、さまざまなプログラミング言語に対し、言語特有の実行コマンド用プリセットを提供しています。 たとえば、ノードの実行テストでは、セットアップ コマンドには npm install が事前に入力され、テスト コマンドには npm test が事前に入力されます。

設定説明
テスト名テストの名前。ログでテストを識別するためのものです。
セットアップ コマンドオプション。 コンパイルやインストールなど、テストを実行する前のコマンド。
実行コマンドテストを実行し、評価用の終了コードを生成するためのコマンド。
タイムアウト失敗の結果が出るまでにテストを実行する時間(分単位)。
Pointsオプション。 テストの合計点に占める点数。

カスタム GitHub Actions のワークフローの使用

プリセットを使用する代わりに、スタート コード リポジトリ内の .github/workflows/classroom.yml ファイルに GitHub Actions ワークフローを追加することもできます。

GitHub プリセットの代わりにカスタム YAML を選択することで、課題編集ページから直接 .github/workflows/classroom.yml ファイルを編集できます。 [ワークフロー ファイルに変換] をクリックすると、スタート コード リポジトリに変更をコミットするように求められます。 この同期は、スタート コード リポジトリがクラスルームと同じ組織にある場合にのみ機能します。 スタート コード リポジトリが別の組織にある場合は、.github/workflows/classroom.yml ファイルを手動で編集する必要があります。

アシスタントのために自動採点テストを設定する

新課題の作成時に、自動採点テストを追加できます。 詳細については、「個人課題の作成」または「グループ課題の作成」を参照してください。

既存の課題用の自動採点テストを追加、編集、削除できます。 Classroom UI を介して行われたすべての変更は、既存の学生リポジトリにプッシュされるため、テストを編集するときは注意が必要です。

  1. GitHub Classroomにサインインしてください。

  2. クラスルームのリストで、表示したいクラスルームをクリックしてください。

  3. 編集したい課題の右側にある をクリックします。

  4. 左側のサイドバーで、 [採点とフィードバック] をクリックします。

  5. 自動採点テストを追加、編集、または削除します。

    • テストを追加するには、[自動採点テストの追加] で [テストの追加] ドロップダウン メニューを選び、使う採点方法をクリックします。 テストを構成して [テスト ケースの保存] をクリックします。

    • テストを編集するには、テスト名の右側にある をクリックします。 テストを構成して [テスト ケースの保存] をクリックします。

    • テストを削除するには、テスト名の右側にある をクリックします。

  6. ページの下部にある [課題の更新] をクリックします。

自動採点テストの実行時の構成

既定では、学生が GitHub.com の課題リポジトリにプッシュするたびに、自動採点テストが自動的に実行されます。 ただし、GitHub Actions 分で管理する場合は、この動作を変更できます。

  1. GitHub Classroomにサインインしてください。
  2. クラスルームのリストで、表示したいクラスルームをクリックしてください。
  3. 編集したい課題の右側にある をクリックします。
  4. 左側のサイドバーで、 [採点とフィードバック] をクリックします。
  5. 自動採点テストの一覧の下で、自動採点テストの実行時に構成できます。
    • 学生が課題を送信するたび: これが既定の動作です。
    • スケジュールに従う: 自動採点テストを実行するための時間を毎日または毎週設定できます。
    • 手動: 自動採点テストの実行は、課題ダッシュボードから手動でトリガーされます。

自動採点テストの結果の表示とダウンロード

自動採点の結果をダウンロードする

概要ページの [ダウンロード] ボタンを使用して、学生の課題の詳細を含む CSV をダウンロードできます。 これにより、学生のリポジトリへのリンク、学生の GitHub ハンドル、名簿識別子、提出タイムスタンプ、自動採点スコアを含む CSV が生成されてダウンロードされます。

個人のログを表示する

  1. GitHub Classroomにサインインしてください。
  2. クラスルームのリストで、表示したいクラスルームをクリックしてください。
  3. 課題のリスト中で、表示したい課題をクリックしてください。
  4. 提出の右側にある をクリックします。
  5. テストの出力結果をレビューします。 詳しくは、「ワークフロー実行ログの使用」をご覧ください。

参考資料