|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
TDD: разумно ли ставить ID тесту и помечать им тестируемый участок кода?29.05.2016, 22:46. Показов 916. Ответов 10
Метки нет (Все метки)
Оторвался от учебника по TDD и начал ходить на костылях. Как ни странно, но получается. Хотя, и очень медленно.
В связи с этим такая шальная мысль мелькнула в голове: 1. Берем генератор случайных чисел и генерируем строку, скажем, из 5 символов. Это будет ID. 2. К тесту в комментарии пишем этот ID. 3. И когда будем писать код непосредственно самого проекта, тоже помечаем участок этим ID. Вообще-то говоря, так люди не пишут. Т.е. все проекты, которые я видел, написаны не так. И в учебниках нам говорят - ты пиши код читабельным, и будет тебе хорошо. Но, с другой стороны, я не видел ни одного проекта, сделанного по TDD. Мне кажется, засмеют. Но, опять же, если в будущем поддерживать код, так на крайний случай можно глобальным поиском весь проект прошерстить на предмет этого ID. Ну, мало ли, тест падает, а тупишь - не можешь найти место. Время можно сэкономить. Вообще, я подозреваю, что это идея не очень хорошая. Просто потому, что люди так не пишут. Но - в любом случае - был бы признателен за критику.
0
|
|
| 29.05.2016, 22:46 | |
|
Ответы с готовыми решениями:
10
Объясните участок кода
|
|
14122 / 9341 / 1350
Регистрация: 21.01.2016
Сообщений: 35,099
|
||
| 30.05.2016, 14:57 | ||
|
Название теста должно отображать что он тестирует и как. Ещё желательно, чтобы иерархия исходных кодов тестов повторяла иерархию исходников тестируемого приложения. Тогда не возникнет вопросов, где искать тестируемый код. Да и без этого все современные IDE умеют выполнять поиск по названию класса/метода/переменной.
0
|
||
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 30.05.2016, 15:19 [ТС] | |
|
Не знаю, не знаю. Я не считаю эту идею бредовой. Уж чем-чем, а бредом ее назвать не могу. Почему же она бредовая?
Повышает читаемость кода? Да, повышает. Быстро реализуема? Да, быстрее, чем развернутый комментарий к тесту. Удобно? Возможно, никто просто не пробовал. Вот возьмем, например, в веб-разработке подключение готового модуля. Ну, например, авторизации и регистрации пользователя. Чтобы интегрировать этот модуль, надо эту интеграцию покрыть тестами. Ну, самое простое - а вернет ли http-код 200 при запросе страницы регистрации. Пишем тест с именем test_account_register_status_200. Он, конечно, упадет в ошибку. А вот чтобы тест прошел, надо уже в нескольких местах подшурупить. Во-первых, модуль зарегистрировать, во-вторых, шаблон создать, в третьих указать путь до папки с шаблонами. Вот три места. Когда с нуля пишешь, можно по чуть-чуть идти. А когда тебе бульдозер подвез гору готового кода, тут, знаете ли, можно подумать уже и о прояснении того, что кроется за возвращаемым кодом 200. В общем, бредом как-то я эту идею бы не назвал. А вот с реализацией, не знаю. Я пока не применяю.
0
|
|
|
14122 / 9341 / 1350
Регистрация: 21.01.2016
Сообщений: 35,099
|
|||
| 30.05.2016, 17:21 | |||
|
Kifsif, таки это ерунда полная. Идентификатором теста покрывающего некоторый участок кода будет комбинация имени тестируемого класса с суффиксом "Test" и именем метода отражающим тестируемый метод и логику тестирования. И этого достаточно. И не нужны никакие пятизначные ID в комментариях.
Добавлено через 3 минуты //54395 разом прояснит что-то в коде? Предлагаешь по всему проекту поиск делать, чтобы разобрать что значит это число?
0
|
|||
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 30.05.2016, 17:42 [ТС] | |
|
Ну, вот подключаю я модуль для регистрации юзера.
И хочу написать функциональный тест (т.е. то, что выполняет и видит юзер): если перейти на страничку регистрации юзера и заполнить все поля, то окажешься на странице, где тебя поблагодарят за регистрацию и скажут - иди теперь в свой емейл и активируй учетку. В тесте в регистрационной форме с помощью библиотеки Selenium заполнил все поля и нажал "Зарегистрировать". И тест у меня должен проверить, оказался ли я редиректом на странице с сообщением о регистрации. Такой тест нужно сделать, мне кажется. Это подстрахует - а не отвалился ли модуль при развертывании на продуктивном сервере. Т.е. мы не тестируем чужой код, а тестируем только его интеграцию со своим проектом. Начинаю тест выполнять. И получаю всякие сообщения. Сначала орет: у тебя нет защиты от CSRF, иди, пропиши тег. Прописываю. Потом он орет: у тебя не заданы установки, сколько дней действительна ссылка для активации. Иду, правлю. Потом он орет: не могу отправить е-мейл. Иду, задаю установки для отправки е-мейла. Потом орет: нет шаблона для заголовка е-мейла. Делаю шаблон. Потом: нет шаблона для текста е-мейла. Делаю шаблон. Потом: нет шаблона для самой страницы уведомления о том, что регистрацию мы сделали, теперь пора активировать. Итого, в 6 местах, если не ошибаюсь я ради этого внес правки. Можно было бы отказаться от написания функционального теста сразу и частично покрыть что-то из этого дела юнит-тестами. Например, отпарвку емейлов. Но все равно не все. Ну, а дальше, я думаю, не надо особо углубляться в тестирование. Иначе можно этот модуль регистрации неделю подключать. Может, оно и неплохо. Но на практике - если форма регистрации заработала, значит все нормально. И рассматривать ее нужно уже как черный ящик. Так что тут речь не о том, что можно обойтись юнит-тестом для метода. И вообще, есть стили разработки, принятые в компаниях. Может быть принято писать номер инцидента по багтрекеру. Т.е. когда правишь код, пишешь этот ID в каждом месте, где правил. Так что от написания ID к куску кода никто в обморок не падает. Ну, а тут будет написан ID в шести местах, проблем особых нет - глобальный поиск по всему проекту найдет их все довольно быстро. Чем плохо? Ну, менеджер проекта, если имеет квалификацию и сунет нос, увидит, конечно, что ты что-то писал без тестов. Может наругать. Но для проекта-то это все равно - по крайней мере - не ухудшает качество кода. А улучшить может.
0
|
|
|
14122 / 9341 / 1350
Регистрация: 21.01.2016
Сообщений: 35,099
|
||
| 30.05.2016, 17:56 | ||
|
Kifsif, что-то тебя далеко унесло от мысли изложенной в первом посте. Начал с ID для юнит-тестов, переключился на интеграционное тестирование... Где связь?
Практическая польза от этого какая? Натыкаясь на такую метку вспоминать какой эпичный баг ты исправил тут три месяца назад? Нормальные люди в комментарии к коммиту указывают номер исправленного бага. Если тебе понадобится посмотреть историю правок, то система контроля версий (любая) позволит тебе это сделать. Зачем засорять исходники?
1
|
||
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 30.05.2016, 18:04 [ТС] | |
|
А где в первом посте про юнит-тесты?
Там просто про тесты. А по умной книжке первым тестом пишется функциональный тест. Потом, правда, написано, что надо помаленьку двигаться и юнит-тестами покрывать каждый шажок. А тут-то юнит-тесты зачем? Модуль чужой. Надо просто проверить, хорошо ли он интегрировался с твоим проектом. Так что функционального достаточно. Мне так кажется. Я не претендую на истину. А какие проблемы от засорения исходников комментариями с неким набором номеров тестов. Ну, пусть их там даже будет десяток к одной строчке продуктивного кода. Когда тебе комментарий не нужен, по нему взгляд скользит, не задерживаясь на нем. Так что кого обременит идентификатор теста? Ты только не думай, что я бычу. Такая вот идея, просто. И критика идеи приветствуется. Я не уверен, кстати, что идея жизнеспособна.
0
|
|
|
14122 / 9341 / 1350
Регистрация: 21.01.2016
Сообщений: 35,099
|
||
| 30.05.2016, 18:21 | ||
|
С помощью меток в коде ты пытаешься продублировать существующий функционал - навигацию по коду (позволяет делать любая IDE) и историю изменения кода (позволяет любая система контроля версий). Если бы это что-то давало, то такой подход бы уже давно практиковался.
0
|
||
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 30.05.2016, 18:25 [ТС] | |
|
Да, наверное, ты прав. Кстати подключаемый модуль для регистрации юзера, с которым сейчас вожусь, позволяет тестировать его функционал в проекте. Так что это все, видимо, ни о чем. Ну, так, как учебный материал.
А если не секрет, ты плотно покрываешь код тестами? Просто чтобы понять уровень беседы. А то мало ли, вдруг ты вообще тесты не практикуешь.
0
|
|
|
14122 / 9341 / 1350
Регистрация: 21.01.2016
Сообщений: 35,099
|
||
| 30.05.2016, 18:32 | ||
|
2
|
||
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 30.05.2016, 18:42 [ТС] | |
|
Спасибо за беседу.
0
|
|
| 30.05.2016, 18:42 | |
|
Помогаю со студенческими работами здесь
11
Критический участок кода Упростить участок кода! Объяснить участок кода Зациклился участок кода Перейти в участок кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит:
токи, напряжения и их 1 и 2 производные при t = 0;. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|