Юнит-тесты на взаимодействие анализаторов
Originally reported on Google Code with ID 346
Необходимо написать юнит-тесты на PHPUnit на взаимодействие анализаторов при различных
ситуациях, когда они включены или нет, для ситуаций, которые не запрещены в документе.
Сам вряд ли могу заняться - сейчас сильно занят.
Кроме этого, надо написать тесты на валидацию формы - это сделаю сам, когда закончу
с другими работами.
Документ с ситуациями: https://docs.google.com/spreadsheets/d/1q8Z8k5TkSlD-EQnVZqGHekVwAgDgyXuqoAVXZBIrlBU/edit?usp=sharing
Reported by mamontov.dp
on 2015-04-22 13:24:21
Comments (26)
-
repo owner -
Account Deactivated По сути это тест на последовательный вызов заданного набора анализаторов, или в вопросе есть какой-то специфический метод, для данной задачи?
Reported by
vad23klev
on 2015-04-22 21:10:00 -
repo owner Функция в классе вопроса есть. Я так понимаю неплохой вариант для начала теста это compare - она как раз получает две строки и ищет результат - см https://code.google.com/r/mamontovdp-mariabirvg-correctwriting2/source/browse/question/type/correctwriting/question.php#409 Но Дмитрий может иметь лучшее предложение по функции. При этом необходимо создать объект вопроса со всеми настройками (в частности теми, которые управляют доступностью матчеров - типа https://code.google.com/r/mamontovdp-mariabirvg-correctwriting2/source/browse/question/type/correctwriting/question.php#117 Соответственно нужно составить такую пару строк, чтобы в ней были ошибки и эффекты от разных видов матчеров (опечатки, перестановка местами элементов перечисления, перемещение лексемы (не относящейся к перечислению), лишняя и отсутствующая лексемы) - и запускать эту пару при различных настройках матчеров, анализируя какие ошибки найдены, а какие - нет (так при отключенном lexical analyzer вместо опечатки будет лишняя и удаленная лексемы и т.д. - см. таблицу на гугльдоке)
Reported by
oasychev
on 2015-04-22 21:28:35 -
repo owner Дмитрий, расшарьте документ гугльдоковский на редактирование хотя бы мне...
Reported by
oasychev
on 2015-04-22 21:29:27 -
repo owner Да, на строки которые написано "запрещено" нужен тест на метод validate для формы редактирования вопроса, что он не пропускает такие комбинации.
Reported by
oasychev
on 2015-04-22 21:30:59 -
Account Deactivated Начата работа над тестами. https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/detail?r=6ff69ec52c76187a1775471186143669f206ae01
Reported by
vad23klev
on 2015-04-26 07:05:35 -
Account Deactivated Начата работа над тестами. https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/detail?r=6ff69ec52c76187a1775471186143669f206ae01
Reported by
vad23klev
on 2015-04-26 07:05:35 -
Account Deleted 1) Название теста очень странное: qtype_correctwriting_common_test может указывать на все что угодно. Лучше переименовать в qtype_correctwriting_analyzers_interaction_test . 2) По поводу кода вида: $this->assertEquals(get_class($question->matchedresults->mistakes()[0]),'qtype_correctwriting_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/question/type/correctwriting/tests/test_mistake_descriptions.php . Только вам вместо текста ошибок, лучше вычислять их количество и проверять сколько ошибок такого типа будет найдено. 3) Когда будут оставшиеся тесты? Там все-таки их не так много надо, с учетом синтаксического анализатора. Технически, даже если делать по одному в день можно за неделю справиться.
Reported by
mamontov.dp
on 2015-05-06 06:23:33 -
Account Deactivated Сегодня, добиваю свой анализатор, что бы он только в определеной связке работал и только с определенными языками и сажусь за тесты. Файл переименую, проверку изменю.
Reported by
vad23klev
on 2015-05-06 06:37:57 -
Account Deleted Хорошо, ок.
Reported by
mamontov.dp
on 2015-05-06 07:18:06 -
Account Deleted Валидация уже реализована в моем клоне, по идее тесты должны проходить.
Reported by
mamontov.dp
on 2015-05-06 14:36:43 -
Account Deleted Извините, а как должна вести себя картинка в случае отключенного анализатора последовательности? Должна ли она вообще показываться?
Reported by
mamontov.dp
on 2015-05-06 14:50:23 -
repo owner По идее должна. Я думаю в этом случае пока можно ограничиться верхней строкой с исправлениями, и нижней под ней со стрелками для случая опечаток/лишних и пропущенных разделителей. Стрелки для совпадающих лексем не нужно, ибо при наличии одинаковых лексем они могут показывать кто в лес, кто по дрова, переставляя там где можно взять более близкие - для такого случая надо сначала доделать подбор наиболее похожего варианта без lcs. Это - задача на будущее, не к этому релизу...
Reported by
oasychev
on 2015-05-06 20:42:58 -
Account Deleted Надо сделать, чтобы строки правильного типа пересоздавались в enum_analyzer. Сейчас это не делается, считается, что это должен делать кто-то другой, но это не совсем корректно.
Reported by
mamontov.dp
on 2015-05-13 10:29:29 -
Account Deleted UPD: Решили переделать так, чтобы string_pair создавал строки соответствующего типа. Пока комментарий 14 отменяется.
Reported by
mamontov.dp
on 2015-05-13 12:10:39 -
Account Deactivated Дмитрий, вы добились пересоздания строк с помощью string_pair?
Reported by
vad23klev
on 2015-05-24 06:12:17 -
Account Deactivated Такой вот тест: 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. Как исправить?
Reported by
vad23klev
on 2015-05-24 07:45:16 -
Account Deleted На edu.vstu.org все работало, но в репе это отсутствует. В ближайшее время думаю создать такую репу и сделать, чтобы там оно было. Последнее - очень странно, такое ощущение, что что-то с самим Moodle.
Reported by
mamontov.dp
on 2015-05-24 08:47:31 -
Account Deleted Создал репозиторий. Вылил в него изменения, постарался аккуратно убрать лишние головы в репозитории Вадима, см. https://code.google.com/r/mamontovdp-correctwriting-release2015/source/browse . Тем не менее, не вижу переименований. При переименовании, надо учесть новый код в string_pair.php
Reported by
mamontov.dp
on 2015-05-24 20:13:13 -
Account Deactivated https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/list Тут лежат переименования.
Reported by
vad23klev
on 2015-05-25 15:47:45 -
Account Deactivated Возник вопрос, по тестам на валидацию, никто не взаимодействовал с классами контекстов вопросов?
Reported by
vad23klev
on 2015-06-01 22:47:03 -
Account Deleted Это задача блока, он сам не показывает некоторые языки в зависимости от контекста и настроек для него. Делать на это проверку не нужно.
Reported by
mamontov.dp
on 2015-06-02 05:01:33 -
Account Deactivated Нет, дело не в этом для создания формы нужен вопрос, категория вопросов и контекст. Нашел все, кроме создания контекста.
Reported by
vad23klev
on 2015-06-04 16:55:58 -
Account Deleted Посмотрите, как в блоке это устроено, прям в block_formal_langs. Там есть функция update_language_visibility или еще как-то - там такое есть.
Reported by
mamontov.dp
on 2015-06-04 17:05:39 -
Account Deactivated В клон добавлены тесты на взаимодействия анализаторов, а так же тесты связанные с определением перечислений. https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/list Вопрос с контестами остается открытым, передача в конструктор системного контекста не решает ошибки при создании. Задал вопрос на moodle.org, жду результата. Так же на edu.vstu.org добавлены вопросы для тестирования ловца перечислений.
Reported by
vad23klev
on 2015-06-07 20:04:48 -
repo owner Reported by
oasychev
on 2015-07-03 20:24:55 - Status changed:Done
- Log in to comment
Reported by
oasychev
on 2015-04-22 14:04:36