JavaRush /Java блог /Random /Валидатор, понять и простить
Сергеев Виктор
40 уровень

Валидатор, понять и простить

Статья из группы Random
Даже после окончания курса jr, я все равно иногда захожу сюда, в раздел помощи, чтобы что-то подсказать и помочь. Почти всегда вопрос начинается с фразы «Я все сделал правильно, но валидатор не пускает» или похожей. Именно такие заголовки и заставили меня сюда написать. С этого момента предлагаю принять за правду – валидатор всегда прав. Иногда выскакивают баги, но с каждым разом их все меньше и меньше. Поэтому получая отказ от валидатора предлагаю вам исходить из того, что вы где-то ошиблись. А теперь, чтобы не биться головой о стену, надо начинать осваивать тестирование. На эту тему тут есть несколько статей (JUnit part I JUnit part II). При чем тестировать надо не «удобные случаи». Например, возьмем задачу task1916. Очень часто, после написания решения, люди проверяют на идеальных вариантах. Идеальный вариант проходит, значит можно сдавать задачу. И тут прилетает отказ. Значит что надо сделать? Правильно, написать ещё тестовый пример. А потом ещё один и ещё, пока не пройдет тестирование валидатора. Например, как код отреагирует на пустой второй файл? А на пустой первый? Вот из последних примеров https://javarush.com/help/15861 Вам сейчас важно понять, что разработчик не только пишет код, он должен его протестировать сам, а не надеяться на тестировщика. Если честно, мне до сих пор немного страшно, когда разработка переходит на этап тестирования. Я считаю, что мой код должен работать нормально и ошибок быть не должно. Мне всегда неудобно, если я отдал код, который не работает. Получается, я что-то написал и не проверил, т.е. потратил чье-то время. Конечно, потом на работе у вас будет список требований и у тестировщика вы сможете получить набор тест кейсов вашего ПО и подстроиться под него и будет проще, но я бы на это не рассчитывал. Ваш код – ваша ответственность, а тесты помогают быть уверенным, что все работает как надо. Сейчас у вас есть отличная возможность прокачать скилл тестировщика. Заходя в раздел помощи, не пишите автору ответ в виде кода. Придумайте тестовый пример, который у него не отработает. Таким образом вы прокачаетесь сами и поможете автору не решая задачу за него.
Валидатор, понять и простить - 1
Комментарии (17)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
JaFFar Уровень 15
8 февраля 2022
У валидатора не нравится не информативность,нет конкретики,а лишь сильно поверхностные рекомендации.
vinsler Уровень 35 Expert
14 февраля 2019
Вспоминаю, как я первый раз научился дебажить. ))) Без брекйпойнта правда нельзя. Почитал про классы эквивалентности, пары мин хватило понять, тут же критика, они уменьшают кол-во тестов, но они не проверяют разные значения, которые могут граничить с пограничными. Например нельзя вводить спец символы, в тест пихнем @#!$##$^%$@^#$&, и вуаля тест отрицательный. Однако один символ все же может пройти и только в единичном варианте или другой символ в сочетании с возможным, однако этого нет в тесте, мы же их сократили. ))) Хотя могу ошибаться с пониманием, читал первые пару ссылок с гугла. ))) И кстати да, умение юзать JUnit даст помощь в понимании валидатора на джавараше, но она не даст понимания, почему валидатор не пропускает ваше решение, которое выдает правильные ответы. )
Стас Пасинков Уровень 26 Master
4 февраля 2019
лично я вот вопросы типа "все работает валидацию не проходит" - даже не открываю. там скорее всего что-то неинтересное. то, что уже и так 1000 раз было сказано в других вопросах по этой же задаче. варианты с опечатками, ну или более общий вариант, когда человек не удосужился даже запустить свою задачу перед проверкой и потестить ее сам даже на "хороших" данных - не понимаю зачем мне за него в этом разбираться. насчет хорошего примера - это да, это высший пилотаж))) но лично у меня трудно с примерами) мне проще написать 20 строк текста с объяснением)) это просто быстрее будет, чем придумывать хороший пример)) так что в этом вам завидую, да) я тоже стараюсь, но видимо больше люблю потрындеть, хехе))
Эдуард Уровень 24
4 февраля 2019
С общим смыслом поста согласен. Вначале психовал на валидатор, но потом стал думать на него в последнюю очередь, т.е. если что -то не проходит, то ошибка скорей всего у меня. Но хотел бы затронуть смежную тему, это постановка самой задачи. Иногда вообще не понятно что нужно сделать, такое ощущение, что разработчики данного ресурса некоторые задачи составляли уже на иссякшей фантазией и силами. Но лучше бы сделали задач меньше, но более качество проработали и текст и сам смысл задачи. Пример из недавно решаемых мной: Задача "Знакомство с графами", лично я не очень понял зачем эта задача нам - джунам. Нет, конечно графы интересная штука, но как это к jave относится - не очень понятно. Решение задачи - это просто проимплементить Serializable, тогда зачем нам изучать что такое графы. Или вот еще пример - задачи на логику "Кроссворд", "Алгоритмы-прямоугольники". Для получения решения этой задачи надо пошевелить мозгами, при этом используемый синтаксис, примитивный. Пошевелить мозгами, конечно, тоже надо, но если сравнить сколько времени потрачено на задачу и сколько я получил знаний от этого решения, то лучше бы этой задачи я не решал. Конечно, такие задачи просто пропускать, но я не могу спокойно спать, когда есть не решенные задачи. Думаю некоторые меня поймут Я понимаю, что если мы больше тратим времени на задачу, мы дольше проходим курс, и больше тратим на подписку, и больше разрабатывают создатели данного ресурса. Но если бы разработчики данного ресурса позаботились о моем времени и задачи были проработаны более качественно и я бы при минимальном затраченном времени получал максимум от решения задачи. Я бы за курс готов платить в 2 раза больше
Viacheslav Уровень 3
3 февраля 2019
В копилку плюсов. Есть такой сервис - называется Codility. Через него могут собеседовать, давая задачу. Смысл в том, что для решаемой задачи там тоже есть свой валидатор. Есть некоторые "публичные тесты", вроде тех самых "В правильных условиях работает правильно". Но есть и скрытые, вроде переполнения и т.п. И вот заказчик увидит, пройдёт ли ваше решение все тесты, даже скрытые. Там есть задачи на пробу, учебные. На них можно посмотреть, как может отличаться результат )