Successfully reported this slideshow.

Why it is not working

4,398 views

Published on

Основные ошибки внедрения ATDD, BDD, CI, CD на проектах, Резчиков Алексей
Каждый новый проект, к которому Алексей подключается в качестве консультанта, уже имеет свою историю внедрения автоматизации тестирования, CI и CD. Истории очень разные, каждая интересна по-своему, каждая рассказывает об ошибках. О самых распространенных из них, а также о том, как их не допустить, Алексей расскажет в своем докладе.

  • Be the first to comment

Why it is not working

  1. 1. Почему это не работает? или Записки консультанта Февраль 2012 Алексей Резчиков
  2. 2. Обо мнеКонсультант по TestingAutomation, ContinuousIntegration и Continuous DeliveryJava разработчик и тимлид ужеболее 6-ти летВ разное время работал project,resource, development иcompetency managerПоследователь XP/Agile/LeanЕвангелист Spring Framework в 2рамках SpringByExample.com.ua @twincengray #atdays
  3. 3. Куда мы идем? @twincengray #atdays 3
  4. 4. Реалии индустрии @twincengray #atdays 4
  5. 5. СказкиСказка ложь, да в ней намек… (с) Народная мудрость @twincengray #atdays 5
  6. 6. Сказка №1Site builderРазрабатывается много лет, многоунаследованного кода и архитектурыБольшая текучка кадров @twincengray #atdays 6
  7. 7. Проблема и решениеПроблема:Качество и своевременность поставкиПредлагаемое решение: 7Внедрение автоматизации тестирования @twincengray #atdays
  8. 8. А на самом деле…На самом деле проблема оказалась вотсутствии структурированных требований иневозможности регрессионноготестирования @twincengray #atdays 8
  9. 9. Сказка №2Распределенное клиент-серверное приложениеСервер и клиент тожевеб-приложенияОтраслевые особенностиРаботающий процессContinuous Deployment @twincengray #atdays 9
  10. 10. Проблема и решениеПроблема:Нет возможности поставлятьпродукт быстро из-забольшого объема ручноготестированияПредложенное решение:Внедрениеавтоматизированноготестирования и CI @twincengray #atdays 10
  11. 11. А на самом деле…Отсутствие низкоуровневых тестов непозволяет, даже при наличии UI тестовоперативно найти и устранитьнеисправность @twincengray #atdays 11
  12. 12. «Хорошо, но плохо»Это про внедрение автоматизации.Из моего опыта только единицызаказчиков могут конкретно ответитьна вопрос зачем им автоматизацияОстальные не готовы за это платить @twincengray #atdays 12
  13. 13. 5 почему (почему не работает)Why?Why?Why?Why?Why? @twincengray #atdays 13
  14. 14. Соответствие цели внедрения средствам(практикам внедрения) Правильное понимание/постановка цели внедрения Правильное определение проблемы, которую будет решать внедрение той или иной практики Осознание наличия проблемы 14 Правильная постановка и понимание целей проекта (продукта) @twincengray #atdays
  15. 15. Мы поговорим проСоответствие цели внедрения средствам(практикам внедрения)Правильное понимание/постановка целивнедренияПравильное определение проблемы,которую будет решать внедрение той илииной практики @twincengray #atdays 15
  16. 16. Понятия/практики (buzzwords)ATDD – Acceptance Test Driven DevelopmentBDD – Behavior Driven DevelopmentCI – Continuous IntegrationCD – Continuous Delivery @twincengray #atdays 16
  17. 17. «Топографический кретинизм» @twincengray #atdays 17
  18. 18. «Синдром серебряной пули» @twincengray #atdays 18
  19. 19. Полумеры - А, сто рублей, не спасут отцарусской демократии? @twincengray #atdays 19
  20. 20. Детские болезни @twincengray #atdays 20
  21. 21. ATDD: Непонимание чтотакое критерии приемки @twincengray #atdays 21
  22. 22. ATDD: Когда нужно BDD и наоборот @twincengray #atdays 22
  23. 23. ATDD: Критерии приемкипишутся не всей командой @twincengray #atdays 23
  24. 24. BDD: Cоставление GWT @twincengray #atdays 24
  25. 25. BDD: «Где упал мой тест?»D|DefaultListableBeanFactory |Returning cached instance of singleton bean org.springframework.context.annotation.internalAutowiredAnnotationProcessorD|DefaultListableBeanFactory |Returning cached instance of singleton bean org.springframework.context.annotation.internalRequiredAnnotationPro cessorD|DefaultListableBeanFactory |Returning cached instance of singleton bean org.springframework.context.annotation.internalCommonAnnotationProce ssorD|DefaultListableBeanFactory |Returning cached instance of singleton bean org.springframework.context.annotation.internalPersistenceAnnotationProcessorD|DefaultListableBeanFactory |Creating shared instance of singleton bean sendMailTextConfigD|DefaultListableBeanFactory |Creating instance of bean sendMailTextConfigD|InjectionMetadata |Found injected element on class [com.technorati.portal.service.SendMailTextConfig$$EnhancerByCGLIB$$33a64e76]:AutowiredFieldElement for private org.springframework.core.env.Environment com.technorati.portal.service.SendMailTextConfig.environmentD|DefaultListableBeanFactory |Eagerly caching bean sendMailTextConfig to allow for resolving potential circular referencesD|InjectionMetadata |Processing injected method of bean sendMailTextConfig: AutowiredFieldElement for privateorg.springframework.core.env.Environment com.technorati.portal.service.SendMailTextConfig.environmentD|DefaultListableBeanFactory |Returning cached instance of singleton bean environmentD|AutowiredAnnotationBeanPostProcessor |Autowiring by type from bean name sendMailTextConfig to bean named environmentD|DefaultListableBeanFactory |Finished creating instance of bean sendMailTextConfigD|DefaultListableBeanFactory |Returning cached instance of singleton beanorg.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessorD|DefaultListableBeanFactory |Creating shared instance of singleton bean sendMailServiceD|DefaultListableBeanFactory |Creating instance of bean sendMailServiceD|DefaultListableBeanFactory |Returning cached instance of singleton bean sendMailTextConfigD|DefaultListableBeanFactory |Creating shared instance of singleton bean freemarkerConfigurationD|DefaultListableBeanFactory |Creating instance of bean freemarkerConfigurationD|DefaultListableBeanFactory |Returning cached instance of singleton bean sendMailTextConfigD|DefaultListableBeanFactory |Eagerly caching bean freemarkerConfiguration to allow for resolving potential circular referencesD|DefaultListableBeanFactory |Finished creating instance of bean freemarkerConfigurationD|DefaultListableBeanFactory |Creating shared instance of singleton bean templatesMapD|DefaultListableBeanFactory |Creating instance of bean templatesMapD|DefaultListableBeanFactory |Returning cached instance of singleton bean sendMailTextConfigD|DefaultListableBeanFactory |Eagerly caching bean templatesMap to allow for resolving potential circular referencesD|DefaultListableBeanFactory |Finished creating instance of bean templatesMap 25D|DefaultListableBeanFactory |Creating shared instance of singleton bean mailSenderD|DefaultListableBeanFactory |Creating instance of bean mailSenderD|DefaultListableBeanFactory |Returning cached instance of singleton bean sendMailTextConfigD|DefaultListableBeanFactory |Eagerly caching bean mailSender to allow for resolving potential circular referencesD|DefaultListableBeanFactory |Finished creating instance of bean mailSenderD|InjectionMetadata |Found injected element on class [com.technorati.portal.service.SendMailService]: ResourceElement for private java.util.Mapcom.technorati.portal.service.SendMailService.templatesMapD|InjectionMetadata |Found injected element on class [com.technorati.portal.service.SendMailService]: AutowiredFieldElement for privateorg.springframework.mail.MailSender com.technorati.portal.service.SendMailService.mailSenderD|InjectionMetadata @twincengray #atdays |Found injected element on class [com.technorati.portal.service.SendMailService]: AutowiredFieldElement for privatefreemarker.template.Configuration com.technorati.portal.service.SendMailService.freemarkerConfigurationD|InjectionMetadata |Found injected element on class [com.technorati.portal.service.SendMailService]: AutowiredFieldElement for private java.lang.Stringcom.technorati.portal.service.SendMailService.emailFrom
  26. 26. BDD: Инструментальные проблемы @twincengray #atdays 26
  27. 27. CI @twincengray #atdays 27
  28. 28. CI: «Демократия» @twincengray #atdays 28
  29. 29. CD: Путанница Cont. deployment и CD @twincengray #atdays 29
  30. 30. CD @twincengray #atdays 30
  31. 31. CD: А где ваш Configuration Management? @twincengray #atdays 31
  32. 32. Технические риски @twincengray #atdays 32
  33. 33. Недостаток опыта по технологии @twincengray #atdays 33
  34. 34. Недостаток опыта в тестировании @twincengray #atdays 34
  35. 35. Избегание CI @twincengray #atdays 35
  36. 36. Тестирование на слишком высоком уровне End-to-end/GUI Integration Unit @twincengray #atdays 36
  37. 37. Отсутствие илинеполная регрессия @twincengray #atdays 37
  38. 38. ИтогиНачинать с начала«Серебряной пули» нетIndividuals and interactions…It’s all about the money @twincengray #atdays 38
  39. 39. Вопросы?@twincengray@ua_spring oleksiy.rezchykov@gmail.comSpringByExample.com.ua mcgray.com.ua @twincengray #atdays 39

×