Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Why it is not working

4,463 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

×