Расскажу прохладную былину.
Пасусь я, стало быть, как-то на кодакадеми, пилю задачку.
Допилил.
Работает, отлично.
Потом думаю такой: "Так я ж тестер, как бы мне её поломать?"
Всё по постулатам начал делать. Сначала прикинул набор тестов на позитивные значения, потом на негативные, потом на невозможные.
Ну мне просто - это же я писал, знаю как что там работает.
Начал навешивать защиту от дурака и прочее.
В общем, получилось стабильно работающее, неповоротливый и тормозной мамонт с хардкодом, кучей валидаций и исключений вместо пары десятков строк кода.
И тут я понял, что тестер кодить не должен.
Смотреть код - да.
Понимать - да.
Но сам кодить - нет.
Только в рамках самообразования.
А ещё стало жалко девелоперов и стало понятно почему проще оставить дырку или костыль.
Не исключено, что подобная ситуация у меня получилась исключительно из за близости места произрастания рук к седалищному нерву, но всё же хочется значть ваше мнение.
КПЗ: "Ошибка"
Пасусь я, стало быть, как-то на кодакадеми, пилю задачку.
Допилил.
Работает, отлично.
Потом думаю такой: "Так я ж тестер, как бы мне её поломать?"
Всё по постулатам начал делать. Сначала прикинул набор тестов на позитивные значения, потом на негативные, потом на невозможные.
Ну мне просто - это же я писал, знаю как что там работает.
Начал навешивать защиту от дурака и прочее.
В общем, получилось стабильно работающее, неповоротливый и тормозной мамонт с хардкодом, кучей валидаций и исключений вместо пары десятков строк кода.
И тут я понял, что тестер кодить не должен.
Смотреть код - да.
Понимать - да.
Но сам кодить - нет.
Только в рамках самообразования.
А ещё стало жалко девелоперов и стало понятно почему проще оставить дырку или костыль.
Не исключено, что подобная ситуация у меня получилась исключительно из за близости места произрастания рук к седалищному нерву, но всё же хочется значть ваше мнение.
КПЗ: "Ошибка"
Тестить свой код и тестить чужой - это очень разные вещи :)
ОтветитьУдалитьСпасибо, Кэп! ) Продолжайте наблюдение )
УдалитьДа даже не только тестить, но и просто читать. Но что из этого следует?
Ну дело такое.
ОтветитьУдалитьБинарно говоря, если "получилось стабильно работающее, неповоротливый и тормозной мамонт с хардкодом, кучей валидаций и исключений вместо пары десятков строк кода", значит, плохо сделал.
Деталей не знаю, исхожу из очень общих соображений.
Таки рукожопие? )
УдалитьДеталей нет, поэтому утверждать нечего.
УдалитьИсходи из соображений высокого порядка, вроде "функционал отдельно, описание отдельно, проверки отдельно", и всё такое. Если получился монстр, значит, принцип KISS не работает.
Подумаю над этим.
УдалитьЧто делать, если для тестирования кода нужно писать код?
ОтветитьУдалитьПроектировать код, потом писать код. А в чем был вопрос?
Удалить"И тут я понял, что тестер кодить не должен."
УдалитьВопрос был, что делать тестировщику, если для проведения тестирования ему нужно писать код. Как бы все прозрачно.
Я имел ввиду, что если это сервисный код, то есть служащий для автотестирования или в роли стаба, то да. А если код продуктовый, то нет.
УдалитьПриложение, обрабатывающее все кейсы, сложнее, чем код работающий по основному сценарию? Ну да, факт примечательный, но дальше логическая цепочка у меня обрывается) Если получился неповоротливый и тормозной мамонт с хардкодом - ну, значит плохо написал. Давай код, обсудим, в чем проблема и как можно сделать лучше (если он конечно не на брейнфаке).
ОтветитьУдалитьКод на рубях. Обсуждать нет смысла, потому что он остался фиг знает где )
УдалитьЯ не исключаю вариант, что плохо написал, спорить не буду.
Я к тому, что можно "сервисный код" усложнять до потери пульса, придумывая всё новые и новые кейзы.
Тогда значит руки кривые :) Шучу конечно, но в руби действительно полно фишек, которые делают код значительно более читаемым, тут подходы несколько менее прямолинейные, чем например в джаве.
УдалитьНасчет обработки кейсов - код должен предусматривать все ситуации. Другое дело, что существуют юнит-тесты, стратегии управления исключениями (failfast например), контрактное программирование и другие подходы, которые подсказывают, каким образом управлять валидацией и обработкой исключительных ситуаций. Это скилл программирования - понять, где и как надо обрабатывать редкие кейсы. И чем лучше программист, тем лучше он видит все возможные варианты.
>Насчет обработки кейсов - код должен предусматривать все ситуации
УдалитьВоу, воу, палехщи.
Все ситуации, предусмотренные спецификацией, разумеется. Дискасс?))
Удалить