tag:blogger.com,1999:blog-6346131298481535631.post6758755449704739930..comments2023-05-18T15:33:51.966+03:00Comments on Чудес не бывает или я ошибаюсь?: Можно ли обойтись без тестировщиков? DataArt IT talk SPb - 2Maxim Shulga (aka MaxBeard12)http://www.blogger.com/profile/05615743910272666556noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-6346131298481535631.post-6209813959248539312012-03-01T13:52:11.665+04:002012-03-01T13:52:11.665+04:00Проблемы при рефакторинге тестов чаще всего заклад...Проблемы при рефакторинге тестов чаще всего закладываются на этапе написания этих тестов. Требования к коду тестов должны быть не ниже, а в ряде случаев даже выше чем к коду самого продукта. Факторы которые ведут к долгому переписыванию тестов достаточно простые - 1. большие объекты с нечеткой ответственностью выполняющие множество задач приводят к тому, что в тестах приходится тратить огромное количество сил для приведения подопытной системы в нужное состояние (огромные mock'и). 2. дупликации в тестах – ведет к необходимости вносить одно изменение в десятки тестов 3. неверное использование или неиспользование принципов IoC ведущее к невозможности или чрезмерной сложности подмены зависимостей в тестируемой системе. 4. Тестирование через не public интерфейсы и тестирование через behavior тесты приводит к тому что мелкий рефакторинг внутренностей класса вызывает необходимости правки тестов.<br /><br />На счет же высказывания Дмитрия "грустно как-то перед любым чекином запускать их вручную" категорически не соглашусь, юниттесты ДОЛЖНЫ запускаться именно на машине разработчика и проходить ооочень быстро. Долгими могут быть функциональные\интеграционные и приемочные тесты, которые уже должны выполняться на выделенных машинах в приближенном к боевому окружении.Eduard Kiborthttps://www.blogger.com/profile/00243090066771303173noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-41288128122832136562012-03-01T13:10:51.763+04:002012-03-01T13:10:51.763+04:00Да, если начальство этого не понимает, то все слож...Да, если начальство этого не понимает, то все сложнее. Но все в ваших руках, "вода камень точит". Проблема с переписыванием тестов существует, может помочь улучшение качества тестов (есть в книжках) и попытка начать писать тесты на фичи по историям (с минимальным обращением непосредственно к коду). Если Ваш проект это позволяет. Тогда локальные изменения в коде, будут реже затрагивать тесты. Конечно к модульным тестам это не относится.Maxim Shulga (aka MaxBeard12)https://www.blogger.com/profile/05615743910272666556noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-79231875944314890772012-03-01T12:30:02.495+04:002012-03-01T12:30:02.495+04:00Я пытался практиковать TDD в своем проекте, замети...Я пытался практиковать TDD в своем проекте, заметил что на разработку фичи уходит сначала до 30% - 40% времени больше, с опытом это превращается в 10% - 20%. Но эффект от наличия тестов заметен - я просто более уверен в своем коде, его качество выше, ну и спать спокойнее стал :) Но все было хорошо до поры до времени: однажды произошли изменения и 80% тестов перестали компилиться а время на их рефакторинг потребовалось для новых фич. Ну и пожалуй главная проблема это их запуск - нет инфраструктуры для их автоматического запуска, грустно как-то перед любым чекином запускать их вручную.<br /><br />В итоге стало ясно что начальству по большому счету не важно есть ли тесты, вот не понятно как бы ему донести плюсы TDD, необходимость выделять ресурсы на написания тестов, на использование автотестов. Видимо это риторический вопрос...Dmitry Ilinhttps://www.blogger.com/profile/08510700417292592912noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-74329140131731857012012-03-01T12:01:31.604+04:002012-03-01T12:01:31.604+04:00Спасибо за отзыв. Про книжки понял - сделаем. Насч...Спасибо за отзыв. Про книжки понял - сделаем. Насчет "документации" - можно обойтись без такого рода документации, хорошо написанные тесты и будут Вашей документацией. У нас кроме историй ничего и не было, и нет. Если такую документацию вести, ее постоянно надо поддерживать up-to-date, иначе время потраченное изначально вы можете заложить себе в убыток (=потраченное зря). Подробнее в отдельном посте (спасибо за наводку).<br />TDD - отличный вопрос. У нас сейчас его нет и это ПЛОХО (см. мой пост про "10 причин..."). На прошлом проекте частично было. Будем и здесь стараться его внедрять. Коротко насчет времени: времени сначала тратиться чуть больше (поглощение теории, поиск инструментов, внедрение, просветление мозгов :), потом меньше - вы не тратите время на написание и тестирование того, что не нужно. Попытка писать тесты на уже написанный код плохо работает с модульным тестированием, так как код может быть написан "не для тестов". Кроме этого, такая практика (+ если это еще усугубляется ситуацией, когда тесты пишет другой разработчик, а не автор) это попытка догнать уходящий поезд - он постоянно уезжает.Maxim Shulga (aka MaxBeard12)https://www.blogger.com/profile/05615743910272666556noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-60851346221226701612012-03-01T11:43:01.027+04:002012-03-01T11:43:01.027+04:00Максим, большое вам спасибо за доклад. Я был в чис...Максим, большое вам спасибо за доклад. Я был в числе тех 10% программистов, и я как раз коллега Алены, которого вы действительно вдохновили. Собственно на что вдохновили? На деятельность по повышению качества собственного кода через использование всякого рода тестирования, ну и на попытки помочь тестировщикам, чтобы не увольнять их :). Уж не знаю на сколько хватит энтузиазма, так как это будет инициатива снизу а не управленческая.<br /><br />Вы говорили что в вашем проекте используется юнит-тестирование. Вы пишите тесты к готовому коду или все же TDD практикуете? Если TDD, интересно как изменилось количество времени на разработку/сопровождение фич вначале/потом?<br />Могли бы вы обобщить и привести список книг и может быть других источников, которые были наиболее полезны при для внедрения практик юнит, модульных, функциональных тестов, использования автотестов.<br /><br />Еще хотелось бы предложить вам тему "Можно ли обойтись без документации" :)<br />Речь идет о различной документации в части разработки (проектирования архитектуры, отдельных модулей, классов и их взаимодействия etc). <br /><br />Спасибо еще раз, ждем новых докладов :)Dmitry Ilinhttps://www.blogger.com/profile/08510700417292592912noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-13510990587357131262012-03-01T10:13:55.352+04:002012-03-01T10:13:55.352+04:00Спасибо за ответ :) Было бы очень интересно почита...Спасибо за ответ :) Было бы очень интересно почитать.Аленаhttps://www.blogger.com/profile/12945002561205776941noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-80042466136081257772012-03-01T09:47:13.087+04:002012-03-01T09:47:13.087+04:00Спасибо за отзыв. Очень надеялся, что кого-нибудь ...Спасибо за отзыв. Очень надеялся, что кого-нибудь зацепит :) По масштабам - если Ваш проект делает команда от 1 до 10 человек, то это Вам подойдет. Но это не значит, что 11-й должен быть уже тестировщик(и) :). Вообще сложно говорить о масштабах. Ваша команда может работать над компонентом большой системы, и этот компонент и есть Ваш проект. Думаю там Вы вольны сами выбирать, как Вы будете его реализовывать. Хотя конечно Фобосы запускать без тестировщиков не нужно :) <br />По организации процесса: во-первых должны быть автотесты, без них это все теряет смысл. Применение Agile практик (без фанатизма) тоже если необязательно, то крайне желательно. Отлично если есть возможность описать user stories, супер если Ваш заказчик помогает Вам в этом. Описанные истории - это половина успеха. Вообще думаю это тема отдельного поста, спасибо за идею - обязательно подумаю, сформулирую и напишу.Maxim Shulga (aka MaxBeard12)https://www.blogger.com/profile/05615743910272666556noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-74903945906865075792012-03-01T08:46:24.844+04:002012-03-01T08:46:24.844+04:00Спасибо Вам за выступление. Кажется, оно вдохновил...Спасибо Вам за выступление. Кажется, оно вдохновило меня и моего коллегу на подвиги :) <br />Хотела задать вопрос: для проектов какого масштаба Вы считаете возможным обходиться без выделенных специалистов по тестированию и какие требования к организации процесса разработки считаете в данном случае обязательными.Аленаhttps://www.blogger.com/profile/12945002561205776941noreply@blogger.com