SlideShare a Scribd company logo
1 of 25
Обзор статей на тему 
Continious Integration – 
Automated Testing – Agile 
Подготовил – Юсупов Кайрат
Процесс разработки в Mail.Ru Group 
"По мере выпуска следующих версий 
программы и добавления нового функционала 
нам нужно будет проверять с каждым разом 
все больше и больше функций. То есть, грубо 
говоря, трудозатраты будут линейно 
возрастать с ростом количества функций. И 
в какой-то момент руководитель окажется 
перед выбором: либо начать частично 
пропускать проверки старого функционала 
(регрессионное тестирование), либо 
постоянно увеличивать штат.“ 
Тех. Дир. Mail.Ru Group 
Прим. * Синим цветом обозначены трудозатраты на ручное тестирование регрессионных багов.
• Важно отметить, что только (ручная 
отладка) тестирование новых 
функций будет интересной задачей, 
а повторное тестирование старых 
функций (регрессионное 
тестирование) является 
монотонной однообразной 
работой, повторением уже не раз 
проделанных операций. Поэтому 
даже при постоянном расширении 
штата сотрудники будут 
демотивированы, что негативно 
скажется на внимательности и 
ответственности, а в итоге приведет 
к пропущенным ошибкам.
• Автоматизация тестирования 
необходима не только потому, 
что важно экономить ресурсы и 
избавляться от скучной и 
однообразной работы. 
• Тех. дир. Mail.Ru Group 
Автоматическое тестирование позволяет снизить затраты на ручную отладку и тестирование, 
Избавиться от ручного регрессионого тестирования, снизить трудозатраты тестирования до минимума. 
Как видно из графика трудозатраты на написание тестов не растут линейно, остаются на одном уровне 
Из приведенного графика следует, что трудозатраты на ручное регрессионное тестирование со временем 
становится в разы больше трудозатрат, чем написание кода.
В каких компаниях существует автоматическое 
тестирование? 
• Google, Mail.ru , Yandex, Microsoft 
• CodeBorne 
• IBM 
• BAS , NAT (Казахстанские компании ) 
Большинство стабильных опенсорс проектов покрываются 
тестами: 
• Hadoop 
• Apache Tomcat 
• VivagraphJS 
• Twitter Storm
public class HasNegationTest { 
// Тест кейс 1 
@Test 
public void test_hasNegation_true() { 
DicSentimentHighlighter sentimentHighlighter = new DicSentimentHighlighter( … ); 
boolean result = sentimentHighlighter.hasNegation(new String[]{" не "," хороший "} , " хороший "); 
Assert.assertTrue(result); 
} 
// Тест кейс 2 
@Test 
public void test_hasNegation_false() { 
DicSentimentHighlighter sentimentHighlighter = new DicSentimentHighlighter( … ); 
boolean result = sentimentHighlighter.hasNegation(new String[]{"хороший","хороший"} , "хороший"); 
Assert.assertFalse(result); 
} 
} 
Пример модульного теста , написанного с помощью фреймворка Junit 4.1
Запускаем тесты ( кнопка Alt-F6 ), получаем отчеты по пройденным тестам
В случае с внешней зависимостью 
Зависимость заменяется с помощью Stub / Mock Object 
Stub / Mock 
Object 
Class Under 
Test 
Connection to 
Database 
Class Under 
Test
Тестирование GUI с помощью фреймворка Selenide 
@Test 
public void test() { 
open(contextPath + "/ru/regnpv2/register"); 
open(contextPath + "/ru/regnpv2/foreignPerson"); 
$(By.name("regNpVisitorList[0].lastname")).setValue("TESTACCEPT"); 
$(By.name("regNpVisitorList[0].firstname")).setValue("TESTACCEPT"); 
$(By.id("next")).click(); 
Assert.assertTrue($(By.id("registration_start")).getText().length() > 6 ); 
Assert.assertTrue($(By.id("registration_end")).getText().length() > 6 ); 
} 
} 
В целом синтаксис кода похож на Jquery
Скрипт запускает браузер, эмулирует работу человека, вводит 
предопределенные данные в браузере, и контролирует работу GUI 
Исключается участие человека для проверки работоспособности 
приложения. Тем самым снижаются трудозатраты.
Необходимые условия для покрытия кода 
тестами 
• Наличие фреймворка Junit, TestNG для Java, Jasmine, Qunit для JS 
• Регулярная прогонка тестов на билд-сервере (каждый день, 
каждый коммит) 
• Не каждый код может быть покрыт тестами 
• Слабосвязанная архитектура 
• Код написанный в соответствии с принципами SOLID
Принципы SOLID 
• S – single responsibility 
• O – open/closed principle 
• L – Liskov substitution principle 
• I – Interface segregation principle 
• D – dependency injection
Какой код выгодно тестировать? 
•На этой намеренно упрощённой диаграмме показано 
4 типа кода: 
Сложный код с небольшим количеством зависимостей 
(участок слева вверху). (выгодно) 
•Простой код с кучей зависимостей (участок справа 
внизу). ( не очень выгодно , но иногда выгодно) 
•Сложный код с большим количеством зависимостей 
(участок справа вверху). Писать тесты для такого 
кода достаточно дорого, а не писать слишком 
рискованно. Как правило, выходом может стать его 
разделение на две части: кусок, вобравший в себя 
сложную логику (алгоритм), и кусок, 
сосредоточивший в себе внешние зависимости 
(координатор). (выгодно, но требует рефакторинга) 
•Обычный заурядный код, имеющий немного 
зависимостей (участок слева внизу).
Continuous Integration. Как оно выглядит «сейчас» 
• Роль билд – сервера на данный 
момент выполняет - Дулат 
• Вручную делаются билды, 
выкладываются на тестовый и 
боевой серверы, вручную 
ищутся проблемы интеграции - 
это постоянная однообразная 
работа занимает время, 
утомляет, и отвлекает от более 
важных приоритетных задач.
Проблемы, с которыми сталкнулись во время 
разработки ВМП 
• Развертывание функциональности без должного тестирования 
(практические всегда в функциональности были скрытые баги) 
• Отрицательные отзывы от клиентов 
• Фактически в активное тестирование были вовлечены клиенты(что не 
есть хорошо) 
• Бывали случаи, когда все изменения от разных разработчиков 
невозможно было забилдить в течение нескольких часов перед 
презентацией 
• Отрицательное влияние на репутацию компании и программистов 
• Потерянное время , ресурсы, неоправданный стресс
Проблемы при доработке Беркут 
• Документации нет 
• Никто не знает , как работает код для миграции данных 
• Автотестов нет ( вносить изменения необходимо очень 
осторожно) 
• Долго кропотливо и разбираться, что делает каждая строчка кода 
• Нет гарантии безопасности изменения кода 
• Стоить отметить, что тесты могут использоваться как 
документация , т.к. тесты описывают спецификацию классов , 
функций и т.п.
Continious Integration. Как «должно быть» 
Continuous Integration (далее CI) — это практика 
разработки программного обеспечения, в 
которой члены команды проводят интеграцию 
не реже чем раз в день. Результаты интеграции 
проверяются автоматически, используя 
автотесты и статический анализ кода.
Преимущества CI 
• Использование CI позволяет вовремя отслеживать ошибки 
интеграции 
• Сделать систему и процесс разработки более «прозрачными» для 
всех участников команды 
• CI избавляет от рутинных операция по сборке продукта, запуску 
тестов, повышает качество продукта, включает в себя профит от 
написания тестов. 
• Автоматическое оповещение участников команды о наличии 
проблемы (бага, ошибки, не развертывается проект) в проекте
Необходимые условия для развертывания CI 
• Регулярное автоматическое выполнение билдов проекта 
• Достаточно высокое покрытие проекта тестами 
• Обратная связь билд-сервера с разработчиками проекта (разработчик должен оповещаться 
о наличии проблемы, и именно тот разработчик внесший изменение , повлиявшее на билд) 
• Существуют следующие популярные механизмы осуществления обратной связи: 
• SMS 
• browser plug-in 
• светофор сборок 
• звуковое оповещение 
• email
Примеры отчетности 
Вертикальная ось – тест кейсы 
Синим цветом отмечены 
пройденные тесты. 
Красным цветом отмечены 
непройденные тесты(ошибки). 
Горизонтальная ось - билды
Примеры отчетности – процесс сборки
Как Google тестируется ПО 
“идея заключается не в создании тестов как таковых, а в 
ускорении разработки.” 
В Google существуют три роли тестеров: 
SWE - основные разработчики, которые работают над 
функционалом. На них лежит разборка кода (code review), 
TDD, Unit тестирование и приемочные испытания. Они так 
же ответственны за качество каждого участка кода. Это 
важно. Тестеры не отвечают за качество. SWE не может 
написать немного кода, а потом сказать тестеру, попробуй 
улучшить этот код. Это его собственная работа. 
SET — занимаются разработкой среды для тестирования. 
Они не пишут непосредственно тест кейсы. Они создают 
инфраструктуру для их создания. Они выпускают 
фрэймворки, пишут утилиты автоматизирующие рутину 
проверок. Они создают автоматизированные процедуры. 
Процесс разработки Google plus занял 100 дней. 
Каждый день собирается новый релиз Google Chrome.
You Can't be Agile Without Automated Unit Testing 
• Тезис вытекающий из предыдущих пунктов: 
• Невозможно внедрить Agile/Scrum методологию 
без уделения внимания современными 
инженерным практикам( код ревью , 
автоматическое тестирование, непрерывная 
интеграция). 
• Agile projects assume that test planning, test 
creation, and test execution take place throughout a 
project's lifecycle. So the need for unit testing (and 
especially automated unit testing) can't be ignored 
and should be considered as a key responsibility of 
the entire team—not just the software developers 
Developers have known for decades that the further into a project timeline a bug gets 
discovered from its insertion point, the more costly it is to fix. When a developer finds a bug, it can 
sometimes take minutes to fix. If it slips through testing and finds its way to the customer, figure 1 
shows that mitigation can be exponentially more expensive to fix. 
Agile methodologies take working software and combine it with early feedback. To give the 
developers confidence that their code works, unit testing gives the fastest available quality feedback. 
The earlier defects are found, the cheaper they are to fix.
Ссылки 
• 1. Тестирование в Mail.ru Group: 
• http://habrahabr.ru/company/mailru/blog/165877/ 
• 2. Как перестать беспокоиться и начать работать: 
• http://habrahabr.ru/company/skbkontur/blog/128427/ 
• 3. Continuous Integration. Путь обеспечения надежности и доверия к системе 
• http://habrahabr.ru/post/219891/ 
• 4. Как Google тестирует ПО 
• http://habrahabr.ru/post/135776/ 
• 5. Компания Agitar зарабатывает тем что разрабатывает автоматическое тестирование для заказчиков 
• http://www.agitar.com/solutions/why_unit_testing.html 
• 6. You Can't be Agile Without Automated Unit Testing 
• http://www.stickyminds.com/better-software-magazine-article/you-cant-be-agile-without-automated-unit-testing 
• 7 Полное регрессионное тестирование за 4 часа 
• http://scrumtrek.ru/stories/view/13

More Related Content

What's hot

Mva stf module 6 - rus
Mva stf module 6 - rusMva stf module 6 - rus
Mva stf module 6 - rusMaxim Shaptala
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011etyumentcev
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rusMaxim Shaptala
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторовSQALab
 
Process Quality, QA and QC. QA Club. Kharkov. Ukraine
Process Quality, QA and QC. QA Club. Kharkov. UkraineProcess Quality, QA and QC. QA Club. Kharkov. Ukraine
Process Quality, QA and QC. QA Club. Kharkov. UkraineSergiy Povolyashko, PMP
 
Новый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проектеНовый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проектеSQALab
 
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDDЭволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDDCEE-SEC(R)
 
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQAFest
 
Способы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированиюСпособы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированиюCOMAQA.BY
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - ТестированиеYandex
 
Mva stf module 4 - rus
Mva stf module 4 - rusMva stf module 4 - rus
Mva stf module 4 - rusMaxim Shaptala
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПОseleznev_stas
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rusMaxim Shaptala
 
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежатьОшибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежатьSQALab
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовCOMAQA.BY
 
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...RIF-Technology
 
Что было, что есть, что будет: Current State vs. Common Sense
Что было, что есть, что будет: Current State vs. Common SenseЧто было, что есть, что будет: Current State vs. Common Sense
Что было, что есть, что будет: Current State vs. Common SenseSQALab
 
Технический долг: взгляд и действия со стороны QA / QC&AT
Технический долг: взгляд и действия со стороны QA / QC&ATТехнический долг: взгляд и действия со стороны QA / QC&AT
Технический долг: взгляд и действия со стороны QA / QC&ATCodeFest
 

What's hot (20)

Mva stf module 6 - rus
Mva stf module 6 - rusMva stf module 6 - rus
Mva stf module 6 - rus
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rus
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторов
 
Process Quality, QA and QC. QA Club. Kharkov. Ukraine
Process Quality, QA and QC. QA Club. Kharkov. UkraineProcess Quality, QA and QC. QA Club. Kharkov. Ukraine
Process Quality, QA and QC. QA Club. Kharkov. Ukraine
 
Новый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проектеНовый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проекте
 
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDDЭволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
 
QAFest. Роль тестирования в Devops
QAFest. Роль тестирования в DevopsQAFest. Роль тестирования в Devops
QAFest. Роль тестирования в Devops
 
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
 
Способы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированиюСпособы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированию
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - Тестирование
 
Mva stf module 4 - rus
Mva stf module 4 - rusMva stf module 4 - rus
Mva stf module 4 - rus
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежатьОшибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
 
Что было, что есть, что будет: Current State vs. Common Sense
Что было, что есть, что будет: Current State vs. Common SenseЧто было, что есть, что будет: Current State vs. Common Sense
Что было, что есть, что будет: Current State vs. Common Sense
 
Технический долг: взгляд и действия со стороны QA / QC&AT
Технический долг: взгляд и действия со стороны QA / QC&ATТехнический долг: взгляд и действия со стороны QA / QC&AT
Технический долг: взгляд и действия со стороны QA / QC&AT
 

Viewers also liked

Solit 2013, Open Source continuous integration in java, Калачев Дмитрий
Solit 2013, Open Source continuous integration in java, Калачев ДмитрийSolit 2013, Open Source continuous integration in java, Калачев Дмитрий
Solit 2013, Open Source continuous integration in java, Калачев Дмитрийsolit
 
Зачем авто-тесты нам нужны?
Зачем авто-тесты нам нужны?Зачем авто-тесты нам нужны?
Зачем авто-тесты нам нужны?Vitebsk Miniq
 
AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)Anton Katkov
 
Алексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationАлексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationOleg Poludnenko
 
Continuous Integration для тестировщиков
Continuous Integration для тестировщиковContinuous Integration для тестировщиков
Continuous Integration для тестировщиковUladzimir Kryvenka
 
Continuous Integration для QA
Continuous Integration для QAContinuous Integration для QA
Continuous Integration для QAIvan Kolodyazhny
 
Эволюция разработки в Badoo
Эволюция разработки в BadooЭволюция разработки в Badoo
Эволюция разработки в BadooADV/web-engineering
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Badoo Development
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Docker, Inc.
 

Viewers also liked (9)

Solit 2013, Open Source continuous integration in java, Калачев Дмитрий
Solit 2013, Open Source continuous integration in java, Калачев ДмитрийSolit 2013, Open Source continuous integration in java, Калачев Дмитрий
Solit 2013, Open Source continuous integration in java, Калачев Дмитрий
 
Зачем авто-тесты нам нужны?
Зачем авто-тесты нам нужны?Зачем авто-тесты нам нужны?
Зачем авто-тесты нам нужны?
 
AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)
 
Алексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationАлексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous Integration
 
Continuous Integration для тестировщиков
Continuous Integration для тестировщиковContinuous Integration для тестировщиков
Continuous Integration для тестировщиков
 
Continuous Integration для QA
Continuous Integration для QAContinuous Integration для QA
Continuous Integration для QA
 
Эволюция разработки в Badoo
Эволюция разработки в BadooЭволюция разработки в Badoo
Эволюция разработки в Badoo
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
 

Similar to Continious integration-Automated Testing-Solid-Agile

Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
Роман Кокин «Организация тестирования в больших командах»
Роман Кокин «Организация тестирования в больших командах»Роман Кокин «Организация тестирования в больших командах»
Роман Кокин «Организация тестирования в больших командах»DataArt
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советыSQALab
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
 
Лилия Зданевич "Automation testing save time and money"
Лилия Зданевич "Automation testing save time and money"Лилия Зданевич "Automation testing save time and money"
Лилия Зданевич "Automation testing save time and money"DataArt
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестированияIgor Pozumentov
 
Тестирование веб-проектов в Agile
Тестирование веб-проектов в AgileТестирование веб-проектов в Agile
Тестирование веб-проектов в AgileSQALab
 
Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Hub-IT-School
 
Автоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятАвтоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятMarina Peregud
 
Как тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиКак тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиkosyakov
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Tatyanazaxarova
 
Проблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийПроблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийTatyanazaxarova
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 

Similar to Continious integration-Automated Testing-Solid-Agile (20)

Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
Enter: testing
Enter: testingEnter: testing
Enter: testing
 
Роман Кокин «Организация тестирования в больших командах»
Роман Кокин «Организация тестирования в больших командах»Роман Кокин «Организация тестирования в больших командах»
Роман Кокин «Организация тестирования в больших командах»
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советы
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Team workflow
Team workflowTeam workflow
Team workflow
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
Лилия Зданевич "Automation testing save time and money"
Лилия Зданевич "Automation testing save time and money"Лилия Зданевич "Automation testing save time and money"
Лилия Зданевич "Automation testing save time and money"
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестирования
 
Тестирование веб-проектов в Agile
Тестирование веб-проектов в AgileТестирование веб-проектов в Agile
Тестирование веб-проектов в Agile
 
Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".
 
Автоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятАвтоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едят
 
Как тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиКак тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книги
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
 
Проблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийПроблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложений
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 

Continious integration-Automated Testing-Solid-Agile

  • 1. Обзор статей на тему Continious Integration – Automated Testing – Agile Подготовил – Юсупов Кайрат
  • 2. Процесс разработки в Mail.Ru Group "По мере выпуска следующих версий программы и добавления нового функционала нам нужно будет проверять с каждым разом все больше и больше функций. То есть, грубо говоря, трудозатраты будут линейно возрастать с ростом количества функций. И в какой-то момент руководитель окажется перед выбором: либо начать частично пропускать проверки старого функционала (регрессионное тестирование), либо постоянно увеличивать штат.“ Тех. Дир. Mail.Ru Group Прим. * Синим цветом обозначены трудозатраты на ручное тестирование регрессионных багов.
  • 3. • Важно отметить, что только (ручная отладка) тестирование новых функций будет интересной задачей, а повторное тестирование старых функций (регрессионное тестирование) является монотонной однообразной работой, повторением уже не раз проделанных операций. Поэтому даже при постоянном расширении штата сотрудники будут демотивированы, что негативно скажется на внимательности и ответственности, а в итоге приведет к пропущенным ошибкам.
  • 4. • Автоматизация тестирования необходима не только потому, что важно экономить ресурсы и избавляться от скучной и однообразной работы. • Тех. дир. Mail.Ru Group Автоматическое тестирование позволяет снизить затраты на ручную отладку и тестирование, Избавиться от ручного регрессионого тестирования, снизить трудозатраты тестирования до минимума. Как видно из графика трудозатраты на написание тестов не растут линейно, остаются на одном уровне Из приведенного графика следует, что трудозатраты на ручное регрессионное тестирование со временем становится в разы больше трудозатрат, чем написание кода.
  • 5. В каких компаниях существует автоматическое тестирование? • Google, Mail.ru , Yandex, Microsoft • CodeBorne • IBM • BAS , NAT (Казахстанские компании ) Большинство стабильных опенсорс проектов покрываются тестами: • Hadoop • Apache Tomcat • VivagraphJS • Twitter Storm
  • 6. public class HasNegationTest { // Тест кейс 1 @Test public void test_hasNegation_true() { DicSentimentHighlighter sentimentHighlighter = new DicSentimentHighlighter( … ); boolean result = sentimentHighlighter.hasNegation(new String[]{" не "," хороший "} , " хороший "); Assert.assertTrue(result); } // Тест кейс 2 @Test public void test_hasNegation_false() { DicSentimentHighlighter sentimentHighlighter = new DicSentimentHighlighter( … ); boolean result = sentimentHighlighter.hasNegation(new String[]{"хороший","хороший"} , "хороший"); Assert.assertFalse(result); } } Пример модульного теста , написанного с помощью фреймворка Junit 4.1
  • 7. Запускаем тесты ( кнопка Alt-F6 ), получаем отчеты по пройденным тестам
  • 8. В случае с внешней зависимостью Зависимость заменяется с помощью Stub / Mock Object Stub / Mock Object Class Under Test Connection to Database Class Under Test
  • 9. Тестирование GUI с помощью фреймворка Selenide @Test public void test() { open(contextPath + "/ru/regnpv2/register"); open(contextPath + "/ru/regnpv2/foreignPerson"); $(By.name("regNpVisitorList[0].lastname")).setValue("TESTACCEPT"); $(By.name("regNpVisitorList[0].firstname")).setValue("TESTACCEPT"); $(By.id("next")).click(); Assert.assertTrue($(By.id("registration_start")).getText().length() > 6 ); Assert.assertTrue($(By.id("registration_end")).getText().length() > 6 ); } } В целом синтаксис кода похож на Jquery
  • 10. Скрипт запускает браузер, эмулирует работу человека, вводит предопределенные данные в браузере, и контролирует работу GUI Исключается участие человека для проверки работоспособности приложения. Тем самым снижаются трудозатраты.
  • 11. Необходимые условия для покрытия кода тестами • Наличие фреймворка Junit, TestNG для Java, Jasmine, Qunit для JS • Регулярная прогонка тестов на билд-сервере (каждый день, каждый коммит) • Не каждый код может быть покрыт тестами • Слабосвязанная архитектура • Код написанный в соответствии с принципами SOLID
  • 12. Принципы SOLID • S – single responsibility • O – open/closed principle • L – Liskov substitution principle • I – Interface segregation principle • D – dependency injection
  • 13. Какой код выгодно тестировать? •На этой намеренно упрощённой диаграмме показано 4 типа кода: Сложный код с небольшим количеством зависимостей (участок слева вверху). (выгодно) •Простой код с кучей зависимостей (участок справа внизу). ( не очень выгодно , но иногда выгодно) •Сложный код с большим количеством зависимостей (участок справа вверху). Писать тесты для такого кода достаточно дорого, а не писать слишком рискованно. Как правило, выходом может стать его разделение на две части: кусок, вобравший в себя сложную логику (алгоритм), и кусок, сосредоточивший в себе внешние зависимости (координатор). (выгодно, но требует рефакторинга) •Обычный заурядный код, имеющий немного зависимостей (участок слева внизу).
  • 14. Continuous Integration. Как оно выглядит «сейчас» • Роль билд – сервера на данный момент выполняет - Дулат • Вручную делаются билды, выкладываются на тестовый и боевой серверы, вручную ищутся проблемы интеграции - это постоянная однообразная работа занимает время, утомляет, и отвлекает от более важных приоритетных задач.
  • 15. Проблемы, с которыми сталкнулись во время разработки ВМП • Развертывание функциональности без должного тестирования (практические всегда в функциональности были скрытые баги) • Отрицательные отзывы от клиентов • Фактически в активное тестирование были вовлечены клиенты(что не есть хорошо) • Бывали случаи, когда все изменения от разных разработчиков невозможно было забилдить в течение нескольких часов перед презентацией • Отрицательное влияние на репутацию компании и программистов • Потерянное время , ресурсы, неоправданный стресс
  • 16. Проблемы при доработке Беркут • Документации нет • Никто не знает , как работает код для миграции данных • Автотестов нет ( вносить изменения необходимо очень осторожно) • Долго кропотливо и разбираться, что делает каждая строчка кода • Нет гарантии безопасности изменения кода • Стоить отметить, что тесты могут использоваться как документация , т.к. тесты описывают спецификацию классов , функций и т.п.
  • 17. Continious Integration. Как «должно быть» Continuous Integration (далее CI) — это практика разработки программного обеспечения, в которой члены команды проводят интеграцию не реже чем раз в день. Результаты интеграции проверяются автоматически, используя автотесты и статический анализ кода.
  • 18. Преимущества CI • Использование CI позволяет вовремя отслеживать ошибки интеграции • Сделать систему и процесс разработки более «прозрачными» для всех участников команды • CI избавляет от рутинных операция по сборке продукта, запуску тестов, повышает качество продукта, включает в себя профит от написания тестов. • Автоматическое оповещение участников команды о наличии проблемы (бага, ошибки, не развертывается проект) в проекте
  • 19. Необходимые условия для развертывания CI • Регулярное автоматическое выполнение билдов проекта • Достаточно высокое покрытие проекта тестами • Обратная связь билд-сервера с разработчиками проекта (разработчик должен оповещаться о наличии проблемы, и именно тот разработчик внесший изменение , повлиявшее на билд) • Существуют следующие популярные механизмы осуществления обратной связи: • SMS • browser plug-in • светофор сборок • звуковое оповещение • email
  • 20. Примеры отчетности Вертикальная ось – тест кейсы Синим цветом отмечены пройденные тесты. Красным цветом отмечены непройденные тесты(ошибки). Горизонтальная ось - билды
  • 21.
  • 22. Примеры отчетности – процесс сборки
  • 23. Как Google тестируется ПО “идея заключается не в создании тестов как таковых, а в ускорении разработки.” В Google существуют три роли тестеров: SWE - основные разработчики, которые работают над функционалом. На них лежит разборка кода (code review), TDD, Unit тестирование и приемочные испытания. Они так же ответственны за качество каждого участка кода. Это важно. Тестеры не отвечают за качество. SWE не может написать немного кода, а потом сказать тестеру, попробуй улучшить этот код. Это его собственная работа. SET — занимаются разработкой среды для тестирования. Они не пишут непосредственно тест кейсы. Они создают инфраструктуру для их создания. Они выпускают фрэймворки, пишут утилиты автоматизирующие рутину проверок. Они создают автоматизированные процедуры. Процесс разработки Google plus занял 100 дней. Каждый день собирается новый релиз Google Chrome.
  • 24. You Can't be Agile Without Automated Unit Testing • Тезис вытекающий из предыдущих пунктов: • Невозможно внедрить Agile/Scrum методологию без уделения внимания современными инженерным практикам( код ревью , автоматическое тестирование, непрерывная интеграция). • Agile projects assume that test planning, test creation, and test execution take place throughout a project's lifecycle. So the need for unit testing (and especially automated unit testing) can't be ignored and should be considered as a key responsibility of the entire team—not just the software developers Developers have known for decades that the further into a project timeline a bug gets discovered from its insertion point, the more costly it is to fix. When a developer finds a bug, it can sometimes take minutes to fix. If it slips through testing and finds its way to the customer, figure 1 shows that mitigation can be exponentially more expensive to fix. Agile methodologies take working software and combine it with early feedback. To give the developers confidence that their code works, unit testing gives the fastest available quality feedback. The earlier defects are found, the cheaper they are to fix.
  • 25. Ссылки • 1. Тестирование в Mail.ru Group: • http://habrahabr.ru/company/mailru/blog/165877/ • 2. Как перестать беспокоиться и начать работать: • http://habrahabr.ru/company/skbkontur/blog/128427/ • 3. Continuous Integration. Путь обеспечения надежности и доверия к системе • http://habrahabr.ru/post/219891/ • 4. Как Google тестирует ПО • http://habrahabr.ru/post/135776/ • 5. Компания Agitar зарабатывает тем что разрабатывает автоматическое тестирование для заказчиков • http://www.agitar.com/solutions/why_unit_testing.html • 6. You Can't be Agile Without Automated Unit Testing • http://www.stickyminds.com/better-software-magazine-article/you-cant-be-agile-without-automated-unit-testing • 7 Полное регрессионное тестирование за 4 часа • http://scrumtrek.ru/stories/view/13