Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

программист задрал тестера :)

460  1 2 все
  Kislosladkaja коренной житель17.02.10 12:19
NEW 17.02.10 12:19 
Последний раз изменено 17.02.10 12:20 (Kislosladkaja)
у нас есть один молодой программист, который суперски программит, нообсалютно не хочет подчинятся процессу разработки ПО :)
Ставит версии багов на абум, статусы захочет поставит fixed, захочет won't fix, причём комменты тоже никак не относятся к тому что он сделал и к статусу. Его баги тестить это как крассворды разгадывать.
Начинаеш ему что то втирать он весь краснеет и начинает арать что это не его fault, как будто вообще его кто то обвиняет, просто просят делать как все в будущем. Я боюсь на него наежать так как ещё сматается в другую компанию а менеджер меня потом прибьёт. Но уже задрало. Что с ним делать?
#1 
AlexOtt знакомое лицо17.02.10 13:42
AlexOtt
NEW 17.02.10 13:42 
в ответ Kislosladkaja 17.02.10 12:19
четко расписать на бумаге процесс работы с багами, не будет подчиняться - предупреждение, потом "с вещами на выход" - следовать его капризам - зря тратить деньги компании...
#2 
Simple Nothing is f*cked17.02.10 14:45
Simple
NEW 17.02.10 14:45 
в ответ Kislosladkaja 17.02.10 12:19
В ответ на:
Начинаеш ему что то втирать он весь краснеет и начинает арать что это не его fault, как будто вообще его кто то обвиняет, просто просят делать как все в будущем. Я боюсь на него наежать так как ещё сматается в другую компанию а менеджер меня потом прибьёт. Но уже задрало. Что с ним делать?

Ты должна не ему "втирать", а менеджеру. Это ж не программист, а хакер.
#3 
AlexOtt знакомое лицо17.02.10 14:54
AlexOtt
NEW 17.02.10 14:54 
в ответ Kislosladkaja 17.02.10 12:19
и как показывает практика, такие программисты как правило производят ужасный код, несмотря на свою крутость
#4 
Murr_0005 прохожий17.02.10 15:12
NEW 17.02.10 15:12 
в ответ Kislosladkaja 17.02.10 12:19
Что с ним делать?
------
А ничего с ним не делать.
Есть изменение статуса бага - надо тестить. Т.е. нормальным образом получать квоту времени на выполнение работы по тестированию (перетестированию) и эту работу делать.
Репорт об состоянии - обратно.
Остальным будет заниматься менеджер.
Начинаеш ему что то втирать ...
начинает арать что это не его fault
-----
Ну и не втирай. Результаты теста в репорт и забыть. Для втирания есть менеджер.
Его баги тестить это как крассворды разгадывать.
------
А причем здесь "его баги"? Тестируется то что и как должно работать. Т.е. - на соответствие тех.заданию. Кто и как писал код - знать при этом вредно, об коментах в баг-репорте - подавно.
Но уже задрало.
-----
Бракуй код по-чаще. По любому несоответствию заданию.
#5 
Simple Nothing is f*cked17.02.10 15:18
Simple
NEW 17.02.10 15:18 
в ответ AlexOtt 17.02.10 14:54
Интересно, в чем крутость заключается ;)
#6 
AlexOtt знакомое лицо17.02.10 15:27
AlexOtt
NEW 17.02.10 15:27 
в ответ Simple 17.02.10 15:18
забыл кавычки поставить :-)
иногда бывает, что человек быстро выдает на гора работающий код, но если туда заглянуть, то очень часто это какие-то неподдерживаемые спагетти, слепленные кое-как, чтобы работало. такой код очень тяжело сопровождать, и часто бывает быстрее выкинуть и написать в модульном стиле...
P.S. 2Kislosladkaya: у этого "программиста" поди еще и unit-тестов нету?
#7 
Simple Nothing is f*cked17.02.10 15:29
Simple
NEW 17.02.10 15:29 
в ответ AlexOtt 17.02.10 15:27, Последний раз изменено 17.02.10 15:38 (Simple)
Да, мне это знакомо.
зы У нас тестов тоже почти нет, потому что легаси. Черт бы его побрал.
#8 
Murr_0005 прохожий17.02.10 15:54
NEW 17.02.10 15:54 
в ответ AlexOtt 17.02.10 15:27
иногда бывает
------
Не иногда - часто или даже - обычно. Тяжко принуждать творить в рамках...
Самое печальное, что после этого находится время на то, чтобы пофиксить всплывающие баги, но нет времени переписать код... При этом суммарные затраты на фиксинг этого спагетти раз пять выше затрат на нормальное написание...
у этого "программиста" поди еще и unit-тестов нету?
------
А разве они у него должны быть? Как Я понимаю - чем отдельнее - т.е. в идеале только ТЗ - трудится тестер, тем все лучше получается... УТ как раз задача тестера...
#9 
AlexOtt знакомое лицо17.02.10 16:56
AlexOtt
NEW 17.02.10 16:56 
в ответ Murr_0005 17.02.10 15:54
не путай юнит тесты, с другими видами тестирования. юнит-тесты - задача программиста, задача тестера - smoke tests, integration tests и т.д.
#10 
AlexOtt знакомое лицо17.02.10 16:57
AlexOtt
NEW 17.02.10 16:57 
в ответ Simple 17.02.10 15:29
легаси без тестов, это да - ужас. у меня сейчас 2 дня в неделю сопровождение старой версии
#11 
Murr_0005 прохожий17.02.10 18:19
NEW 17.02.10 18:19 
в ответ AlexOtt 17.02.10 16:56
юнит-тесты - задача программиста
-----
Спорно.
Базовое тестирование - типа выявить неправильно написанную переменную в копи-пащенном коде проперти - это, да чисто программерское.
А вот выяснить, что есть какой-нибудь хитрый сбой, зависимый от данных или контекста - уже не его. Мало того - тут их желательно полностью разделить.
Хотя оба теста могут базироваться на УТ - только писать их должны разные люди.
#12 
AlexOtt знакомое лицо17.02.10 18:59
AlexOtt
NEW 17.02.10 18:59 
в ответ Murr_0005 17.02.10 18:19
никак не спорно. читай http://en.wikipedia.org/wiki/Software_testing#Testing_Levels и http://en.wikipedia.org/wiki/Unit_testing
тестировщики обычно не имеют доступа к исходному коду, да и в первую очередь юнит-тесты предназначены для контроля базовой функциональности, базовых функций и т.д. Вот Integration testing - это уже смешанная работа
#13 
Murr_0005 прохожий17.02.10 20:12
NEW 17.02.10 20:12 
в ответ AlexOtt 17.02.10 18:59
тестировщики обычно не имеют доступа к исходному коду
-----
Я и говорю - желательно разделять.
да и в первую очередь юнит-тесты предназначены для контроля базовой функциональности, базовых функций и т.д.
------
Или у меня задачи более-мение нестандартные, или организация работ хромает - этого уровень тестирования лежит на мне, но без разработки специальных тестов. Знаю, что есть NUnit, но необходимость писать тесты съедает время, которое с большей результативностью тратится на отладку следующего уровня.
Не факт, что это правильно, но для меня - так. Вероятно сказывается работа на чистом Си с разнесением переменных по модулям - опыт достаточного внимания к деталям.
Вот Integration testing - это уже смешанная работа
-----
С этого и начинается. Только, опять таки, программист этим заниматься не должен. Спецификация и вперед тестер - готовься к приему черного ящика. Оттестить, внятным языком разъяснить что не работает и на следующий круг...
#14 
Simple Nothing is f*cked17.02.10 22:36
Simple
NEW 17.02.10 22:36 
в ответ AlexOtt 17.02.10 18:59
Видимо, в их с(т)ране этому не учили ;)
#15 
kitov прохожий17.02.10 22:47
NEW 17.02.10 22:47 
в ответ Murr_0005 17.02.10 20:12
В ответ на:
Знаю, что есть NUnit, но необходимость писать тесты съедает время, которое с большей результативностью тратится на отладку следующего уровня.

Если писать хеловорлды то да.
Или ты пишешь безбажный код ?
#16 
Murr_0005 прохожий17.02.10 23:14
NEW 17.02.10 23:14 
в ответ kitov 17.02.10 22:47
Или ты пишешь безбажный код ?
------
Разумеется нет. НО! Если я для того кода, над которым Я работаю, я буду писать тесты количество работы над тестами превысит количество работы над багами в нормальной отладке. Есть, разумеется, сопровождение, но опять таки - затраты на сопровождение кода и актуализацию тестов будут больше, чем модификация и отладка имеющегося кода.
#17 
AlexOtt знакомое лицо18.02.10 10:51
AlexOtt
NEW 18.02.10 10:51 
в ответ Murr_0005 17.02.10 20:12
по моему опыту, наличие юнит-тестов на основные вещи, резко снижает необходимость в дальнейшей отладке - ты определяешь баги раньше, чем они будут воздействовать на другие подсистемы. И это не только мое наблюдение - почитай книги по управлению процессами разработки, во всех написано, что обнаружение бага должно происходить как можно ближе к процессу когда баг был внесен, иначе затраты возрастают многократно. Юнит-тесты - идеальный инструмент для этого
P.S. у нас в багзилле есть отдельные поля - где баг был внесен, и где он был обнаружен. на основании этой информации затем делаются выводы о необходимости улучшения процесса разработки
P.P.S. про себя могу сказать, что у меня покрытие кода тестами на уровне 80% (не покрыты в основном участки типа Bla-Bla *a = new bla-bla; if (!a) {report error}. И это играет мне на руку - в предверии релиза на мне не висит ни одной баги, в отличии от разработчиков, которые тесты не используют - у них по 30-40 багов на человека
#18 
Simple Nothing is f*cked18.02.10 13:14
Simple
NEW 18.02.10 13:14 
в ответ AlexOtt 18.02.10 10:51
На уровне code review это у вас не прописано?
#19 
Murr_0005 прохожий18.02.10 13:16
18.02.10 13:16 
в ответ AlexOtt 18.02.10 10:51
ты определяешь баги раньше, чем
-----
Ты не покажешь образец своего кода и соответствующие тесты? Желательно,
не самые тривиальные.
Вот моя ситуация с багами на последнем месте работы.
Происходит миграция с версии на версию. В результате миграции система
должна производить тот выход, что и в первой версии.
Одна из новинок - динамическое отслеживание навигации по объектам.
В первой версии (база) - отсутствовала, (таблица) - константа, (поле) - поле.
Т.е. пишем:
1) база.таблица1.поле
2) база.таблица2.поле
и имеем в свойствах поля именно то, что определено для конкретного
поля. Наборы свойств для 1) и 2) разные и частично определяют выход.
Система в целом - работает - т.е. нет необработанных прерываний
и процесс доходит до завершения.
Выход - тоже генерируется. По большей части - правильно. Но время
от времени - неправильно. Когда происходит сбой - непонятно - одни
и те же исходные данные приводят к обоим - правильному и неправильному
результатам.
Если брать тер. базис, то выход определяется перемножением двух языков
(читай - двух бесконечостей). Собственно, миграция на новую версию и
была процессом введения второго языка. Грамматики обоих языков определены
не полностью. Доопределить - не удается принципиально - система "открытая"
для языков.
Багов в системе было несколько - от архитектурных - не различались идентификаторы
объектов - в первой версии с этой проблемы не было вообще и задача различения
не ставилась, до неправильно определения контекста... но как-то с этим справился.
Написать полные тесты для подобной системы элементарно невозможно - пара
бесконечностей мешает.
Частичные - не выявляют всех проблем.
По-элементные или юнит тесты - не дают никаких ошибок - все элементы
отрабатывают как планировалось.
Я не говорю, что тесты - лишнее. Просто не всегда и не везде затраты на написание
тестов будут релевантны.
во всех написано, что обнаружение бага должно происходить как можно ближе
к процессу когда баг был внесен, иначе затраты возрастают многократно.
-----
Так это все понятно. Чем быстрее быстрее обнаружишь где спорол фигню, тем
меньше править. Мелкомягкие, правда, привыкли объявлять баги фичами, но это
не мое...
#20 
1 2 все