powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как измерить полезность теста?
25 сообщений из 66, страница 1 из 3
Как измерить полезность теста?
    #39589511
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема полезности юниттестов хотя и замусоленна в форумах и книгах,
Но я пока не встречал аргументов в пользу или против них, опирающихся только на фактах.
можно найти аргументы, которые опираются на логические рассуждения в основе которых находятся возможно известные факты, но этого недостаточно.
Так как я сам отношусь очень скептически к юниттестам задался вопросом,
а как измерить полезность конкретного юниттеста? Возможно ли вообще? Или может можно найти экономическое обоснование если не каждому отдельно взятому тесту то все практике как таковой?

Вообщем, флейм он. Какие будут мысли?
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589521
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronа как измерить полезность конкретного юниттеста? Возможно ли вообще?

да, можно. тест либо тестирует реализованную функциональность компонента, либо нет. хороший тест является также документацией к использованию компонента. если по тесту непонятно как пользоваться, а как нельзя, это плохой тест.


mikronИли может можно найти экономическое обоснование если не каждому отдельно взятому тесту то все практике как таковой?

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

а какой-то формулы, типа N тестов умножить на X чего-то там, разделить на Y, и получить рубли/доллары, нет, я не знаю такой формулы.
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589532
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmikronа как измерить полезность конкретного юниттеста? Возможно ли вообще?

да, можно.
Вот и хорошо. лозунги и тезисы отправим сразу на свалку истории. Как будем мерять? В каких единицах?

Для начала можно упростить, пусть стоимость единицы времени работы постоянна и не зависит от квалификации. Такой у нас комунизм.
Теперь надо разобратся со стоимостью ошибки.
Задача и з разряда невозможных, но у нас комунизм и ошибку тоже будем мерять в часах работы на устранение её послествий. У нас не АЭС.
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589537
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть исследования , основанные на сравнительной эффективности команд для которых, впрочем, есть критика.
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589540
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron,

как то покрывал тестами разработку c-lib.

нашел очень много ошибок, причем покрытие было не 100%.

написать простой юнит тест простой функции существенно проще, чем выкапывать потом сбой большой программы из-за этой маленькой функции.

измерить разницу затруднительно. я бы оценил в сотни процентов, но опять же - не надо пытаться засунуть в тесты абсолютно всё

затраты на покрытие <100% исходного кода
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589548
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другими словами нормируем единицу устранения ошики как 1 час.
Тогда полезность = время устранения последствий стандартной ошибки / врема затраченое на создание и поддержание теста. Верно?
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589559
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronДругими словами нормируем единицу устранения ошики как 1 час.
Тогда полезность = время устранения последствий стандартной ошибки / врема затраченое на создание и поддержание теста. Верно?

Эта формула исходит из того, что тест предотвращает ровно одну ошибку, а это не так.
Еще время устранения ошибки это не все. Ошибку надо:
- Обнаружить
- Воспроизвести (найти условие при котором она вопроизводится)
- Описать
- Поискать в базе нет ли дублей
- Приоритезировать
- Найти root cause
- Исправить
- Проверить исправление (если регрессионное тестирование не автоматизировано то и на регрессии)
- Возможно его документировать
- Развернуть исправление у n клиентов

И пока будет продолжаться этот цикл другие люди будут ее находить у себя тоже и прогонять через часть этого цикла
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589575
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще тесты как документация - наверное надо померить время чтобы разобраться с кодом.
И тесты как средство улучшения дизайна - тут есть всякие метрики типа cyclomatic complexity.

Но это все про хорошие тесты, которые надо уметь готовить
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589580
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
как то покрывал тестами разработку c-lib.

нашел очень много ошибок, причем покрытие было не 100%.


во первых, где граница в этом неявном "утверждении полезности" между юнит-тестом и одноразовым тестом? Другими словами, найденые ошибки это "заслуга" теста или юнит-теста? Если потратить время на ручное тестирование, то с ненулевой вероятностью будут так же обнаружены ошибки. ещё не доказано что кодирование и повторное выполнение тестов оправдано.

И второе, ошибки найдены, но ещё не доказана полезность проделанной работы.
Другими словами, кого волнуют ошибки, если они никогда не проявляются?
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589583
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharperНо это все про хорошие тесты, которые надо уметь готовить
Довайте оставим категории "хорошие" и "плохие" как субьективные, и попробуем определится с объективными критериями оценки.

Так как человек в основе существо разумное (хочется верить) то и делает оно только то что разумно оправдывает затраты на усилия.
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589588
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример:

БД из сотен таблиц. порядка 10 разрабов. поменялось поле/маппинг для одной из таблиц. это не сразу выстрелит, если нет тестов. а если есть - это сразу покажется на билд-сервере, где играются тесты при коммите. это, конечно, не юнит-тесты, но, чтобы прочувствовать. с юнит примерно похоже.

а прикинь, если этого нет? это же @опа
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589590
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если он проверяет что-то нужное в хорошо тестируемом коде, то полезность - 1. если иначе - удалить его, чтобы не мешался (есть еще проверка трешака, там, полезность 0,5)
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589599
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharpermikronДругими словами нормируем единицу устранения ошики как 1 час.
Тогда полезность = время устранения последствий стандартной ошибки / врема затраченое на создание и поддержание теста. Верно?

Эта формула исходит из того, что тест предотвращает ровно одну ошибку, а это не так.
Еще время устранения ошибки это не все. Ошибку надо:
- Обнаружить
- Воспроизвести (найти условие при котором она вопроизводится)
- Описать
- Поискать в базе нет ли дублей
- Приоритезировать
- Найти root cause
- Исправить
- Проверить исправление (если регрессионное тестирование не автоматизировано то и на регрессии)
- Возможно его документировать
- Развернуть исправление у n клиентов

И пока будет продолжаться этот цикл другие люди будут ее находить у себя тоже и прогонять через часть этого цикла

Я не говорил о "времени устранения ошибки", я говорил о "времени устранения последствий ошибки".
Влияние наличие юнит-теста на время исправления самой ошибки я думаю пока можно исключить из рассмотрения.
Все остальные якобы "надо" я пока не вижу как относятся к искомой мере "полезности".
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589603
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronSiemarglкак то покрывал тестами разработку c-lib.

нашел очень много ошибок, причем покрытие было не 100%.


во первых, где граница в этом неявном "утверждении полезности" между юнит-тестом и одноразовым тестом? Другими словами, найденые ошибки это "заслуга" теста или юнит-теста? Если потратить время на ручное тестирование, то с ненулевой вероятностью будут так же обнаружены ошибки. ещё не доказано что кодирование и повторное выполнение тестов оправдано.

И второе, ошибки найдены, но ещё не доказана полезность проделанной работы.
Другими словами, кого волнуют ошибки, если они никогда не проявляются?
а в чем разница в затратах кодирования теста и юнит теста?
а вот повторять автотесты гораздо дешевле

а если ошибка проявляется в 0.00001%, но стоит - ракету ?
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589612
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пусть:
P - {относительная полезность юнит-теста}
L - {время устранения последствий стандартной программной ошибки} = 1 человекoчас
S - {время затраченное на создание и поддержание юнит-теста} тоже измеряется в человекочасах.

Пока имеем:

P = L / S

Если у нас например софт для АЭС то умножаем P на кол-чо часов необходимых для устранения последствий аварии I и получаем абсолютную полезность юнит-теста для конкретной предметной области.

I - {Фактор времени устранения последствий программной ошибки по отношений к стандартной программной ошибке}

Таким образом приходим к тому что {полезность юнит-теста} - величина безразмерная.
Так же естественно получается:
P х I > 1 -- юнит-тест оправдан
P х I < 1 -- к чёрту юнит-тест. последствия ошибки дешевле исправить.

Какие будут дополнения?
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589615
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglа в чем разница в затратах кодирования теста и юнит теста?
а вот повторять автотесты гораздо дешевле

Я стараюсь отделить тест от юнит-тест.

Юнит-тест - автоматизированные тесты для функций модуля.

Тест же может быть кодированным или ручным или просто в дебагере пробежали.
Суть - тест с минимальными одноразовыми затратами без возможности автоматического повторения.


Немного лирики. Мне приходится иногда писать бессмысленные тесты в угоду "Test coverage".
Бессмысленные как я считаю потому, что я уже оттестировал этот участок программы функциональным тестом.
Я не вижу пользы от дополнительного юнит-теста. Я хотел бы увидеть и понять.


Siemarglа если ошибка проявляется в 0.00001%, но стоит - ракету ?
Абсолютно согласен что надо учесть. Риски вычисляются как {вероятност события} x {стоимость ликвидации последствий}
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589641
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronВот и хорошо. лозунги и тезисы отправим сразу на свалку истории. Как будем мерять? В каких единицах?

я понимаю желание подъехать ко всему на своём деревянном номенклатурном танке.

в каких единицах мерить вообще производительность по программированию?
в строках кода в час? м?

очевидную фигню то прогонять не надо уже.


mikronТеперь надо разобратся со стоимостью ошибки.

– простой 1 час
– простой 1 день
– простой 1 неделю
– потеря данных
– порча информации
– порча данных
– утечка конфиденциальных данных

...


mikronЗадача и з разряда невозможных, но у нас комунизм и ошибку тоже будем мерять в часах работы на устранение её послествий. У нас не АЭС.

дак а чо. давай просто представим, что программисты пишут без ошибок по факту. им даже работу свою проверять не надо. сколько времени экономится, на бесполезные проверки. написал, закоммитил и приступил к следующей задачи. даже проверять, компилируется или нет - потеря драгоценных минут.
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589642
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronКакие будут дополнения?

прослезился
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589643
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronКакие будут дополнения?

основное дополнение здесь, сам по себе расчёт полезности дороже написания юнит-тестов )))

но как способ отмыть баблишко, самое то
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589695
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronЭта формула исходит из того, что тест предотвращает ровно одну ошибку, а
Я не говорил о "времени устранения ошибки", я говорил о "времени устранения последствий ошибки".


Тогда почему один час и одна ошибка? Нафига нужна "стандартная ошибка" если она просто означает час времени. Если устранить это получаем "Время, которое сэкономил тест"/"Время его написания".

Если вспомнить, что время разных людей стоит по разному и последствия ошибок бывают разные то, можно вот так:

"Стоимость всех ресурсов которые сэкономил тест"/"Стоимость всех ресурсов на написание его и поддержание"

Что представляет собо математическое выражение того, что и так понятно и относится не только к тестам, а вообще ко всему :)
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589700
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronСуть - тест с минимальными одноразовыми затратами без возможности автоматического повторения.


Как осуществлять регрессионное тестирование?
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589711
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmikronВот и хорошо. лозунги и тезисы отправим сразу на свалку истории. Как будем мерять? В каких единицах?

я понимаю желание подъехать ко всему на своём деревянном номенклатурном танке.

в каких единицах мерить вообще производительность по программированию?
в строках кода в час? м?

очевидную фигню то прогонять не надо уже.
Чтоб тебе понятней было давай на твоём примере:
Твою высокую активность на форуме - производительность можно измерить количеством строк в час. Очевидно что о полезность при этом говорить нельзя.
Так понятно?
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589730
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharpermikronЭта формула исходит из того, что тест предотвращает ровно одну ошибку, а
Я не говорил о "времени устранения ошибки", я говорил о "времени устранения последствий ошибки".


Тогда почему один час и одна ошибка? Нафига нужна "стандартная ошибка" если она просто означает час времени. Если устранить это получаем "Время, которое сэкономил тест"/"Время его написания".

Если вспомнить, что время разных людей стоит по разному и последствия ошибок бывают разные то, можно вот так:

"Стоимость всех ресурсов которые сэкономил тест"/"Стоимость всех ресурсов на написание его и поддержание"

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

Верно, но такое определение сложно применить к софту,
ошибки которого не могут быть оценены сразу. Например библиотеки.
С другой стороны стоимость в денежном эквиваленте величина не постоянная а для оценки полезности желательно иметь независимой от стоимости трудозатрат.
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589749
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharper,

>> Тогда почему один час и одна ошибка?
Один час работы по устранению последсвий ошибки - это типа эталонная ошибка.
Таким образом например tipo для label - a 1 / 3600 эталонной ошибки.
Согласись секунду мозгу достаточно что-бы понять что имелось в виду.
Других последсвий нет.

Или есть другие предложения?

А про одну ошибку я реч не вёл. Пусть будут все ошибки, которэе предотвратил тест.
...
Рейтинг: 0 / 0
Как измерить полезность теста?
    #39589768
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что полезного дает понятие эталонной ошибки? Нафига оно нужно вообще, чтобы было менее понятно что это один час? Тогда в определениях недостаточно косвенности.

Надо определить эталонной множество ошибок, которое состоит их ровно одной эталонной ошибки, которое определяетсся через эталонное время исправление из эталонных временных единиц, которое равно часу :)
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 1 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как измерить полезность теста?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]