diff --git a/asystgrade/tests/fakedata/questions.php b/asystgrade/tests/fakedata/questions.php
new file mode 100644
index 0000000000000000000000000000000000000000..120c75937fe35743b0f8e9147ec10be2b26e40e7
--- /dev/null
+++ b/asystgrade/tests/fakedata/questions.php
@@ -0,0 +1,46 @@
+<?php
+
+return [
+    [
+        'questiontext' => 'Warum kann Ihr Programm durch die Verwendung von Threads schneller werden, auch wenn Sie nur einen einzigen Prozessor zur Verfügung haben?',
+        'qtype'        => 'essay',
+        'answers'      => [
+            'Die Ausführung wird schneller, weil der Prozessor zwischen verschiedenen Teilaufgaben hin- und herspringen kann und so z.B. Wartezeiten auf Daten in einem Thread zur Bearbeitung anderer Threads genutzt werden können.' => 1
+        ]
+    ],
+    [
+        'questiontext' => 'Warum wird Ihr Programm durch die Verwendung von Threads schneller, auch wenn Sie nur einen einzigen Prozessor zur Verfügung haben?',
+        'qtype'        => 'essay',
+        'answers'      => [
+            'Die Ausführung wird schneller, weil der Prozessor zwischen verschiedenen Teilaufgaben hin- und herspringen kann und so z.B. Wartezeiten auf Daten in einem Thread zur Bearbeitung anderer Threads genutzt werden können.' => 1
+        ]
+    ],
+    [
+        'questiontext' => 'Beschreiben Sie die Struktur einer Stream-Pipeline. Woher kommen die Daten, was geschieht im Stream mit ihnen, wie endet der Stream? Geben Sie für jeden Streamabschnitt mindestens eine Beispielkomponente an.',
+        'qtype'        => 'essay',
+        'answers'      => [
+            'Datenquelle: Collections, Arrays, Generatoren (z.B. Datenbankabfragen, eigene Methoden). Verarbeitung: Filtern, Umformung, Begrenzung. Datensenke: Minimum / Maximum / Durchschnitt / Anzahl, Ausgabe in Collection oder Array / Reduktion / Auswertung.' => 1
+        ]
+    ],
+    [
+        'questiontext' => 'Welche Auswirkungen hat die Model-View-Aufteilung bei Swing-Komponenten? Nennen Sie Beispiele anhand der Klasse JTable.',
+        'qtype'        => 'essay',
+        'answers'      => [
+            'Datenhaltung und Darstellung werden getrennt, so dass dieselben Daten flexibel dargestellt werden können. Datenhaltung findet in der Klasse TableModel statt: Welche Information steht in welcher Zelle? Information z.B. über die Editierbarkeit der Zellen, den zu verwendenden Editor und die Spaltenreihenfolge werden in JTable bzw. TableColumnModel gehalten.' => 3
+        ]
+    ],
+    [
+        'questiontext' => 'Warum braucht man bei der Arbeit mit Threads Synchronisation?',
+        'qtype'        => 'essay',
+        'answers'      => [
+            'Man muss vermeiden, dass verschiedene Threads gleichzeitig auf Daten oder Objekte zugreifen, weil es dadurch zur Zerstörung von Werten und zu inkonsistenten Zuständen kommen kann.' => 1
+        ]
+    ],
+    [
+        'questiontext' => 'Beantworten Sie kurz die 3 Fragen 1 - Was wird unter einem Thread verstanden / wann werden Threads benutzt ? (3 Pkt) 2 - Welche Ressourcen nutzt ein Thread exklusiv ? (2 Pkt) 3 - Welche Ressourcen teilen sich die Threads eines Programms ? (2 Pkt)',
+        'qtype'        => 'essay',
+        'answers'      => [
+            'Thread: 1 PT Ablauffaden, Ablaufeinheit, Ausführung etc. 1Pt Parallel, Quasi Parallel, Core, 1Pt Geschwindigkeit, Resourcenauslastung, parallele Ausführung' => 7
+        ]
+    ],
+];
diff --git a/asystgrade/tests/quiz_api_test.php b/asystgrade/tests/quiz_api_test.php
index cf34328fb77f988b863b4a22e94d73658da8aaca..cc9427093dc1fd86a70bcda958e8a27cfc5cc329 100755
--- a/asystgrade/tests/quiz_api_test.php
+++ b/asystgrade/tests/quiz_api_test.php
@@ -58,50 +58,7 @@ class quiz_api_test extends advanced_testcase
         ]);
 
         // Create questions and answers
-        $questions = [
-            [
-                'questiontext' => 'Warum kann Ihr Programm durch die Verwendung von Threads schneller werden, auch wenn Sie nur einen einzigen Prozessor zur Verfügung haben?',
-                'qtype'        => 'essay',
-                'answers'      => [
-                    'Die Ausführung wird schneller, weil der Prozessor zwischen verschiedenen Teilaufgaben hin- und herspringen kann und so z.B. Wartezeiten auf Daten in einem Thread zur Bearbeitung anderer Threads genutzt werden können.' => 1
-                ]
-            ],
-            [
-                'questiontext' => 'Warum wird Ihr Programm durch die Verwendung von Threads schneller, auch wenn Sie nur einen einzigen Prozessor zur Verfügung haben?',
-                'qtype'        => 'essay',
-                'answers'      => [
-                    'Die Ausführung wird schneller, weil der Prozessor zwischen verschiedenen Teilaufgaben hin- und herspringen kann und so z.B. Wartezeiten auf Daten in einem Thread zur Bearbeitung anderer Threads genutzt werden können.' => 1
-                ]
-            ],
-            [
-                'questiontext' => 'Beschreiben Sie die Struktur einer Stream-Pipeline. Woher kommen die Daten, was geschieht im Stream mit ihnen, wie endet der Stream? Geben Sie für jeden Streamabschnitt mindestens eine Beispielkomponente an.',
-                'qtype'        => 'essay',
-                'answers'      => [
-                    'Datenquelle: Collections, Arrays, Generatoren (z.B. Datenbankabfragen, eigene Methoden). Verarbeitung: Filtern, Umformung, Begrenzung. Datensenke: Minimum / Maximum / Durchschnitt / Anzahl, Ausgabe in Collection oder Array / Reduktion / Auswertung.' => 1
-                ]
-            ],
-            [
-                'questiontext' => 'Welche Auswirkungen hat die Model-View-Aufteilung bei Swing-Komponenten? Nennen Sie Beispiele anhand der Klasse JTable.',
-                'qtype'        => 'essay',
-                'answers'      => [
-                    'Datenhaltung und Darstellung werden getrennt, so dass dieselben Daten flexibel dargestellt werden können. Datenhaltung findet in der Klasse TableModel statt: Welche Information steht in welcher Zelle? Information z.B. über die Editierbarkeit der Zellen, den zu verwendenden Editor und die Spaltenreihenfolge werden in JTable bzw. TableColumnModel gehalten.' => 3
-                ]
-            ],
-            [
-                'questiontext' => 'Warum braucht man bei der Arbeit mit Threads Synchronisation?',
-                'qtype'        => 'essay',
-                'answers'      => [
-                    'Man muss vermeiden, dass verschiedene Threads gleichzeitig auf Daten oder Objekte zugreifen, weil es dadurch zur Zerstörung von Werten und zu inkonsistenten Zuständen kommen kann.' => 1
-                ]
-            ],
-            [
-                'questiontext' => 'Beantworten Sie kurz die 3 Fragen 1 - Was wird unter einem Thread verstanden / wann werden Threads benutzt ? (3 Pkt) 2 - Welche Ressourcen nutzt ein Thread exklusiv ? (2 Pkt) 3 - Welche Ressourcen teilen sich die Threads eines Programms ? (2 Pkt)',
-                'qtype'        => 'essay',
-                'answers'      => [
-                    'Thread: 1 PT Ablauffaden, Ablaufeinheit, Ausführung etc. 1Pt Parallel, Quasi Parallel, Core, 1Pt Geschwindigkeit, Resourcenauslastung, parallele Ausführung' => 7
-                ]
-            ],
-        ];
+        $questions = include_once 'fakedata/questions.php';
 
         // Create a question category
         $context  = context_course::instance($coursegen->id);
@@ -110,13 +67,13 @@ class quiz_api_test extends advanced_testcase
         foreach ($questions as $questiondata) {
             // Create a question
             $question = $questiongen->create_question($questiondata['qtype'], null, [
-                'category'     => $category->id, // категория вопроса
+                'category'     => $category->id, // question category
                 'questiontext' => [
                     'text'   => $questiondata['questiontext'],
                     'format' => FORMAT_HTML,
                 ],
                 'name'         => 'Test Question',
-                'contextid'    => $context->id, // Убедитесь, что контекст передается правильно
+                'contextid'    => $context->id, // https://www.examulator.com/er/output/tables/question_usages.html - a contextid of question usage
                 'modifiedby'   => $teacher->id,
             ]);
 
diff --git a/readme.md b/readme.md
index 79770466d85284873fcf30682272674ae0b36feb..ee8b6b6ecb77b8c476e90e37114bdc93785fc41a 100755
--- a/readme.md
+++ b/readme.md
@@ -30,8 +30,12 @@ Now the preinstalled MOODLE LMS is available at https://www.moodle.loc
 **Note**: Bind https://www.moodle.loc to your localhost at **hosts** file depending on your OS.
 
 ## Running Unit Tests
-To run only Plugin's Test please run at project's CLI:
+To run only Plugin's Test please run at project's CLI (inside container):
 ~~~bash
 vendor/bin/phpunit --testsuite local_asystgrade_testsuite
 ~~~
+or run outside it:
+~~~bash
+docker-compose exec moodle vendor/bin/phpunit --testsuite local_asystgrade_testsuite
+~~~