SlideShare a Scribd company logo
Почему это не работает?
            или
    Записки консультанта


                         Февраль 2012
                     Алексей Резчиков
Обо мне
Консультант по Testing
Automation, Continuous
Integration и Continuous Delivery
Java разработчик и тимлид уже
более 6-ти лет
В разное время работал project,
resource, development и
competency manager
Последователь XP/Agile/Lean
Евангелист Spring Framework в


                                              2
рамках SpringByExample.com.ua


                       @twincengray #atdays
Куда мы идем?




      @twincengray #atdays
                             3
Реалии индустрии




        @twincengray #atdays
                               4
Сказки
Сказка ложь, да в ней намек… (с)

                            Народная мудрость




                       @twincengray #atdays
                                                5
Сказка №1




Site builder

Разрабатывается много лет, много
унаследованного кода и архитектуры

Большая текучка кадров
                         @twincengray #atdays
                                                6
Проблема и решение




Проблема:
Качество и своевременность поставки

Предлагаемое решение:


                                                7
Внедрение автоматизации тестирования

                         @twincengray #atdays
А на самом деле…
На самом деле проблема оказалась в
отсутствии структурированных требований и
невозможности регрессионного
тестирования




                   @twincengray #atdays
                                            8
Сказка №2
Распределенное клиент-
серверное приложение

Сервер и клиент тоже
веб-приложения

Отраслевые особенности

Работающий процесс
Continuous Deployment




                         @twincengray #atdays
                                                9
Проблема и решение
Проблема:
Нет возможности поставлять
продукт быстро из-за
большого объема ручного
тестирования


Предложенное решение:
Внедрение
автоматизированного
тестирования и CI


                         @twincengray #atdays
                                                10
А на самом деле…
Отсутствие низкоуровневых тестов не
позволяет, даже при наличии UI тестов
оперативно найти и устранить
неисправность




                   @twincengray #atdays
                                          11
«Хорошо, но плохо»
Это про внедрение автоматизации.

Из моего опыта только единицы
заказчиков могут конкретно ответить
на вопрос зачем им автоматизация

Остальные не готовы за это платить




          @twincengray #atdays
                                 12
5 почему (почему не
      работает)
Why?
Why?
Why?
Why?
Why?

           @twincengray #atdays
                                  13
Соответствие цели внедрения средствам
(практикам внедрения)



   Правильное понимание/постановка цели
   внедрения


       Правильное определение проблемы,
       которую будет решать внедрение той или
       иной практики



           Осознание наличия проблемы




                                                         14
               Правильная постановка и понимание целей
               проекта (продукта)


                                @twincengray #atdays
Мы поговорим про
Соответствие цели внедрения средствам
(практикам внедрения)

Правильное понимание/постановка цели
внедрения

Правильное определение проблемы,
которую будет решать внедрение той или
иной практики




                   @twincengray #atdays
                                          15
Понятия/практики
     (buzzwords)
ATDD – Acceptance Test Driven Development

BDD – Behavior Driven Development

CI – Continuous Integration

CD – Continuous Delivery




                     @twincengray #atdays
                                            16
«Топографический
   кретинизм»




        @twincengray #atdays
                               17
«Синдром серебряной
      пули»




         @twincengray #atdays
                                18
Полумеры
 - А, сто рублей, не спасут отца
русской демократии?




          @twincengray #atdays
                                   19
Детские болезни




       @twincengray #atdays
                              20
ATDD: Непонимание что
такое критерии приемки




           @twincengray #atdays
                                  21
ATDD: Когда нужно BDD
     и наоборот




          @twincengray #atdays
                                 22
ATDD: Критерии приемки
пишутся не всей командой




            @twincengray #atdays
                                   23
BDD: Cоставление GWT




          @twincengray #atdays
                                 24
BDD: «Где упал мой тест?»
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor'
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean 'org.springframework.context.annotation.internalRequiredAnnotationPro cessor'
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean 'org.springframework.context.annotation.internalCommonAnnotationProce ssor'
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean 'org.springframework.context.annotation.internalPersistenceAnnotationProcessor'
D|DefaultListableBeanFactory           |Creating shared instance of singleton bean 'sendMailTextConfig'
D|DefaultListableBeanFactory           |Creating instance of bean 'sendMailTextConfig'
D|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.environment
D|DefaultListableBeanFactory           |Eagerly caching bean 'sendMailTextConfig' to allow for resolving potential circular references
D|InjectionMetadata                |Processing injected method of bean 'sendMailTextConfig': AutowiredFieldElement for private
org.springframework.core.env.Environment com.technorati.portal.service.SendMailTextConfig.environment
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean 'environment'
D|AutowiredAnnotationBeanPostProcessor |Autowiring by type from bean name 'sendMailTextConfig' to bean named 'environment'
D|DefaultListableBeanFactory           |Finished creating instance of bean 'sendMailTextConfig'
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean
'org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor'
D|DefaultListableBeanFactory           |Creating shared instance of singleton bean 'sendMailService'
D|DefaultListableBeanFactory           |Creating instance of bean 'sendMailService'
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean 'sendMailTextConfig'
D|DefaultListableBeanFactory           |Creating shared instance of singleton bean 'freemarkerConfiguration'
D|DefaultListableBeanFactory           |Creating instance of bean 'freemarkerConfiguration'
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean 'sendMailTextConfig'
D|DefaultListableBeanFactory           |Eagerly caching bean 'freemarkerConfiguration' to allow for resolving potential circular references
D|DefaultListableBeanFactory           |Finished creating instance of bean 'freemarkerConfiguration'
D|DefaultListableBeanFactory           |Creating shared instance of singleton bean 'templatesMap'
D|DefaultListableBeanFactory           |Creating instance of bean 'templatesMap'
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean 'sendMailTextConfig'
D|DefaultListableBeanFactory           |Eagerly caching bean 'templatesMap' to allow for resolving potential circular references
D|DefaultListableBeanFactory           |Finished creating instance of bean 'templatesMap'




                                                                                                                                                                          25
D|DefaultListableBeanFactory           |Creating shared instance of singleton bean 'mailSender'
D|DefaultListableBeanFactory           |Creating instance of bean 'mailSender'
D|DefaultListableBeanFactory           |Returning cached instance of singleton bean 'sendMailTextConfig'
D|DefaultListableBeanFactory           |Eagerly caching bean 'mailSender' to allow for resolving potential circular references
D|DefaultListableBeanFactory           |Finished creating instance of bean 'mailSender'
D|InjectionMetadata                |Found injected element on class [com.technorati.portal.service.SendMailService]: ResourceElement for private java.util.Map
com.technorati.portal.service.SendMailService.templatesMap
D|InjectionMetadata                |Found injected element on class [com.technorati.portal.service.SendMailService]: AutowiredFieldElement for private
org.springframework.mail.MailSender com.technorati.portal.service.SendMailService.mailSender
D|InjectionMetadata
                                                                                          @twincengray #atdays
                                   |Found injected element on class [com.technorati.portal.service.SendMailService]: AutowiredFieldElement for private
freemarker.template.Configuration com.technorati.portal.service.SendMailService.freemarkerConfiguration
D|InjectionMetadata                |Found injected element on class [com.technorati.portal.service.SendMailService]: AutowiredFieldElement for private java.lang.String
com.technorati.portal.service.SendMailService.emailFrom
BDD: Инструментальные
      проблемы




          @twincengray #atdays
                                 26
CI




 @twincengray #atdays
                        27
CI: «Демократия»




        @twincengray #atdays
                               28
CD: Путанница Cont.
  deployment и CD




         @twincengray #atdays
                                29
CD




 @twincengray #atdays
                        30
CD: А где ваш Configuration
       Management?




             @twincengray #atdays
                                    31
Технические риски




        @twincengray #atdays
                               32
Недостаток опыта по
    технологии




         @twincengray #atdays
                                33
Недостаток опыта в
  тестировании




         @twincengray #atdays
                                34
Избегание CI




      @twincengray #atdays
                             35
Тестирование на слишком
    высоком уровне

    End-to-end/GUI
      Integration
         Unit
           @twincengray #atdays
                                  36
Отсутствие или
неполная регрессия




         @twincengray #atdays
                                37
Итоги
Начинать с начала

«Серебряной пули» нет

Individuals and interactions…

It’s all about the money




                      @twincengray #atdays
                                             38
Вопросы?
@twincengray
@ua_spring


        oleksiy.rezchykov@gmail.com


SpringByExample.com.ua

           mcgray.com.ua

               @twincengray #atdays
                                      39

More Related Content

PDF
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
PDF
“Обезьянье тестирование” в мобильных проектах
PDF
Проблемы автоматизации крупных проектов: TestComplete
PDF
Совершенный тестовый фреймворк
PDF
Фреймворк для регрессионного тестирования на основе WebDriver
PDF
За пределами PageObject
PDF
Keyword driven testing
PPTX
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
“Обезьянье тестирование” в мобильных проектах
Проблемы автоматизации крупных проектов: TestComplete
Совершенный тестовый фреймворк
Фреймворк для регрессионного тестирования на основе WebDriver
За пределами PageObject
Keyword driven testing
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...

What's hot (20)

PPT
Вавилонское тестировтворение - Алекскей Лупан
PDF
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераном
PDF
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
PPTX
Experience report: внедрение Scrum на чужбине
PDF
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
PPTX
Всему своё время Highload Junior 2016
PPTX
Как заводить баги понятно всем
PPTX
Правила отбора: как отобрать правильных тестировщиков в свою команду
PPTX
Как писать на PHP и не стать быдло-кодером
PDF
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
PPTX
Автоматизация тестирования - это пот, кровь и слезы
PDF
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
PPTX
О фреймворках Backend conf 2016
PDF
"Outside In". Web application testing.
PPTX
How to Calculate Test Automation ROI
PPTX
FitNesse+PowerSlim on Windows
PDF
Как тестировщику выжить в стартапе
PPTX
Тестировщик в стартапе. Зачем и как
PPTX
Как мы делаем Banki.ru
PDF
Как аналитика помогает тестировщику
Вавилонское тестировтворение - Алекскей Лупан
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераном
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Experience report: внедрение Scrum на чужбине
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Всему своё время Highload Junior 2016
Как заводить баги понятно всем
Правила отбора: как отобрать правильных тестировщиков в свою команду
Как писать на PHP и не стать быдло-кодером
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Автоматизация тестирования - это пот, кровь и слезы
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
О фреймворках Backend conf 2016
"Outside In". Web application testing.
How to Calculate Test Automation ROI
FitNesse+PowerSlim on Windows
Как тестировщику выжить в стартапе
Тестировщик в стартапе. Зачем и как
Как мы делаем Banki.ru
Как аналитика помогает тестировщику
Ad

Viewers also liked (12)

PDF
Быстрое расширение Robot Framework под свои нужды с использованием Python
PDF
Автоматизация тестирования как сервис
PDF
Codeception - WTF?
PDF
Швейцарский нож для Android
PDF
Александр Кабалюк – SilkTest
PDF
Тестирование производительности Ajax приложений с помощью JMeter
PDF
Философия и построение тестового фреймворка на основе BDD в PHP проектах
PDF
В поисках магической кнопки или как приручить SOAP UI
PDF
Отряд тест-аналитиков
PPTX
Провокации автоматического тестирования
PPTX
Автоматизация тестирования WEB API
PPTX
Когда стоит закончить автоматизировать?
Быстрое расширение Robot Framework под свои нужды с использованием Python
Автоматизация тестирования как сервис
Codeception - WTF?
Швейцарский нож для Android
Александр Кабалюк – SilkTest
Тестирование производительности Ajax приложений с помощью JMeter
Философия и построение тестового фреймворка на основе BDD в PHP проектах
В поисках магической кнопки или как приручить SOAP UI
Отряд тест-аналитиков
Провокации автоматического тестирования
Автоматизация тестирования WEB API
Когда стоит закончить автоматизировать?
Ad

Similar to Why it is not working (20)

PPTX
Почему это не работает (Записки консультанта)
PDF
Услуга «Техническая поддержка разработки»
PDF
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
PPTX
Lean Software Development
PDF
Тестирование в диджитал проектах
PDF
За пределами Page Object. ATDays 2013 Киев. Февраль 2013
PDF
Как разраба
PDF
Баба Яга против!
PDF
CodeFest 2011. Макаров А. — Как разрабатывается Yii
PDF
Илья Ефимов «IoC/DI на примере Autofac»
PDF
Илья Ефимов «IoC/DI на примере Autofac»
PPTX
Социология Code Review или что делать, елси ваши тестировщики начали писать т...
PDF
Корпоративное приложение на Rails
PDF
DevOPS meetup
PPTX
Путь к чистому и компактному коду исполняемых спецификаций
PDF
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
PDF
Рефакторинг
PDF
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
PPTX
11 ключевых ошибок в разработке интернет-проектов
PPTX
Никита Галкин "Testing in Node.js World"
Почему это не работает (Записки консультанта)
Услуга «Техническая поддержка разработки»
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Lean Software Development
Тестирование в диджитал проектах
За пределами Page Object. ATDays 2013 Киев. Февраль 2013
Как разраба
Баба Яга против!
CodeFest 2011. Макаров А. — Как разрабатывается Yii
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
Социология Code Review или что делать, елси ваши тестировщики начали писать т...
Корпоративное приложение на Rails
DevOPS meetup
Путь к чистому и компактному коду исполняемых спецификаций
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Рефакторинг
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
11 ключевых ошибок в разработке интернет-проектов
Никита Галкин "Testing in Node.js World"

More from automated-testing.info (15)

PPTX
Andrey Azimov - Как найти работу тестировщику?
PPT
Jenkins auto configureforbranch-php
PPTX
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
PPT
Alexei Zozulenko - Test automation failure
PPTX
Vladimir Primakov - Test Automation By Example
PPTX
Codeception Introduction
PPTX
Ivan Bordug Test Automation Story
PPTX
Alexander Zvonov Test Automation Story
PPTX
Daria Chernishova Test Automation Story
PDF
Bdd with java using concordion and selenium ui tests
PDF
Bdd + SpecFlow + WatiN
PDF
Efficient performance testing
PPTX
Qtp Automation and Extensibility
PPTX
Автоматизация тестирования веб-сервисов посредством SOAP UI
PPTX
Page Object Pattern
Andrey Azimov - Как найти работу тестировщику?
Jenkins auto configureforbranch-php
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Alexei Zozulenko - Test automation failure
Vladimir Primakov - Test Automation By Example
Codeception Introduction
Ivan Bordug Test Automation Story
Alexander Zvonov Test Automation Story
Daria Chernishova Test Automation Story
Bdd with java using concordion and selenium ui tests
Bdd + SpecFlow + WatiN
Efficient performance testing
Qtp Automation and Extensibility
Автоматизация тестирования веб-сервисов посредством SOAP UI
Page Object Pattern

Why it is not working

  • 1. Почему это не работает? или Записки консультанта Февраль 2012 Алексей Резчиков
  • 2. Обо мне Консультант по Testing Automation, Continuous Integration и Continuous Delivery Java разработчик и тимлид уже более 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. Сказка №1 Site 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 Development BDD – Behavior Driven Development CI – Continuous Integration CD – 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.internalAutowiredAnnotationProcessor' D|DefaultListableBeanFactory |Returning cached instance of singleton bean 'org.springframework.context.annotation.internalRequiredAnnotationPro cessor' D|DefaultListableBeanFactory |Returning cached instance of singleton bean 'org.springframework.context.annotation.internalCommonAnnotationProce ssor' D|DefaultListableBeanFactory |Returning cached instance of singleton bean 'org.springframework.context.annotation.internalPersistenceAnnotationProcessor' D|DefaultListableBeanFactory |Creating shared instance of singleton bean 'sendMailTextConfig' D|DefaultListableBeanFactory |Creating instance of bean 'sendMailTextConfig' D|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.environment D|DefaultListableBeanFactory |Eagerly caching bean 'sendMailTextConfig' to allow for resolving potential circular references D|InjectionMetadata |Processing injected method of bean 'sendMailTextConfig': AutowiredFieldElement for private org.springframework.core.env.Environment com.technorati.portal.service.SendMailTextConfig.environment D|DefaultListableBeanFactory |Returning cached instance of singleton bean 'environment' D|AutowiredAnnotationBeanPostProcessor |Autowiring by type from bean name 'sendMailTextConfig' to bean named 'environment' D|DefaultListableBeanFactory |Finished creating instance of bean 'sendMailTextConfig' D|DefaultListableBeanFactory |Returning cached instance of singleton bean 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor' D|DefaultListableBeanFactory |Creating shared instance of singleton bean 'sendMailService' D|DefaultListableBeanFactory |Creating instance of bean 'sendMailService' D|DefaultListableBeanFactory |Returning cached instance of singleton bean 'sendMailTextConfig' D|DefaultListableBeanFactory |Creating shared instance of singleton bean 'freemarkerConfiguration' D|DefaultListableBeanFactory |Creating instance of bean 'freemarkerConfiguration' D|DefaultListableBeanFactory |Returning cached instance of singleton bean 'sendMailTextConfig' D|DefaultListableBeanFactory |Eagerly caching bean 'freemarkerConfiguration' to allow for resolving potential circular references D|DefaultListableBeanFactory |Finished creating instance of bean 'freemarkerConfiguration' D|DefaultListableBeanFactory |Creating shared instance of singleton bean 'templatesMap' D|DefaultListableBeanFactory |Creating instance of bean 'templatesMap' D|DefaultListableBeanFactory |Returning cached instance of singleton bean 'sendMailTextConfig' D|DefaultListableBeanFactory |Eagerly caching bean 'templatesMap' to allow for resolving potential circular references D|DefaultListableBeanFactory |Finished creating instance of bean 'templatesMap' 25 D|DefaultListableBeanFactory |Creating shared instance of singleton bean 'mailSender' D|DefaultListableBeanFactory |Creating instance of bean 'mailSender' D|DefaultListableBeanFactory |Returning cached instance of singleton bean 'sendMailTextConfig' D|DefaultListableBeanFactory |Eagerly caching bean 'mailSender' to allow for resolving potential circular references D|DefaultListableBeanFactory |Finished creating instance of bean 'mailSender' D|InjectionMetadata |Found injected element on class [com.technorati.portal.service.SendMailService]: ResourceElement for private java.util.Map com.technorati.portal.service.SendMailService.templatesMap D|InjectionMetadata |Found injected element on class [com.technorati.portal.service.SendMailService]: AutowiredFieldElement for private org.springframework.mail.MailSender com.technorati.portal.service.SendMailService.mailSender D|InjectionMetadata @twincengray #atdays |Found injected element on class [com.technorati.portal.service.SendMailService]: AutowiredFieldElement for private freemarker.template.Configuration com.technorati.portal.service.SendMailService.freemarkerConfiguration D|InjectionMetadata |Found injected element on class [com.technorati.portal.service.SendMailService]: AutowiredFieldElement for private java.lang.String com.technorati.portal.service.SendMailService.emailFrom
  • 26. BDD: Инструментальные проблемы @twincengray #atdays 26
  • 28. CI: «Демократия» @twincengray #atdays 28
  • 29. CD: Путанница Cont. deployment и CD @twincengray #atdays 29
  • 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
  • 38. Итоги Начинать с начала «Серебряной пули» нет Individuals and interactions… It’s all about the money @twincengray #atdays 38
  • 39. Вопросы? @twincengray @ua_spring [email protected] SpringByExample.com.ua mcgray.com.ua @twincengray #atdays 39