[Test] public void ld_Getter_Returns_ld() var sut = new PropertyBag(); sut.ld = 42; var result = / it-юмор :: комикс :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek комикс 
[Test]
public void ld_Getter_Returns_ld()
var sut = new PropertyBag(); sut.ld = 42;
var result = sut.ld; Assert.AreEqual(result, 42)
у/Ь/Х у / У/>'7 Л
	
	риЬПс Ргоре11уВад //ип1еБ1ес1 риЬПс ¡п1 \6 {деЬвеЬ} }
У	*'/У/1+7/}
Дэйв с точностью до минуты помнил момент, когда ему стало
Подробнее
[Test] public void ld_Getter_Returns_ld() var sut = new PropertyBag(); sut.ld = 42; var result = sut.ld; Assert.AreEqual(result, 42) у/Ь/Х у / У/>'7 Л риЬПс Ргоре11уВад //ип1еБ1ес1 риЬПс ¡п1 \6 {деЬвеЬ} } У *'/У/1+7/} Дэйв с точностью до минуты помнил момент, когда ему стало плевать.
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,комикс
Еще на тему
Развернуть
- юнит чего ? *пуш в прод
Есть такая очешуенная книга, и в ней сказано:

-Тестируется изменение публично доступного состояния с какой-то внутренней логикой. DTO-шки тестить смысла нет.
-Тестируется факт вызова методов сервисов что меняют состояние этих сервисов. Методы сервисов которые что-то возвращщают (get-методы) лучше не тестировать а мокать.
- В некоторых случаях надо тестировать последовательность вызовов методов для недопущщения определенных багов

Это сильно упрощщало написание юнит-тестов на проэкте. Рекомендую к прочтению
сство автономного тестирования
с примерами на C#
drovoseg drovoseg 19.01.202422:50 ответить ссылка 12.7
А у нас есть менеджер, который сказал "Хочу 100% покрытие юнит-тестами, и ниипёт".
Менеджер обычно говорит хочу фичу побыстрее и не ебет. У вас какой-то странный менеджер
drovoseg drovoseg 19.01.202423:22 ответить ссылка 21.3
На аутсорсе у заказчика есть опция "100% покрытие тестами". Заказчик захотел - и ниипёт.
Ни ногой в аутсорс.
Я 8 лет работаю в оутсорсах разной степени оутсорсности. Всегда хотели вперед фичи, даже в ущерб поддерживаемости
А вообще правильное условие - процент покрытия не должен падать. Так будет покрываться новый кол и постепенно покроется старый
drovoseg drovoseg 19.01.202423:35 ответить ссылка -1.5
У знакомого на проекте в аутсорсе даже не выделяется время на тесты. Тестируют всё тестировщики на тест-стенде и ниипёт
Хороший тестировщик покроет проект тестами как бык овцу. Автотесты это бесконечное тестирование прошлого, в то время как система в новых условиях встает в новые позы.
roddyb roddyb 20.01.202402:11 ответить ссылка 2.7
Вот уже шестой год работаю без тестов. Тесты видел лишь на видео.
У меня в игре пока пользователи в постоянно лагающей игре платят 1500$ в день никто про тесты не думает. Наняли QA и он один должен покрыть все механики, 6 платформ.
За пол года что я здесь постоянные фиксы и игра из нового контента видела только battle pass
У нас менеджер говорит - "У нас скоро релиз, но клиент попросил еще пару фич, вот пацаны ведро тикетов, до пятницы надо сделать. Я не настаиваю, но кто хочет может по овертаймить."

если овертаймы не оплачиваются с повышенным рейтом - менеджер идёт нахуй

оплачиваются, но нахуй они нужны. Всё равно релиз перенесут
для этого пишут правила для подсчёта покрытия
чтобы было 100% покрытие только нужного кода
Какой то ООП-шовинизм
ХЗ как там у функциональщиков
Хуяк-хуяк автономное тестирование
krto krto 19.01.202423:56 ответить ссылка 4.6
НУ НАХУЙ!
/
БУДУ ПРОСТИТУТКОЙ
ar.reactor.cc
Mirt4 Mirt4 20.01.202400:25 ответить ссылка 4.8
По-хорошему все методы, вызываемые из тестируемого метода надо мокать.
что понимаешь под "мокать"? Я имел ввиду под "мокать" что метод сервиса должен возвращщать осмысленный результат при прохождении теста. По дефолту они все замоканы потому-что выполняются и не падают
Мокать - значит мокать. Даже если твой метод ничего не возвращает при вызове из тестируемого метода, он должен быть замокан, по той простой причине, что если ты не замокаешь вызываемый метод, то у тебя может упасть тест метода в котором ты не делал изменений, а это нарушает правило тестирования метода.
Все современные либы для мокирования (NSubstitute, Moq) мокают переданный интерфейс по дефолту создавая непадающщие моки. Так что не актуально уже
О, я не знал, что тут только о дотнетах.
НО, если говорить не только о них, то правила таки актуальны, - как минимум в случае, когда у тебя ынтерпрайз и есть четко регламентированные версии библиотек. У меня сейчас как раз такая история - текущая версия не умеет отличать методы суперклассов и мокать их. Следующая версия умеет - но ее из соображений безопасности нам совсем нельзя. Собака.jpgЕбитесь.
Так и знал, что тестеры ничо не делают, а только коые с плюшками гоняют.
В каждой шутке.... Но, да, покрыв весь код тестами втч интеграционными разработка снижает расходы на регресс, и, следовательно, серьезно повышает таймтумаркет. Все довольные.
НО на первых этапах надо попотеть, да)
Зато как Дейв чинил прод базы без бекапа 9 часов подряд он не помнил. Ведь после этого наебенился в хлам.

П.с. 100% покрытие не оправдываю, но любители "я же точно знаю что без багов сделал", и "стоолько времени эти тесты пишутся, ну их нах" должны гореть
SealTecH SealTecH 19.01.202423:21 ответить ссылка -0.7
Не надо меня гореть..
lumen lumen 19.01.202423:34 ответить ссылка 5.1
Да Люмен больше и не горит, да
В смысле? Иначе скучно жить
Откуда ты это сказал?
N3661 N3661 20.01.202401:34 ответить ссылка 1.0
Ну покрытие юнит тестами тебя ни от чего серьезного не спасет. Нужно писать нормальные интеграционные и e2e тесты.
Как человек, который писал довольно сложную хуйню и проверял полностью тестами в отсутсвие реального железа, под которое она предназначена, а потом ошибки были только "не на нашей стороне" не могу согласиться. Юнит тесты от много чего спасают, особенно, от корнер-кейсов.

Моя личная философия тестирования:
1. Юнит тест больше всего необходим на этапе разработки модуля, потому что тесировать модуль, расположенный глубоко в кишках через внешний интерфейс всей системы может быть
а) не удобно, тестировать модуль через внешний интерфейс и сто абстракций - это так же удобно, как азиат, рисующий пятиметровой кистью
б) не все корнер-кейсы через этот внешний интерфейс системы вообще могут возникнуть.

Вот пример из моей области глубокой системщины. Иногда возникает ситуация, когда невозможнотсь выделить нужный объем памяти - это норма, и это нужно обработать. Поэтому да, мы мокаем malloc() и пишем тест.

2. Юнит тест фиксирует контракт модуля

3. Юнит тест тестирует негативные сценарии и корнер-кейсы

4. Модулем (юнитом) может быть разное. Это не обязательно всегда ровно одна функция или один класс, это может быть несколько классов, объединенных в логический модуль, несколько модулей и так далее, главное, чтобы это был законченный модуль с внешним интерфейсом. Ключевая особенность юнит-теста - они не зависят от состояния внешнего мира (от запросов, от баз данных итп).
а) Например, ты можешь протестировать некую структуру данных одим юнит тестом, а в другом юнит-тесте тестировать некую более сложную штуку, которая использует эту структуру данных. Конечно же,тебе не нужно мокать эту структуру, это будет треш.
б) Желательно, чтобы внешний мир в систему приходил через интерфейс, а не использовался где-то в кишах. Я сишник, я могу замокать любой вызов любой функции, мне не нужны интерфейсы, но это всрато

А поверх этого уже интеграционные тесты - вся система целиком в связи с внешним миром (возможно, тестовым). Таких тестов уже не напишешь так много, как юнитов, они более дорогие по написанию и выполнению, ими не пролезешь в каждую щель и не протестируешь разные корнер кейсы. Оин в целом дают понимание, что система работает.
клёвое описание, спасибо. Жаль что всякие пхп макаки типа меня юнит тесты только для саморазвития писали. Недавно специально искал более-менее серьёзную контору, с отлаженными процессами, где смогу развиваться, в итоге в первую же неделю выдали доступы от боя и её срм и отправили фиксить баг (да-да, не ловить, а сразу фиксить). Пиздос, но такова отрасль
Laaru Laaru 20.01.202409:37 ответить ссылка 0.1
"Юнит тест фиксирует контракт модуля" - вот это - самый жирный плюс юнит теста. Это означает что создается по факту самопроверяющая база данных о том как должна работать система, а это значит что даже когда с проэкта уйдут все кто его создавал - юнит тесты останутся и при изменениях укажут на баги которые возникнут или скажут что все ок. Ручного регрессионного тестирования на это не напасешься, тестировщики сами не помнят абсолютно всех кейсов, к тому же они могут проверить только с точки зрения пользователя. В итоге без юнит тестов проэкт переходит в состояние "одно фиксим, второе ломаем"
Спасибо, это очень важное дополнение про регрессии при изменениях. Вообще, код, не покрытый тестами и не запускающийся, имеет свойство протухать и приходить в неработоспособное состояние. Мне недавно на тест несколько железок на работе дали, на которых тесты не гоняются. Ну и что думаете? Конечно же на них нашлись баги уровня "нихуя не работает".
Мне тут даже добавить нечего. Для меня юнит тесты прежде всего - инструмент разработчика. Сложные контракты, модули без сайд эффектов, добиться 100% edge cases.

Но без интеграционных тестов нет уверенности в работе системы да и рефакторить невозможно.
Простите, не мог бы кто-то пояснить для смертных суть шутки?
beiznik beiznik 19.01.202423:40 ответить ссылка 2.6
Утебя есть черепаха. Ты построил огромный конвеер для помещения черепахи в коробку, а также детектор нахождентя черепахи внутри коробки. Ты помещаешь черепаху в коробку чтобы серез секунду проверить наличие черепахи в коробке. Бессмысленно - черепаха не могла выпрыгнуть из коробки но ты заебался выстраивать весть механизм
Проверка штуки в два раза больше самой штуки
Кода юнит тестов обычно в 3 раза больше самого тестируемого кода
... то есть почти всегда если их вообще писали?
Да
Что-то из разряда: берешь пустую коробку, кладешь туда два яблока, закрываешь коробку. Сразу же после этого проверяешь, что в коробке два яблока. Нужно разве что если ты не доверяешь реальности (ну или языку программирования в посте)
ligery ligery 20.01.202400:12 ответить ссылка 5.0
Разве ценность тестов не в возможности легко проверять функционал изменённого кода?
То есть теперь можно менять этот класс как угодно, хранить это Id каким попало образом, шифровать его, отправлять голубями в башню с драконами - и после каждого такого усовершенствования быстро тестить, правильно Id хранится или нет.
А её, эту реальность, кто-то оттестировал, чтобы я ей доверял? То-то же... :)
Начальство бесоёбит, требуя увеличить показатели. Показатели увеличивать неоткуда, все что можно ужк сделано, , разве что начать страдать херней, например когда как в армии красят траву зеленой краской. На картинке он написал автоматический тест для программного кода, где, как мне кажется, назначил чему то порядковый номер 42 и тест проверяет что этот вшитый в код номер равен 42. Еще десяток подобных тестов и у него будет нужно количество, которое удовлетворит начальство.
А в чём прикол? Начальство хочет хуйню, программист делает хуйню. Всё по ТЗ. Абсолютно бытовая ситуация. Где смеяться? На что ему стало похуй?
Шутка про индусский код где оплата зависит от количества строк в коде или от количества найденных/исправленных багов ("Пойду ка я накодю себе на новую машину")
Ну, почему бы и нет, в конце концов. Благодаря копилоту очевидные тесты сейчас можно писать вообще не приходя в сознание.
xgffy xgffy 20.01.202400:10 ответить ссылка 2.3
Без тестов писал и буду писать. Сейчас сеньор в ЕС, берегитесь
Vladoss7 Vladoss7 20.01.202400:47 ответить ссылка 2.9
+1 такой.
roddyb roddyb 20.01.202402:13 ответить ссылка 1.1
Ты пишешь под ЕС ЭВМ?
ExcludeFromCodeCoverageAttribute в помощь)
jb_usb jb_usb 20.01.202408:37 ответить ссылка 1.1
И, кстати, ИИ можно использовать как помощника. Если довольно простую функцию надо написать, то какой-нибудь ChatGPT справится с этим на ура ещё и тестов по просьбе напишет сносных. Так, к примеру, за час можно либо самому руками набить функцию, либо сгенерировать шаблон + тесты к нему в ChatGPT)
jb_usb jb_usb 20.01.202408:49 ответить ссылка 0.0
Только профессиональная литература рекомендует делать наоборот: сначала писать тест, и в нём определить контракт метода, а потом силами IDE сгенерить метод по этому контракту и написать в него нужный код.
О! А что за литература такая? Будьте любезны ткнуть палецем:)
Btw, да, сигнатуры методов ИИ выбирает своевольно, но его можно попросить изменить сигнатуру на нужную постфактум и все равно он сгенерит сносный метод.
jb_usb jb_usb 21.01.202416:36 ответить ссылка 0.0
Боб Мартин, "Чистый код" и "Чистая архитектура".
Пардоньте, я думал книга об ИИ и как его эффективно использовать в разработке. Эти книги, конечно же читал:) спасибо:)
jb_usb jb_usb 22.01.202418:35 ответить ссылка 0.0
С практической точки зрения, в жопу ваш DDD. Если это не игрушечный пример со сложением двух чисел, то это совершенно неудобно. Когда ты пишешь модуль, ты примерноп понимаешь, но сразу безошибочно контракт представить вряд ли получится всегда. Потому что твой модуль может потребовать разные данные/объекты/служебные штуки/итп итд, и контракт в деталях меняется. Если, коненчо, контракт строго не утсановлен заранее.
Простите, TDD
Мне кажется, что в реальном мире, где в команде над проектом трудиться более 4х разработчиков, мало кто использует чистый TDD. Т.к. кто-то точно не умеет в тдд, кто-то делает это плохо, кто-то делает "так как будто это было тдд". И т.д. в итоге, тот кто умеет в тдд просто скатывается в написание текстов за всеми. А доделывать чью-то работу в режиме нон-стоп вряд-ли кто-то хочет) в итоге все просто пишут код, покрытый тестами в "разумном и достаточном объеме".
jb_usb jb_usb 22.01.202418:53 ответить ссылка 0.0
В реальном мире мало кто использует любую чистую методологию. Потому что в реальном мире времени на выполнение задач обычно меньше, чем нужно для использования любой методологии. За исключением методологии "хуяк-хуяк и в продакшен", конечно же.
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Тренды

Похожие посты

\J\J
Cycle number
Package film HCA/C-Li anode
Separator Al foil
Cathode material
400 H
O)
300 J

(/>
c
<D
"O
>%
E>
<D
C
LU
200 H
100J
0
Total capacity = 610 mAh N/P = 1.0.E/C ratio = 3.0 g Ah 1
TÔ
20
0
Cy
подробнее»

репост с 3DNEWS новости электромобили geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор

 \J\J Cycle number Package film HCA/C-Li anode Separator Al foil Cathode material 400 H O) 300 J (/> c <D "O >% E> <D C LU 200 H 100J 0 Total capacity = 610 mAh N/P = 1.0.E/C ratio = 3.0 g Ah 1 TÔ 20 0 Cy
Joyreactor I© ICQ Official О
ICQ Official (Щ	70105	
(0) Позвонить © Отправить SMS © Видеозвонок & Пригласить в чат		В
Ш ICQ Official (15:15:50 21/12/2018) С 28 декабря мы перестаём поддерживать старые версии ICQ и другие неофициальные клиенты. Чтобы продолжить общение, вам необходимо обновить IC
подробнее»

icq geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор новости

Joyreactor I© ICQ Official О ICQ Official (Щ 70105 (0) Позвонить © Отправить SMS © Видеозвонок & Пригласить в чат В Ш ICQ Official (15:15:50 21/12/2018) С 28 декабря мы перестаём поддерживать старые версии ICQ и другие неофициальные клиенты. Чтобы продолжить общение, вам необходимо обновить IC
WHO UPDATED ALL THE DEPENDENCIES AT ONCE?
©GARABATO ICID Ну что. Привет, реактор!
Второй урок по Яве(Джаве).
Сегодня мы будем учить условия, циклы и создание функций.
Будем работать в консольке, как её открыть - я описал в прошлом уроке. Привязывать графику пока рановато ;).
Что мы будем сегодня делать?
Мы выведем небольшое вступление, потом числа Ф
подробнее»

java уроки программирование geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор много текста длиннопост как получить минусы как получить плюсы public static void Кодинг разное

Ну что. Привет, реактор! Второй урок по Яве(Джаве). Сегодня мы будем учить условия, циклы и создание функций. Будем работать в консольке, как её открыть - я описал в прошлом уроке. Привязывать графику пока рановато ;). Что мы будем сегодня делать? Мы выведем небольшое вступление, потом числа Ф