SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
Почему это не работает?
            или
    Записки консультанта


                         Февраль 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

Contenu connexe

Tendances

Вавилонское тестировтворение - Алекскей Лупан
Вавилонское тестировтворение - Алекскей ЛупанВавилонское тестировтворение - Алекскей Лупан
Вавилонское тестировтворение - Алекскей ЛупанQA Dnepropetrovsk Community (Ukraine)
 
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераном
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераномКурс молодого бойца-автоматизатора - как остаться в живых и стать ветераном
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераномAndrey Rebrov
 
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.ScrumTrek
 
Experience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеExperience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеReturn on Intelligence
 
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...ScrumTrek
 
Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016Roman Ivliev
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всемSQALab
 
Правила отбора: как отобрать правильных тестировщиков в свою команду
Правила отбора: как отобрать правильных тестировщиков в свою командуПравила отбора: как отобрать правильных тестировщиков в свою команду
Правила отбора: как отобрать правильных тестировщиков в свою командуSQALab
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромKirill Kovalchuk
 
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovRuby Meditation
 
Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы Maxim Shulga
 
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаДелимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаSQALab
 
О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016Roman Ivliev
 
"Outside In". Web application testing.
"Outside In". Web application testing."Outside In". Web application testing.
"Outside In". Web application testing.Mad Devs
 
How to Calculate Test Automation ROI
How to Calculate Test Automation ROIHow to Calculate Test Automation ROI
How to Calculate Test Automation ROIÞorgeir Ingvarsson
 
FitNesse+PowerSlim on Windows
FitNesse+PowerSlim on WindowsFitNesse+PowerSlim on Windows
FitNesse+PowerSlim on WindowsMaxim Shulga
 
Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе SQALab
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какSQALab
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ruRoman Ivliev
 
Как аналитика помогает тестировщику
Как аналитика помогает тестировщикуКак аналитика помогает тестировщику
Как аналитика помогает тестировщикуSQALab
 

Tendances (20)

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

En vedette

Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
 
Автоматизация тестирования как сервис
Автоматизация тестирования как сервисАвтоматизация тестирования как сервис
Автоматизация тестирования как сервисautomated-testing.info
 
Швейцарский нож для Android
Швейцарский нож для AndroidШвейцарский нож для Android
Швейцарский нож для Androidautomated-testing.info
 
Александр Кабалюк – SilkTest
Александр Кабалюк – SilkTestАлександр Кабалюк – SilkTest
Александр Кабалюк – SilkTestautomated-testing.info
 
Тестирование производительности Ajax приложений с помощью JMeter
Тестирование производительности Ajax приложений с помощью JMeterТестирование производительности Ajax приложений с помощью JMeter
Тестирование производительности Ajax приложений с помощью JMeterautomated-testing.info
 
Философия и построение тестового фреймворка на основе BDD в PHP проектах
Философия и построение тестового фреймворка на основе BDD в PHP проектахФилософия и построение тестового фреймворка на основе BDD в PHP проектах
Философия и построение тестового фреймворка на основе BDD в PHP проектахautomated-testing.info
 
В поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIВ поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIautomated-testing.info
 
Отряд тест-аналитиков
Отряд тест-аналитиковОтряд тест-аналитиков
Отряд тест-аналитиковSQALab
 
Провокации автоматического тестирования
Провокации автоматического тестированияПровокации автоматического тестирования
Провокации автоматического тестированияSQALab
 
Автоматизация тестирования WEB API
Автоматизация тестирования WEB APIАвтоматизация тестирования WEB API
Автоматизация тестирования WEB APISQALab
 
Когда стоит закончить автоматизировать?
Когда стоит закончить автоматизировать?Когда стоит закончить автоматизировать?
Когда стоит закончить автоматизировать?SQALab
 

En vedette (12)

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

Similaire à Why it is not working

Почему это не работает (Записки консультанта)
Почему это не работает (Записки консультанта)Почему это не работает (Записки консультанта)
Почему это не работает (Записки консультанта)Oleksiy Rezchykov
 
Услуга «Техническая поддержка разработки»
Услуга «Техническая поддержка разработки»Услуга «Техническая поддержка разработки»
Услуга «Техническая поддержка разработки»Docsvision
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software DevelopmentDmytro Mindra
 
Тестирование в диджитал проектах
Тестирование в диджитал проектахТестирование в диджитал проектах
Тестирование в диджитал проектахАндрей Медведев
 
За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013Dmytro Zharii
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Yulia Tsisyk
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»MskDotNet Community
 
Социология Code Review или что делать, елси ваши тестировщики начали писать т...
Социология Code Review или что делать, елси ваши тестировщики начали писать т...Социология Code Review или что делать, елси ваши тестировщики начали писать т...
Социология Code Review или что делать, елси ваши тестировщики начали писать т...Oleksiy Rezchykov
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на RailsAndrei Kaleshka
 
Путь к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификацийПуть к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификацийVagif Abilov
 
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiDevconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiAlexander Makarov
 
Рефакторинг
РефакторингРефакторинг
РефакторингSmartStepGroup
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQAFest
 
11 ключевых ошибок в разработке интернет-проектов
11 ключевых ошибок в разработке интернет-проектов11 ключевых ошибок в разработке интернет-проектов
11 ключевых ошибок в разработке интернет-проектовborovoystudio
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Fwdays
 

Similaire à Why it is not working (20)

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

Plus de automated-testing.info

Andrey Azimov - Как найти работу тестировщику?
Andrey Azimov - Как найти работу тестировщику?Andrey Azimov - Как найти работу тестировщику?
Andrey Azimov - Как найти работу тестировщику?automated-testing.info
 
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...automated-testing.info
 
Alexei Zozulenko - Test automation failure
Alexei Zozulenko - Test automation failureAlexei Zozulenko - Test automation failure
Alexei Zozulenko - Test automation failureautomated-testing.info
 
Vladimir Primakov - Test Automation By Example
Vladimir Primakov - Test Automation By ExampleVladimir Primakov - Test Automation By Example
Vladimir Primakov - Test Automation By Exampleautomated-testing.info
 
Alexander Zvonov Test Automation Story
Alexander Zvonov Test Automation StoryAlexander Zvonov Test Automation Story
Alexander Zvonov Test Automation Storyautomated-testing.info
 
Daria Chernishova Test Automation Story
Daria Chernishova Test Automation StoryDaria Chernishova Test Automation Story
Daria Chernishova Test Automation Storyautomated-testing.info
 
Bdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui testsBdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui testsautomated-testing.info
 
Автоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIАвтоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIautomated-testing.info
 

Plus de automated-testing.info (15)

Andrey Azimov - Как найти работу тестировщику?
Andrey Azimov - Как найти работу тестировщику?Andrey Azimov - Как найти работу тестировщику?
Andrey Azimov - Как найти работу тестировщику?
 
Jenkins auto configureforbranch-php
Jenkins auto configureforbranch-phpJenkins auto configureforbranch-php
Jenkins auto configureforbranch-php
 
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
 
Alexei Zozulenko - Test automation failure
Alexei Zozulenko - Test automation failureAlexei Zozulenko - Test automation failure
Alexei Zozulenko - Test automation failure
 
Vladimir Primakov - Test Automation By Example
Vladimir Primakov - Test Automation By ExampleVladimir Primakov - Test Automation By Example
Vladimir Primakov - Test Automation By Example
 
Codeception Introduction
Codeception IntroductionCodeception Introduction
Codeception Introduction
 
Ivan Bordug Test Automation Story
Ivan Bordug Test Automation StoryIvan Bordug Test Automation Story
Ivan Bordug Test Automation Story
 
Alexander Zvonov Test Automation Story
Alexander Zvonov Test Automation StoryAlexander Zvonov Test Automation Story
Alexander Zvonov Test Automation Story
 
Daria Chernishova Test Automation Story
Daria Chernishova Test Automation StoryDaria Chernishova Test Automation Story
Daria Chernishova Test Automation Story
 
Bdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui testsBdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui tests
 
Bdd + SpecFlow + WatiN
Bdd + SpecFlow + WatiNBdd + SpecFlow + WatiN
Bdd + SpecFlow + WatiN
 
Efficient performance testing
Efficient performance testingEfficient performance testing
Efficient performance testing
 
Qtp Automation and Extensibility
Qtp Automation and ExtensibilityQtp Automation and Extensibility
Qtp Automation and Extensibility
 
Автоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIАвтоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UI
 
Page Object Pattern
Page Object PatternPage Object Pattern
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 oleksiy.rezchykov@gmail.com SpringByExample.com.ua mcgray.com.ua @twincengray #atdays 39