Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
Тема полезности юниттестов хотя и замусоленна в форумах и книгах, Но я пока не встречал аргументов в пользу или против них, опирающихся только на фактах. можно найти аргументы, которые опираются на логические рассуждения в основе которых находятся возможно известные факты, но этого недостаточно. Так как я сам отношусь очень скептически к юниттестам задался вопросом, а как измерить полезность конкретного юниттеста? Возможно ли вообще? Или может можно найти экономическое обоснование если не каждому отдельно взятому тесту то все практике как таковой? Вообщем, флейм он. Какие будут мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 19:53 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
mikronа как измерить полезность конкретного юниттеста? Возможно ли вообще? да, можно. тест либо тестирует реализованную функциональность компонента, либо нет. хороший тест является также документацией к использованию компонента. если по тесту непонятно как пользоваться, а как нельзя, это плохой тест. mikronИли может можно найти экономическое обоснование если не каждому отдельно взятому тесту то все практике как таковой? найти экономическое обоснование можно посчитав цену ошибки. посчитать время, на устранение багов, на отладку. хорошее покрытие тестами, позволяет очень быстро отлаживать маленькую функциональность. без тестов это сделать невозможно, надо запускать весь проект и тестировать всё сразу, в дебаге. посчитать время на устранение ошибок, при добавлении или изменение функциональности, ведь никаких инструментов кроме как скомпилировалось или нет у разработчика нет. надо тестировать всё, после любого изменения, вручную. досконально. а какой-то формулы, типа N тестов умножить на X чего-то там, разделить на Y, и получить рубли/доллары, нет, я не знаю такой формулы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 20:03 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
hVosttmikronа как измерить полезность конкретного юниттеста? Возможно ли вообще? да, можно. Вот и хорошо. лозунги и тезисы отправим сразу на свалку истории. Как будем мерять? В каких единицах? Для начала можно упростить, пусть стоимость единицы времени работы постоянна и не зависит от квалификации. Такой у нас комунизм. Теперь надо разобратся со стоимостью ошибки. Задача и з разряда невозможных, но у нас комунизм и ошибку тоже будем мерять в часах работы на устранение её послествий. У нас не АЭС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 20:32 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
Есть исследования , основанные на сравнительной эффективности команд для которых, впрочем, есть критика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 21:03 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
mikron, как то покрывал тестами разработку c-lib. нашел очень много ошибок, причем покрытие было не 100%. написать простой юнит тест простой функции существенно проще, чем выкапывать потом сбой большой программы из-за этой маленькой функции. измерить разницу затруднительно. я бы оценил в сотни процентов, но опять же - не надо пытаться засунуть в тесты абсолютно всё затраты на покрытие <100% исходного кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 21:14 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
Другими словами нормируем единицу устранения ошики как 1 час. Тогда полезность = время устранения последствий стандартной ошибки / врема затраченое на создание и поддержание теста. Верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 21:30 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
mikronДругими словами нормируем единицу устранения ошики как 1 час. Тогда полезность = время устранения последствий стандартной ошибки / врема затраченое на создание и поддержание теста. Верно? Эта формула исходит из того, что тест предотвращает ровно одну ошибку, а это не так. Еще время устранения ошибки это не все. Ошибку надо: - Обнаружить - Воспроизвести (найти условие при котором она вопроизводится) - Описать - Поискать в базе нет ли дублей - Приоритезировать - Найти root cause - Исправить - Проверить исправление (если регрессионное тестирование не автоматизировано то и на регрессии) - Возможно его документировать - Развернуть исправление у n клиентов И пока будет продолжаться этот цикл другие люди будут ее находить у себя тоже и прогонять через часть этого цикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 22:08 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
И еще тесты как документация - наверное надо померить время чтобы разобраться с кодом. И тесты как средство улучшения дизайна - тут есть всякие метрики типа cyclomatic complexity. Но это все про хорошие тесты, которые надо уметь готовить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 22:30 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
Siemargl как то покрывал тестами разработку c-lib. нашел очень много ошибок, причем покрытие было не 100%. во первых, где граница в этом неявном "утверждении полезности" между юнит-тестом и одноразовым тестом? Другими словами, найденые ошибки это "заслуга" теста или юнит-теста? Если потратить время на ручное тестирование, то с ненулевой вероятностью будут так же обнаружены ошибки. ещё не доказано что кодирование и повторное выполнение тестов оправдано. И второе, ошибки найдены, но ещё не доказана полезность проделанной работы. Другими словами, кого волнуют ошибки, если они никогда не проявляются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 22:38 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
WebSharperНо это все про хорошие тесты, которые надо уметь готовить Довайте оставим категории "хорошие" и "плохие" как субьективные, и попробуем определится с объективными критериями оценки. Так как человек в основе существо разумное (хочется верить) то и делает оно только то что разумно оправдывает затраты на усилия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 22:43 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
пример: БД из сотен таблиц. порядка 10 разрабов. поменялось поле/маппинг для одной из таблиц. это не сразу выстрелит, если нет тестов. а если есть - это сразу покажется на билд-сервере, где играются тесты при коммите. это, конечно, не юнит-тесты, но, чтобы прочувствовать. с юнит примерно похоже. а прикинь, если этого нет? это же @опа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 22:58 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
если он проверяет что-то нужное в хорошо тестируемом коде, то полезность - 1. если иначе - удалить его, чтобы не мешался (есть еще проверка трешака, там, полезность 0,5) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 23:05 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
WebSharpermikronДругими словами нормируем единицу устранения ошики как 1 час. Тогда полезность = время устранения последствий стандартной ошибки / врема затраченое на создание и поддержание теста. Верно? Эта формула исходит из того, что тест предотвращает ровно одну ошибку, а это не так. Еще время устранения ошибки это не все. Ошибку надо: - Обнаружить - Воспроизвести (найти условие при котором она вопроизводится) - Описать - Поискать в базе нет ли дублей - Приоритезировать - Найти root cause - Исправить - Проверить исправление (если регрессионное тестирование не автоматизировано то и на регрессии) - Возможно его документировать - Развернуть исправление у n клиентов И пока будет продолжаться этот цикл другие люди будут ее находить у себя тоже и прогонять через часть этого цикла Я не говорил о "времени устранения ошибки", я говорил о "времени устранения последствий ошибки". Влияние наличие юнит-теста на время исправления самой ошибки я думаю пока можно исключить из рассмотрения. Все остальные якобы "надо" я пока не вижу как относятся к искомой мере "полезности". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 23:13 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
mikronSiemarglкак то покрывал тестами разработку c-lib. нашел очень много ошибок, причем покрытие было не 100%. во первых, где граница в этом неявном "утверждении полезности" между юнит-тестом и одноразовым тестом? Другими словами, найденые ошибки это "заслуга" теста или юнит-теста? Если потратить время на ручное тестирование, то с ненулевой вероятностью будут так же обнаружены ошибки. ещё не доказано что кодирование и повторное выполнение тестов оправдано. И второе, ошибки найдены, но ещё не доказана полезность проделанной работы. Другими словами, кого волнуют ошибки, если они никогда не проявляются? а в чем разница в затратах кодирования теста и юнит теста? а вот повторять автотесты гораздо дешевле а если ошибка проявляется в 0.00001%, но стоит - ракету ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 23:18 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
Пусть: P - {относительная полезность юнит-теста} L - {время устранения последствий стандартной программной ошибки} = 1 человекoчас S - {время затраченное на создание и поддержание юнит-теста} тоже измеряется в человекочасах. Пока имеем: P = L / S Если у нас например софт для АЭС то умножаем P на кол-чо часов необходимых для устранения последствий аварии I и получаем абсолютную полезность юнит-теста для конкретной предметной области. I - {Фактор времени устранения последствий программной ошибки по отношений к стандартной программной ошибке} Таким образом приходим к тому что {полезность юнит-теста} - величина безразмерная. Так же естественно получается: P х I > 1 -- юнит-тест оправдан P х I < 1 -- к чёрту юнит-тест. последствия ошибки дешевле исправить. Какие будут дополнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 23:50 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
Siemarglа в чем разница в затратах кодирования теста и юнит теста? а вот повторять автотесты гораздо дешевле Я стараюсь отделить тест от юнит-тест. Юнит-тест - автоматизированные тесты для функций модуля. Тест же может быть кодированным или ручным или просто в дебагере пробежали. Суть - тест с минимальными одноразовыми затратами без возможности автоматического повторения. Немного лирики. Мне приходится иногда писать бессмысленные тесты в угоду "Test coverage". Бессмысленные как я считаю потому, что я уже оттестировал этот участок программы функциональным тестом. Я не вижу пользы от дополнительного юнит-теста. Я хотел бы увидеть и понять. Siemarglа если ошибка проявляется в 0.00001%, но стоит - ракету ? Абсолютно согласен что надо учесть. Риски вычисляются как {вероятност события} x {стоимость ликвидации последствий} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 00:23 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
mikronВот и хорошо. лозунги и тезисы отправим сразу на свалку истории. Как будем мерять? В каких единицах? я понимаю желание подъехать ко всему на своём деревянном номенклатурном танке. в каких единицах мерить вообще производительность по программированию? в строках кода в час? м? очевидную фигню то прогонять не надо уже. mikronТеперь надо разобратся со стоимостью ошибки. – простой 1 час – простой 1 день – простой 1 неделю – потеря данных – порча информации – порча данных – утечка конфиденциальных данных ... mikronЗадача и з разряда невозможных, но у нас комунизм и ошибку тоже будем мерять в часах работы на устранение её послествий. У нас не АЭС. дак а чо. давай просто представим, что программисты пишут без ошибок по факту. им даже работу свою проверять не надо. сколько времени экономится, на бесполезные проверки. написал, закоммитил и приступил к следующей задачи. даже проверять, компилируется или нет - потеря драгоценных минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 06:12 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
mikronКакие будут дополнения? прослезился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 06:13 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
mikronКакие будут дополнения? основное дополнение здесь, сам по себе расчёт полезности дороже написания юнит-тестов ))) но как способ отмыть баблишко, самое то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 06:15 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
mikronЭта формула исходит из того, что тест предотвращает ровно одну ошибку, а Я не говорил о "времени устранения ошибки", я говорил о "времени устранения последствий ошибки". Тогда почему один час и одна ошибка? Нафига нужна "стандартная ошибка" если она просто означает час времени. Если устранить это получаем "Время, которое сэкономил тест"/"Время его написания". Если вспомнить, что время разных людей стоит по разному и последствия ошибок бывают разные то, можно вот так: "Стоимость всех ресурсов которые сэкономил тест"/"Стоимость всех ресурсов на написание его и поддержание" Что представляет собо математическое выражение того, что и так понятно и относится не только к тестам, а вообще ко всему :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 09:46 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
mikronСуть - тест с минимальными одноразовыми затратами без возможности автоматического повторения. Как осуществлять регрессионное тестирование? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 09:53 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
hVosttmikronВот и хорошо. лозунги и тезисы отправим сразу на свалку истории. Как будем мерять? В каких единицах? я понимаю желание подъехать ко всему на своём деревянном номенклатурном танке. в каких единицах мерить вообще производительность по программированию? в строках кода в час? м? очевидную фигню то прогонять не надо уже. Чтоб тебе понятней было давай на твоём примере: Твою высокую активность на форуме - производительность можно измерить количеством строк в час. Очевидно что о полезность при этом говорить нельзя. Так понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 10:00 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
WebSharpermikronЭта формула исходит из того, что тест предотвращает ровно одну ошибку, а Я не говорил о "времени устранения ошибки", я говорил о "времени устранения последствий ошибки". Тогда почему один час и одна ошибка? Нафига нужна "стандартная ошибка" если она просто означает час времени. Если устранить это получаем "Время, которое сэкономил тест"/"Время его написания". Если вспомнить, что время разных людей стоит по разному и последствия ошибок бывают разные то, можно вот так: "Стоимость всех ресурсов которые сэкономил тест"/"Стоимость всех ресурсов на написание его и поддержание" Что представляет собо математическое выражение того, что и так понятно и относится не только к тестам, а вообще ко всему :) Верно, но такое определение сложно применить к софту, ошибки которого не могут быть оценены сразу. Например библиотеки. С другой стороны стоимость в денежном эквиваленте величина не постоянная а для оценки полезности желательно иметь независимой от стоимости трудозатрат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 10:20 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
WebSharper, >> Тогда почему один час и одна ошибка? Один час работы по устранению последсвий ошибки - это типа эталонная ошибка. Таким образом например tipo для label - a 1 / 3600 эталонной ошибки. Согласись секунду мозгу достаточно что-бы понять что имелось в виду. Других последсвий нет. Или есть другие предложения? А про одну ошибку я реч не вёл. Пусть будут все ошибки, которэе предотвратил тест. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 10:35 |
|
||
|
Как измерить полезность теста?
|
|||
|---|---|---|---|
|
#18+
Что полезного дает понятие эталонной ошибки? Нафига оно нужно вообще, чтобы было менее понятно что это один час? Тогда в определениях недостаточно косвенности. Надо определить эталонной множество ошибок, которое состоит их ровно одной эталонной ошибки, которое определяетсся через эталонное время исправление из эталонных временных единиц, которое равно часу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 10:50 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39589700&tid=1340175]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 277ms |
| total: | 417ms |

| 0 / 0 |
