Переходим к следующим видам тестирования. Мы уже в прошлых 2 статьях изучили основные блоки, рекомендую ознакомиться!
✅Классификация по целям тестирования
Тестирование программного обеспечения играет ключевую роль в процессе разработки, обеспечивая качество и надёжность конечного продукта. Существует несколько подходов к классификации видов тестирования, одним из которых является классификация по целям тестирования.
🟢Функциональное тестирование направлено на проверку соответствия программного обеспечения заявленным функциональным требованиям. Этот вид тестирования позволяет убедиться, что каждая функция приложения работает корректно и соответствует ожиданиям пользователей.
Пример функционального тестирования:
Проверка форм на сайте:
- Валидация данных: Убедитесь, что при вводе некорректных данных (например, символов в поле для ввода номера телефона) форма отображает соответствующие сообщения об ошибке.
- Обязательные поля: Проверьте, что обязательные поля помечены соответствующим образом и выдают сообщение об ошибке, если они оставлены пустыми.
- Правильность сообщений об ошибках: Убедитесь, что сообщения об ошибках отображаются корректно и содержат полезную информацию для пользователя.
🟢Нефункциональное тестирование, в свою очередь, фокусируется на проверке характеристик программного обеспечения, не связанных напрямую с его функциями. К таким характеристикам относятся производительность, безопасность, удобство использования, масштабируемость и другие.
Нефункциональное тестирование включает в себя множество других видов:
📗Тестирование производительности (performance testing)
Вид тестирования, направленный на определение работоспособности, стабильности и других характеристик качества приложения в различных условиях использования и нагрузок.
Система должна обрабатывать определённый объём данных за установленное время. Если входные данные превышают запланированный объём, система должна сохранять работоспособность или восстанавливаться после сбоя без потери данных. Это проверяется с помощью тестирования производительности.
Например, система должна обрабатывать 1000 запросов пользователей в секунду без потери производительности, то есть время обработки должно составлять 0,01 секунды. Чтобы проверить это требование, тестировщик формирует 1000 запросов и направляет их на сервер.
Тестирование производительности также позволяет выявить узкие места в системе, которые проявляются при повышенной нагрузке или нехватке системных ресурсов.
Тестирование производительности в свою очередь подразделяется на свои подгруппы:
- Нагрузочное тестирование (Performance Testing)
- Тестирование масштабируемости (scalability testing)
- Объёмное тестирование
- Стрессовое тестирование
- Нагрузочное тестирование (Performance Testing): Цель - измерить производительность системы при различных уровнях нагрузки, чтобы определить её способность справляться с ожидаемым количеством пользователей или транзакций. Примеры включают тестирование веб-сайтов электронной коммерции во время пиковых нагрузок или банковских систем при обработке большого количества транзакций.
включает в себя постепенное увеличение нагрузки на систему до тех пор, пока не будут достигнуты запланированные характеристики, а затем продолжается с мониторингом поведения системы при дальнейшем увеличении нагрузки. В процессе тестирования могут выполняться следующие действия:
- Измерение времени выполнения выбранных операций при определенной интенсивности их выполнения. Это позволяет оценить, насколько быстро система обрабатывает запросы при различных уровнях нагрузки.
- Определение количества пользователей, которые могут одновременно работать с приложением без существенного снижения производительности. Это важный показатель, который демонстрирует способность системы поддерживать большое количество одновременных подключений.
- Определение границ приемлемой производительности при увеличении нагрузки. Это включает в себя мониторинг ключевых показателей эффективности (KPI), таких как время отклика, пропускная способность и использование ресурсов, чтобы убедиться, что система остается в рамках установленных ограничений при высоких нагрузках.
- Тестирование масштабируемости (scalability testing) это процесс оценки способности программного обеспечения адаптироваться к увеличению нагрузки. Оно включает в себя проверку возможностей вертикального и горизонтального масштабирования.
Вертикальное масштабирование подразумевает повышение производительности каждого компонента системы для улучшения общей производительности. Это достигается путём добавления ресурсов, таких как оперативная память или процессоры, на существующий сервер
Горизонтальное масштабирование предполагает разделение системы на более мелкие компоненты и их распределение по разным физическим машинам или увеличение количества серверов, выполняющих одну и ту же функцию
Способность к масштабированию становится критически важной из-за быстрого роста числа пользователей и повышения их ожиданий от программного обеспечения. Если разработчики не предусмотрят механизмы масштабирования при создании продукта, они могут потерять значительную часть прибыли, когда популярность продукта резко возрастёт. - Объёмное тестирование — это вид тестирования, при котором проверяется способность системы обрабатывать большие объёмы данных. Цель такого тестирования — оценить производительность системы при увеличении объёма данных в базе приложения.
В ходе объёмного тестирования могут проводиться различные тесты, например:
- загрузка в базу данных нескольких файлов очень большого объёма;
- добавление большого количества записей в базу данных;
- удаление большого количества записей из базы данных.
Такое тестирование помогает выявить проблемы с производительностью системы при работе с большими объёмами данных и определить оптимальные настройки для её работы.
- Стрессовое тестирование — это вид тестирования производительности, при котором система подвергается экстремальным нагрузкам для определения её пределов и устойчивости.
В процессе стрессового тестирования система проверяется на граничных и запредельных значениях рабочих нагрузок, а также в условиях ограниченных ресурсов, таких как память или доступ к серверу.
Например, если стандартная нагрузка на сервер приложения составляет 1000 запросов в секунду, то при стрессовом тестировании эту нагрузку увеличивают до 10 000 запросов в секунду. Это позволяет выявить потенциальные проблемы с производительностью и стабильностью системы при экстремальных условиях эксплуатации.
Важно, чтобы после стрессового тестирования система могла корректно восстановиться. Это означает, что при перезапуске все данные и настройки должны быть сохранены без повреждений.
📗Инсталляционное тестирование
Это проверка успешности установки, настройки, обновления и удаления программного обеспечения в различных программных и аппаратных окружениях. Оно также оценивает работоспособность системы после завершения работы программы установки.
В процессе инсталляционного тестирования проверяются следующие аспекты:
- успешность установки приложения при различных конфигурациях оборудования и программного обеспечения;
- корректность настроек приложения после установки;
- возможность обновления приложения до более новых версий и удаления старых;
- восстановление системы после установки, обновления или удаления приложения.
📗Тестирование интерфейса (GUI/UI testing)
Это проверка соответствия пользовательского интерфейса требованиям. Оно включает в себя оценку размещения элементов управления (кнопок, панелей меню) на экране, содержания и оформления выводимых сообщений, форматов ввода, реакции системы на действия пользователя и времени отклика на команды.
Цель тестирования интерфейса — убедиться, что пользовательский интерфейс удобен, интуитивно понятен и соответствует ожиданиям пользователей.
📗Тестирование удобства использования (usability testing)
Это метод оценки удобства и простоты использования продукта или системы конечными пользователями. Оно включает в себя проверку того, насколько легко пользователи могут понять и освоить продукт, а также насколько эффективно они могут выполнять задачи с его помощью.
Usability testing может включать в себя следующие аспекты:
- оценка удобства навигации по продукту;
- проверка понятности и доступности инструкций пользователя;
- оценка эффективности выполнения пользователями типичных задач с помощью продукта;
- сбор обратной связи от пользователей о том, что им нравится и не нравится в продукте.
Usability testing обычно проводится параллельно с функциональным тестированием, чтобы обеспечить всестороннюю оценку продукта. Отдельные тесты на проверку удобства использования проектируются редко, так как они тесно связаны с функциональными тестами и могут быть включены в них.
📗Тестирование локализации
Это проверка адаптации программного обеспечения для нового места эксплуатации, которая включает проверку изменения языка и культурную адаптацию.
В процессе тестирования локализации проверяется корректность перевода приложения на новый язык с точки зрения орфографии, грамматики и культурных особенностей. Также оценивается, насколько адекватно переведены названия кнопок, всплывающие подсказки и надписи над полями.
Тестирование локализации особенно важно для приложений, которые планируется внедрять в разных странах.
📗Тестирование безопасности (security testing)
Это процесс оценки степени защищённости программного продукта от несанкционированного доступа, неправомерного использования или повреждения.
Основные аспекты, которые проверяются в рамках тестирования безопасности:
- Конфиденциальность — обеспечение защиты чувствительной информации от несанкционированного доступа.
- Целостность — гарантия сохранности и точности данных даже при попытках их изменения неавторизованными пользователями.
- Сохранность данных — защита данных от потери или повреждения в результате сбоев системы или атак.
- Аутентификация — процесс подтверждения личности пользователя перед предоставлением ему доступа к системе или ресурсам.
- Авторизация — определение прав и привилегий пользователя после успешной аутентификации.
- Невозможность отказа от авторства — обеспечение возможности доказать авторство сообщения или действия.
Тестирование безопасности требует высокой квалификации тестировщика и часто предполагает узкую специализацию именно в области тестирования безопасности.
📗Тестирование надёжности (reliability testing)
Это проверка способности приложения выполнять свои функции в заданных условиях на протяжении заданного времени.
В ходе тестирования надёжности наблюдают за потреблением ресурсов в течение определённого времени, чтобы выявить утечки памяти и убедиться, что скорость обработки данных или время отклика приложения не уменьшается.
Если скорость обработки данных или время отклика приложения уменьшаются, возможны сбои в работе продукта и перезагрузки системы.
Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!