SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Социология Code Review
               или
что делать, если ваши тестировщики
        взялись писать код

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


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


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




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




         @twincengray #xpdays
                                4
Реалии индустрии




         @twincengray #xpdays
                                5
Как это работает?




         @twincengray #xpdays
                                6
Автоматизация




       @twincengray #xpdays
                              7
А давайте напишем
фреймворк автоматизации




            @twincengray #xpdays
                                   8
@twincengray #xpdays
                       9
To BDD or not to BDD




           @twincengray #xpdays
                                  10
Поехали!!!




      @twincengray #xpdays
                             11
Кто будет писать тесты?




            @twincengray #xpdays
                                   12
Расскажите своим
тестировщикам про…




          @twincengray #xpdays
                                 13
Composition or
       Inheritance
Наследование не используется совсем

Наследование используется там где стоит
использовать композицию




                     @twincengray #xpdays
                                            14
Строковые
     преобразования
Особенности реализации строк в языке
программирования

Строковые литералы/константы

Манипуляции по строками




                     @twincengray #xpdays
                                            15
Деньги
Точность в операциях с деньгами

Правильные типы данных

Собственные утилиты




                      @twincengray #xpdays
                                             16
Даты
Правильное использование встроенных
средств

Сторонние библиотеки

Собственные хелпер классы




                       @twincengray #xpdays
                                              17
i18n & l10n
Использование локали

Хранение/получение сообщений

Форматирование (даты, деньги)




                       @twincengray #xpdays
                                              18
Автоматизировали
   регрессию




         @twincengray #xpdays
                                19
Что будет если просто…




            @twincengray #xpdays
                                   20
НО это хороший первый
         шаг




           @twincengray #xpdays
                                  21
Параметризация тестов



A=1; B=2;   A=2; B=2;       A=3; B=3;
  C=1;        C=2;            C=3;



                  @twincengray #xpdays
                                         22
PageObject/PageElement



Page    Page class             Test




               @twincengray #xpdays
                                      23
Steps




   @twincengray #xpdays
                          24
Что получилось?




Тот же тест что и несколько слайдов ранее…

                      @twincengray #xpdays
                                             25
Что делать со всем этим
        кодом?




            @twincengray #xpdays
                                   26
Checklist от КО
Посмотреть мою прошлую презентацию

Не оставляйте без присмотра

Добавлять фичи

Добавлять тесты фич

Постоянно рефакторить




                      @twincengray #xpdays
                                             27
Тесты и люди




       @twincengray #xpdays
                              28
Основываясь на личном
      опыте…




           @twincengray #xpdays
                                  29
Куда девать тесты?




          @twincengray #xpdays
                                 30
Черная или белая коробка?




             @twincengray #xpdays
                                    31
Этот загадочный зверь
      регрессия




           @twincengray #xpdays
                                  32
Дайте тестам
повзрослеть




       @twincengray #xpdays
                              33
Итог
Роли на проектах все больше смешиваются

Автоматизации становится необходимой

Не отделяйте код тестов от проектного кода

Постоянно совершенствуйте свои тесты

Тестировщики и разработчики
обменивайтесь знаниями и опытом

То чем мы занимаемся - командная игра


                      @twincengray #xpdays
                                             34
Вопросы?
@twincengray
@ua_spring


        oleksiy.rezchykov@gmail.com


SpringByExample.com.ua

           mcgray.com.ua

               @twincengray #xpdays
                                      35

Weitere ähnliche Inhalte

Andere mochten auch

Code review in practice
Code review in practiceCode review in practice
Code review in practiceEdorian
 
How to successfully grow a code review culture
How to successfully grow a code review cultureHow to successfully grow a code review culture
How to successfully grow a code review cultureNina Zakharenko
 

Andere mochten auch (6)

Code Review
Code ReviewCode Review
Code Review
 
TDD for DB integration
TDD for DB integrationTDD for DB integration
TDD for DB integration
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Code review in practice
Code review in practiceCode review in practice
Code review in practice
 
How to successfully grow a code review culture
How to successfully grow a code review cultureHow to successfully grow a code review culture
How to successfully grow a code review culture
 
Gerrit Code Review
Gerrit Code ReviewGerrit Code Review
Gerrit Code Review
 

Ähnlich wie Социология Code Review или что делать, елси ваши тестировщики начали писать тесты

Почему это не работает (Записки консультанта)
Почему это не работает (Записки консультанта)Почему это не работает (Записки консультанта)
Почему это не работает (Записки консультанта)Oleksiy Rezchykov
 
Recruitment vs Engineering: Кто виноват? и Что делать?
Recruitment vs Engineering: Кто виноват? и Что делать?Recruitment vs Engineering: Кто виноват? и Что делать?
Recruitment vs Engineering: Кто виноват? и Что делать?Oleksiy Rezchykov
 
Recruitment vs Engineering: Кто виноват? или Что делать?
Recruitment vs Engineering: Кто виноват? или Что делать?Recruitment vs Engineering: Кто виноват? или Что делать?
Recruitment vs Engineering: Кто виноват? или Что делать?springbyexample
 
Experience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеExperience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеReturn on Intelligence
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software DevelopmentDmytro Mindra
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиSQALab
 
Ladutko - Gamification in Quality Assurance
Ladutko - Gamification in Quality AssuranceLadutko - Gamification in Quality Assurance
Ladutko - Gamification in Quality AssuranceAndrey Ladutko
 
Использование игровых элементов и методов в процессе тестирования
Использование игровых элементов и методов в процессе тестированияИспользование игровых элементов и методов в процессе тестирования
Использование игровых элементов и методов в процессе тестированияSQALab
 
Построение гибкого процесса разработки (4-5 курсы)
Построение гибкого процесса разработки (4-5 курсы)Построение гибкого процесса разработки (4-5 курсы)
Построение гибкого процесса разработки (4-5 курсы)Timur Rakhmatillaev
 
2012-11-27 - QAClub - Процессы тестирования в продуктовой компании
2012-11-27 - QAClub - Процессы тестирования в продуктовой компании2012-11-27 - QAClub - Процессы тестирования в продуктовой компании
2012-11-27 - QAClub - Процессы тестирования в продуктовой компанииDmitriy Yefimenko
 
Построение гибкого процесса разработки (3 курс)
Построение гибкого процесса разработки (3 курс)Построение гибкого процесса разработки (3 курс)
Построение гибкого процесса разработки (3 курс)Timur Rakhmatillaev
 
Experience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеExperience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеReturn on Intelligence
 
Петрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgПетрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgWG_ Events
 

Ähnlich wie Социология Code Review или что делать, елси ваши тестировщики начали писать тесты (16)

Почему это не работает (Записки консультанта)
Почему это не работает (Записки консультанта)Почему это не работает (Записки консультанта)
Почему это не работает (Записки консультанта)
 
Agile architecture
Agile architectureAgile architecture
Agile architecture
 
Perfecrt release
Perfecrt releasePerfecrt release
Perfecrt release
 
Recruitment vs Engineering: Кто виноват? и Что делать?
Recruitment vs Engineering: Кто виноват? и Что делать?Recruitment vs Engineering: Кто виноват? и Что делать?
Recruitment vs Engineering: Кто виноват? и Что делать?
 
Recruitment vs Engineering: Кто виноват? или Что делать?
Recruitment vs Engineering: Кто виноват? или Что делать?Recruitment vs Engineering: Кто виноват? или Что делать?
Recruitment vs Engineering: Кто виноват? или Что делать?
 
Experience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеExperience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбине
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software Development
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
 
Ladutko - Gamification in Quality Assurance
Ladutko - Gamification in Quality AssuranceLadutko - Gamification in Quality Assurance
Ladutko - Gamification in Quality Assurance
 
Использование игровых элементов и методов в процессе тестирования
Использование игровых элементов и методов в процессе тестированияИспользование игровых элементов и методов в процессе тестирования
Использование игровых элементов и методов в процессе тестирования
 
Построение гибкого процесса разработки (4-5 курсы)
Построение гибкого процесса разработки (4-5 курсы)Построение гибкого процесса разработки (4-5 курсы)
Построение гибкого процесса разработки (4-5 курсы)
 
2012-11-27 - QAClub - Процессы тестирования в продуктовой компании
2012-11-27 - QAClub - Процессы тестирования в продуктовой компании2012-11-27 - QAClub - Процессы тестирования в продуктовой компании
2012-11-27 - QAClub - Процессы тестирования в продуктовой компании
 
Построение гибкого процесса разработки (3 курс)
Построение гибкого процесса разработки (3 курс)Построение гибкого процесса разработки (3 курс)
Построение гибкого процесса разработки (3 курс)
 
Experience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеExperience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбине
 
Петрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgПетрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.org
 

Mehr von Oleksiy Rezchykov

How we tested our code "Google way"
How we tested our code "Google way"How we tested our code "Google way"
How we tested our code "Google way"Oleksiy Rezchykov
 
TestNG vs JUnit: cease fire or the end of the war
TestNG vs JUnit: cease fire or the end of the warTestNG vs JUnit: cease fire or the end of the war
TestNG vs JUnit: cease fire or the end of the warOleksiy Rezchykov
 
Spring Data: New approach to persistence
Spring Data: New approach to persistenceSpring Data: New approach to persistence
Spring Data: New approach to persistenceOleksiy Rezchykov
 
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_testsOleksiy Rezchykov
 
Light weightj2ee developmentusingspring
Light weightj2ee developmentusingspringLight weightj2ee developmentusingspring
Light weightj2ee developmentusingspringOleksiy Rezchykov
 
Story Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium FrameworkStory Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium FrameworkOleksiy Rezchykov
 

Mehr von Oleksiy Rezchykov (9)

Boot in Production
Boot in ProductionBoot in Production
Boot in Production
 
How we tested our code "Google way"
How we tested our code "Google way"How we tested our code "Google way"
How we tested our code "Google way"
 
TestNG vs JUnit: cease fire or the end of the war
TestNG vs JUnit: cease fire or the end of the warTestNG vs JUnit: cease fire or the end of the war
TestNG vs JUnit: cease fire or the end of the war
 
Spring Data: New approach to persistence
Spring Data: New approach to persistenceSpring Data: New approach to persistence
Spring Data: New approach to persistence
 
Spring MVC is still alive
Spring MVC is still aliveSpring MVC is still alive
Spring MVC is still alive
 
!Сделай сам
!Сделай сам!Сделай сам
!Сделай сам
 
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
 
Light weightj2ee developmentusingspring
Light weightj2ee developmentusingspringLight weightj2ee developmentusingspring
Light weightj2ee developmentusingspring
 
Story Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium FrameworkStory Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium Framework
 

Социология Code Review или что делать, елси ваши тестировщики начали писать тесты

Hinweis der Redaktion

  1. Спасибо что досидели.Трудно идти первым и трудно идти последнимСегодня я хотел бы опять поговорить об инспекции кода или о Code Review. Снова, потому, что в прошлом году я рассказывал про психологический аспект этой практики.О Code Review было сказано уже очень много.Разбирать классические подходы к организации, применяемые инструменты я не буду. Этой информации достаточно в открытых источникахСегодня хотел бы рассказать о том, как изменения в индустрии влияют на проекты, а следовательно на наши устоявшиеся практики
  2. JavaManagementXP/Agile/LeanКонсультант– вот откуда я черпаю большинство информации из окопов, как говорит КнибергВ свободное от зарабатывания на хлеб время SBEКто моя аудитория: тестировщики, разработчики, менеджеры.Новые вызовы для проектных командАвтоматизация. НачалоТесты. Как с ними житьГраблиИтог
  3. Для большинства проектов, и я говорю не только про public web что интересно сюда подключаются уже и финансово-банковский сектор (телеком давно тут) TTM становится главным критерием успешности
  4. Распространяются идеи Lean Startup, когда важно побыстрее доставить услугу на рынок, чтобы получить быстрый ответ этого самого рынка и как следствие быть первым, кто сделает именно ТО что НУЖНО на рынке.
  5. Также распространяется концепция DevOpsПро это сегодня говорить не будем
  6. Единственный возможный способ заставить это работать это реализовать CD.CD это современный buzwordэдакая мантра для менеджмента.Как работает этот XpInjection=====================Все хотят CDУ многих уже есть CI и хорошее покрытие Unit/Integration tests
  7. Высокая степень автоматизации, как необходимое условие CDАвтоматизация развертывания, автоматизация сборки и конечно же автоматизация тестирования
  8. Болезнь поражает очень многих. Сам делал это несколько раз, но имею оправдания. Так как это было давно и тогда нельзя было обеспечить всю требуемую функциональность существующими средствами.Кто будет писать фреймворк?Разработчики– хотят выложиться по полной и часто в поисках идеального продукта забывают для чего он нуженТестировщики– часто напаковывают продукт функциональностью, которая скорее всего не понадобится нарушая принципы YAGNI & KISSВместе (одни знают КАК это сделать другие ЧТО должно получиться в результате)Если вы все таки пишете свой фреймворк или расширяете существующие не забывайте его тестировать
  9. Болезнь поражает очень многих. Сам делал это несколько раз, но имею оправдания. Так как это было давно и тогда нельзя было обеспечить всю требуемую функциональность существующими средствами.Кто будет писать фреймворк?Разработчики– хотят выложиться по полной и часто в поисках идеального продукта забывают для чего он нуженТестировщики– часто напаковывают продукт функциональностью, которая скорее всего не понадобится нарушая принципы YAGNI & KISSВместе (одни знают КАК это сделать другие ЧТО должно получиться в результате)Если вы все таки пишете свой фреймворк или расширяете существующие не забывайте его тестировать
  10. Каждая команда должна решить это для себяЕсли бизнес не работает с вами плотно, возможно достаточно просто Acceptance TestsВ случае если вы все же решили применять BDD учтите, что теперь в ваш репозиторий скорее всего будут иметь доступ люди бизнеса, которые скорее всего будут писать требования, а лучше критерии приемки. Сейчас набирает популярности подход Specification by Example, при котором ваши тесты и будут являться документацией по проекту.
  11. Тут я заканчиваю с вещами напрямую не касающимися инспекции кода тестов
  12. В моей презентации тоже не обошлось без Вейдера– куда же без негоИ сразу же очень непростой вопросНа этом слайде и далее по презентации тесты – автоматизированные приемочные либо регрессионные тесты. Для простоты - просто тесты.Три путиРазработчики пишут тесты вместе с фичами (сказка для нас, надеюсь, что пока)Тесты пишут автоматизаторы (редкий случай)Обычные тестировщики начинают писать тесты + - Всех подходов
  13. Или основные ошибки начинающих при написании тестов, а также о чем им стоит рассказать в первую очередь
  14. В использовании наследование несравненно больше ошибок, чем в попытке следовать полиморфизму и инкапсуляции.Но про них тоже стоит поговорить.
  15. ВладимирЦукур вчера говорил, что они выбрали для написания тестов Groovy (у них тесты начали писать тестировщики, не владевшие автоматизацией)Это во много было вызвано именно такими проблемами.Некоторые особенности работы с данными в языке программирования
  16. Коля и Андрей вчера говорили о том, что разработчик должен заглядывать в код к тестировщику. Я скажу больше – лучше самому научить тестировщика ряду приемов, чтоб потом не находить в коде сюрпризов.
  17. Самый распространённый и самый верный, шаг.Но и тут на подстерегают сложности.
  18. Что будет если просто автоматизировать ручные проверки:Как правило очень некрасивый кодКоторый конечно сложно рефакторить, масштабировать, да что там говорить его сложно читать.
  19. Что стоит сделать после такого первого шага
  20. Использовать лучшие практики –Page Object, Page Element, Steps.
  21. Использовать лучшие практики –Page Object, Page Element, Steps.
  22. У Коли А. попросить картинку с КО!?Поменять
  23. Занимайтесь образованием других, кто бы ни писал тесты опускать планку качества не стоит!!!Кто пишет, а кто проводит ревизию?Назначайте ответственногоиз числа разработчиковДелайте «авианалеты»Тактика без стратегии ничего не дает – планируйте развитие тестов
  24. Поначалу очень хочется положить тесты и фреймфорк, если мы его писали в отдельный репозиторий. Это скорее плохо чем хорошо. К тестам сразу стоит относится так же как и другому коду, но в то же время они должны быть достаточно изолированы в плане зависимостейМой совет разделяемые артефакты, один репозиторий. Для того, чтоб можно было использовать те же метрики для оценки и те же настройки статических анализаторов (см. мою презентацию за прошлый год). Это позволит вам держать руку на пульсе.
  25. Мне кажется что после доклада Коли и Андрея и вчерашнего доклада Владимира тема так и осталась не раскрыта до конца.Фичатестируется всегда на самом нижнем из возможных уровней, пусть и открывая коробку. Цель автоматизированной регрессии также работать быстро - так что тут тоже работает это правило.Test set UP, REST API, Scripts
  26. Не переносите бездумно тесты фич в регрессионыйsuite.У этих тестов совершенно разное назначение. Стоит добавить дополнительные проверки в тесты модулей на которые повиляла данная новая функциональность.
  27. СимптомыТесты становятся мусорной свалкой (трудно понять что внутри)Тесты работают часамиВ итоге их больше никто не запускает
  28. То о чем уже говорил, но хотел бы повторить в завершении.Некоторые вещи звучат цитатами КО, но от этого им чаще не следуют…