63
CI&CD. Взаимодействие с тестировщиками Развенская Ксения [email protected]

Тестирование осень 2013 лекция 5

Embed Size (px)

Citation preview

Page 1: Тестирование осень 2013 лекция 5

CI&CD. Взаимодействие с тестировщиками

Развенская Ксения

[email protected]

Page 2: Тестирование осень 2013 лекция 5

Идеальный процесс разработки Взаимодействие с командой тестирования

План лекции

2

Page 3: Тестирование осень 2013 лекция 5

Автоматизированные системные (функциональные) тесты

Юнит-тесты Интеграционные тесты Тесты производительности

В предыдущих сериях

3

Page 4: Тестирование осень 2013 лекция 5

Как теперь будет выглядеть

процесс разработки?

4

Page 5: Тестирование осень 2013 лекция 5

Разработка

на локальной машине

Локальная сборка

Локальный прогон

Юнит-тестов

Интеграция с общей веткой

Функциональное тестирование

Процесс разработки

5

Page 6: Тестирование осень 2013 лекция 5

Welcome to Integration Hell

6

Page 7: Тестирование осень 2013 лекция 5

Что такое

идеальный процесс?

7

Page 8: Тестирование осень 2013 лекция 5

Удобный Способствует повышению качества Снижает риски Ускоряет разработку Прозрачен для всей команды Максимально автоматизирован ?

Идеальный процесс разработки

8

Page 9: Тестирование осень 2013 лекция 5

Непрерывная интеграция — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем.

Википедия

Continuous Integration. Непрерывная интеграция

9

Page 10: Тестирование осень 2013 лекция 5

"Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible."

M. Fowler

Continuous Intergration. Непрерывная интеграция

10

Page 11: Тестирование осень 2013 лекция 5

Как можно более частая интеграция кода Непрерывное тестирование изменений

Непрерывная интеграция. Идея

11

Page 12: Тестирование осень 2013 лекция 5

Исходный код и все, что необходимо для сборки и тестирования проекта, хранится в репозитории системы контроля версий

Чекаут из репозитория, сборка и тестирование проекта автоматизированы

Требования к проекту

12

Page 13: Тестирование осень 2013 лекция 5

Code-review (opt.)

CI процесс

13

Page 14: Тестирование осень 2013 лекция 5

Continuous Integration.

Преимущества использования

• Проблемы интеграции выявляются и

исправляются быстро, что оказывается

дешевле

• Немедленный прогон модульных тестов для

свежих изменений

• Постоянное наличие текущей стабильной

версии вместе с продуктами сборок — для

тестирования, демонстрации, и т. п.

14

Page 15: Тестирование осень 2013 лекция 5

CI процесс

Code-review (opt.)

15

Page 16: Тестирование осень 2013 лекция 5

Система контроля версий – инструмент, облегчающий работу с изменяющимися данными. Предоставляет возможность хранить несколько версий одного документа, при необходимости вернуться к более ранней версии, определить кто и когда внес то или иное изменение, etc.

Система контроля версий. Version Control System

16

Page 17: Тестирование осень 2013 лекция 5

Легкий доступ к коду Обеспечивает версионность Облегчает совместную разработку Возможность автоматизировать процессы сборки,

ревью, запуска тестов

Система контроля версий. Преимущества использования

17

Page 18: Тестирование осень 2013 лекция 5

1. Редкие коммиты -> рискуем потерять часть изменений, реже интегрируемся Решение: Частые коммиты в течение дня

2. Массовые коммиты перед уходом с работы -> рискуем задержать коллег из-за сломанной сборки Решение: Не коммитить после N часов

Система контроля версий. Антипаттерны использования

18

Page 19: Тестирование осень 2013 лекция 5

Git Subversion CVS ClearCase ... http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

Система контроля версий. Инструменты

19

Page 20: Тестирование осень 2013 лекция 5

Code-review (opt.)

CI процесс

20

Page 21: Тестирование осень 2013 лекция 5

Код-ревью – систематический просмотр кода с целью найти и исправить ошибки, допущенные на начальном этапе разработки. Цель - повышение качества кода и обмен опытом между разработчиками. Виды Pre-commit review (email/over-the-shoulder) Post factum Выборочное ревью

Code-review. Код-ревью

21

Page 22: Тестирование осень 2013 лекция 5

Плюсы: Способствует обнаружению ошибок Возможность получить фидбек о стиле программирования и

выборе алгоритмов Обмен опытом Развивает командность Единообразность кода Минусы: Требует инвестиций на начальном этапе

Код-ревью. Плюсы и минусы

22

Page 23: Тестирование осень 2013 лекция 5

Ошибки обращения к данным Ошибки логических и арифметических операций Использование сложных конструкций Ошибки в логике программы Стилевые ошибки Опечатки

Код ревью. Типы ошибок

23

Page 24: Тестирование осень 2013 лекция 5

Проблемы адресации Индексы массивов Объявление переменных Размер и тип Именование переменных …

Ошибки обращения к данным

24

Page 25: Тестирование осень 2013 лекция 5

Переполнения Потеря точности Деление на ноль Ошибки в операторах сравнения …

Ошибки вычислений

25

Page 26: Тестирование осень 2013 лекция 5

Именование переменных Форматирование Документирование кода …

Стилевые ошибки

26

Page 27: Тестирование осень 2013 лекция 5

Бесконечные циклы Race conditions Утечки памяти …

А также..

27

Page 28: Тестирование осень 2013 лекция 5

Хорошо

Быстро

Конструктивно

Объективно

Позитивно

Плохо

Навязывание личных предпочтений

Переход на личности

Код-ревью. Основные принципы

28

Page 29: Тестирование осень 2013 лекция 5

Код-ревью тормозит процесс разработки -> негативное отношение к процессу ревью Решение: Проводить параллельно с тестированием, у задач на код-ревью – 1 приоритет

Код-ревью. Антипаттерны

29

Page 30: Тестирование осень 2013 лекция 5

VCS plug-ins E-mail

http://en.wikipedia.org/wiki/List_of_tools_for_code_review

Код-ревью. Инструменты

30

Page 31: Тестирование осень 2013 лекция 5

Code-review (opt.)

CI процесс

32

Page 32: Тестирование осень 2013 лекция 5

Компиляция Сборка Выполнение модульных тестов Формирование документации и release notes

Автоматическая сборка

33

Page 33: Тестирование осень 2013 лекция 5

Редкие сборки -> поздно обнаруживаем баги Решение: В идеале - сборка после каждого коммита Допускается сборка по расписанию несколько раз в день, если сборка+прогон модульных тестов занимает много времени NB! Возможно, это проблема и с ней надо разобраться отдельно

Автосборка. Антипаттерны

34

Page 34: Тестирование осень 2013 лекция 5

Сборка на машине разработчика -> проблема WOMM Решение: Сборка должна производиться в целевой среде

Автосборка. Антипаттерны

35

Page 35: Тестирование осень 2013 лекция 5

Maven Ant Make Gant MSBuild … http://en.wikipedia.org/wiki/List_of_build_automation_software

Автосборка. Инструменты

36

Page 36: Тестирование осень 2013 лекция 5

Code-review (opt.)

CI процесс

37

Page 37: Тестирование осень 2013 лекция 5

Выполнение модульных тестов при сборке Прогон функциональных/нагрузочных/etc автотестов для

каждой сборки

Непрерывное тестирование

38

Page 38: Тестирование осень 2013 лекция 5

Code-review (opt.)

CI процесс

39

Page 39: Тестирование осень 2013 лекция 5

Необходима автоматическая отправка информации о состоянии сборки разработчикам. Средства: Email, SMS, дашборды, нотификация в мессенджер

Непрерывная обратная связь. Continuous Feedback

40

Page 40: Тестирование осень 2013 лекция 5

Слишком много сообщений о проваленной сборке -> Письма заносятся в спам-фильтр.

Решение: Сообщения должны быть адресными – тому, кто сломал

сборку.

Обратная связь. Антипаттерны

41

Page 41: Тестирование осень 2013 лекция 5

Неинформативные отчеты -> уходит много времени на понимание проблемы

Решение: В сообщении должна содержаться необходимая и

достаточная информация о проваленной сборке/тестах

Обратная связь. Антипаттерны

42

Page 42: Тестирование осень 2013 лекция 5

Сборка всегда находится в сломанном состоянии, тесты не чинят.

Решение: «Зеленая» сборка - приоритет №1, pre-commit hook, мотивация

Антипаттерны применения CI

43

Page 43: Тестирование осень 2013 лекция 5

Проверка наличия изменений в репозитории Выполнение некоторых действий по триггеру

(наличие изменений, расписание) Поддержка нескольких инструментов сборки Поддержка нескольких VCS Предоставление отчетов, статистики, отправка

нотификаций Сохранение истории Панель управления задачами

Требования к CI серверу

44

Page 44: Тестирование осень 2013 лекция 5

Jenkins (Hudson)

CruiseControl

TeamCity

Bamboo

Инструменты CI

45

Page 45: Тестирование осень 2013 лекция 5

Что дальше?

46

Page 46: Тестирование осень 2013 лекция 5

Непрерывная доставка изменений в среду, где будет тестироваться бизнес-логика.

Непрерывная доставка. Continuous Delivery

47

Page 47: Тестирование осень 2013 лекция 5

“Continuous Delivery is about keeping your application in a state where it is always able to deploy into production.

Continuous Deployment is actually deploying every change into production, every day or more frequently.”

M. Fowler

Continuous Delivery VS Continuous Deployment

48

Page 48: Тестирование осень 2013 лекция 5

Непрерывное развертывание – выпуск в продакшн-среду изменений сразу, как только они готовы к выкладке.

Непрерывное развертывание. Continuous Deployment

49

Page 49: Тестирование осень 2013 лекция 5

Автоматизированная выкладка одной командой Только полностью готовые к выкладке фичи в production-ветке DevOps Чистота среды Маркировка каждой сборки Прогон всех проверок Использование обратной связи Возможность быстро откатить изменения

Непрерывное развертывание. Tips&Tricks

50

Page 50: Тестирование осень 2013 лекция 5

Взаимодействие с командой тестирования

51

Page 51: Тестирование осень 2013 лекция 5

Основная идея – у нас общая цель!

52

Page 52: Тестирование осень 2013 лекция 5

Тестирование увеличивает время до выкладки в продакшн

Тестировщики любят находить много багов Тестировщики обеспечивают качество Тестировщики отвечают за качество продукта Тестирование должно быть полностью

автоматизировано

Мифы о тестировании

53

Page 53: Тестирование осень 2013 лекция 5

Тестировщики должны иметь возможность протестировать приложение

Процесс разработки должен быть прозрачен для тестировщика (и наоборот) Работа с кодом Работа с требованиями Работа с багами

Эффективное взаимодействие

54

Page 54: Тестирование осень 2013 лекция 5

Тестопригодность – степень легкости и удобства тестирования, а также возможность проведения тестирования с использованием определенного инструмента или подхода.

Тестопригодность. Testability

55

Page 55: Тестирование осень 2013 лекция 5

Характеристики тестопригодного ПО:

управляемость: возможность перейти в любое состояние системы, подавая на вход разные стимулы

наблюдаемость: в каждый момент времени понимаем в каком состоянии находится система

изолируемость: тестируемый компонент может быть проверен в изоляции

разделение задач: тестируемый компонент имеет одно, вполне определенное назначение

автоматизируемость: возможность автоматизировать тестирование

Тестопригодность. Testability

56

Page 56: Тестирование осень 2013 лекция 5

Тестировщику необходим список изменений -> Все изменения должны быть отражены в ТЗ/Таск-трекере.

Управление требованиями и процесс разработки

57

Page 57: Тестирование осень 2013 лекция 5

Старайтесь относиться позитивно Учитесь на ошибках Все баги – через баг/таск-трекер Не накапливайте технический долг

Работа с багами

58

Page 58: Тестирование осень 2013 лекция 5

Баги в продакшне

59

Page 59: Тестирование осень 2013 лекция 5

Ошибка тестировщика Невозможность протестировать все Баг воспроизводится нестабильно (гейзенбаг) Несоответствие тестовой среды продакшн-среде Ошибка при выкладке

60

Баги в продакшн-среде: причины

Page 60: Тестирование осень 2013 лекция 5

Фикс NB! Фикс должен быть протестирован перед выкладкой Анализ причин Меры по предотвращению багов в будущем

61

Баги в продакшн-среде: действия

Page 61: Тестирование осень 2013 лекция 5

Процесс важен для достижения результата Процесс должен существовать не ради процесса Процесс должен быть удобен всем и способствовать

эффективной работе команды

62

Резюме

Page 62: Тестирование осень 2013 лекция 5

1. http://martinfowler.com/articles/continuousIntegration.html 2. http://www.thoughtworks.com/continuous-delivery 3. Непрерывное развертывание ПО, Джез Хамбл, Дейвид Фарли 4. http://refcardz.dzone.com/refcardz/continuous-integration#refcard-download-social-

buttons-display 5. http://martinfowler.com/bliki/FeatureBranch.html 6. http://martinfowler.com/bliki/FeatureToggle.html 7. http://itrevolution.com/devops-culture-part-1/

Материалы

63

Page 63: Тестирование осень 2013 лекция 5

Спасибо за внимание!

Развенская Ксения

[email protected]