Re[17]: феерический факап Яндекса
От: landerhigh Пират  
Дата: 10.09.15 12:31
Оценка:
Здравствуйте, genre, Вы писали:

L>>Вот это как раз элементарно.


А это и правда элементарно.

G>Это все настолько конструктивно, что возражений больше не имею.


Ага, особенно на фоне вот этого:

G>Без разницы. Важно, что для получения одинакового результата количество юнит-тестов и тест-кейсов должно совпадать.


Доказательство, я так понимаю, будет?
www.blinnov.com
Re[15]: феерический факап Яндекса
От: Pzz Россия https://github.com/alexpevzner
Дата: 10.09.15 12:31
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Наоборот, изначально было про юнит-тест, а Pzz поменял до "тест"


Я сознательно написал "тест", потому что мне все равно, юнит он тест, интеграционный или наушахстоятельный. Лишь бы его прогоняли перед выпуском релиза.
Re[17]: феерический факап Яндекса
От: landerhigh Пират  
Дата: 10.09.15 12:32
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Необходимости, конечно же нет. Но факт в том, что как ни крути, юнит-тесты будут сильно дискретными.


И даже при этом они могут быть достаточными для обеспечения приемлимого, если не исчерпывающего покрытия

I>Потому гарантировать срабатывание до факапа попросту бессмысленно.


Ага, потому что наличие юнит тестов позволяет вообще избежать появления такого факапа
www.blinnov.com
Re[17]: феерический факап Яндекса
От: landerhigh Пират  
Дата: 10.09.15 12:36
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Ни классы эквивалентности, ни вообще вся теория тестирования никак не гарантируют, что ты найдешь любую регрессию.


Юнит-тесты, на минутку так, помогают писать код так, чтобы минимизировать возможность регрессии в первую очередь.

I>Потому человек, который утверждает обратное, просто понторез. Классы эквивалентности это про экономическую целесообразность тестирования, а не 100% покрытие.


У тебя, естественно, есть математическое доказательство? Пока ничего, кроме красивых слов, не видно.
www.blinnov.com
Re[19]: феерический факап Яндекса
От: neFormal Россия  
Дата: 10.09.15 12:38
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Годится. Щас проверим. Дано — функция, которая суммирует два числа. Список тестов в студию.


— проверка валидности аргументов
— проверка результата и граничных условий на выбранном диапазоне
...coding for chaos...
Re[20]: феерический факап Яндекса
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.09.15 12:48
Оценка: +1
Здравствуйте, itslave, Вы писали:

I>>Годится. Щас проверим. Дано — функция, которая суммирует два числа. Список тестов в студию.

I>Озвучь список acceptance criterias: минимальные-максимальные числа, поведение при переполнении, и остальные специальные случаи.

То есть, сделать твою работу за тебя ?
Re[21]: феерический факап Яндекса
От: landerhigh Пират  
Дата: 10.09.15 12:49
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>Озвучь список acceptance criterias: минимальные-максимальные числа, поведение при переполнении, и остальные специальные случаи.


I>То есть, сделать твою работу за тебя ?


Юнит-тесты для юнитов пишут программисты, написавшие эти юниты. Это для тебя сюрприз?
www.blinnov.com
Re[20]: феерический факап Яндекса
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.09.15 12:49
Оценка:
Здравствуйте, landerhigh, Вы писали:

I>>>>Ни классы эквивалентности, ни вообще вся теория тестирования никак не гарантируют, что ты найдешь любую регрессию.

I>>>Гарантирует.

I>>Годится. Щас проверим. Дано — функция, которая суммирует два числа. Список тестов в студию.


L>Приведи либо код, либо список требований.


Код может быть любым. Мы ведь регрессию детектим ? Представь себе, что джуниор сделал фикс, пусканул тесты, убедился что они зелёные...
Re[20]: феерический факап Яндекса
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.09.15 12:51
Оценка:
Здравствуйте, landerhigh, Вы писали:

I>>То есть, факап уже случился ?


L>Нет. Я, как автор, знаю, что такие входные данные для данного юнита есть факап.


И ты разумеется можешь предусмотреть вообще все возможные случаи ? Ну, например, что завтра твой файл подфиксит джуниор, который проверит только цвет результат.

L>Это неважно. Главная задача юнит-тестов состоит в том, чтобы на самых ранних стадиях проверить, что поведение юнита соответствует ожидаемому.


Не поведение, небольшое количество точечных проверок.
Re[16]: феерический факап Яндекса
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.09.15 12:52
Оценка:
Здравствуйте, Pzz, Вы писали:

I>>Наоборот, изначально было про юнит-тест, а Pzz поменял до "тест"


Pzz>Я сознательно написал "тест", потому что мне все равно, юнит он тест, интеграционный или наушахстоятельный. Лишь бы его прогоняли перед выпуском релиза.


А как ты собираешься укладываться во временные требования ? Ну что бы все тесты выполнялись не бесконечно, а за определенное кличество времени ?
Re[18]: феерический факап Яндекса
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.09.15 12:54
Оценка:
Здравствуйте, landerhigh, Вы писали:

I>>Потому гарантировать срабатывание до факапа попросту бессмысленно.


L>Ага, потому что наличие юнит тестов позволяет вообще избежать появления такого факапа


Снова возвращаемся к тому, с чего начинали. Ты утверждаешь, ни много ни мало, о принципиальной возможности тестировать с помощью юнит-тестов.

Вот странно, ты до сих пор тесты для суммы натуральных чисел не выдал, а утверждаешь, что тестами можно любой факап сбороть.
Re[18]: феерический факап Яндекса
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.09.15 12:57
Оценка:
Здравствуйте, landerhigh, Вы писали:

I>>Ни классы эквивалентности, ни вообще вся теория тестирования никак не гарантируют, что ты найдешь любую регрессию.


L>Юнит-тесты, на минутку так, помогают писать код так, чтобы минимизировать возможность регрессии в первую очередь.


Возможность регрессии минимизируется при помощи
1 проектирование
2 грамотный кодинг

Любые автоматические тесты нужны для проверки заранее определенных точек. Факап, что характерно, не обязан попадать ни в одну из этих точек.

I>>Потому человек, который утверждает обратное, просто понторез. Классы эквивалентности это про экономическую целесообразность тестирования, а не 100% покрытие.


L>У тебя, естественно, есть математическое доказательство? Пока ничего, кроме красивых слов, не видно.


Разумеется. Именно потому я и предлагаю накидать тебе тесты для суммы натуральных чисел.
Re[20]: феерический факап Яндекса
От: · Великобритания  
Дата: 10.09.15 12:58
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Это неважно. Главная задача юнит-тестов состоит в том, чтобы на самых ранних стадиях проверить, что поведение юнита соответствует ожидаемому.

Не совсем понимаю, чем юнит-тесты помогут при сабже:
был код
int sum(int a, int b)
{
  if(!good(a))
    throw InvalidArgument();
  if(!good(b))
    throw InvalidArgument();
  return a + b;
}

Покрыт хорошо и замечательно юнит-тестами.
А теперь приходит девелопер с шашкой на коне и изменяет код:
int sum(int a, int b)
{
  appendToFile("debug.log", a, b);  // Don't forget to remove it before release!!!11111!!11!!
  if(!good(a))
    throw InvalidArgument();
  if(!good(b))
    throw InvalidArgument();
  return a + b;
}

И что дальше?

Нужна очень серьёзная оргаризация автоматического тестирования — и нагрузочные, и системные, и функциональные тесты должны быть хорошо продуманы. И тут может быть экономический фактор — цена такой системы может быть выше, чем цена таких факапов.
К сожалению, юнит-тесты — не панацея.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[20]: феерический факап Яндекса
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.09.15 12:58
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Годится. Щас проверим. Дано — функция, которая суммирует два числа. Список тестов в студию.


F>- проверка валидности аргументов

F>- проверка результата и граничных условий на выбранном диапазоне

Проверка валидности аргументов это что за юнит-тест такой ?

Диапазон простой — натуральные числа до 128 разрядов включительно. Где гарантии ?
Re[22]: феерический факап Яндекса
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.09.15 13:00
Оценка:
Здравствуйте, landerhigh, Вы писали:

I>>То есть, сделать твою работу за тебя ?


L>Юнит-тесты для юнитов пишут программисты, написавшие эти юниты. Это для тебя сюрприз?


Это не важно. Регрессия она целиком про человеческий фактор. Об этом Гленфорд Майерс всю книгу талдычит.

Ты в курсе, что люди увольняются, переходят в другие отделы, на другие должности ?

Ты в курсе, что даже в одном проекте нет гарантии, что что один и тот же компонент будет майнтейнить один и тот же девелопер ?
Re[21]: феерический факап Яндекса
От: neFormal Россия  
Дата: 10.09.15 13:02
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Проверка валидности аргументов это что за юнит-тест такой ?


обычный тест, что с данными можно работать. что они подходят для данной операции.

I>Диапазон простой — натуральные числа до 128 разрядов включительно. Где гарантии ?


а в чём сомнения? интерполяцию отрицаешь?
...coding for chaos...
Re[22]: феерический факап Яндекса
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.09.15 13:04
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Проверка валидности аргументов это что за юнит-тест такой ?


F>обычный тест, что с данными можно работать. что они подходят для данной операции.


Покажи на примере:
function sum(a,b) {
   return a+b;
}


I>>Диапазон простой — натуральные числа до 128 разрядов включительно. Где гарантии ?


F>а в чём сомнения? интерполяцию отрицаешь?


Я пока ничего не вижу, тестов до сих пор нет.
Re[21]: феерический факап Яндекса
От: itslave СССР  
Дата: 10.09.15 13:06
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, itslave, Вы писали:


I>>>Годится. Щас проверим. Дано — функция, которая суммирует два числа. Список тестов в студию.

I>>Озвучь список acceptance criterias: минимальные-максимальные числа, поведение при переполнении, и остальные специальные случаи.

I>То есть, сделать твою работу за тебя ?

Слив засчитан.
Re[21]: феерический факап Яндекса
От: itslave СССР  
Дата: 10.09.15 13:07
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Код может быть любым. Мы ведь регрессию детектим ? Представь себе, что джуниор сделал фикс, пусканул тесты, убедился что они зелёные...

Если мы говорим про юнит-тестирование — то это white box тесты. С требованием иметь 100% покрытие бизнес логики. Внезапно.
Re[21]: феерический факап Яндекса
От: landerhigh Пират  
Дата: 10.09.15 13:07
Оценка:
Здравствуйте, Ikemefula, Вы писали:

L>>Приведи либо код, либо список требований.


I>Код может быть любым.


Задам прямой вопрос — ты вообще понимаешь, что такое юнит-тесты? Это не наезд, я всегда спрашиваю, а то куча народу на поверку думают себе разное и в итоге получается раговор доцента с Авасом.

I>Мы ведь регрессию детектим ? Представь себе, что джуниор сделал фикс, пусканул тесты, убедился что они зелёные...


А я не представляю, это вполне нормальный цикл разработки. Сеньер — джуниору — "у нас есть баг, когда подаются данные типа А, происходит бум предпололжительно в модуле Б. Пофикси.", хотя чаще всего "наши юниты не реализуют поддержку ситуации C, и посему бросают исключение. Нужно реализовать поддержку и убрать исключение".
Джуниор первым делом делает что? Правильно, пишет тест, воспроизводящий проблему. Затем идентифицирует провинившийся модуль и пишет минимально возможный тест, воспроизводящий проблему. Затем фиксит проблему. Это должно сделать означенные два или сколько он там нарисовал тестов зелеными. Затем он идет на ревью, где ему сеньер и говорит — в процессе фикса ты написал 150 строк нового кода и придумал два новых класса. Где юнит-тесты для них? Итерация повторяется.
В результате — есть фикс, есть юнит-тесты, верифицирующие фикс. Есть лучший код. Все щасливы, кроме тестеров.
www.blinnov.com
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.