SexNbaKef
Ты оптимист
Да такие ошибки х1й потом найдешь
Гамлет
Поэтому ребята, учите TDD
Борисов
Да такие ошибки х1й потом найдешь
И чё ?)) А тикет в багтрекере висеть будет на тебе и дрочить будут тебя ))
Гамлет
Поэтому ребята, учите TDD
И проверяйте функцию даже на абсурдные аргументы
SexNbaKef
И чё ?)) А тикет в багтрекере висеть будет на тебе и дрочить будут тебя ))
Потом QA зае6ет, а ты даже не сможешь понять как получить эту ошибку, ибо у них есть ошибка, а у тебя нет
SexNbaKef
Сколько раз уже было такое
Andrii
Поэтому ребята, учите TDD
TDD тоже не панацея
SexNbaKef
Они там раз 500 вздрочнули модуль, вылезла ошибка и показывают скрины "Каждый раз когда я то-то то-то у меня выскакивает ошибка"
Гамлет
TDD тоже не панацея
Ну бл*ть, ничего не панацея, но надо знать, где говно вылазит, чтобы не сидеть потом и за голову держаться
Andrii
Ну бл*ть, ничего не панацея, но надо знать, где говно вылазит, чтобы не сидеть потом и за голову держаться
Или ты тратишь кучу времени на поддержку тестов, пишешь гигантские моки, а по факту... По факту это не помогло словить ни одного бага, потому слабым было совсем другое место
SexNbaKef
Этим уже QA занимается
SexNbaKef
Найти и показать
Гамлет
Тдд не о том, сначала пишешь тест на функцию, что от нее ждёшь, а потом функцию
Гамлет
Чтобы твой код работал так, как ты хочешь, не надо тут
Andrii
Не говоря о том, что я больше предпочитаю функциональные тесты, в TDD тестируется один метод, и очень часто это ничего не даёт, потому что ошибкт во взаимодействии методов
Andrii
Тдд не о том, сначала пишешь тест на функцию, что от нее ждёшь, а потом функцию
А у тебя функция требует огромной предварительной работы по созданию контекста, в котором она вызывается :)
Andrii
И это не говоря о том, что даже сигнатура функции меняется при разработке
Гамлет
Такое слабо работает на больших проектах
Ты в больших проектах работал?
Andrii
Ты в больших проектах работал?
AMD, разработка видеодрайверов, большой проект?
Гамлет
Пишите говнокод, а потом стопятьсот вариаций на вход пихать
Andrii
Я не тебе
Я тоже готов подписаться, что на больших проектах TDD слабо применимо :)
SexNbaKef
Ты в больших проектах работал?
У меня проекты по 5-10 лет
SexNbaKef
Это считается большим?
Гамлет
Типикал крестоносцы короче
Andrii
Это считается большим?
Скорее больше тысячи разрабов или меньше?
Борисов
А ещё есть обращение по невыровненному указателю...
Andrii
А ещё есть обращение по невыровненному указателю...
За троеточиями может скрываться что угодно. Но телепаты в отпуске.
Гамлет
Я с вами на счёт тестов готов до утра спорить. Не дело без тестов проект делать, не надо херню ребятам в голову пихать
Борисов
https://habr.com/ru/post/309144/
Гамлет
Плодите говнокодеров только потому что привыкли лбом грабли ловить
Гамлет
Ты говоришь конкретно про TDD, а не про тесты
У тдд полезный принцип, я не призываю весь тдд юзать
Гамлет
Писать тест, до функционала
Konstantin
Кстати, кто в такой же жопе как и я и не может работать официально, работодатель с радостью оформит вас в чёрную)
А абсолютного нуля возьмете за спасибо на подработку по вечерам? Практика нужна
Andrii
У тдд полезный принцип, я не призываю весь тдд юзать
± Было бы полезно — использовалось бы чаще. На практике я такого почти не встречал. И чаще тесты пишутся после того, как под приведён в чувство. Потому что ты можешь потратить кучу времени на написание теста, а потом выяснится, что либа не поддерживает такой способ и надо делать по другому :)
SexNbaKef
Типикал крестоносцы короче
Это считается большим проектом?
Гамлет
Это считается большим проектом?
Да, молодец, но плохие практики и в крупных проектах бывают
Гамлет
Накопите технического долга до жопы, а потом думаете что процесс разработки так и должен проходить везде
SexNbaKef
У меня тех долг е6ать его в сраку
SexNbaKef
1 из них я веду целиком
SexNbaKef
От и до
Гамлет
Так потому что в привычку это никто не ставил, когда приходит в привычку это много времени не занимает
Я в другом чате обсуждал уже тему тестов, и мы пришли к выводу что написание тестов это привычка, а написание хороших - навык, поэтому не нужно пренебрегать этим, никто с рождения не пишет тесты, надо нарабатывать этот навык, чтобы очко не болело
Maksim Pozharskiy
Для этого нанимают QA
QA нанимают для сквозных e2e тестов и нагрузки, а не для юнити тестов
SexNbaKef
Да, можно написать пару тестов, чтобы убедиться в корректности алгоритма, но это максимум
Гамлет
Для этого нанимают QA
Кюэй должен остальные не очевидные баги искать, а не косяки в аргументах
Гамлет
QA нужен, чтобы ловить баги до юзера
SexNbaKef
Придумал алгоритм - он работает. QA проверяет, все ли четко работает
SexNbaKef
Им код на х1й не нужен
Гамлет
Может он за вас ещё и отрефакторит код и отдебажжит, чё за бреж
Maksim Pozharskiy
Andrii
Так потому что в привычку это никто не ставил, когда приходит в привычку это много времени не занимает
Занимает по той причине, что надо воссоздать контекст. Например, алгоритм танцующих связей. Допустим функция шага вглубину. Чтобы написать тест, тебе надо сформировать сетку из двусвязных двунаправленных списков. Например, так https://i.imgur.com/f7z8hSa.png И ты запросто может допустить ошибку в коде, который создаёт эту сетку, поэтому тебе надо начать с теста на метод, который создаст эту сетку. И т. п.
SexNbaKef
QA не проверяет алгоритм твоей функции
Зависит о каком мы направлении разработки говорим
Maksim Pozharskiy
Зависит о каком мы направлении разработки говорим
И в каком по вашему направление QA проверяет алгоритм функции которой написал разработчик?
Гамлет
Andrii
QA не проверяет алгоритм твоей функции
Всё относительно... Если железка работает трое суток, если твоя функция вызвалась несколько миллиардов раз с разными параметрами, если фича работает так как надо, то... А писать юнит тест... Ну как минимум надо писать мок объект «ядро Linux + драйвера Quallcom»
Andrii
Ну так юнит тест разраб пишет, а не QA, не зависимо от направления разработки
Я понимаю, но как ты напишешь unit-тест в такой ситуации? Допустим у тебя метод 50 строк, из них вызовы ядра Linux штук 10, и ещё штук пять обращение к драйверам Quallcom для данного конкретного чипа. Как написать unit тест для этого метода???
Andrii
И это не говоря о том, что у тебя есть несколько типов железок, которые определяются разным набором дефайнов
SexNbaKef
И в каком по вашему направление QA проверяет алгоритм функции которой написал разработчик?
Я не говорил, что QA проверяет алгоритм функции. Я говорю, они проверяют, что все работает норм и без ошибок. Если я пишу промышленный софт, например, для конструкторов, какую-то кнопку в САПРе, как QA должен понять, что она работает? Мы очень много работает с QA, они в свою очередь берут кейсы у заказчиков и мы проверяем корректность выполнения модуля, если идут какие-то вычислительные действия
SexNbaKef
Это же не unit тестирование
Мы здесь уже про QA начали говорить
SexNbaKef
Это же не unit тестирование
Я говорю про бизнес-кейсы
Борисов
Я заметил )) QA занимается автоматизацией тестирования, функциональным тестированием. А TDD и unit-тесты это из другой оперы
Andrii
Вот ещё пример https://github.com/warmcat/libwebsockets/blob/main/minimal-examples/ws-server/minimal-ws-server-threadpool/protocol_lws_minimal_threadpool.c#L155 Напишите юнит-тест на этот метод :)
SexNbaKef
Я столько времени нахожусь в дебаге, что мне даже тесты не нужны
Гамлет
Я столько времени нахожусь в дебаге, что мне даже тесты не нужны
О чём я и говорил, привыкший ловить грабли лбом, против пули устоит
Andrii
Я заметил )) QA занимается автоматизацией тестирования, функциональным тестированием. А TDD и unit-тесты это из другой оперы
Функциональным тестированием и программист часто занимается. Например, есть скрипт, который автоматически поднимает клиент-сервер с нужными параметрами. И ты его поддерживаешь и запускаешь в разработке