
- •Факультет инженерно-экологических систем и сооружений Кафедра информационных систем и технологий
- •По первой преддипломной практике
- •Введение
- •Основные понятия и определения
- •Классификация методов тестирования
- •По знанию внутренней структуры системы
- •По объекту тестирования
- •По субъекту тестирования
- •По времени проведения тестирования
- •По критерию "позитивности" сценариев
- •По степени изолированности тестируемых компонентов
- •По степени автоматизированности
- •По степени подготовки к тестированию
- •Инструменты и вспомогательные средства для тестирования
- •Инструменты для ручного тестирования
- •Инструменты для автоматического функционального тестирования
- •Инструменты для нагрузочного и стресс-тестирования
- •Фреймворки для модульного тестирования
- •Заключение
- •Список источников информации
Классификация методов тестирования
Существует большое количество классификаций методов тестирования. Они сформированы в результате разнообразных подходов к тестированию и проверяемых аспектов ПО. Как и в общем случае, классификации видов тестирования делаются по определенному признаку и один и тот же метод может удовлетворять разным признакам, но разнообразие подходов к классификации позволяет лучше сформировать представления о методах и их применимости в тех или иных случае. Ниже подробно рассмотрены классификации, дающие наиболее разные срезы процесса тестирования.
По знанию внутренней структуры системы
тестирование черного ящика (black box testing);
тестирование белого ящика (white box testing);
тестирование серого ящика (grey box testing).
При тестировании «черного ящика» инженер не знает о том, как устроена тестируемая программа. Код программы, схема базы данных и т.п. остаются для него закрытыми. Для разработки тестов, помимо требований к программе, используются предполагаемые модели поведения пользователей.
При подходе "белый ящик" инженер основывает идеи для тестирования на знании об устройстве и логике тестируемой части бэк-энда. Таким образом, при тестировании «белого ящика», сценарии с целью протестировать определенную часть бэк-энда, а не определенный шаблон поведения пользователя.
«Серый ящик» сочетает в себе два предыдущих подхода. С одной стороны используются поведенческие сценарии пользователей и тесты пишутся на их основе, а с другой стороны инженер знает о том как устроена хотя бы часть тестируемой программы и помимо пользовательского интерфейса имеет дополнительные пути для проверки результатов.
По объекту тестирования
Функциональное тестирование (functional testing);
Тестирование интерфейса пользователя (UI testing);
Тестирование локализации (localization testing);
Тестирование скорости и надежности (load/stress/performance testing);
Тестирование безопасности (security testing);
Тестирование опыта пользователя (usability testing);
Тестирование совместимости (compatibility testing).
Функциональное тестирование предназначено для проверки средств программы с помощью которых решаются те или иные задачи для которых и создается прогрмма. Эти средства называются функциональностями (features). Функциональное тестирование является основным типом и подходом, без которого тестирование продукта является невозможным.
При тестировании интерфейса пользователя, проверяются все его элементы на соответствие спецификациям, требованиям и выполняемым ими функциям. Тестирование интерфейса часто путают с тестированием с помощью интерфейса пользователя где проверяется работа back-end’а с помощью вводимых параметров через UI или действий совершаемы через интерфейс пользователя.
Тестирование локализаций необходимо при условии, если программа будет использоваться в разных странах на разных языках, с разной записью времени и/или даты и тому подобного. Здесь суть тестирования будет заключаться в выявлении ошибок связанных именно с теми параметрами, на которые может повлиять локализация.
Нагрузочное тестирование (Load Testing) — определение или сбор показателей производительности и времени отклика программно-технической системы или устройства в ответ на внешний запрос с целью установления соответствия требованиям, предъявляемым к данной системе (устройству). Основная цель нагрузочного тестирования заключается в том, чтобы, создав определённую ожидаемую в системе нагрузку (например, посредством виртуальных пользователей) и, обычно, использовав идентичное программное и аппаратное обеспечение, наблюдать за показателями производительности системы.
Стресс-тестирование (Stress Testing) в отличие от нагрузочного тестирования, оценивает надёжность и устойчивость системы в условиях превышения пределов нормального функционирования. Стресс-тестирование особенно необходимо для «критически важного» ПО. Обычно стресс-тестирование лучше обнаруживает устойчивость, доступность и обработку исключений системой под большой нагрузкой, чем то, что считается корректным поведением в нормальных условиях.
Тестирование безопасности - это стратегия тестирования, используемая для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к защите приложения, атак хакеров, вирусов, несанкционированного доступа к конфиденциальным данным.
Usability testing, это тестирование удобства и понятности интерфейса, что является очень важным моментом. Даже самый мощное приложение созданное с использованием революционных алгоритмов и новейших технологий, будет проигрывать конкурентам если им будет неудобно пользоваться. Тестирование usability призвано выявить недостатки в расположении и назначении элементов интерфейса пользователся.
Тестирование совместимости (compatibility testing) — вид нефункционального тестирования, основной целью которого является проверка корректной работы продукта в определенном окружении. Окружение может включать в себя hardware (начинка компьютера, сетевые устройства, периферийные устройства т.п.) и software (ОС, БД, системные приложения и утилиты, браузреы и прочее). Данный тип тестирование является необходимым и очень эффектиным, так как зачастую багги обнаруживаются только в сочетании тестируемого приложения с конкретным окружением.