В статье обсудим
Если вы только начинаете свой путь в QA, важно разобраться, какие бывают виды тестирования и какие из них пригодятся вам в будущей работе. В этой статье разберемся в основных видах тестирования с примерами. Для лучшего понимания коротко посмотрим, как это выглядит на практике.
Функциональное и нефункциональное тестирование: виды
Тестирование программного продукта делится на два больших направления: функциональное и нефункциональное. Функциональное тестирование проверяет, работает ли программа в соответствии с требованиями, выполняет ли свои функции. Нефункциональное тестирование оценивает другие аспекты, более технические и не такие очевидные для юзеров (например, производительность и совместимость с другими программами).
Функциональное тестирование
Все виды функционального тестирования направлены на то, чтобы убедиться, что каждая функция работает так, как задумано, и приводит к нужным результатам.
Представьте, что вы работаете тестировщиком в компании, которая разрабатывает интернет-магазин. Ваша задача — протестировать функционал корзины покупок.
К корзине есть требования:
- туда можно добавить товары;
- также товары можно удалить;
- пользователь должен видеть корректное количество и стоимость товаров;
- внизу корзины отображается корректная сумма всех товаров;
- он может перейти к оформлению заказа напрямую из корзины.
Далее, следуя тест-плану, вы тестируете эти функции, скорее всего, вручную, то есть без использования автоматизации. В случае обнаружения ошибок, например, неправильного расчета стоимости, вы фиксируете дефект в системе отслеживания багов, в программе Jira.
Точно так же при функциональном тестировании можно проверить работу формы авторизации, уведомлений, ссылок в меню, функции поиска, воспроизведение аудио и видео. Глобальная цель этих мероприятий — найти и устранить ошибки до выпуска продукта на рынок, чтобы его пользователи были довольны.
Начните ваш путь в тестировании с обучения в QA Academy
Освойте «Основы тестирования ПО» и научитесь профессионально выполнять функциональное и нефункциональное тестирование.
Нефункциональное тестирование
Кроме того, что для выпускаемого ПО важны его функции, важны и его технические характеристики. Нефункциональное тестирование проверяет, насколько эффективно система работает в различных условиях. Для этого тестировщики проверяют его производительность и безопасность, а также насколько удобно им пользоваться и совместимо ли оно с другими программами, системами и оборудованием.
Представьте, что вы работаете тестировщиком в компании, которая разрабатывает банковское ПО. Ваша задача — провести нефункциональное тестирование системы, чтобы убедиться в ее надежности и безопасности.
- Система должна выдерживать 23 000 пользователей одновременно.
- Время отклика не должно превышать 2 секунд.
- Данные пользователей должны быть защищены от несанкционированного доступа.
Вы используете метод нагрузочного тестирования и инструменты автоматизации, чтобы имитировать заход 23 000 пользователей, и измеряете производительность системы. Также вы выполняете тесты на несанкционированное проникновение (пентесты).
По результатам теста вы пишете отчет, где указываете время отклика системы, количество успешных и неуспешных попыток проникновения.
Из других примеров нефункционального тестирования — проверка того, как работает графика при разных настройках в игре, как быстро загружается сайт, работает ли двухфакторная аутентификация и можно ли ее обойти.
Функциональные виды тестирования
Ниже рассмотрим подробнее, какие есть функциональные виды тестирования. Напомним, все они направлены на проверку того, что ПО нормально выполняет свои функции. Если вы хотите углубиться в то, как проводятся функциональные тесты, — читайте нашу отдельную статью о функциональном тестировании.
Модульное тестирование
Модульное тестирование (оно же Unit Testing, юнит-тестирование) проверяет отдельные компоненты или модули программы. Это помогает выявлять ошибки на ранней стадии разработки. Например, можно тестировать отдельные функции или методы в коде. Главное убедиться в том, что эта часть кода работает корректно, независимо от других частей программы.
Интеграционное тестирование
Его применяют, когда нужно проверить взаимодействие между модулями. Это помогает удостовериться, что все части системы работают вместе без сбоев. Например, тестируют взаимодействие между базой данных и интерфейсом, интеграции с внешними API.
Сквозное тестирование
Его еще называют End-to-End Testing. Этот вид тестирования программного обеспечения проверяет полную работу системы. Такие тесты помогают убедиться, что все компоненты системы взаимодействуют правильно. Что еще могут проверять при сквозном тестировании: например, весь процесс покупки в интернет-магазине, от добавления товара в корзину до оплаты и подтверждения заказа.
Приемочное тестирование
Оно нужно для проверки соответствия системы бизнес-требованиям. Его проводят на этапе сдачи продукта его заказчику, то есть во время приема готовых работ (отсюда и название). Желательно, чтобы это тестирование проводили конечные пользователи.
Нефункциональные виды тестирования
Чтобы провести нефункциональное тестирование, специалисты фокусируются на аспектах, не связанных напрямую с функциями системы. Тем не менее, эти аспекты тоже важны для пользователя: если с ними что-то не так, пользователь это заметит. Например, когда начнет тормозить приложение или зависнет игра. Давайте рассмотрим на других примерах.
А чтобы подробнее разобраться, как, зачем и когда проходят эти тесты — прочитайте наш гид по нефункциональному тестированию.
Тестирование производительности
Этот вид тестирования ПО помогает понять, как работает программа при разных условиях: насколько быстр отклик на действия пользователей, работает ли функция поиска при слишком сложном запросе, насколько быстро загружаются страницы.
Нагрузочное и стресс-тестирование
Эти два вида тестирования могут проводить вместе. При нагрузочном тестировании проверяют, как система справляется с обычной, запланированной разработчиками нагрузкой, а при стресс-тестировании проверяют ее поведение при экстремальных нагрузках. Например, так могут тестировать интернет-магазин, проверяя, как он выдержит повышенную нагрузку в дни распродаж.
Тестирование безопасности
Многие сайты, приложения и сервисы хранят данные: о клиентах, транзакциях, переписке, просмотрах, действиях. При тестировании безопасности QA-инженеры определяют, защищены ли эти данные от взлома, а также проверяют другие уязвимости ПО. Например, могут проверять, защищены ли данные от перехвата во время их передачи от клиента к серверу, или можно ли взломать аккаунты, используя известные сейчас методы взлома.
Тестирование удобства использования
Usability Testing оценивает, насколько ПО удобно и интуитивно понятно для пользователей. В этом виде тестирования есть доля творчества: например, нужно предположить, как может повести себя новый юзер приложения, поймет ли он, куда нажимать и как управлять функциями приложения или игры.
Тестирование совместимости
Здесь QA-специалисты проверяют, как система себя ведет на разных операционных системах, браузерах и устройствах. Например, корректно ли отображается и работает сайт в Яндекс Браузере, Chrome, Firefox и Safari.
Часто задаваемые вопросы о видах тестирования
- Какие виды пулов тестирования существуют?
Есть множество видов, или пулов тестирования, включая функциональное и нефункциональное тестирование. Внутри них есть подвиды, которые называются в зависимости от их задачи. Например, тестирование безопасности или нагрузочное тестирование.
- Сколько есть видов тестирования?
Их количество может варьироваться в зависимости от классификации. Самые расспространенные виды и типы тестирования включают функциональное и нефункциональное тестирование, а внутри этих категорий — более 20 различных подвидов (модульное, системное, нагрузочное, стресс-тестирование, тестирование безопасности, удобства использования, совместимости, производительности и так далее). Точной цифры нет, ведь разные компании могут использовать разные классификации и названия.
- Какие виды тестирования подходят для мобильного приложения?
Из всех видов и типов тестирования программ в mobile-разработке обычно используют тестирование производительности, совместимости, безопасности и удобства использования, а также функциональное. Специалисты проверяют работу ПО на разных устройствах и операционных системах, в основном Android и iOS.
- Какой из видов тестирования не требует навыков программирования?
Большинство видов функционального тестирования не предполагают, что QA-специалист умеет программировать. Основной акцент делается на внимательность к деталям и понимание функциональных требований ПО.
- Какой вид тестирования чаще всего автоматизируется?
Автоматизируется чаще всего регрессионное тестирование, то есть повторное выполнение ранее пройденных тестов. Это нужно, чтобы проверить, что изменения в коде не вызвали новых проблем. Чтобы тестировщику при каждом новом релизе не приходилось повторять одни и те же действия, он использует автоматизацию.
- Каким видом тестирования занимается QA-инженер?
Когда говорят, что человек работает QA-инженером, обычно подразумевается, что он так или иначе выполняет все виды тестирования программ, ведь это позволяет более эффективно проверять качество ПО. Также он владеет разными типами тестирования: автоматизированным — для объемных и повторяющихся задач, а ручным — для функциональных тестов, где важно впечатление живого человека.
Заключение
В этой статье мы рассмотрели виды функционального и нефункционального тестирования и немного углубились в то, как они выглядят на практике. Знание этих методологий поможет вам лучше понять процессы обеспечения качества и подготовиться к успешной карьере в QA.