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.

1. Extended post-correction with asynchronous recalculation in tests

2. Flexible and inheritable IP restrictions at course level

3. Integration of the “Auditing for test questions” function into the ILIAS core

4. Integration of the question type ‘Source code’ into ILIAS Core

5. 2. Manual evaluation – Improving navigation in the modal dialog (usability during manual correction)

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

Last edited: Yesterday, 16:01, Fries, Tomke [TFries]