Что такое Unit тестирование
Unit тестирование — это тестирование отдельного участка кода (т.е. юнита).
Почему важно прописывать Unit тестирование
Скорость разработки существенно не уменьшается, но возрастает качество самого продукта.
Как проводится Unit тестирование
Обычно проводится с помощью метода "белого ящика"
Что такое Unit-тестирование и почему это важно
Разработчики часто сталкиваются с одной и той же проблемой, которая легко может вывести из себя. Какая–то функция дает сбой и вот, один из модулей уже перестал работать. Найти в готовом коде и исправить ошибку не всегда просто. Но для этого и существует Unit–тестирование.
Что такое Unit-тестирование
Unit–тестирование еще часто называют модульным. Это тип тестирования программного обеспечения, при котором тестируются отдельные модули или компоненты программного обеспечения.
Цель этого тестирования состоит в том, чтобы убедиться, что каждая единица программного кода работает должным образом. Обычно оно проводится на этапе разработки кода приложения. Модульные тест–кейсы изолируют фрагмент кода и проверяют его правильность. Единицей может быть отдельная функция, метод, процедура, модуль или объект.
Хорошее модульное тестирование предполагает, что: — есть возможность полной автоматизации; — можно обратиться к любой работающей части.
Зачем нужно Unit-тестирование
Модульное тестирование – очень важный этап разработки любого приложения, т.к. если провести качественное модульное тестирование на ранней стадии разработки, в конечном итоге, это поможет вам сэкономить время и деньги.
Unit–тестирование по–прежнему вызывает споры среди разработчиков, но чаще всего есть находятся причины для проведения этого типа тестирования.
Во–первых, модульное тестирование помогает разработчикам лучше понять базовый код и в следствии быстро вносить изменения. К тому же сам код или его компоненты потом можно использовать повторно.
А во–вторых, вы вполне можете использовать модульные тесты как проектную документацию.
Unit–тестирование, несомненно, способствует улучшению ПО. Поначалу может показаться, что это утомительный процесс, но в конечном итоге его преимущества очевидны:
Позволяет обнаружить ошибки на раннем этапе разработки, что снижает вероятность появления комплексных ошибок в дальнейшем;
исправление проблемы на раннем этапе обычно дешевле;
доработка происходит проще;
разработчики могут быстро изменить базовый код;
модульное тестирование опирается на модульность и самого кода, а значит – есть возможность повторно использовать код и переносить его в новые продукты;
можно тестировать часть проекта, не дожидаясь завершения других модулей.
Однако существует и ряд недостатков:
Модульное тестирование сосредоточено на единице кода. А следовательно, не может обнаруживать ошибки интеграции или общие ошибки системного уровня.
иногда гораздо больше времени занимает сам тест, чем разработка кода. Возможно вам придется писать несколько строк тестового кода, чтобы проверить всего одну строку базового кода;
Таким образом, не факт, что модульное тестирование выявит все ошибки в программе, т.к. оно не затрагивает общую проверку. Поэтому лучше всего выполнять модульное тестирование параллельно с другими возможным видам тестирования.
Как проводить Unit-тестирование
Обычно Unit–тестирование проводится на основе тестирования методом «белого ящика» (White box) и чаще всего автоматизировано.
Чтобы выполнить модульное тестирование, разработчики пишут раздел кода для тестирования определенной единицы (модуля) в программном приложении. Они также могут изолировать этот модуль для более тщательного тестирования. Оно выявит ненужные связи между тестируемоей единицей и другими модулями и их можно будет устранить.
Тестирование белого ящика
Это метод тестирования ПО, при котором проверяется внутренняя структура, дизайн, удобство использования и безопасность.
При тестировании методом «белого ящика» тестировщики могут видеть код, поэтому этот метод называют еще методом «прозрачного ящика».
Этот метод основан на внутренней работе приложения и, соответственно, относится ко внутреннему тестированию.
Метод «белого ящика» проверяет:
Безопасность;
неработающие или плохо структурированные пути в коде;
функциональность отдельных модулей;
каждый отдельный этап, объект и функцию.
Одна из основных целей данного тестирования – проверить работу приложения на отдельных участках его кода.
Этот вид тестирования предполагает 3 этапа :
Подготовка и проверка отдельного модуля
Первое, что делает тестировщик – разбирается в исходном коде приложения. Из–за того, что это тестирование заключается в проверке внутренней работы приложения, тестировщик должен хорошо разбираться в языках программирования, используемых в приложениях. Кроме того, важно также знать методы безопасного кодинга, т.к. безопасность часто является одной из основных целей всего тестирования ПО.
1. Создание тест–кейса
Второй шаг – тестирование исходного кода приложения на правильность структуры и работы. На этом этапе создаются тест–кейсы для каждого процесса или ряда процессов в приложении.
2. Тестирование
Тестирование каждого модуля согласно заданным тест–кейсам и поддержка эффективной работы программы.
Рекомендации по Юнит-тестам
Рекомендации
Конечно, рекомендации – дело субъективное. Кто–то может с ними согласиться, а кто–то нет. Но есть моменты, которые смело можно назвать универсальными, потому что о них говорит большинство практикующих разработчиков. Вот некоторые из них:
Автоматизация
Тестирование принесет пользу только в том случае, если будет выполнено своевременно. Луший вариант – автоматизация. Т.е. интегрировать тестирование в код, чтобы оно запускалось автоматически.
Пишите тесты во время разработки
Тестирование поможет писать чистый код. Ничего страшного, если в вашем случае нельзя написать его до кода, но важно постараться сделать это как можно раньше и не откладывать в долгий ящик. Поверьте, это сэкономит вам огромное количество времени потом.
Не распыляйтесь
Не обязательно сразу рассматривать все возможные сценарии, которые теоретически могут произойти. Самое важное – проверить основные и по возможности добавлять потом новые.
Хорошее название для теста
Название должно описывать, что тестируется, при каких условиях происходит тестирование и какой результат ожидается.
Неудачное название сделает ваше тестирование менее удобным.
Каждый тест = 1 задача
В каждом тесте должна быть только одна установка, т.е. вы проверяете одно какое–то утверждение.
Здесь, конечно, есть свои исключения. Например, если вы хотите проверить настройки тестирования.
Тестирование нескольких функций одновременно, помешает вам точно понять, на каком этапе и почему произошла ошибка.
Модульное тестирование - основа качественного кода
Модульное тестирование – прочная основа эффективной стратегии автоматизированного тестирования, суть которой – проверить небольшие изолированные фрагменты ПО. Это непростая задача, которая требует определенной дисциплины. Кроме того, тестирование – это тоже код, к которому нужен не менее тщательный подход, чем к базовому, основному коду. Но все эти усилия стоят тех ресурсов, что вы в итоге сэкономите.