|
Персональные инструменты |
|||
|
2008-12-23 AgileDays-2008Материал из CustisWiki
Текущая версия на 17:18, 7 февраля 2013В день конституции наша команда десантировалась на конференции AgileDays-2008 — от нас было два докладчика, десяток участников и спонсорское участие. Пара слов об аудитории в обоих смыслах:
Да, видео мы выкладываем в двух вариантах: флеш-видео в высоком разрешении (размещенном на профессиональном хостинге) и нормальных AVI-файлов максимально возможного разрешения (чтобы рассмотреть нетривиальный текст или живую демонстрацию программы), которых можно скачать перейдя (клик в правом нижнем углу) на страничку видео на хостинге, и проследовав по ссылке опять в правом нижнем углу. Мы проверяли — скачивания 700 мегабайтного файла с этого хостинга в московских домашних сетях идет со скоростью не меньше 1МБ/c и проходит меньше чем за 10 минут. Если что-то с видео «не слава богу» — не скачивается там, или обрезано — пожалуйста, сообщите почтой или комментарием. Объявление: если мы вручили вам на конференции флешки (с логотипом CustIS), пожалуйста, прочтитеэто объявление. Итак, вернемся к конференции. От нас было два доклада.Введение в непрерывную интеграциюДокладчик: Андрей Сатарин.Презентация, презентация-handout, статья.Есть аудиозапись. Мы несколько опоздали к началу, поэтому рекомендуем скачать полное видео с сайта agiledays.ru.
Доклад про Continuous Integration, возможно уже несколько набил оскомину у продвинутых тестировщиков и разработчиков, — ведь мы по более-менее схожей теме уже проводили открытый семинар, доклад на конференции SECR-2008, не говоря уже о паре внутренних лекций. С другой стороны, в отличие от некоторых авторов (включая западных гуру), выступающих с одной темой годами, достигая в ней неизмеримых высот и глубин, мы считаем, что лучше «отбомбиться» по теме сразу и до конца, пока она актуальна, чтобы избежать обидных обвинений ([:|||||||:] ). И действительно, семинар показал, что в целом, концепция непрерывной интеграции у аудитории удивления не вызывает, споров полезна она или вредна, уже не ведется (примерно как ранее стало бессмысленно спорить о необходимости систем контроля версий), многие попробовали несколько различных продуктов, а многие даже гордятся возникающими сложностями — «наш проект настолько длинныйвелик, что даже самая непрерывная интеграция прерывается и превращается в ночные сборки» и «наша команда настолько распределенная, что наши сборки не поспевают за Солнцем…». Такие настроения было несложно предугадать, и продемонстрировать «карту в рукаве/рояль в кустах» — «слайды с ответами на ожидаемые вопросы». В целом мысль такова: долгое время сборки это либо проблема неправильных инструментов (не используются правильные менеджеры сборки, типа SCons, Ant, make, …), либо проблема архитектуры (наличие крупных ядер, где «все зависит от всего»). Конечно, такие случаи есть, и странно, что аудитория на них не указала (тогда бы мы показали еще слайдов). Например, классическая реляционная база данных, как известно, очень плохо стыкуется почти со всеми agile-практиками, и в случае continuous integration «кошерное» пересоздание тестировочной базы с нуля в большинстве случаев выглядит неподъемной задачей. Но и в этом случае можно «бороться за живучесть» концепции, применяя разные лайфхаки. Например, классический паттерн ускорения непрерывной интеграции — наращивание памяти на сборочном сервере, и использование tmpfs для файлов и специальных in-memory SQL СУБД для тестирования SQL СУБД функциональности. Но несмотря на все эти гитики, действительно, тема непрерывной интеграции не такая уж и обширная, в целом тянет на полдесятка статей, так например, книга «Continuous Integration» Пола Дюваля и К° (есть русский перевод — «Непрерывная интеграция»), явно имеет «надутый водой» объем.Безудержный Рефакторинг: как не убить себя об стену.Докладчик: Андрей БибичевПрезентация: http://agilerussia.ru/files/agiledays/Bibitchev.Refactoring.pdf
Поднята достаточно оригинальная тема. После десятков регулярных докладов agile-евангелистов о безусловной пользе рефакторинга, появления удобных инструментов, сделавших рефакторинг автоматизированным и доступным для применения в режиме «не приходя в сознание», наконец появился кто-то, чтобы остановить разогнанный маятник, одуматься, рассмотреть случаи, когда применение рефакторинга, как ковровых бомбадировок, вредно, и прояснить причины, почему собственно. Причем «разбор полетов» проходил не на абстрактных примерах (коде типа Foo/Bar), а на настоящих живых примерах на C# и Java из репозитория нашей компании и компании Microsoft. В целом, резюме состоит в том, что автоматика (включая Автоматику© с большой буквы, т.е. людей, но работающих в автоматическом режиме) не дает никогда никаких гарантий, и что еще более страшно, создает ложную уверенность, что такие гарантии есть. Разумеется, после мощного разбора проблем и их источников, были предложены решения организационного, социального и культурного плана. Теперь кратко рассмотрим доклады остальных участников.Каким должно быть приемочное тестирование в agile-проектах?Докладчик: Алексей БаранцевПрезентация: http://agilerussia.ru/files/agiledays/Barantsev.AcceptanceTesting.pdf Доклад концептуальный, не ограничивается рамками достаточно «канцелярского» названия, мыслей много. Основная драматургия: противостояние людей (опытных творцов, весельчаков и разумных лентяев) и механизмов (инструментов, жестких социальных организаций, регламентов и методологий). Мысль — жесткие/водопадные методологии разработки — это если ваши бойцы тупая пехота. Тогда да, муштра и вперед на минные поля — ненадежность отдельного солдата спасет дублирование и избыточность, и заплаченная цена будет оправдана.Но если у вас мощные, кросс-функциональные парни-коммандос, то нужно организовать им комфортную команду и обеспечить полную поддержку. Холить, лелеять, обеспечивать имFun иProfit. А то, что agile проекты иногда проваливаются, виновата не избалованность людей, а отсутствие способностей —в agile проекты нужно нанимать лучших, а дальше пускай они уже выкручиваются сами, главное их не обижать.В качестве метафор «подходов прошлого тысячелетия» автор использовал концепцию стимпанка, иллюстрируя ее картинкой из steampank-style календаря «The other side of the coin» (остальные картинки, если заинтересовали, можно найти тут [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] ).Со своей стороны, мы заметим, что это несколько натянутая, и нехарактерная визуализация стимпанка. Стимпанк — это не депрессивные ржавые железяки, чешущие зад лоснящегося мускулистого рабочего (ммм…?), а скорее идея максимальной эволюции старинных технологий, в предположении, что им так и не было найдено замены. А вершина эволюции — это всегда красиво (дредноуты времени Iмв, последние паровозы, американские автомобили эпохи дешевой нефти). Так что если хотите взглянуть, что есть стимпанк, лучше смотреть соответствующиеаниме-мультфильмы. Вообще видов тестирования очень много (Unit testing,Integration testing,System testing,Performance testing,Reliability testing,Security testing,Usability testing,Portability testing,Acceptance testing) и хорошо автоматизируется только первый (Unit testing), а автоматизация всего остального — это увы, всего лишь пропаганда вендоров, которые втюхивают дорогущие инструменты автоматизации. Так что в тестировании все остальное надо делать вручную «на коленке» и здесь на первый план выходит квалификация тестировщиков (люди — самый ценный ресурс!). Следующая мысль — несправедливость Agile-благ для программистов и тестировщиков. Пророки Agile многое дали программистам —Refactoring,Unit-тестирование,Continuous Integration, парное программирование,Scrum со всеми его играми и т.п. Power и Fun, как и заказывали. Тестировщикам же из этого ничего не обломилось, кроме фреймворка FIT, но докладчик с негодованием открестился от этого убогого подарка («недопрограммирование» на вики-разметке, тотальная неполнота и ограниченность). С учетом предыдущей мысли, что для правильного тестирования все равно нужны крутые супертестировщики, возникает идея, что не «тестировщик — друг программиста», а «программист — студент, сдающий экзамен тестировщику». Т.е. нанимать надо самых лучших и задорого («Разве вы не знали, что тестировщики везде получают больше разработчиков?» Profit!), желательно из программистов достигших совершенства, и потерявших интерес к программированию («Саваоф Баалович был всемогущ. Он мог все. И он ничего не мог. Потому что граничным условием уравнения Совершенства оказалось требование, чтобы чудо не причиняло никому вреда.»), программистов надо отдать тестировщикам на съедение (отдать их код на Code Review), ведь единственная корректная метрика кода — это количество WTF-ов в минуту при проведении code-review. Ну не говоря уж о том, что Scrum/Agile для тестировщиков означает одно — больше Fun-а, а Scrum Master должен быть помесью пионер-вожатого и массовика затейника! Местами этот фан выглядит несколько беспредельно. Только компания привыкла, что все вертикальные поверхности, включая шкафы-купе для одежды обклеены Scrum-taskами, возникают тестировщики и исписывают стены в туалетах (концепция «Testing on the Toilet»). Докладчик рассказал, что в Беларуссии была конференция SQA Days 4 на которой был доклад «Funny testing: как добавить драйва в работу» — какой еще Fun можно придумать команде что бы не работать. Ну и в целом, нужно смотреть видео. Хотя бы для того, чтобы узнать о силе волшебной фразы «Ну и что?». Тестирование в Agile проектах Докладчик: Илья Гаврилов Презентация: http://agilerussia.ru/files/agiledays/Gavrilov.TestingInAgile.pdf
Хотя название доклада похоже на название предыдущего доклада, тут совсем о другом, скорее о чисто тестировании, чем об Agile. Вполне можно представить этот доклад с небольшими изменениями для тем «тестирование в RUP-проектах», «modern testcase management» и т.п. Т.е. упор действительно сделан на управление сценариями (use case), тестами (test-case и unit tests). Указывалась необходимость покрыть все сценарии тест-кейсами не меньше чем на 60%, и 80% кода (больше бессмысленно) — юнит-тестами. В качестве универсального инструмента для ведения и сценариев тестирования, и расчета различных метрик и графиков докладчик рекомендовал Excel. Основной вопрос, обсуждавшийся после доклада — это как держать все эти планы тестирования в актуальном состоянии. Предложение докладчика простое и очевидное: планировать их актуализацию также, как и все остальные работы, т.е. при оценке задачи сразу оценить какие изменения нужно делать не только в коде, но и в тестах.Unit testing with XML Докладчик: Дмитрий Всехвальнов Презентация: http://agilerussia.ru/files/agiledays/Vskehvalnov.XmlUnitTesting.pdf
По сути доклад был посвящен исключительно использованию библиотеки XmlUnit для написания unit-тестов, связанных с проверкой корректности сформированного XML-я. Доклад состоял из двух частей:
По сути, библиотека XmlUnit — это набор готовых ASSERT-ов для JUnit-а (Java-версия библиотеки) и NUnit-а (.Net-версия библиотеки). При этом .Net-версия, судя по описанию на сайте, развита значительно слабее своего Java-аналога.Тестирование Web 2.0Докладчик: Владимир КолесниковПрезентация: http://agilerussia.ru/files/agiledays/Kolesnikov.TestingWeb2.0.pdf
Краткий, 20 минутный доклад, как можно и нужно тестировать вебдванольные проекты. Основной посыл доклада: очень много javascript-а, больше 4-х браузеров (каждый со своими нюансами и глюками), аудитория пользователей огромная — нужна гарантия качества. Далее перечислил что и как можно тестировать:
Еще запомнилось, что им сильно помогает логгирование исключений, произошедших на стороне клиента. Делают они это при помощиwindow.onerror, правда работает это только в IE и FireFox-е. Именно благодаря этому приему они узнают об успешности версии (если за несколько часов таких ошибок не поступает, значит версия успешна). Как мы уже заметили, в аудитории было мало вебразработчиков, в основном тестировщики и разработчики enterprise-приложений, вероятно поэтому, вопросов доклад практически не вызвал.Working Effectively with Legacy Code Доклад Майкла Физерса был «guest star» всего мероприятия, хотя стоит отметить, что не все смогли выдержать плотную конференцию до самого конца — слушателей было существенно меньше, чем в начале дня. Но тема доклада всегда актуальна,Legacy Codeэто вечное проклятие невезучих программистов (т.е. тех, которых бросают на поддержку чужого кода), и legacy code вечен — да, старые информационные системы умирают, но проходит пару лет, и даже твой супер-крутой код становитьсяlegacy… . Трудно удержаться и не процитировать соответствующие комиксы Дильберта:На модельном примере класса «расписание» (Schedule), написанном на Java, Физер показал как сделать его тестопригодным. Основной прием свелся к N-кратному применению Dependency injection. Причем, на наш вкус с некоторым перебором: даже статические helper-методы определения является ли день выходным или рабочим были перенесены в нестатический класс, а в тесте было предложено их «заглушить», написав соответствующего наследника. ИМХО это уже другая крайность: когда тестируется функциональностьровно одного класса, а всё, что он использует, либо заглушено при помощи Stub-ов, либо эмулируется при помощи Mock-ов (см. http://martinfowler.com/articles/mocksArentStubs.html). Это так можно получить результат как в репризе Райкина «претензии к пуговицам есть — нет, пришиты намертво…» К сожалению, по просьбе Майкла, мы (пока?) воздерживаемся от публикации видео — Майкл хотел бы вырезать некоторые моменты. Возможно мы передадим видео Асхату Уразбаеву, и Асхат уже опубликует одобренную часть. А пока, мы рекомендуем заинтересованным темой, прочитать книгу «Рефакторинг с использованием шаблонов» .Резюме Мероприятие удалось! Очень удачно выбранный формат, резервирующий 20-25 мин, после каждого доклада на вопросы, делает осмысленным личное присутствие на конференции, а доступ к презентациям и видео — неограниченно расширяет аудиторию. Полезность мероприятия явно не уступает «стандартной» Software конференции, типа SEСR, — и это еще одно доказательство, что Agile-подход рулит и в организации конференций. Это подтверждают и отзывы. Надеемся, что Асхат сможет продолжить линию таких миниконференций. Если чуть-чуть уменьшить число участников (до 50), то мы могли бы предложить и свою площадку для участников — зал с креслами, мощным проектором и экраном с 4-метровой диагональю, в центре Москвы, в 5-минутной доступности от 5 станций метро. |
||||||||||||||||||||||||||