Feature Wiki

Information about planned and released features

Tabs

Page is read-only.

Test & Assessment

1 General

Maintainer and Tester

 

Please note: The split proposed in 2019 of this component into Assessment Question Service (Rewrite), new Test Player(s) and new Question Pool Test has been stopped. (See JF Protocol 2021/07/12 under Section Dev Issues).


The existing code in the T&A, taking advantage of the momentum of PHP 8, will continue to gradually add interfaces and split into modules. Please contact the concept authority if you would like to help with this.

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:

Feature Requests / Projects due to Mantis Reports

Due to bug reports, there is a need to implement new functions into T&A to do so. The following feature articles belong to this category:

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.

Suggested for ILIAS 11

not scheduled yet

  1. (Project) E-Exams with ILIAS
  2. (Project) Improved test question sharing
  3. Abandon TinyMCE in Test & Assessment
  4. Abandon «Author» being automatically set  in Test Questions
  5. Access for test participants to uploaded files
  6. Access to Test Results - Point in Time  - Immediately
  7. Accessible Alternative for Drag&Drop
  8. Add new value for Grade
  9. Adding comments to export file
  10. Adding Notes to Test Questions in Tests
  11. Adding Questions to a Learning Module from a Question Pool
  12. Allow editing of question after test has started
  13. Automatical update of remaining test time after adding extra time for users
  14. Autosave for Manual Scoring in Tests
  15. better Aggregated Test Results
  16. Better Ending of Tests
  17. Centrally Administrating Mark Schemas
  18. Change Style of Test
  19. Competence Management for Questions Groups
  20. Competence Management for Test Parts
  21. Competence-driven Question Groups and Test Parts
  22. Counter for Competence Data
  23. Create test questions offline
  24. Custom Metadata for Questions in Question Pools
  25. Deactivation of Javascript Usage in Tests
  26. Display Multiple Questions from a Question Group on One Page
  27. Display starting time
  28. Don’t show Feedback button when there is no feedback
  29. DR 5.1: Issue 15: Presentation problems when running test
  30. Dwell Time (Verweildauer) per question
  31. Errortext: mark single characters
  32. Extended Test and Item Statistics
  33. Field for default negative value in Matching Questions with n:n matching
  34. Filter Revision in Manual Scoring
  35. Formula Question: Support additional php math functions
  36. Formula Question: Using variables in feedback texts
  37. Four-Eye Marking
  38. Gap Analysis of Competence Results from Tests
  39. Gaps within words (Cloze question enhancement)
  40. Grading, Marking and Evaluating in Tests
  41. Hide answer options
  42. Images for Tests
  43. Impartial Manual Scoring
  44. Implement Correction Feature for Formula Question
  45. Implement Kiosk-Mode for Test
  46. Import of Tests Without Questions
  47. Improve Export of Test and Item Statistics
  48. Improved filter in test question pools
  49. Improved look of page Test Results
  50. Improving Correction for Text Subset Question
  51. Improving Essay Question - Comments in Manual Scoring
  52. Introduction of Question Groups
  53. it should be possible to define a question as a knockout question
  54. Item Statistic in Pool
  55. KS: Presentation Table for Test Statistics
  56. Limited Display Time for Test Questions
  57. Limited Question Working Time
  58. Linked parameters in formula questions
  59. Manual Scoring: Make Correction Comments a Useful Feature
  60. Manual Scoring: Rework Scoring by Question
  61. Manual synchronisation of questions in tests after editing in pool
  62. Matching Question – Additional Matching Mode 1:n
  63. Matching Questions in Learning Modules
  64. Measure Working Time on Test Questions
  65. Minutes for Online Exams
  66. More metadata for test questions
  67. Multiple Choice Question (Kprim Answers) - Allow up to 6 Answers
  68. Multiple correction iterations
  69. Negative Points: Allowing a negative result for the whole test
  70. New MC Question Type ‘Answer Combination’
  71. New Plugin Slot for Questions Types
  72. Notes and annotations on test question page
  73. Notification about Changes in Test Questions
  74. offline e-exams
  75. Offline-Support for Test Questions
  76. Offline-Testplayer for E-Exams
  77. Opportunity of an objective correction of online exams with open questions
  78. Optional History for saved Testinput
  79. Ordering questions: order pictures is not available in horizontal mode
  80. Overview Item Statistic
  81. Plugin Slot for Test and Item Statistics
  82. Print PDF before starting the test
  83. Print View with Feedback and Example solution
  84. QR Code to improve the protection against forgery of certificates
  85. Question Blocks in Tests
  86. Question Pool (Test)-related Quiz-Game Quiz & Conquer
  87. Question type freehand sketch
  88. Question type: Drag&Drop onto/into
  89. Question value depending on number of requested feedbacks
  90. Question Versioning in Test Object
  91. Questions Blocks in Random Tests
  92. Random Test Directly Linked With Pool(s)
  93. Remove Multiple Competence Assignements to single Question
  94. Remove the import of random tests into pools
  95. Revamp Information about Hints and Deduction in Tests
  96. Revise Cloze and Long Menu Question Creation Process
  97. Revision of ILIAS Test Question Creation Process
  98. Routing Rules in Test Parts for Adaptive Testing Scenarios
  99. Saving students answers in tests with instant feedback
  100. Select mail recipients for test notifications
  101. Separate Options for Show ‘List of Questions’ and Dashboard
  102. Separate Permission for Manual Scoring in Tests
  103. Setting internal Redirect-Links in Test
  104. Show only submitted answers, if the setting Scored Answers of Participant is enabled
  105. Show Participant View
  106. Show Test Pass ID on concluding remarks screen
  107. Straightforward Configuration of Result Presentation
  108. Streamlining Grading, Marking and Commenting
  109. Support all test question types in learning module
  110. Support Plugin Question Types on Learning Module Pages
  111. Support rating of questions in pool
  112. Surveys as Test Parts
  113. Synchronized Start of Test for All Participants
  114. Test & Assessment: Pseudonymization of names for «manual scoring» view
  115. Test and Assessment: Drawing / Handwriting Question Type
  116. Test Notifications
  117. Test Player as Independent Object
  118. Test Player « CTM »
  119. Test Player « E-Exam »
  120. Test Player « Preconditional Test »
  121. Test Player « Self-Assessment »
  122. Test Player « Test in LoC »
  123. Test Player: Kiosk-Mode (Exam View) for Page Layout Revision
  124. Test-Parts and Question-Groups
  125. Test: Add Confirmation for Saving Last Test Question for Tests with Duration
  126. Test: Move Export of Participant Results to other tab
  127. Test: Revise Hints and their visability in manual scoring
  128. Text field as answer option in single choice question
  129. Tinting examination screen
  130. Unique IDs for Test Questions
  131. Updating Questions in running Random Tests
  132. Usability Improvement of Random Tests
  133. Versioning in Pool
  134. Versioning Questions
  135. Waiting time should only be enforced if the test pass is failed
  136. »or« Taxonomy in Question Pools
  137. “Hot Spot / Image Map Question” - Restrict Amount Of Clickable Areas
  138. „Error Text“ - Restrict Maximum Markable Options

4 Scheduled Features

Features scheduled for / published in Release 11

Features scheduled for / published in Release 10

Abandoned Features from Release 10

Features scheduled for / published in Release 9:

Features scheduled for / published in Release 8:

Features scheduled for / published in Release 7:

Features scheduled for / published in Release 6:

Features scheduled for / published in Release 5.4:

Features scheduled for / published in Release 5.3:

Features scheduled for / published in Release 5.2:

Features developed and published in Release 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 Release 4.1:

  • none

The following features have already been developed and published in ILIAS Release 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

Plugins:

  1. Formative Assessment
  2. CAS-Anbindung

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

5 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: 24. Oct 2024, 21:51, Strassner, Denis [dstrassner]