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

Issue #346 closed
Former user created an issue

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)

  1. Oleg Sychev repo owner
    Я думаю в первом наборе нам нужно без syntax_analyzer чтобы к релизу было.
    

    Reported by oasychev on 2015-04-22 14:04:36

  2. Вадим Клевцов Account Deactivated
    По сути это тест на последовательный вызов заданного набора анализаторов, или в вопросе
    есть какой-то специфический метод, для данной задачи? 
    

    Reported by vad23klev on 2015-04-22 21:10:00

  3. Oleg Sychev 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

  4. Oleg Sychev repo owner
    Дмитрий, расшарьте документ гугльдоковский на редактирование хотя бы мне...
    

    Reported by oasychev on 2015-04-22 21:29:27

  5. Oleg Sychev repo owner
    Да, на строки которые написано "запрещено" нужен тест на метод validate для формы редактирования
    вопроса, что он не пропускает такие комбинации.
    

    Reported by oasychev on 2015-04-22 21:30:59

  6. Вадим Клевцов 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

  7. Вадим Клевцов 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

  8. Former user 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

  9. Вадим Клевцов Account Deactivated
    Сегодня, добиваю свой анализатор, что бы он только в определеной связке работал и только
    с определенными языками и сажусь за тесты. Файл переименую, проверку изменю.
    

    Reported by vad23klev on 2015-05-06 06:37:57

  10. Former user Account Deleted
    Валидация уже реализована в моем клоне, по идее тесты должны проходить.
    

    Reported by mamontov.dp on 2015-05-06 14:36:43

  11. Former user Account Deleted
    Извините, а как должна вести себя картинка в случае отключенного анализатора последовательности?
    Должна ли она вообще показываться?
    

    Reported by mamontov.dp on 2015-05-06 14:50:23

  12. Oleg Sychev repo owner
    По идее должна. 
    
    Я думаю в этом случае пока можно ограничиться верхней строкой с исправлениями, и нижней
    под ней со стрелками для случая опечаток/лишних и пропущенных разделителей.
    
    Стрелки для совпадающих лексем не нужно, ибо при наличии одинаковых лексем они могут
    показывать кто в лес, кто по дрова, переставляя там где можно взять более близкие -
    для такого случая надо сначала доделать подбор наиболее похожего варианта без lcs.
    Это - задача на будущее, не к этому релизу...
    

    Reported by oasychev on 2015-05-06 20:42:58

  13. Former user Account Deleted
    Надо сделать, чтобы строки правильного типа пересоздавались в enum_analyzer. Сейчас
    это не делается, считается, что это должен делать кто-то другой, но это не совсем корректно.
    

    Reported by mamontov.dp on 2015-05-13 10:29:29

  14. Former user Account Deleted
    UPD: Решили переделать так, чтобы string_pair создавал  строки соответствующего типа.
    Пока комментарий 14 отменяется.
    

    Reported by mamontov.dp on 2015-05-13 12:10:39

  15. Вадим Клевцов Account Deactivated
    Дмитрий, вы добились пересоздания строк с помощью string_pair? 
    

    Reported by vad23klev on 2015-05-24 06:12:17

  16. Вадим Клевцов 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

  17. Former user Account Deleted
    На edu.vstu.org все работало, но в репе это отсутствует. В ближайшее время думаю создать
    такую репу и сделать, чтобы там оно было.
    
    Последнее - очень странно, такое ощущение, что что-то с самим Moodle.
    

    Reported by mamontov.dp on 2015-05-24 08:47:31

  18. Former user 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

  19. Вадим Клевцов Account Deactivated
    https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/list
    
    Тут лежат переименования.
    

    Reported by vad23klev on 2015-05-25 15:47:45

  20. Вадим Клевцов Account Deactivated
    Возник вопрос, по тестам на валидацию, никто не взаимодействовал с классами контекстов
    вопросов?
    

    Reported by vad23klev on 2015-06-01 22:47:03

  21. Former user Account Deleted
    Это задача блока, он сам не показывает некоторые языки в зависимости от контекста и
    настроек для него. Делать на это проверку не нужно.
    

    Reported by mamontov.dp on 2015-06-02 05:01:33

  22. Вадим Клевцов Account Deactivated
    Нет, дело не в этом для создания формы нужен вопрос, категория вопросов и контекст.
    Нашел все, кроме создания контекста.
    

    Reported by vad23klev on 2015-06-04 16:55:58

  23. Former user Account Deleted
    Посмотрите, как в блоке это устроено, прям в block_formal_langs. Там есть функция update_language_visibility
    или еще как-то - там такое есть.
    

    Reported by mamontov.dp on 2015-06-04 17:05:39

  24. Вадим Клевцов 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

  25. Log in to comment