🗊Часть 1

Категория: Технологии
Нажмите для полного просмотра!
Часть 1, слайд №1Часть 1, слайд №2Часть 1, слайд №3Часть 1, слайд №4Часть 1, слайд №5Часть 1, слайд №6Часть 1, слайд №7Часть 1, слайд №8Часть 1, слайд №9Часть 1, слайд №10Часть 1, слайд №11Часть 1, слайд №12Часть 1, слайд №13Часть 1, слайд №14Часть 1, слайд №15Часть 1, слайд №16Часть 1, слайд №17Часть 1, слайд №18Часть 1, слайд №19Часть 1, слайд №20Часть 1, слайд №21Часть 1, слайд №22Часть 1, слайд №23Часть 1, слайд №24Часть 1, слайд №25Часть 1, слайд №26Часть 1, слайд №27Часть 1, слайд №28Часть 1, слайд №29Часть 1, слайд №30

Содержание

Вы можете ознакомиться и скачать Часть 1. Презентация содержит 30 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1






Часть 1
Описание слайда:
Часть 1

Слайд 2





Что такое Unit-тест
Фрагмент кода, написанный разработчиком, для провеки очень маленького, специфичного фрагмента функциональности кода.
Описание слайда:
Что такое Unit-тест Фрагмент кода, написанный разработчиком, для провеки очень маленького, специфичного фрагмента функциональности кода.

Слайд 3





Зачем нужно возиться с тестами
они делают жизнь проще
они делают дизайн приложения лучше
они значительно уменьшают время, затрачиваемое на отладку.
Описание слайда:
Зачем нужно возиться с тестами они делают жизнь проще они делают дизайн приложения лучше они значительно уменьшают время, затрачиваемое на отладку.

Слайд 4





Чего мы добиваемся написанием тестов
Ответов на вопросы:
Делает ли код то, что ожидает от него разработчик?
Делает ли он это все время?
Можно ли положиться на код?
Побочные эффекты:
Документирование кода и способов работы с ним
Описание слайда:
Чего мы добиваемся написанием тестов Ответов на вопросы: Делает ли код то, что ожидает от него разработчик? Делает ли он это все время? Можно ли положиться на код? Побочные эффекты: Документирование кода и способов работы с ним

Слайд 5





Как писать юнит-тесты
Ответить на вопрос: как мы будем тестировать новый метод.
Написать тест и тестируемый класс.
Запустить  тест.
Запустить ВСЕ тесты системы.
Описание слайда:
Как писать юнит-тесты Ответить на вопрос: как мы будем тестировать новый метод. Написать тест и тестируемый класс. Запустить тест. Запустить ВСЕ тесты системы.

Слайд 6





Типичные отговорки
Написание тестов занимает слишком много времени
Запуск тестов занимает слишком много времени
Это не моя работа – тестировать мой код
Я не знаю точно, как код должен работать, поэтому я не могу написать тест
Но он же компилируется!
Мне платят за за написание кода, а не тестов
Я чувствую вину, оставляя QA без работы
Моя компания не позволит запустить юнит-тысты на live-системе
Описание слайда:
Типичные отговорки Написание тестов занимает слишком много времени Запуск тестов занимает слишком много времени Это не моя работа – тестировать мой код Я не знаю точно, как код должен работать, поэтому я не могу написать тест Но он же компилируется! Мне платят за за написание кода, а не тестов Я чувствую вину, оставляя QA без работы Моя компания не позволит запустить юнит-тысты на live-системе

Слайд 7





Написание тестов занимает
слишком много времени
Перед тем, как использовать эту отговорку оцените:
Сколько времени вы тратите на дебаг кода, написанный вами и вашими коллегами
Сколько времени тратится на переработку кода после нахождения крупных багов?
Сколько времени тратится на то, чтобы локализовать обнаруженный баг в коде?
Описание слайда:
Написание тестов занимает слишком много времени Перед тем, как использовать эту отговорку оцените: Сколько времени вы тратите на дебаг кода, написанный вами и вашими коллегами Сколько времени тратится на переработку кода после нахождения крупных багов? Сколько времени тратится на то, чтобы локализовать обнаруженный баг в коде?

Слайд 8





Написание тестов занимает слишком много времени
Описание слайда:
Написание тестов занимает слишком много времени

Слайд 9


Часть 1, слайд №9
Описание слайда:

Слайд 10





Структура теста
Создать условия, необходимые для тестов (создать объекты, моки, ресурсы и др.)
Настроить моки (если нужно)
 Вызвать тестируемый метод
Проверить, что тестируемый метод ведет себя как ожидается
Прибрать за собой (закрыть ресурсы и т.п.)
Описание слайда:
Структура теста Создать условия, необходимые для тестов (создать объекты, моки, ресурсы и др.) Настроить моки (если нужно) Вызвать тестируемый метод Проверить, что тестируемый метод ведет себя как ожидается Прибрать за собой (закрыть ресурсы и т.п.)

Слайд 11





Right-BICEP
Right – верны ли результаты?
B – Boundary верны ли граничные условия?
I – Inverse можно ли проверить обратные связи?
C – Cross-check можно ли проверить результат другими методами?
E – Error conditions можно ли вызвать ошибочные состояния искусственно?
P – Performance удовлетворительна ли производительность?
Описание слайда:
Right-BICEP Right – верны ли результаты? B – Boundary верны ли граничные условия? I – Inverse можно ли проверить обратные связи? C – Cross-check можно ли проверить результат другими методами? E – Error conditions можно ли вызвать ошибочные состояния искусственно? P – Performance удовлетворительна ли производительность?

Слайд 12





Right
верны ли результаты
Если результаты выполнения кода верны, то как я об этом узнаю?
Описание слайда:
Right верны ли результаты Если результаты выполнения кода верны, то как я об этом узнаю?

Слайд 13





B – Boundary
Проверка граничных условий
CORRECT
Conformance – верен ли формат значения?
Ordering – является ли правильный набор  данных упорядоченным?
Range – лежит ли значение в пределах конкретных минимального и максимального значения?
Reference – ссылается ли код на что-либо внешнее, что не находится под контролем данного кода? Зависит ли от состояния зависимостей, состояние объекта? Зависит ли код от каких-либо условий.
Existence - 
Cardinality – количественная проврка результата (нужное ли количество возвращается/используется методами)?
Time – все ли происходит в нужном порядке? В нужное время? В пределах допустимого времени? Правильно ли обрабатываются конкурентные условия?
Описание слайда:
B – Boundary Проверка граничных условий CORRECT Conformance – верен ли формат значения? Ordering – является ли правильный набор данных упорядоченным? Range – лежит ли значение в пределах конкретных минимального и максимального значения? Reference – ссылается ли код на что-либо внешнее, что не находится под контролем данного кода? Зависит ли от состояния зависимостей, состояние объекта? Зависит ли код от каких-либо условий. Existence - Cardinality – количественная проврка результата (нужное ли количество возвращается/используется методами)? Time – все ли происходит в нужном порядке? В нужное время? В пределах допустимого времени? Правильно ли обрабатываются конкурентные условия?

Слайд 14





I - Inverse
проверка обратных связей
Описание слайда:
I - Inverse проверка обратных связей

Слайд 15





C - Cross-check 
проверка результат другими методами
Описание слайда:
C - Cross-check проверка результат другими методами

Слайд 16





E – Force Error conditions
вызов ошибочных состояний
Типичные ошибочные состояния
Кончилась память
Кончилось место на диске
Проблемы с синхронизацией времени
Доступность и ошибки сетей
Система под нагрузкой
Ограниченная цветовая палитра
Высокое/низкое разрешение экрана
Описание слайда:
E – Force Error conditions вызов ошибочных состояний Типичные ошибочные состояния Кончилась память Кончилось место на диске Проблемы с синхронизацией времени Доступность и ошибки сетей Система под нагрузкой Ограниченная цветовая палитра Высокое/низкое разрешение экрана

Слайд 17





P – Performance
параметры производительности
Производительность алгоритма
Скорость выделения ресурсов
Скорость доступа к ресурсам
Время обработки запроса
Потребляемая память
Описание слайда:
P – Performance параметры производительности Производительность алгоритма Скорость выделения ресурсов Скорость доступа к ресурсам Время обработки запроса Потребляемая память

Слайд 18





Свойства хорошего теста
A-TRIP:
Automatic – тесты должны запускаться автоматически и проверять результаты автоматически.
Thorough – тестируйте все, что может сломаться.
Repeatable –тесты должны запускаться снова и снова, в любом порядке и всегда возвращать одинаковые результаты.
Independent – тесты должны быть независимы (от окружения и друг от друга).
Professional – тест, это код и он должен быть таким же качественным, как и обычный код.
Описание слайда:
Свойства хорошего теста A-TRIP: Automatic – тесты должны запускаться автоматически и проверять результаты автоматически. Thorough – тестируйте все, что может сломаться. Repeatable –тесты должны запускаться снова и снова, в любом порядке и всегда возвращать одинаковые результаты. Independent – тесты должны быть независимы (от окружения и друг от друга). Professional – тест, это код и он должен быть таким же качественным, как и обычный код.

Слайд 19





Automatic
Не пишите тесты, которые требуют ввода пользователя
Если метод требует ресурс (базу данных, соединение по сети), сделайте заклушку или мок для тестирования такого метода
Если запуск всех тестов требует длительного времени, то при разработке целесообразно использовать отдельный сервер, который будет запускать такие тесты и рассылать отчеты разработчикам (Continuous Integration)
Описание слайда:
Automatic Не пишите тесты, которые требуют ввода пользователя Если метод требует ресурс (базу данных, соединение по сети), сделайте заклушку или мок для тестирования такого метода Если запуск всех тестов требует длительного времени, то при разработке целесообразно использовать отдельный сервер, который будет запускать такие тесты и рассылать отчеты разработчикам (Continuous Integration)

Слайд 20





Thorough (целостность)
Чем больше процент покрытия тестами кода, тем меньше проблем.
Баги имеют свойство группироваться в проблемных местах   иногда проще и дешевле переписать такие проблемные места с нуля.
Описание слайда:
Thorough (целостность) Чем больше процент покрытия тестами кода, тем меньше проблем. Баги имеют свойство группироваться в проблемных местах  иногда проще и дешевле переписать такие проблемные места с нуля.

Слайд 21





Repeatable
Результаты тестов не должны зависеть от чего-то, находящегося под вашим непосредственным контролем (ресурсы, данные из баз данных, внешних систем и т.п.)
Используйте моки и заглушки для изоляции теста от таких систем
Описание слайда:
Repeatable Результаты тестов не должны зависеть от чего-то, находящегося под вашим непосредственным контролем (ресурсы, данные из баз данных, внешних систем и т.п.) Используйте моки и заглушки для изоляции теста от таких систем

Слайд 22





Independent
Убедитесь, что вы тестируете только одну вещь одновременно.
Разбивайте сложные операции на несколько более мелких и тестируйте их независимо.
Некоторая функциональность может иметь несколько тестов, проверяющих различные ее аспекты (например, тест с применением некорректных значений, тест метода обычном режиме для обработки единичных значений, тест для метода в пакетном режие для массовых операций).
Вы не должны зависеть от порядка запуска других тестов.
Описание слайда:
Independent Убедитесь, что вы тестируете только одну вещь одновременно. Разбивайте сложные операции на несколько более мелких и тестируйте их независимо. Некоторая функциональность может иметь несколько тестов, проверяющих различные ее аспекты (например, тест с применением некорректных значений, тест метода обычном режиме для обработки единичных значений, тест для метода в пакетном режие для массовых операций). Вы не должны зависеть от порядка запуска других тестов.

Слайд 23





Professional
Используйте все принципы хорошего дизайна: DRY (Don’t Repeat Yourself), сохраняйте инкапсуляцию, уменьшайте связность компонентов.
Не пишите тесты в линейном процедурном стиле, если можно использовать преимущества ООП.
Некоторые связанные методы тестирования можно инкапсулировать в отдельные классы.
Если необходимо, создавайте фреймворки для тестирования.
Не тратьте время на тестирование банальностей (не нужно писать юнит-тесты для get/set-методов).
Хорошее покрытие кода ~1:1 (1 строчка кода к одной строчке теста).
Описание слайда:
Professional Используйте все принципы хорошего дизайна: DRY (Don’t Repeat Yourself), сохраняйте инкапсуляцию, уменьшайте связность компонентов. Не пишите тесты в линейном процедурном стиле, если можно использовать преимущества ООП. Некоторые связанные методы тестирования можно инкапсулировать в отдельные классы. Если необходимо, создавайте фреймворки для тестирования. Не тратьте время на тестирование банальностей (не нужно писать юнит-тесты для get/set-методов). Хорошее покрытие кода ~1:1 (1 строчка кода к одной строчке теста).

Слайд 24





Тестирование тестов
Не тестируйте тесты – чаще всего в этом нет необходимости.
Улучшайте тесты по мере исправления багов.
Описание слайда:
Тестирование тестов Не тестируйте тесты – чаще всего в этом нет необходимости. Улучшайте тесты по мере исправления багов.

Слайд 25





Как исправлять баги
Идентифицировать баг
Написать тест, который «поломается» от этого бага, чтобы подтвердить наличие бага.
Исправить код так, чтобы тест выполнился.
Запустить ВСЕ остальные тесты.
Описание слайда:
Как исправлять баги Идентифицировать баг Написать тест, который «поломается» от этого бага, чтобы подтвердить наличие бага. Исправить код так, чтобы тест выполнился. Запустить ВСЕ остальные тесты.

Слайд 26





Red-Green-Refactor
Описание слайда:
Red-Green-Refactor

Слайд 27


Часть 1, слайд №27
Описание слайда:

Слайд 28





Общие принципы
Тестируйте все, что может сломаться
Тестируйте все, что уже сломалось
Новый код признается виновным, пока не доказана его невиновность.
Тестового кода должно быть как минимум сколько же, сколько и production-кода.
Запускайте юнит-тесты локально при каждой компиляции.
Запускайте все юнит-тесты перед check-in-ом в репозиторий.
Описание слайда:
Общие принципы Тестируйте все, что может сломаться Тестируйте все, что уже сломалось Новый код признается виновным, пока не доказана его невиновность. Тестового кода должно быть как минимум сколько же, сколько и production-кода. Запускайте юнит-тесты локально при каждой компиляции. Запускайте все юнит-тесты перед check-in-ом в репозиторий.

Слайд 29





Вопросы, которые стоит задавать при написании кода и тестов
Если код выполнился правильно, как я об этом узнаю?
Как я собираютсь тестировать это?
Что еще может пойти не так?
Может ли такая проблема «всплыть» где-нибудь еще?
Описание слайда:
Вопросы, которые стоит задавать при написании кода и тестов Если код выполнился правильно, как я об этом узнаю? Как я собираютсь тестировать это? Что еще может пойти не так? Может ли такая проблема «всплыть» где-нибудь еще?

Слайд 30





Спасибо за внимание.
Описание слайда:
Спасибо за внимание.



Теги Часть 1
Похожие презентации
Mypresentation.ru
Загрузить презентацию