Лекция 3. Тестирование.pptx
- Количество слайдов: 18
Тестирование. Логирование. Подготовил Кочетков Илья, Старший разработчик ПО, ДАГС, Диджитал Дизайн
Содержание Тестирование Зачем это? Виды Хороший тест – какой он? Сложности Что это? Выгода Логирование Что это? Зачем это? Уровни Правила Пример c использованием NLog Примечания 2
3 Часть 1. Тестирование
Что это? процесс исследования, испытания программного продукта на соответствие набору критериев 4
Зачем это? Вики молвит: продемонстрировать разработчикам и заказчикам, что программа соответствует требованиям; выявить ситуации, в которых поведение программы является неправильным, нежелательным или не соответствующим спецификации Опыт говорит: Качество кода Удобство сопровождения Скорость внесения изменений Уверенность при рефакторинге Хороший дизайн Быстрая отладка Нет лишнего кода 5
Виды Модульное (Unit testing) – проверка функциональности отдельных блоков (разработчик) Нагрузочные (Load testing) – проверка производительности и времени отклика программы (разработчик) Приемочные – проверка соответствия программы требования на основании набора сценариев (тестировщик) Интеграционные – проверка взаимодействия модулей в совокупности (тестировщик) 6
7
Хороший тест – какой он? Тестирует определенную (единственную) функциональность Выполняется моментально Не зависит от других тестов и окружения Имеет четкую структуру (дано, действие, проверка) Имеет понятное имя (Should. Get. Employee, instead of Test 1) Тестирует ваш код, а не сторонние компоненты 8
Сложности Все приходит с опытом Первый раз всегда больно Тестируется не то, что нужно Велосипеды Унаследованный код Не все можно покрыть тестами Порой это действительно сложно 9
Выгода 10
СУХАРИ Сюхари (守破離) — В боевом искусстве владения клинком существует понятие о трех ступенях Сю — означает, что надо заучивать все точно так, как показывает учитель. Ха — означает освободиться от правил, где правил нет, а есть естественный ход вещей. Ри — означает подняться над всем, что изучалось раньше, создать более высокие и более общие принципы. 11
12 Часть 2. Логирование
Что это? хронологическая запись с различной степенью детализации сведений о происходящих в системе событиях 13
Зачем это? По файлам логов можно определить: Причину и контекст неисправности в случае ее появления Длительность операции Общий алгоритм работы программы 14
Уровни Info — начало и завершение выполнения «крупной» бизнес операции Debug — выполнение действий внутри бизнес-операции Trace — максимально детальный лог (по умолчанию отключен, необходим в крайних ситуациях) Warning — нештатное поведение программы, не приводящее к прекращению выполнения метода (неожиданные параметры вызова, странный формат запроса, использование дефолтных значений в замен не корректных) Error — любой Exception, происходящий в системе. Необходимо записывать полную ошибку в файл. Fatal — HALT. Произошла неполадка, из-за которой необходимо завершить процесс. 15
Правила оформления Использовать уровни логирования Указание контекста события (физический или бизнес) Трассировка вызовов внешних систем При длительных операциях измерять длительность операции При возникновении ошибки логировать ex. To. String(), а не ex. Message 16
Пример с использованием Nlog 17 try { Log. Instance. Debug("Обработка очереди уведомлений"); Timer. Stop(); using (var pool. Session = Dv. Session. Manager. Get. Session()) { var notifications. Generator = new Notification. Generator(pool. Session); var events. Count = notifications. Generator. Create. Notifications. From. Queue(_part. Size, _event. Time. To. Live); Log. Instance. Debug("Завершена обработка очереди, обработанно {0} событий", events. Count); } } catch (Exception ex) { Log. Instance. Error. Exception("Ошибка обработки очереди уведомлений", ex); }
Примечание Логирования не бывает много Если вы маньяк, то логирования бывает очень много Логирование отражается на производительности 18
Лекция 3. Тестирование.pptx