SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Работа с унаследованным
кодом
Лебедев Михаил
http://phpfriends.club/
Лебедев Михаил
mihasichechek@gmail.com
https://fb.com/mihasichechek
https://www.linkedin.com/in/mihail-lebedev
https://github.com/mihasicehcek
4 причины для внесения изменений в
существующий код
● Ввод нового поведения
● Изменение существующего поведения
● Рефакторинг
● Оптимизация
Что у них общего?
Чем отличается хорошая система от плохой?
Как нам сохранить существующее поведение?
Модульные тесты – тесты в которых мы тестируем
самые элементарные единицы поведения
системы.
Почему именно модульные тесты?
1. Быстро выполняються
2. Помогают обнаружить и локализовать ошибки.
Модульный тест который выполняется дольше
1/10 секунды – медленный блочный тест
Модульный тест должен выполняться быстро. В
противном случае это не модульный тест.
Модульные тесты не должны
● Обращаться к базе данных
● Общаться по сети
● Обращаться к файловой системе
Зависимости
● От классов
● От глобальных переменных
● От сторонних сервисов
● От операционной системы
● От стороннего софта
● От глобальных функций
● От дня недели
и т.д.
Причины для разрыва зависимостей
Разделение - если мы не можем ввести в среду
тестирования фрагмент кода для выполнения
Распознавание - если мы не можем получить доступ
к значениям которые вычисляет код
Алгоритм изменения унаследованного кода
1. Определение точек изменения
2. Нахождение тестовых точек
3. Разрывание зависимостей
4. Написание тестов
5. Внесение изменений и реорганизация кода
Швы
Шов - место где можно изменить поведение
программы, не правя код в этом месте
Разрешающая точка - место где можно выбрать то
или иное поведение.
Литература

Mais conteúdo relacionado

Mais procurados

Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Paul Stashevsky
 
Sqadays 8-barancev
Sqadays 8-barancevSqadays 8-barancev
Sqadays 8-barancevAlexei Lupan
 
Шагнуть на встречу тестированию требований. Советы тестировщика
Шагнуть на встречу тестированию требований. Советы тестировщикаШагнуть на встречу тестированию требований. Советы тестировщика
Шагнуть на встречу тестированию требований. Советы тестировщикаSQALab
 
Severity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятноеSeverity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятноеDeutsche Post
 
Автотесты и образ мышления
Автотесты и образ мышленияАвтотесты и образ мышления
Автотесты и образ мышленияAndrei Zubov
 
Первый шаг на пути к тестированию белого ящика для сложных систем
Первый шаг на пути к тестированию белого ящика для сложных системПервый шаг на пути к тестированию белого ящика для сложных систем
Первый шаг на пути к тестированию белого ящика для сложных системSQALab
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testingAlexei Lupan
 
Тест-дизайн: проще читать или проще писать
Тест-дизайн: проще читать или проще писатьТест-дизайн: проще читать или проще писать
Тест-дизайн: проще читать или проще писатьSQALab
 
Serious+performance+testing
Serious+performance+testingSerious+performance+testing
Serious+performance+testingAlexei Lupan
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QAFest
 
Системный анализ - зачем?
Системный анализ - зачем?Системный анализ - зачем?
Системный анализ - зачем?Vladimir Kalenov
 
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...SQALab
 
Грабли автоматизации. Учимся на чужих ошибках
Грабли автоматизации. Учимся на чужих ошибкахГрабли автоматизации. Учимся на чужих ошибках
Грабли автоматизации. Учимся на чужих ошибкахSQALab
 
Документация тестировщика - Александр Трибушный
Документация тестировщика - Александр ТрибушныйДокументация тестировщика - Александр Трибушный
Документация тестировщика - Александр ТрибушныйDataArt
 
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаДелимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаSQALab
 
Процесс тестирования. Измерение и оценка
Процесс тестирования. Измерение и оценкаПроцесс тестирования. Измерение и оценка
Процесс тестирования. Измерение и оценкаSQALab
 
About Testers
About TestersAbout Testers
About Testersantsh
 
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Vadim Kruchkov
 

Mais procurados (20)

Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
 
Sqadays 8-barancev
Sqadays 8-barancevSqadays 8-barancev
Sqadays 8-barancev
 
Шагнуть на встречу тестированию требований. Советы тестировщика
Шагнуть на встречу тестированию требований. Советы тестировщикаШагнуть на встречу тестированию требований. Советы тестировщика
Шагнуть на встречу тестированию требований. Советы тестировщика
 
Severity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятноеSeverity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятное
 
Автотесты и образ мышления
Автотесты и образ мышленияАвтотесты и образ мышления
Автотесты и образ мышления
 
Первый шаг на пути к тестированию белого ящика для сложных систем
Первый шаг на пути к тестированию белого ящика для сложных системПервый шаг на пути к тестированию белого ящика для сложных систем
Первый шаг на пути к тестированию белого ящика для сложных систем
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testing
 
План тестирования
План тестированияПлан тестирования
План тестирования
 
Тест-дизайн: проще читать или проще писать
Тест-дизайн: проще читать или проще писатьТест-дизайн: проще читать или проще писать
Тест-дизайн: проще читать или проще писать
 
Serious+performance+testing
Serious+performance+testingSerious+performance+testing
Serious+performance+testing
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
 
Системный анализ - зачем?
Системный анализ - зачем?Системный анализ - зачем?
Системный анализ - зачем?
 
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
 
Грабли автоматизации. Учимся на чужих ошибках
Грабли автоматизации. Учимся на чужих ошибкахГрабли автоматизации. Учимся на чужих ошибках
Грабли автоматизации. Учимся на чужих ошибках
 
Документация тестировщика - Александр Трибушный
Документация тестировщика - Александр ТрибушныйДокументация тестировщика - Александр Трибушный
Документация тестировщика - Александр Трибушный
 
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаДелимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
 
Тест-дизайн "в цикле"
Тест-дизайн "в цикле"Тест-дизайн "в цикле"
Тест-дизайн "в цикле"
 
Процесс тестирования. Измерение и оценка
Процесс тестирования. Измерение и оценкаПроцесс тестирования. Измерение и оценка
Процесс тестирования. Измерение и оценка
 
About Testers
About TestersAbout Testers
About Testers
 
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.
 

Semelhante a Working with legacy code

Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко АлексейSolit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексейsolit
 
Sef Streluk Agile
Sef Streluk AgileSef Streluk Agile
Sef Streluk Agilesef2009
 
Постановка процесса тестирования в Agile
Постановка процесса тестирования в AgileПостановка процесса тестирования в Agile
Постановка процесса тестирования в AgileSQALab
 
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...Ontico
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаIgor Lyubin
 
Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014ForkConf
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumSQALab
 
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивностиJS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивностиGeeksLab Odessa
 
Автоматизация тестирования как способ получения знаний
Автоматизация тестирования как способ получения знанийАвтоматизация тестирования как способ получения знаний
Автоматизация тестирования как способ получения знанийSQALab
 
Виталий Стрелюк
Виталий СтрелюкВиталий Стрелюк
Виталий СтрелюкSQALab
 
Юнит тестирование
Юнит тестированиеЮнит тестирование
Юнит тестированиеTatiana Borolyuk
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективыBoris Volfson
 
КГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 1: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 1: Обеспечение Качества Программного ОбеспеченияIosif Itkin
 
Дмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеДмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеqasib
 
Дмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеДмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеTatyana Pischasova
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
7 принципов эффективного тестирования
7 принципов эффективного тестирования7 принципов эффективного тестирования
7 принципов эффективного тестированияak-itconsulting.com
 

Semelhante a Working with legacy code (20)

Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис ВоскобойникКак работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
 
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко АлексейSolit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
 
Sef Streluk Agile
Sef Streluk AgileSef Streluk Agile
Sef Streluk Agile
 
Постановка процесса тестирования в Agile
Постановка процесса тестирования в AgileПостановка процесса тестирования в Agile
Постановка процесса тестирования в Agile
 
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014
 
Solid code via tdd
Solid code via tddSolid code via tdd
Solid code via tdd
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на Selenium
 
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивностиJS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
 
Автоматизация тестирования как способ получения знаний
Автоматизация тестирования как способ получения знанийАвтоматизация тестирования как способ получения знаний
Автоматизация тестирования как способ получения знаний
 
Виталий Стрелюк
Виталий СтрелюкВиталий Стрелюк
Виталий Стрелюк
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Юнит тестирование
Юнит тестированиеЮнит тестирование
Юнит тестирование
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
 
КГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 1: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
 
Дмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеДмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестирование
 
Дмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеДмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестирование
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
7 принципов эффективного тестирования
7 принципов эффективного тестирования7 принципов эффективного тестирования
7 принципов эффективного тестирования
 

Working with legacy code