Павел
Но я не "За" :)
Юра
Уже говориг тут что тесты апи не привязаны к языку, в теории можно переписать бекенд на облако, другой язык, вотевер и тесты апи останутся без изменений почти
The Ant
Павел
Юра
Юра
Если апи меняется каждый день значит плохо спланировали и продумали
Юра
Или ты работаешь в снг конторе
Юра
Если это стартап и снг я говорю сразу забудьте про тесты пока
Юра
Пилите свой МВП и не мучайте разрабов
Павел
Наверное все же с функциональным я погорячился, все же это более высокоуровненовое наверное. Но как оказалось еще есть компонентное тестирование, чето даже не слыхал о таком. Вон оно вроде больше подходит под жизненный цикл коровы ) С другой стороны их часто (по статьям) объединяют под юниты.
Dmitry
У нас теория тестирования дробится на фреймворки? Фрейморки диктуют правила? Не знал.
Ну вот такая теория тестирования со своей классификацией.
Есть требования к софту:
- функциональные (логика кейсов)
- нефункциональные (производительность, безопасность)
Так что и тесты к ним:
- функциональные
- нефункциональные
Тестировать можно по размеру:
- функцию
- объект
- систему объектов
- всё приложение изнутри
- сервер с приложением снаружи
- систему приложений
По взаимодействию:
- изолированно
- в интеграции
Внешние тесты ещё можно называть:
- приёмочными для приёмки продукта
- end-to-end для эмуляции работы конечного пользователя с продуктом
Снаружи можно:
- дёргать API curl-ом
- проверять управляемым браузером
Из этого и получаем комбинаторику.
Как назвать функциональный тест сервиса из контейнера в интеграции с БД? Непонятно.
Как назвать функциональный тест всего приложения, где мы изнутри дёргаем контроллер, но в котором мы подсунули мок или стаб для изоляции от БД? Тоже непонятно.
Как назвать изолированный функциональный тест одного юнита? Вроде юнит-тестом. Но какой размер юнита?
Как назвать изолированный функциональный тест связки из пяти юнитов? Вроде интеграция, но без БД. Тоже непонятно.
Отсюда и сложность называния. И каждый фреймворк делает по-своему.
Павел
Павел
В итоге наверное да, тестирование коровы - будет юнит/компонент тестирование. Но возможен разный подход через белый и черный ящик - а тут уже холивар.
Юра
Главное чтобы баги в прод не пролезали
Юра
Прод дривен тестирование )
The Ant
как же хорошо все таки в веб деве, прям так простенько. уютненько, лампово.
В геймдеве сраную корову устанешь тестировать 😄
The Ant
Ну и это, раз уж начали проводить параллели с реального мира, то боженька и корова производитель другой коровы при рождении и в процессе жизнедеятельности не тестируется :D
Работает с заданными параметрами и немного добавляется в процессе обучения.
Проще говоря, тесты для гомосексуалистов 😄
Юра
И тут он такой.. в вебе простенько..
The Ant
в вебе действительно простенько. Написать аи коровы и протестировать её будет невероятно сложно
The Ant
в отличие от пары сервисов в вебе, которые кладут значение в бд
Юра
Ну судя по качеству последних ааа релизов типо киберпанка с тестами действительно тяжело в геймдеае
The Ant
допустим если писать симулятор фермы какой.
корова должна есть. пить. чего-то бояться. У нее есть предпочтения в еде. есть органы зрения, обоняния. И т.д. и т.п.
Есть куча ситуций, в которых эта корова поведет себя по разному. + заложить какой-то рандом, чтоли. Для характера. Да да, у коров есть характер! )
Павел
Dmitry
Dmitry
https://youtu.be/Oj8bfBlwHAg
Юра
Юра
Вообще по-моему это обычная практика в юнит тестах что непонятно что произошло
Юра
Часто приходится смотреть комиты на изменения чтобы разобраться
Юра
Ведь изменения в одном месте приводят к падению теста в десятом месте
Юра
И баги в основном не из-за того что метод два плюс два не смог сделать, а из-за какого-то сочетания методов
Юра
Или не обработана какая-то крайняя ситуация
Dmitry
Юра
Павел
Dmitry
Павел
Свои минусы, как и я писал
artem
artem
Это же лучшее что придумали в разработке, кроме того что у тебя есть тест, так и перед реализацией ты уже знаешь бл
Павел
artem
Я про тдд.
И я про тоже) у меня был проект где ба частично знал тестирование (нужно было ему только перевести), подвёл к компу: "так должно быть", да. И спокойно себе работаешь, никто не предявит
Павел
Павел
Короче безсмысленный разговор. Вам нравится тдд - пишите, есть подход кто спорит.
Павел
Dmitriy
выходить на более высокий уровень тестов, когда сеттеров и геттеров нет
писать функциональные тесты апишки, тогда можно смело рефакторить
The Ant
artem
The Ant
меня одного чтоли учили сначала рисовать блок схемы, потом писать код? :D
Павел
Хороший тест - как документация
The Ant
сорян, но какой-то набор штампов )
The Ant
вот реально хорошо помогает понимать логику это ручка и листочек. накидать схему
The Ant
а не тесты писать
Павел
сорян, но какой-то набор штампов )
Ну почему. Заходишь в тесты модуля там "TestPurchaseWithoutUserCashExpectException".
Просто был случай сказали - вот есть либа (точнее проект, а там модуль), выдрать оттуда. Зашел - нихера не понял толком как работает. Зашел в тесты - сразу все понятно что на входе что на выходе, надрал нужного из кода, не запуская. Сказал спасибо разработчику за тесты.
The Ant
если бы разработчик не был таким унылым гандоном, он бы написал в комментариях что тот или иной класс делает. Иначе говоря, документировал свой код адекватно.
The Ant
такое себе
Павел
The Ant
читаешь код в иде, наводишь мышкой на переменную и понимаешь что это, без читания говнотестов
The Ant
Понимаешь? )
Павел
Но я в душе не знаю что прилетает по api например, как это преобразуется, потом как попадает в мой модуль - в итоге что принимает, что отдает и в каком формате - хз
The Ant
документации к апи тоже нет? боже. А говоришь код хороший :D
Павел
Понимаешь? )
Понимаю, что много комментов - бэд практис
Павел
Я не пойму что ты хочешь доказать, что тесты не нужны?
Павел
Или что
The Ant
хороший код - документированный код, не?
The Ant
хорошо документированный код, это код, который читаешь не лазя в тесты ебучие
The Ant
чтобы понять что там происходит
The Ant
The Ant
уже молчу если туда лазишь раз в полгода
Павел
Опять таки в "идеальном мире"