ProFormA Programming Question Type
- Moodle 1.9–5.1
- 更新 2026-05-26
Quiz question type for automatically graded programming questions. Questions can be created in Moodle or imported as ProFormA tasks (https://github.com/ProFormA/proformaxml).
Plugin requires the qbehaviour_adaptiveexternalgrading plugin and ProFormA Praktomat (https://github.com/elearning-ostfalia/Proforma-Praktomat).
The ProForma Moodle Question Type is a Moodle Plugin that is used for automatically grading programming questions in Moodle quizzes. Questions are internally stored in the ProFormA format ( https://github.com/ProFormA/proformaxml ).
In order to generate the submission grade a predefined testsuite is run on an external server (Praktomat).
Standard test frameworks are used for specifying tests. Currently the following programming languages and test frameworks are supported:
Java: JUnit 4, JUnit 5, Checkstyle
C++: GoogleTest (CMake/make)
c: CUnit, GoogleTest (CMake/make)
Python: Python Unittest, Python Doctest
Setlx: Test, Syntax Check
Any other programming language resp. test framework can be used as long as the Praktomat (or any ProFormA compatible other test runner used as back-end) supports it. Since all code is open source, it can be easily extended to other languages and frameworks.
The plugin comes with a built-in Java question editor so simple Java questions can be created directly in Moodle.
More complex questions must be created outside of the system with a stand-alone editor ( https://proforma.github.io/formatEditor/proformaEditor.html ) or by other means (e.g. script). These questions can be imported by use of another Moodle plugin.
Copyright note: The renderer code partly bases upon the renderer from essay question type (Moodle core).
Small code parts (in particular in
qbehaviour_adaptiveexternalgrading) are copied from Coderunner
( https://moodle.org/plugins/qtype_coderunner ).
Features
Various submission formats:
editor with programming language support such as syntax highlighting or automatic indentation
- 3.2.1Moodle 5.0, 5.1
- 3.2.0Moodle 4.5
- 3.1.4Moodle 4.4, 4.5
- 3.1.3Moodle 4.3
- 3.1.2Moodle 4.1, 4.2, 4.3
- 2.10.0Moodle 3.11, 4.0, 4.1
- 2.8.0Moodle 3.9, 3.10, 3.11, 4.0
- 2.7.1Moodle 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11
- 1.0.6Moodle 3.4, 3.5, 3.6, 3.7