tel8618217223380 / oasychev-moodle-plugins

Automatically exported from code.google.com/p/oasychev-moodle-plugins
0 stars 0 forks source link

Юнит-тесты на взаимодействие анализаторов #346

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Необходимо написать юнит-тесты на PHPUnit на 
взаимодействие анализаторов при различных 
ситуациях, когда они включены или нет, для 
ситуаций, которые не запрещены в документе. 

Сам вряд ли могу заняться - сейчас сильно 
занят. 

Кроме этого, надо написать тесты на 
валидацию формы - это сделаю сам, когда 
закончу с другими работами.

Документ с ситуациями: 
https://docs.google.com/spreadsheets/d/1q8Z8k5TkSlD-EQnVZqGHekVwAgDgyXuqoAVXZBIr
lBU/edit?usp=sharing

Original issue reported on code.google.com by mamontov...@gmail.com on 22 Apr 2015 at 1:24

GoogleCodeExporter commented 9 years ago
Я думаю в первом наборе нам нужно без 
syntax_analyzer чтобы к релизу было.

Original comment by oasyc...@gmail.com on 22 Apr 2015 at 2:04

GoogleCodeExporter commented 9 years ago
По сути это тест на последовательный вызов 
заданного набора анализаторов, или в 
вопросе есть какой-то специфический метод, 
для данной задачи? 

Original comment by vad23k...@gmail.com on 22 Apr 2015 at 9:10

GoogleCodeExporter commented 9 years ago
Функция в классе вопроса есть. Я так 
понимаю неплохой вариант для начала теста 
это compare - она как раз получает две строки и 
ищет результат - см 
https://code.google.com/r/mamontovdp-mariabirvg-correctwriting2/source/browse/qu
estion/type/correctwriting/question.php#409  Но Дмитрий может 
иметь лучшее предложение по функции.

При этом необходимо создать объект вопроса 
со всеми настройками (в частности теми, 
которые управляют доступностью матчеров - 
типа 
https://code.google.com/r/mamontovdp-mariabirvg-correctwriting2/source/browse/qu
estion/type/correctwriting/question.php#117

Соответственно нужно составить такую пару 
строк, чтобы в ней были ошибки и эффекты от 
разных видов матчеров (опечатки, 
перестановка местами элементов 
перечисления, перемещение лексемы (не 
относящейся к перечислению), лишняя и 
отсутствующая лексемы) - и запускать эту 
пару при различных настройках матчеров, 
анализируя какие ошибки найдены, а какие - 
нет (так при отключенном lexical analyzer вместо 
опечатки будет лишняя и удаленная лексемы 
и т.д. - см. таблицу на гугльдоке)

Original comment by oasyc...@gmail.com on 22 Apr 2015 at 9:28

GoogleCodeExporter commented 9 years ago
Дмитрий, расшарьте документ 
гугльдоковский на редактирование хотя бы 
мне...

Original comment by oasyc...@gmail.com on 22 Apr 2015 at 9:29

GoogleCodeExporter commented 9 years ago
Да, на строки которые написано "запрещено" 
нужен тест на метод validate для формы 
редактирования вопроса, что он не 
пропускает такие комбинации.

Original comment by oasyc...@gmail.com on 22 Apr 2015 at 9:30

GoogleCodeExporter commented 9 years ago
Начата работа над тестами.
https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/detail?
r=6ff69ec52c76187a1775471186143669f206ae01

Original comment by vad23k...@gmail.com on 26 Apr 2015 at 7:05

GoogleCodeExporter commented 9 years ago
Начата работа над тестами.
https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/detail?
r=6ff69ec52c76187a1775471186143669f206ae01

Original comment by vad23k...@gmail.com on 26 Apr 2015 at 7:05

GoogleCodeExporter commented 9 years ago
1) Название теста очень странное: 
qtype_correctwriting_common_test  может указывать на все 
что угодно. Лучше переименовать в 
qtype_correctwriting_analyzers_interaction_test .
2)  По поводу кода вида:
$this->assertEquals(get_class($question->matchedresults->mistakes()[0]),'qtype_c
orrectwriting_lexeme_moved_mistake');
        $this->assertEquals(get_class($question->matchedresults->mistakes()[1]),'qtype_correctwriting_lexeme_absent_mistake');
        $this->assertEquals(get_class($question->matchedresults->mistakes()[2]),'qtype_correctwriting_lexeme_added_mistake');

Лучше так не делать, так как технически 
никто не гарантирует, что ошибки будут 
генерироваться именно в такой 
последовательности. Реально же они могут 
быть сгенерированы в любой 
последовательности. Лучше посмотрите, как 
здесь сделано и сделайте подобным образом: 
https://code.google.com/r/mamontovdp-mariabirvg-correctwriting2/source/browse/qu
estion/type/correctwriting/tests/test_mistake_descriptions.php . Только 
вам вместо текста ошибок, лучше вычислять 
их количество и проверять сколько ошибок 
такого типа будет найдено.

3) Когда будут оставшиеся тесты? Там 
все-таки их не так много надо, с учетом 
синтаксического анализатора. Технически, 
даже если делать по одному в день
можно за неделю справиться.

Original comment by mamontov...@gmail.com on 6 May 2015 at 6:23

GoogleCodeExporter commented 9 years ago
Сегодня, добиваю свой анализатор, что бы он 
только в определеной связке работал и 
только с определенными языками и сажусь за 
тесты. Файл переименую, проверку изменю.

Original comment by vad23k...@gmail.com on 6 May 2015 at 6:37

GoogleCodeExporter commented 9 years ago
Хорошо, ок.

Original comment by mamontov...@gmail.com on 6 May 2015 at 7:18

GoogleCodeExporter commented 9 years ago
Валидация уже реализована в моем клоне, по 
идее тесты должны проходить.

Original comment by mamontov...@gmail.com on 6 May 2015 at 2:36

GoogleCodeExporter commented 9 years ago
Извините, а как должна вести себя картинка 
в случае отключенного анализатора 
последовательности? Должна ли она вообще 
показываться?

Original comment by mamontov...@gmail.com on 6 May 2015 at 2:50

GoogleCodeExporter commented 9 years ago
По идее должна. 

Я думаю в этом случае пока можно 
ограничиться верхней строкой с 
исправлениями, и нижней под ней со 
стрелками для случая опечаток/лишних и 
пропущенных разделителей.

Стрелки для совпадающих лексем не нужно, 
ибо при наличии одинаковых лексем они 
могут показывать кто в лес, кто по дрова, 
переставляя там где можно взять более 
близкие - для такого случая надо сначала 
доделать подбор наиболее похожего 
варианта без lcs. Это - задача на будущее, не к 
этому релизу...

Original comment by oasyc...@gmail.com on 6 May 2015 at 8:42

GoogleCodeExporter commented 9 years ago
Надо сделать, чтобы строки правильного 
типа пересоздавались в enum_analyzer. Сейчас это 
не делается, считается, что это должен 
делать кто-то другой, но это не совсем 
корректно.

Original comment by mamontov...@gmail.com on 13 May 2015 at 10:29

GoogleCodeExporter commented 9 years ago
UPD: Решили переделать так, чтобы string_pair 
создавал  строки соответствующего типа. 
Пока комментарий 14 отменяется.

Original comment by mamontov...@gmail.com on 13 May 2015 at 12:10

GoogleCodeExporter commented 9 years ago
Дмитрий, вы добились пересоздания строк с 
помощью string_pair? 

Original comment by vad23k...@gmail.com on 24 May 2015 at 6:12

GoogleCodeExporter commented 9 years ago
Такой вот тест:    

public function test_validate_enum_syntax_without_sequence_with_lexical() {
        $form = new qtype_correctwriting_edit_form();
        $data = array(

                    'langid' => 3,
                    'isenumanalyzerenabled' => 1,
                    'issyntaxanalyzerenabled' => 1,
                    'islexicalanalyzerenabled' => 1
                );
        $errors = $form::validation($data, $files);
        $expected_errors = [];
        $this->assertEquals($errors,$expected_errors);
    }

Ругается на отсутствие question_edit_form, от 
которого наследуется edit_shortanswer_form. Как 
исправить?

Original comment by vad23k...@gmail.com on 24 May 2015 at 7:45

GoogleCodeExporter commented 9 years ago
На edu.vstu.org все работало, но в репе это 
отсутствует. В ближайшее время думаю 
создать такую репу и сделать, чтобы там оно 
было.

Последнее - очень странно, такое ощущение, 
что что-то с самим Moodle.

Original comment by mamontov...@gmail.com on 24 May 2015 at 8:47

GoogleCodeExporter commented 9 years ago
Создал репозиторий. Вылил в него изменения, 
постарался аккуратно убрать лишние головы 
в репозитории Вадима, см. 
https://code.google.com/r/mamontovdp-correctwriting-release2015/source/browse . 
Тем не менее, не вижу переименований. При 
переименовании, надо учесть новый код  в 
string_pair.php

Original comment by mamontov...@gmail.com on 24 May 2015 at 8:13

GoogleCodeExporter commented 9 years ago
https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/list

Тут лежат переименования.

Original comment by vad23k...@gmail.com on 25 May 2015 at 3:47

GoogleCodeExporter commented 9 years ago
Возник вопрос, по тестам на валидацию, 
никто не взаимодействовал с классами 
контекстов вопросов?

Original comment by vad23k...@gmail.com on 1 Jun 2015 at 10:47

GoogleCodeExporter commented 9 years ago
Это задача блока, он сам не показывает 
некоторые языки в зависимости от контекста 
и настроек для него. Делать на это проверку 
не нужно.

Original comment by mamontov...@gmail.com on 2 Jun 2015 at 5:01

GoogleCodeExporter commented 9 years ago
Нет, дело не в этом для создания формы нужен 
вопрос, категория вопросов и контекст. 
Нашел все, кроме создания контекста.

Original comment by vad23k...@gmail.com on 4 Jun 2015 at 4:55

GoogleCodeExporter commented 9 years ago
Посмотрите, как в блоке это устроено, прям в 
block_formal_langs. Там есть функция update_language_visibility 
или еще как-то - там такое есть.

Original comment by mamontov...@gmail.com on 4 Jun 2015 at 5:05

GoogleCodeExporter commented 9 years ago
В клон добавлены тесты на взаимодействия 
анализаторов, а так же тесты связанные с 
определением перечислений.
https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/list

Вопрос с контестами остается открытым, 
передача в конструктор системного 
контекста не решает ошибки при создании. 
Задал вопрос на moodle.org, жду результата.

Так же на edu.vstu.org добавлены вопросы для 
тестирования ловца перечислений.

Original comment by vad23k...@gmail.com on 7 Jun 2015 at 8:04

GoogleCodeExporter commented 9 years ago

Original comment by oasyc...@gmail.com on 3 Jul 2015 at 8:24