42
SOLIDарность Тестирование, как разработка

SOLIDарность: Тестирование как разработка

  • Upload
    sqalab

  • View
    737

  • Download
    3

Embed Size (px)

DESCRIPTION

Презентация Игоря Горчакова на SQA Days-16 14-15 ноября 2014, Санкт-Петербург, Россия www.sqadays.com

Citation preview

Page 1: SOLIDарность: Тестирование как разработка

SOLIDарностьТестирование, как

разработка

Page 2: SOLIDарность: Тестирование как разработка

Об авторе

Игорь Горчаков

skype : igor-gorchakov

e-mail : [email protected]

Page 3: SOLIDарность: Тестирование как разработка

Качество кода в тестировании

• Многие не считают, что разработка автотестов – это разработка.

• Иногда и разработчик автотестов не считает, что он занимается разработкой

Page 4: SOLIDарность: Тестирование как разработка

Что такое хороший код?

• Что такое код?

• Что такое хороший код?

• Почему важен хороший код?

Page 5: SOLIDарность: Тестирование как разработка

Дизайн

Дизайн – это результат процесса проектирования : декомпозиция системы, определение поведения и характеристики отдельных компонент и их взаимодействия.

Page 6: SOLIDарность: Тестирование как разработка

Отсутствие гибкости (Rigidity)

Код тяжело поддается изменениям. Изменения в одном месте, вызывают изменения в других частях системы приводя к эффекту «снежного кома».

Page 7: SOLIDарность: Тестирование как разработка

Хрупкость (Fragility)

Код легко «ломается». Т.е. после осуществления изменения код может сломаться еще в нескольких других местах.

Page 8: SOLIDарность: Тестирование как разработка

Монолитность (Immobility)

Компоненты настолько сильно связаны друг с другом, что их сложно разделить друг от друга и переиспользовать.

Page 9: SOLIDарность: Тестирование как разработка

Вязкость (Viscosity)

Сделать что-то хорошо, очень сложно. Существующий код сам провоцирует на дальнейшее увеличение количества «хаков» и «костылей».

Page 10: SOLIDарность: Тестирование как разработка

Излишняя сложность (Needless complexity)

Код содержит в себе архитектурные решения, необходимость в которых еще не назрела.

Page 11: SOLIDарность: Тестирование как разработка

Излишняя повторяемость (Needless repetition)

код содержит в себе дублирование, особенно такое, которое легко устраняется

Page 12: SOLIDарность: Тестирование как разработка

Нечитабельность (Opacity)

код сложен для чтения и понимания.

Page 13: SOLIDарность: Тестирование как разработка

Признаки хорошего дизайна

• Гибкость

• Прочность

• Переиспользуемость

• Отсутствие вязкости

• Простота

• Отсутствие дублирования кода

• Читабельность

Page 14: SOLIDарность: Тестирование как разработка

Что такое SOLID?• S - Single responsibility principle

• O - Open/closed principle

• L - Liskov substitution principle

• I - Interface segregation principle

• D - Dependency inversion principle

Page 15: SOLIDарность: Тестирование как разработка

Single responsibility principle

Не должно быть больше одной причины для изменения класса

Page 16: SOLIDарность: Тестирование как разработка

Примеры

Page 17: SOLIDарность: Тестирование как разработка

Примеры

Page 18: SOLIDарность: Тестирование как разработка

Решение

Page 19: SOLIDарность: Тестирование как разработка

Open/closed principle

программные сущности (классы, модули, методы и т.д.) должны быть открыты для расширения, но закрыты для изменения

Page 20: SOLIDарность: Тестирование как разработка

Пример

Page 21: SOLIDарность: Тестирование как разработка

Пример

Page 22: SOLIDарность: Тестирование как разработка

Решение

Page 23: SOLIDарность: Тестирование как разработка

Liskov substitution principle

Объекты в программе могут быть заменены их наследниками без изменения свойств программы

Page 24: SOLIDарность: Тестирование как разработка

Пример

Page 25: SOLIDарность: Тестирование как разработка

Пример

Page 26: SOLIDарность: Тестирование как разработка

Решение

Page 27: SOLIDарность: Тестирование как разработка

Решение

Page 28: SOLIDарность: Тестирование как разработка

Interface segregation principle

Много специализированных интерфейсов лучше, чем один универсальный.

Page 29: SOLIDарность: Тестирование как разработка

Пример

Page 30: SOLIDарность: Тестирование как разработка

Пример

Page 31: SOLIDарность: Тестирование как разработка

Решение

Page 32: SOLIDарность: Тестирование как разработка

Решение

Page 33: SOLIDарность: Тестирование как разработка

Dependency inversion principle

Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракции.

Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Page 34: SOLIDарность: Тестирование как разработка

Пример

Page 35: SOLIDарность: Тестирование как разработка

Пример

Page 36: SOLIDарность: Тестирование как разработка

Тестируемость?

Page 37: SOLIDарность: Тестирование как разработка

Решение

Page 38: SOLIDарность: Тестирование как разработка

Решение

Page 39: SOLIDарность: Тестирование как разработка

Тестируемость

Page 40: SOLIDарность: Тестирование как разработка

Не забываем!

• DRY – Don’t repeat yourself (не повторяй себя)

• KISS – keep it simple stupid (делайте вещи проще)

• YAGNI - You ain’t gonna need it – вам это не понадобится

Page 41: SOLIDарность: Тестирование как разработка

Заключение

Принципы, а не строгие правила

Нет универсальных рецептов

Page 42: SOLIDарность: Тестирование как разработка

Вопросы?

Об авторе : Игорь Горчаковskype : igor-gorchakove-mail : [email protected]

Литература : Принципы, паттерны и методики гибкой разработки на языке C#(Agile Principles, Patterns and Practices in C#)