Feature Wiki

Information about planned and released features

Tabs

Test & Assessment

1 General

Authorities and Tester

 

Additional

Roadmap

Priorities for the development of the Test & Assessment and the Test Question Pool depend on developer resources provided by a handfull of organizations. Thus no promises are made on timeframes.

Prioritized in the long run

  • Reducing the number of reported issues in Test & Assessment
  • Defining a concise interface for questions.
  • Separating the Test-Player from the Questions and the Question-Pool.
  • Refactoring ilTestParticipantList: This Class has a lot of very expensive loops in it Mantis 33596, but we can not remove them right now as it is used in very different contexts for all kind of lists. Sometimes users don't have $active_ids (participant list in test with access limited to selected participants), sometimes they don't have $usr_ids (anonymous tests in public section).

Roadmap in 2024

Among other challenges, we are planning to use the given developing budget from the ILIAS Community Members for the following tasks:

  1. Main Goal: Fixing Issues and further cleaning up the code.
  2. Further roll out of Repository Pattern
  3. Continue of Abandon of settings and features in Test & Assessment to focus on main aspects and reduce the work on major refactorings
  4. Fundamental work
    • Work on the project to abandon legacy ui.
    • Clarification CTRL-flow
    • Feasibility study/ Research project: Replacement of TinyMCE in creation of questions
      • Infrastructure setup for the replacement
      • Conversion of the Long-Menu-Question to UI-Forms as pilot
    • Use of IRSS in T&A
    • Further reduction of access and use of request variables (GPCR)
  5. Research possible successor for TinyMCE
  6. Feasibility study Test in Learning sequence - Could the LS uses the actual Exam View (since ILIAS9 - General Kiosk Mode)
  7. KS Improvements / Exchange of single elements' trough existing KS elements independently of the Legacy-UI-Project

Depending on development ressources, funding and approval, some new features are conceivable in 2023 (e.g. option for a failing attempt).

Others

  • Fixing access to Learning Status when access to test results is limited (see: Mantis 25064)
  • Restructuring Import/Export, removing dependency on ilContObjParser, and clarifying support of QTI
  • UI Forms: Length of text fields not shorter than answer text. (see: Mantis 35243)
  • Grading: Use of Short Form / Offical Form. Conceptual changes only with the introduction of new UI forms. (see Mantis)
  • Streamlining of trimming and removal of white spaces in answer-options (see: Mantis 35091)
  • Auto-save messages should use UI components (e.g. toast), so a consistent UI/UX is used and easier to maintain throughout the entire system.
  • Avoid creating question-fragments on incomplete question creation, remove questions fully on deletion of tests and questionpools and provide update/objective to clean database of disjunct leftover of questions

Open Warnings / Issues without Tickets

These are open findings from the PHP8 Project which couldn't be solved in the scope of the project itself. They are documented here for transparency. Remarks on the individual items are marked with "@PHP8-CR"

Test

  • \ilTestPlayerAbstractGUI::autosaveCmd / This looks like another issue in the autosaving. Left for review/analysis by TechSquad
  • \ilAssLacCompositeValidator::validateSubTree / Incompatible type. Left for review/analysis by TechSquad

TestQuestionPool

  • \ilObjQuestionPoolGUI::exportQuestionObject / Void result used. Left for review/analysis by TechSquad
  • \assMatchingQuestionGUI::writeAnswerSpecificPostData / Incompatible type. Left for review/analysis by TechSquad
  • \assMatchingQuestionGUI::populateAnswerSpecificFormPart / Incompatible type. Left for review/analysis by TechSquad
  • \assMatchingQuestionImport::fromXML / Incompatible type. Left for review/analysis by TechSquad
  • \ilTestSkillEvaluation::determineReachedSkillPointsWithSolutionCompare / Incompatible type. Left for review/analysis by TechSquad
  • \ilAssLacCompositeValidator::validateSubTree / Incompatible type. Left for review/analysis by TechSquad
  • \assOrderingHorizontalGUI::saveFeedback / Undefined method. Left for review/analysis by TechSquad
  • \ilObjQuestionPoolGUI::questionObject / Undefined method. Left for review/analysis by TechSquad
  • \ilObjTestGUI::executeCommand / Undefined method. Left for review/analysis by TechSquad
  • \ilObjTestGUI::questionsObject / Undefined method. Left for review/analysis by TechSquad
  • \ilAssLacCompositeEvaluator::evaluateSubTree / Undefined method. Left for review/analysis by TechSquad

A RepoPattern Approach to reduce complexity

A lot of the current pain in the T&A is due to the ruthless mixing of Logic and GUI, making decisions very late based on variables transported a long way and - in general - having properties set and evaluated in a quite obscured way by several components. There are some aspects I'd like to focus upon to ease the situation without rebuilding the whole lot at once and disabling functionality in the process. In the following, I'll talk about questions mainly, but answers are implicitly included, since they work almost the same.

current entanglements

Currently, loading a question means: lookup type, load specific question GUI, load base and specific values from DB, write back to question object, use in base- and specific gui. Goal of the process is to configure a question object that has all the required props and features. This is due to mainly two concepts, that look outdated to me:

obese classes and hip-hop-loading

Specific Questions extend a baseclass, both in object and GUI. While this is fine in general, the T&A implementation is somewhat obscure with loading and modifying object properties. Both, architectural structure and unclear program-flows make it quite easy to miss out on a setting or certain property on the one hand, while on the other, it is somewhat painful to alter a GUI. All eventualities have to be treated over the entirety of a "common question object". When saving questions/answers, it works the same way - the entire object is stored, additional features, answertexts and all. Additionally, there are "satellite" properties like suggested solutions, that actually live completely in parallel structures with rather a reference by id than a "real" intersection.

assTextQuestionGUI with its question-obj extends assQuestionGUI working on it while this is actually a constant in the baseclass of all questions. Here is the [specific TextQuestion] (https://github.com/ILIAS-eLearning/ILIAS/blob/393027e6d5258f0a2d67ce87e5a4061b8385521f/Modules/TestQuestionPool/classes/class.assTextQuestion.php#L145) loading base-props.

setters

Assumingly for the purpose described above, there are a lot of (public!) direct property setters: - Separator property in assOrderingHorizontal - some setter in assAnswerMatching - same property, different setter - the according getter

From my point of view, this should be disentangled in a way that a question is used by 1. loading generic data 2. loading specific data 3. handing over the well-configured object(s) to the guis - but only those, that are actually needed. 4. (modifying data and then repeating from 1)

why/how repo-pattern will help

In order to limit and isolate changes, we should use repo-pattern to cluster settings into immutable objects. Doing so - will only add one additional layer around the properties, the getters might even remain - will separate question-type specific data - will separate additional functionality, like suggested solution or hints - will make construction/manipulation way more decisive - will give us specific and distinct elements to talk about

A "question" will thus be a collection of otherwise isolated things, while those things should still be treated in a tendentiously isolated way.

Here is an example for a repo on options of OrderingQuestions, used in the question class to read and store Elements

separation and clustering properties

There are only a few base_settings common to questions. Those are to describe a question. Then, there are answers, metadata, suggested solutions, etc. They are more or less connected to the question, but they are not necessary an integral part of it in a way that a question cannot exist without them. This can and should be reflected by wrapping those "property clusters" into immutable objects with little or none logic, which will also result in a number of repositories - one for each cluster.

construction and getters might look like this:

public function __construct(assQuestionBaseSettings $base_settings) {
    $this->base_settings = $base_settings;
    //.....
}
public function getId() : int {
    return $this->base_settings->getId();
}

Dependency Injection, proper constructors

With smaller, immutable properties, construction is way more explicit than handing over "a question". If the GUI, e.g., behaves differently based on a flag in properties, calculate before and split up GUI classes, or calculate early and only once.

Use factories to instantiate things

What we need to instantiate a question is not "the question" itself, but information about it, namely the type. After reading those shared information, we can instantiate a specific question directly and hand over the common properties. This is usually done by a factory, which will need not much more information than the question's id - just like before.

Consider something like this:

class factory {

    public function question(int $question_id) : assQuestion
    {
        $base_settings = $this->base_repo->select($question_id);
        $page_object = $this->page_repo->select($question_id);
        //....

        $classname = $this->getSpecificQuestionClassname($base_settings->getTypeTag());

        $question = (
            new $classname(
                $base_settings,
                $page_object
                //,....
            )
        );
        return $question;
    }
}

Consequences/Candidates

I'd consider these the most valuable and in the same way feasible steps to improve T&A-structures: - separate "satellites", like suggested solutions in PR #4587 - isolate base_settings (with type/repo/injection/getters, delete setters) - clear out loading from GUIs, use a factory (might probably be done successively) - get rid of "additionalTable" in favor of specific types and repos.

 

2 Projects

The following projects are planned or have been realised for this component:

3 Suggested Features

Please contact Strassner, Denis [dstrassner] if you plan to suggest a feature. Either a feature that fixes problems of Test & Assessment and keeps the Test & Assessment running or new features, that improve the Test & Assessment.

Ready for Jour fixe

Suggested for Future ILIAS Releases

  1. (Project) E-Exams with ILIAS
  2. (Project) Improved test question sharing
  3. (Project) Splitting-up T&A Into New Components
  4. Abandon TinyMCE in Test & Assessment
  5. Abandon «Author» being automatically set  in Test Questions
  6. Access for test participants to uploaded files
  7. Access to Test Results - Point in Time  - Immediately
  8. Accessible Alternative for Drag&Drop
  9. Add new value for Grade
  10. Adding comments to export file
  11. Adding Notes to Test Questions in Tests
  12. Adding Questions to a Learning Module from a Question Pool
  13. Allow editing of question after test has started
  14. Allow Tables In Cloze Question
  15. Automatical update of remaining test time after adding extra time for users
  16. Autosave for Manual Scoring in Tests
  17. Bearbeitungsdauer je Testfrage
  18. better Aggregated Test Results
  19. Better Ending of Tests
  20. Blocks of Questions in Test
  21. Browser identification
  22. Centrally Administrating Mark Schemas
  23. Change Style of Test
  24. Cloze question on Image Map
  25. Cloze question: decimal points in numerical gaps
  26. Cloze question: ignore whitespaces in the response
  27. Comment area
  28. Competence Management for Questions Groups
  29. Competence Management for Test Parts
  30. Competence-driven Question Groups and Test Parts
  31. Configurable test activity notification
  32. Counter for Competence Data
  33. Create test questions offline
  34. Custom Metadata for Questions in Question Pools
  35. Deactivation of Javascript Usage in Tests
  36. Different test parts for randomized tests
  37. Disable Questions in Question Pools
  38. Display Multiple Questions from a Question Group on One Page
  39. Display starting time
  40. Dont Change Cursor in Image Map Question
  41. Dwell Time (Verweildauer) per question
  42. Enforcing Guideline for Top Actions
  43. Enhance evaluation of ordering questions
  44. Errortext: mark single characters
  45. Essay question with History
  46. Exam:Freezing user data
  47. Excel-Export for Results by Question
  48. Export Test Results to SPSS
  49. Extended post-correction with asynchronous recalculation in tests
  50. Extended Test and Item Statistics
  51. Feedback provided icon
  52. Field for default negative value in Matching Questions with n:n matching
  53. Filter for Participants without Answers but started Pass(es) in Test Results
  54. Filter Revision in Manual Scoring
  55. Flexible and inheritable IP restrictions at course level
  56. Formula Question: Support additional php math functions
  57. Formula Question: Using variables in feedback texts
  58. Four-Eye Marking
  59. Gap Analysis of Competence Results from Tests
  60. Gaps within words (Cloze question enhancement)
  61. Hide answer options
  62. Implement Correction Feature for Formula Question
  63. Improve Export of Test and Item Statistics
  64. Improved filter in test question pools
  65. Improving Correction for Text Subset Question
  66. Improving Essay Question - Comments in Manual Scoring
  67. Improving Vertical Ordering Questions Look and Feel
  68. Integration of the question type ‘Source code’ into ILIAS Core
  69. Integration of the “Auditing for test questions” function into the ILIAS core
  70. Introduction of Question Groups
  71. it should be possible to define a question as a knockout question
  72. Item Statistic in Pool
  73. KS-Element Input Field Image for Media in Test Questions
  74. Learner print view for Tests
  75. Limited Display Time for Test Questions
  76. Limited Question Working Time
  77. Linked parameters in formula questions
  78. Manual evaluation – Improving navigation in the modal dialog (usability during manual correction)
  79. Manual Scoring: Make Correction Comments a Useful Feature
  80. Manual Scoring: Rework Scoring by Question
  81. Manual synchronisation of questions in tests after editing in pool
  82. Matching Question – Additional Matching Mode 1:n
  83. Matching question: enable upload of larger images
  84. Matching Questions in Learning Modules
  85. Mathematic questions with Wolframalpha
  86. Matrix statistics for test passes
  87. Measure Working Time on Test Questions
  88. Minutes for Online Exams
  89. More metadata for test questions
  90. Multilingual Questionpools
  91. Multiple correction iterations
  92. Nach Beendigung eines Test Mail an ausgewählte Anzahl von Benutzern
  93. Negative Points: Allowing a negative result for the whole test
  94. New MC Question Type ‘Answer Combination’
  95. New passive mode for randomized drawing of questions in tests and courses with learning objectives
  96. New Plugin Slot for Questions Types
  97. Notes and annotations on test question page
  98. Notification about Changes in Test Questions
  99. offline e-exams
  100. Offline-Support for Test Questions
  101. Offline-Testplayer for E-Exams
  102. Opportunity of an objective correction of online exams with open questions
  103. Option to hide the back button in tests
  104. Optional History for saved Testinput
  105. Ordering questions: order pictures is not available in horizontal mode
  106. Overview Item Statistic
  107. PDF-Export for the several participants
  108. Plugin Slot for Test and Item Statistics
  109. Preconditions in tests
  110. Print PDF before starting the test
  111. Print View with Feedback and Example solution
  112. Progress bar in Tests
  113. QR Code to improve the protection against forgery of certificates
  114. Question Blocks in Tests
  115. Question Pool (Test)-related Quiz-Game Quiz & Conquer
  116. Question type freehand sketch
  117. Question type: Drag&Drop onto/into
  118. Question value depending on number of requested feedbacks
  119. Question Versioning in Test Object
  120. Questions Blocks in Random Tests
  121. Random Test 2.017 - Improvements Overview
  122. Random Test Directly Linked With Pool(s)
  123. Remove Multiple Competence Assignements to single Question
  124. Revise Cloze and Long Menu Question Creation Process
  125. Revision of ILIAS Test Question Creation Process
  126. Revision of Mark Presentation
  127. Revision of Test Evaluation
  128. Right and Wrong Instead of Points
  129. Routing Rules in Test Parts for Adaptive Testing Scenarios
  130. Saving students answers in tests with instant feedback
  131. Score Reporting End Date
  132. Scoring Revision
  133. Select mail recipients for test notifications
  134. Separate Permission for Manual Scoring in Tests
  135. Setting internal Redirect-Links in Test
  136. Several questions on one test page
  137. Show only submitted answers, if the setting Scored Answers of Participant is enabled
  138. Show Participant View
  139. Show question marking in sidebar questionlist
  140. Show Test Pass ID on concluding remarks screen
  141. Skip already solved questions
  142. Streamlining Grading, Marking and Commenting
  143. Support all test question types in learning module
  144. Support Plugin Question Types on Learning Module Pages
  145. Support rating of questions in pool
  146. Surveys as Test Parts
  147. Synchronized Start of Test for All Participants
  148. Test and Assessment: Drawing / Handwriting Question Type
  149. Test Player as Independent Object
  150. Test Player « CTM »
  151. Test Player « E-Exam »
  152. Test Player « Preconditional Test »
  153. Test Player « Self-Assessment »
  154. Test Player « Test in LoC »
  155. Test Question Pool: Change RBAC for editing and delete
  156. Test Results Presentation: Show results only one selected user at a predefined time
  157. Test-Parts and Question-Groups
  158. Test: Add Confirmation for Saving Last Test Question for Tests with Duration
  159. Test: Equalize Test-Endings
  160. Test: General Revision of Manual Scoring within Removing LUI
  161. Test: Move Export of Participant Results to other tab
  162. Test: Revise Hints and their visibility in manual scoring
  163. Test: Revise Notifications
  164. Text field as answer option in single choice question
  165. Tinting examination screen
  166. Unique IDs for Test Questions
  167. Updating Questions in running Random Tests
  168. Use test results as preconditions
  169. Versioning in Pool
  170. Versioning Questions
  171. Waiting time should only be enforced if the test pass is failed
  172. »or« Taxonomy in Question Pools
  173. “Hot Spot / Image Map Question” - Restrict Amount Of Clickable Areas
  174. „Error Text“ - Restrict Maximum Markable Options

4 Accepted Features

The following features have been accepted for trunk but are not yet scheduled for a specific ILIAS version.

5 Scheduled Features

Features scheduled for / published in ILIAS 12

Features scheduled for / published in ILIAS 11

Features scheduled for / published in ILIAS 10

Abandoned Features from ILIAS 10

Features scheduled for / published in ILIAS 9:

Features scheduled for / published in ILIAS 8:

Features scheduled for / published in ILIAS 7:

Features scheduled for / published in ILIAS 6:

Features scheduled for / published in ILIAS 5.4:

Features scheduled for / published in ILIAS 5.3:

Features scheduled for / published in ILIAS 5.2:

Features developed and published in ILIAS 5.1:

The editorial team of the help has refurbished the 'Settings'-tab of the Test.
Please check the respective page: Mapping of 'Settings'-tab in the Test Object of ILIAS 5.0 and ILIAS 4.4

The following features have already been developed and published in ILIAS ILIAS 4.1:
  • none
The following features have already been developed and published in ILIAS ILIAS 4.0:
  1. New type Essay with predefined content
  2. New type Fileupload
  3. New type Flash-Applet
  4. New type Horizontal Ordering
  5. Question overview on the left side
  6. Short name of your feature

The following features are in preparation to be migrated from the EA-branch into the trunk.

 
Administration
  1. Improving PDF Generation
  2. PDF Storage of e-Exams
  3. PDF Elektronische Signatur
  4. Extending Test Export  (Rohdatenexport)
    1. Export von zufallsgenerierten Tests
    2. XLSX
  5. [[Administrationsskripten zur Verwaltung von Prüfungen und Prüflingen (Perl)] ** obsolet **]
Fragen Objekt :: Freitext Frage (Essay Question)
  1. Begrenzung der Texteingaben
Test Objekt :: Einstellungen
  1. Erweiterung Präsentation Testergebnisse
  2. KIOSK Modus
  3. Display Options For E-Exams
  4. Erweiterte Protokollierung
Test-Objekt :: Administration
  1. Neue Registerkarte "Administration" im Test-Objekt
    1. Erweiterung der Auswertungsmöglichkeiten für Fragen
    2. Nachkorrekturmodus
    3. Individuelle Zeitzugabe
Test-Objekt :: Manuelle Bewertung
  1. Bewertung nach Fragen
Test-Objekt :: Erweiterung - Item Management System Schnittstelle
  1. IMS-M Schnittstelle
Anpassungen an E-Prüfungssystem
  1. Prüfungsskins
  2. Sonderzeichen-Editor in Textfeldern
 
Revision GUI Question Pool Test
 
Revision GUI Test

6 Redundant, Outdated and Rejected Feature Requests

Requests that are outdated or redundant (already implemented in other requests)

  1. (Project) Centralising Online/Offline Status
  2. Abandon Access Codes in Tests
  3. Add “no entry” node to taxonomy tree to show questions without taxonomy entries in questions pools
  4. Administration of Tests: Log Data Export Improvements
  5. Allow QTI import and export of tests
  6. Big Start Button
  7. Clarification of Log Data for Tests
  8. Cloze Question: Separately configured gap lengths
  9. Clozed question: seperatly feedback from multiple questions
  10. Competence Results in Tests: Adaptation of Object Reporting Panels
  11. Continuous Testing Mode Usability Improvement
  12. Detailed feedback (text and hyperlinks) after test is finished
  13. Excel export: Show answers of all test passes
  14. Extending Continuous Testing Mode: Consider Processing Time
  15. Extending Continuous Testing Mode: Purgatory Status of Question
  16. Extending Continuous Testing Mode: Threshold to Overcome Question
  17. Extending Test Export
  18. Fragen aus Survey oder Test in Pool kopieren und verlinken
  19. highlighted text
  20. Highlighting Words in Question Text
  21. Improve feedback setup in self assessment questions of ILIAS LM
  22. Improve Start Button in Tests and Surveys
  23. Improved navigation at end of initial test in course with learning objectives
  24. Improved Test Logging
  25. Improving e-exam countdown
  26. Info page for pool
  27. Interface to get assessment related user data
  28. Introduce New Permission *View to User Data in Selected Components*
  29. Introducing Assessment Question Service
  30. Introduction of Test Parts
  31. Is-dirty Mode for Tests
  32. Lifecycle and Versioning Support in Test Questions
  33. Manual Scoring for STACK Question Type
  34. MC-Questions with empty solution = correct solution
  35. Multiple pass scoring: change default setting to scoring the best pass
  36. Pie chart in Question Queue
  37. preview of all questions
  38. Questions (Test, Testpool, ILIAS-LM) - Show Javascript-Code as Text
  39. Random Response Selection in Questions
  40. Randomly Seeded Shuffling of Answer Options for Formative Assessments
  41. Rearrange Elements of Test-Question-Page
  42. Redo Question Rendering
  43. Remove Corrections tab
  44. Remove horizontal  Ordering Question
  45. Revise Prepopulation of Content for Recapitulation of Type Text
  46. Revision of MCQ: Alternative points specification for multiple choice question
  47. Revision of Test Question Corrections
  48. Revision of the precision in the formula question
  49. Show points in preview
  50. Support metadata for individual questions in pools and tests
  51. Taxonomy Support when copying test questions to different question pool
  52. Test Question Interface
  53. Test Question Pool as Independent Object
  54. Traceable connection between tests and ILIAS-learning module

Rejected Feature Requests

  1. Abandon Feedback in Test Results
  2. Abandon Test Export File (incl. Participants Results)
  3. Amend Personal Default Settings
  4. Automatische Nachricht über neu hochgeladenen (oder kopierten) Test erzeugen
  5. Change Setting to show users their results in ILIAS Test
  6. Container object to cluster questions (improved display)
  7. Display of Time Limit per Question
  8. Don’t show Feedback button when there is no feedback
  9. DR 5.1: Issue 15: Presentation problems when running test
  10. Edit Questions of Test which already contains datasets
  11. Eingabefelder für Zahlen und Datumswerte
  12. Extend ASQ: Page Content for Questions
  13. Extending ASQ: Competence Assignment for Questions
  14. Extending ASQ: Taxonomy Assignment for Questions
  15. Grading, Marking and Evaluating in Tests
  16. Green Mark when test time is passed
  17. Images for Tests
  18. Impartial Manual Scoring
  19. Implement Kiosk-Mode for Test
  20. Import of Tests Without Questions
  21. Improved look of page Test Results
  22. KS Tree Select Input
  23. KS: Presentation Table for Test Statistics
  24. Mark schema: change marks when Access to Test Results is set to never
  25. Migration path for question types to ASQ
  26. Multiple Choice Question (Kprim Answers) - Allow up to 6 Answers
  27. Question pool: make text size configurable in cloze question
  28. Remove the import of random tests into pools
  29. Remove the option to let anonymous take tests in public area
  30. Revamp Information about Hints and Deduction in Tests
  31. Separate Options for Show ‘List of Questions’ and Dashboard
  32. Simple Drag and Drop
  33. STACK questions in ILIAS LM
  34. Statistics: Evaluation for all questions
  35. Status-Sensitive Button Label
  36. Straightforward Configuration of Result Presentation
  37. Streamlining Answer Input Fields
  38. Streamlining Participants and Statistics View
  39. Test Player: Kiosk-Mode (Exam View) for Page Layout Revision
  40. Usability Improvement of Random Tests

Last edited: 21. Aug 2025, 11:15, Gruber, Ann-Christin [acgruber]