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の詳細については、「 継続的インテグレーション」を参照してください。

テストフレームワークを使用したり、カスタムコマンドを実行したり、入出力テストを記述したり、さまざまなテスト方法を組み合わせたりすることができます。 自動採点用の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 を使用する必要はありません。pip の代わりに pip3 を使用する必要があります。
    実行コマンドテストを実行し、評価用の終了コードを生成するためのコマンド。
    タイムアウト失敗の結果が出るまでにテストを実行する時間(分単位)。
    Points
    オプション
    pytest スイート全体のポイントの合計数は価値があります。 各テストは Points / number_of_tests の価値があります

    コマンドのテストの実行

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

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

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

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

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

    ** .github/workflows/classroom.ymlプリセット**の代わりにGitHub を選択すると、割り当て編集ページから**** ファイルを直接編集できます。 [ワークフロー ファイルに変換] をクリックすると、スタート コード リポジトリに変更をコミットするように求められます。 この同期は、スタート コード リポジトリがクラスルームと同じ組織にある場合にのみ機能します。 スタート コード リポジトリが別の組織にある場合は、.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. テストの出力結果をレビューします。 詳しくは、「ワークフロー実行ログの使用」をご覧ください。

    参考資料