Uploaded on

Основные ошибки внедрения ATDD, BDD, CI, CD на проектах, Резчиков Алексей …

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

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,784
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
12
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Почему это не работает? или Записки консультанта Февраль 2012 Алексей Резчиков
  • 2. Обо мнеКонсультант по TestingAutomation, ContinuousIntegration и Continuous DeliveryJava разработчик и тимлид ужеболее 6-ти летВ разное время работал project,resource, development иcompetency managerПоследователь XP/Agile/LeanЕвангелист Spring Framework в 2рамках SpringByExample.com.ua @twincengray #atdays
  • 3. Куда мы идем? @twincengray #atdays 3
  • 4. Реалии индустрии @twincengray #atdays 4
  • 5. СказкиСказка ложь, да в ней намек… (с) Народная мудрость @twincengray #atdays 5
  • 6. Сказка №1Site builderРазрабатывается много лет, многоунаследованного кода и архитектурыБольшая текучка кадров @twincengray #atdays 6
  • 7. Проблема и решениеПроблема:Качество и своевременность поставкиПредлагаемое решение: 7Внедрение автоматизации тестирования @twincengray #atdays
  • 8. А на самом деле…На самом деле проблема оказалась вотсутствии структурированных требований иневозможности регрессионноготестирования @twincengray #atdays 8
  • 9. Сказка №2Распределенное клиент-серверное приложениеСервер и клиент тожевеб-приложенияОтраслевые особенностиРаботающий процессContinuous Deployment @twincengray #atdays 9
  • 10. Проблема и решениеПроблема:Нет возможности поставлятьпродукт быстро из-забольшого объема ручноготестированияПредложенное решение:Внедрениеавтоматизированноготестирования и CI @twincengray #atdays 10
  • 11. А на самом деле…Отсутствие низкоуровневых тестов непозволяет, даже при наличии UI тестовоперативно найти и устранитьнеисправность @twincengray #atdays 11
  • 12. «Хорошо, но плохо»Это про внедрение автоматизации.Из моего опыта только единицызаказчиков могут конкретно ответитьна вопрос зачем им автоматизацияОстальные не готовы за это платить @twincengray #atdays 12
  • 13. 5 почему (почему не работает)Why?Why?Why?Why?Why? @twincengray #atdays 13
  • 14. Соответствие цели внедрения средствам(практикам внедрения) Правильное понимание/постановка цели внедрения Правильное определение проблемы, которую будет решать внедрение той или иной практики Осознание наличия проблемы 14 Правильная постановка и понимание целей проекта (продукта) @twincengray #atdays
  • 15. Мы поговорим проСоответствие цели внедрения средствам(практикам внедрения)Правильное понимание/постановка целивнедренияПравильное определение проблемы,которую будет решать внедрение той илииной практики @twincengray #atdays 15
  • 16. Понятия/практики (buzzwords)ATDD – Acceptance Test Driven DevelopmentBDD – Behavior Driven DevelopmentCI – Continuous IntegrationCD – Continuous Delivery @twincengray #atdays 16
  • 17. «Топографический кретинизм» @twincengray #atdays 17
  • 18. «Синдром серебряной пули» @twincengray #atdays 18
  • 19. Полумеры - А, сто рублей, не спасут отцарусской демократии? @twincengray #atdays 19
  • 20. Детские болезни @twincengray #atdays 20
  • 21. ATDD: Непонимание чтотакое критерии приемки @twincengray #atdays 21
  • 22. ATDD: Когда нужно BDD и наоборот @twincengray #atdays 22
  • 23. ATDD: Критерии приемкипишутся не всей командой @twincengray #atdays 23
  • 24. BDD: Cоставление GWT @twincengray #atdays 24
  • 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. BDD: Инструментальные проблемы @twincengray #atdays 26
  • 27. CI @twincengray #atdays 27
  • 28. CI: «Демократия» @twincengray #atdays 28
  • 29. CD: Путанница Cont. deployment и CD @twincengray #atdays 29
  • 30. CD @twincengray #atdays 30
  • 31. CD: А где ваш Configuration Management? @twincengray #atdays 31
  • 32. Технические риски @twincengray #atdays 32
  • 33. Недостаток опыта по технологии @twincengray #atdays 33
  • 34. Недостаток опыта в тестировании @twincengray #atdays 34
  • 35. Избегание CI @twincengray #atdays 35
  • 36. Тестирование на слишком высоком уровне End-to-end/GUI Integration Unit @twincengray #atdays 36
  • 37. Отсутствие илинеполная регрессия @twincengray #atdays 37
  • 38. ИтогиНачинать с начала«Серебряной пули» нетIndividuals and interactions…It’s all about the money @twincengray #atdays 38
  • 39. Вопросы?@twincengray@ua_spring oleksiy.rezchykov@gmail.comSpringByExample.com.ua mcgray.com.ua @twincengray #atdays 39