
Тестирование.pptx
- Количество слайдов: 25
Тестирование Игорь Сухинский, ведущий разработчик Napoleon IT 1
ВВЕДЕНИЕ «Тестирование демонстрации никогда не программ наличия покажет «Если отладка ошибок, то под процесс может использоваться для ошибок, но оно их отсутствие» — процесс программированием их внесения» удаления можно понимать Эдсгер Вибе Дейкстра 2
ПОНЯТИЕ ТЕСТИРОВАНИЯ ● Тестирование - это процесс выполнения системы или компонента, при определенных тестировщиком условиях, для наблюдения и для оценки некоторых аспектов работы системы либо компонента. ● В процессе тестирования производится анализ ПО для выявления несоответствия между существующими особенностями выполнения ПО и требованиями к ПО (выявления дефектов). 3
ЦЕЛЬ ТЕСТИРОВАНИЯ Тестирование не может доказать корректность кода! Цель тестирования — чётко определить, в чём работа программы неудовлетворительна. 4
КАКИМ БЫВАЕТ ТЕСТИРОВАНИЕ? ● модульное (Unit) ● интеграционное ● системное ● ● функциональности надежности нагрузочное практичности (usability) ● ручное ● автоматизированное ● черный ящик ● серый ящик 5
ПРОЦЕСС ТЕСТИРОВАНИЯ ПРОДУКТА 6
КАКОЕ ТЕСТИРОВАНИЕ ПОДЛЕЖИТ АВТОМАТИЗАЦИИ? ● функциональное (в том числе модульное, или unit-тестирование), ● регрессионное (проверка работоспособности старого функционала и отсутствия ранее исправленных дефектов в новых версиях) ● нагрузочное (поведение приложения под рабочей и стрессовой нагрузкой, влияние работающего приложения на системное окружение). 7
ПРОБЛЕМЫ АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ ● Автоматизация требует время на создание, поддержку и тестирование (!) тестов ● Требует от тестировщика навыков разработчика (либо выполняется целиком разработчиком) ● Автоматические иногда бывают чувствительны к программному и аппаратному окружению. В тестовой среде результаты могут отличаться от промышленной. ● АТ нельзя использовать применительно к объектам, которые 8
ПРЕИМУЩЕСТВА АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ ● экономит время тестировщиков ● исключает человеческий фактор ● дает возможность выполнять тесты без графического интерфейса ● средства автоматизации позволяют эмулировать многопользовательскую работу для нагрузочного тестирования ● практически все средства автоматического тестирования имеют инструментарий фиксации ошибок и результатов 9
Непрерывность тестирования основное преимущество автоматизации 10
НЕПРЕРЫВНОСТЬ ТЕСТИРОВАНИЯ? В любой момент разработчик знает о состоянии протестированного кода. Если новая функциональность внесла регрессии в старую, разработчик поймёт об этом ещё до того, как эта функциональность готова. Можно не бояться изменений. 11
РЕФАКТОРИНГ Процесс изменения исходного кода без изменения функциональности. Нужен для улучшения поддерживаемости кода. Рефакторинг делает разработку продукта приятнее и дешевле. При рефакторинге легко внести регрессии. Тесты частично или полностью спасают от регрессий в покрытых тестами частях продукта. 12
TDD - TEST-DRIVEN DEVELOPMENT Или разработка через тестирование. Методология разработки, заключающаяся в том, что можно писать только тот код, который исправляет ошибки, выявленные существующими тестами. Также известна как “test first”, то есть любому коду должен предшествовать тест для этого кода. 13
ПРОЦЕСС TDD 14
ТРИ ЗАКОНА TDD 1. Можно писать только тот продакшн-код, который должен исправить “красный” тест на “зелёный”. 2. Нельзя писать больше тестового кода, чем необходимо для появления “красного” теста. 3. Нельзя писать больше продакшн-кода, чем необходимо для того, чтобы сделать один “красный” тест “зелёным”. 15
НЕДОСТАТКИ TDD Необходимо писать тесты даже на самые тривиальные части кода Замедляет работу на первых этапах разработки продукта Требует дисциплины Трудно адаптировать к существующим проектам Требует очень частой сборки проекта и выполнения всех тестов - долго на больших проектах 16
ПРЕИМУЩЕСТВА TDD Весь код гарантированно покрыт тестами У любого разработчика когда-то в течение последних нескольких минут весь код был рабочим Тесты несут в себе информацию об ожидаемом и действительном поведении системы Изменение старой функциональности упрощено Добавление новой функциональности упрощено 17
ТЕСТИРОВАНИЕ В ANDROID В разработке под Android есть множество мест, в которых даже опытным разработчикам легко допустить ошибку. При написании автоматических тестов следует уделить этому особое внимание. Кроме того, автоматическое тестирование в Android практически невозможно без устройства или эмулятора из-за особенностей в реализации Android SDK. Существуют специальные библиотеки (e. g. Roboelectric), которые позволяют справиться с этой проблемой. 18
ЧТО ТЕСТИРОВАТЬ? Изменения ориентации экрана Что происходит на различных экранах при изменении ориентации? Что если пользователь работал с каким-то элементом управления в момент изменения ориентации? Изменения в конфигурации устройства Измениться может язык, подключенные внешние устройства (клавиатура) Батарея 19
ЧТО ТЕСТИРОВАТЬ В ACTIVITY? Валидация входных данных Жизненный цикл Activity и Fragment Intent: удостовериться, что Activity корректно обрабатывает все доступные intent’ы Различные размеры экрана и плотности точек UI 20
КАК ТЕСТИРОВАТЬ? Android Testing Framework Подходит для обычных Unit-тестов (white-box) Android Testing Support Library Espresso - UI-тесты (white-box) UI Automator - cross-app UI-тесты (black box) Roboelectric Используется для запуска unit-тестов без устройства или эмулятора (на JVM) 21
ГДЕ РАСПОЛОЖЕНЫ ТЕСТЫ? В современных Android-проектах по умолчанию существует 2 типа тестов: 1. Instrumentation tests - src/android. Test, запускаются на устройстве 2. Unit tests - src/test, запускаются на JVM и не могут использовать Android SDK Для того, чтобы переключаться между ними, нужно использовать меню Build Variants 22
ПРИМЕР UNITТЕСТА 23
ПРИМЕР ТЕСТА НА УСТРОЙСТВЕ ПРИМЕР ИНСТРУМЕНТАЛЬНОГО ТЕСТА 24
ЭТА ПРЕЗЕНТАЦИЯ https: //goo. gl/OL 9 XQI 25
Тестирование.pptx