SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Работа с унаследованным
кодом
Лебедев Михаил
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. Внесение изменений и реорганизация кода
Швы
Шов - место где можно изменить поведение
программы, не правя код в этом месте
Разрешающая точка - место где можно выбрать то
или иное поведение.
Литература

Weitere ähnliche Inhalte

Was ist angesagt?

Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
Paul Stashevsky
 
Sqadays 8-barancev
Sqadays 8-barancevSqadays 8-barancev
Sqadays 8-barancev
Alexei Lupan
 
Автотесты и образ мышления
Автотесты и образ мышленияАвтотесты и образ мышления
Автотесты и образ мышления
Andrei Zubov
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testing
Alexei Lupan
 
Serious+performance+testing
Serious+performance+testingSerious+performance+testing
Serious+performance+testing
Alexei Lupan
 
Тест-дизайн "в цикле"
Тест-дизайн "в цикле"Тест-дизайн "в цикле"
Тест-дизайн "в цикле"
Александр Федоров
 
About Testers
About TestersAbout Testers
About Testers
antsh
 
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Vadim Kruchkov
 

Was ist angesagt? (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
 
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.
 

Ähnlich wie Working with legacy code

Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис ВоскобойникКак работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Образовательные мероприятия "Netpeak Talks"
 
Sef Streluk Agile
Sef Streluk AgileSef Streluk Agile
Sef Streluk Agile
sef2009
 
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Ontico
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на Selenium
SQALab
 
Дмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеДмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестирование
qasib
 
Дмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеДмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестирование
Tatyana Pischasova
 

Ähnlich wie 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