Предположим, валидатор при отправке задач на проверку явно указывал, скажем, причину, по которой задача не проходит проверку. Т.е. не просто "не прошла тестирование", в явном виде указывать, что не так.
Одна из самых частых проблем это "мой код отрабатывает правильно, но не проходит проверку, как так?". Когда люди пишут "отрабатывает правильно", иногда это им только кажется. Но бывают случаи, когда действительно вроде все ровно, но проверку не проходит.
JavaRush
/Java блог
/Архив info.javarush
/Нужно ли сделать более разнообразными ответы валидатора п...
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Ну, тем не менее, все же по своему вопрос интересный.
Чтобы не избаловать студентов готовыми тестами и приучить тестировать программы самим перед отправкой, можно функцию детализации по тестам включать после скажем, третьей попытки сдать задачу Кто заботится о своем рейтинге по задачам, будет стараться тщательно тестировать и сдать задачу в первые попытки, а когда уже три-четыре раза сервер задачу не принял, уже начинает копиться раздражение «что же ему еще не хватает?!», вот тут как раз и подоспеет ответ.
Чем мне и нравится программирование(я закончил МГУ факультет психологии), что ты не можешь заниматься словесными спекуляцией на тему материализма/идеализма с валидатором и компилятором. Либо ты пишешь правильно, либо нет.
На счет раздражение: смотрел курс Stanforda по Java. Там индус читает. Он сказал, что самое ужасное, что ты можешь сделать, когда у тебя есть баг, это паниковать.
Что касается нюансов — на них как раз тратится много времени: на то, чтобы переключиться на форум, чтобы найти темы (иногда десятки тем по одной задаче), чтобы в сотне комментов найти упоминание релевантного твоему случая, изучая тонны чужого кода. Да, тоже навык, но смежный для программиста и от этих нюансов можно было бы избавиться. Задания на гугление и поиск информации всё-таки в курсе отдельно присутствуют, чтобы еще и в задачах неявно это требовать.
ЗЫ: сейчас прошел почти 26 уровней,
не решенане сдана одна задача — bonus3 на 18 уровне (crud2)А какие именно затруднения у вас вызвала задача crud2? При правильной реализации первой версии (что настоятельно рекомендуется авторами) со второй проблем возникнуть не должно.
В этой теме я несколько раз писал о самой распространенной ошибке в первой задаче. Вот здесь краткое ее описание, а здесь примеры моего кода.
Во второй задаче требуется несколько раз вызвать методы аналогичные методам из первой задачи и все.
Если будут вопросы — задавайте, либо в соответствующей теме, либо в личку.
Сейчас я на 18-м уровне, имею 77 кораблей и 30 единиц тёмной материи — ресурсы, вроде, избыточны для прохождения игры.
Некоторые задачи вызывают у меня затруднения, которые можно было бы решить быстрее, будь у меня знания, какие тесты не проходятся.
Лучше всего тестить программу самому и если уж все хорошо, и результат такой какой должен быть, тогда уже пробовать сдавать её. Зачастую просматривая топики, вижу задачи, которые люди сами себе усложняют, чёто сами придумывают, какие то проверки, и т.д. короче код который решается в несколько строк растягивают до невозможного. Дробите задачу на небольшие задачки, и решайте постепенно, шаг за шагом.
Бывают моменты когда на 100% уверен, что решил правильно, а не принимается. Но лично я занимаясь по этому курсу понял одну истину. Если не приняло значит 100% накосячил. И когда находишь свою ошибку это чувство удовлетворения не передать. Вот на начальных уровнях такое кажется есть, когда решаешь задачу онлайн. Там вроде бы пишут, забыли поставить ";" или ")" или «пробел». Мне кается этого достаточно, т.к. если валидатор будет вам ещё и отправлять смс где что-то не так, тогда знаний меньше будете получать.
P.S.Кстати есть ещё дебагер вот им ещё нужно научится пользоваться!!!
Спустя 2-5 минут после отправки на сайт zip с кодом (в этом аспекте у JavaRush лучше) напротив записи с попыткой появляется процент прохождения, например, 88.54% и появляется кнопка для просмотра подробного отчета. Там представлен полный лог тестирования: соответствие представленных проверке классов запрошенному API (набор публичных методов и полей должен соответствовать заданию, не должно быть лишних публичных полей и методов), лог findbugs, лог checkstyle, несколько групп тестов: на функциональность, на граничные значения (показываются входные данные, ожидаемый и фактический результат, процент прошедших тестов); на потребление памяти, на время выполнения (несколько тестов с разным объемом входных данных, ожидаемые и фактические значения занимаемой памяти и затраченного на работу времени).
Причем при ошибках API или findbugs далее тестирование не проводится, выставляется результат 0%.
В-общем, после выставления оценки можно четко понять, какие аспекты задачи не проработаны или проработаны недостаточно: не учтены граничные случаи (передача в параметре null, массива из 0 элементов, пустой строки, граничных значений Integer и т.п.), некоторые рабочие случаи, работает ли программа неприлично медленно или жрёт памяти как не в себя.
Понимаю, что там задач всего 12 штук (правда, объемных) на целый курс, а тут более 1000, также понимаю, что при фиксированных тестовых данных никто не помешает сдать задачу простым «switch(input) {case input1: output expected1; break; ...}», но в этом направлении можно попробовать подумать — получается очень ценный feedback.
Чтобы не позволить сдать задачу простым хардкодом, можно тестовые данные генерить автоматически, делать более «интеллектуальные» тесты.