Учебники

Тестирование программного обеспечения – Уровни

В процессе тестирования существуют разные уровни. В этой главе дается краткое описание этих уровней.

Уровни тестирования включают различные методологии, которые можно использовать при проведении тестирования программного обеспечения. Основные уровни тестирования программного обеспечения –

  • Функциональное тестирование

  • Нефункциональное тестирование

Функциональное тестирование

Нефункциональное тестирование

Функциональное тестирование

Это тип «черного ящика», основанный на спецификациях программного обеспечения, которое должно быть протестировано. Приложение проверяется путем предоставления входных данных, а затем проверяются результаты, которые должны соответствовать функциональности, для которой оно было предназначено. Функциональное тестирование программного обеспечения проводится в полной интегрированной системе для оценки соответствия системы ее установленным требованиям.

При тестировании приложения на функциональность необходимо выполнить пять шагов.

меры Описание
я Определение функциональности, для которой предназначенное приложение предназначено.
II Создание тестовых данных на основе спецификаций приложения.
III Вывод основан на данных испытаний и спецификациях приложения.
IV Написание тестовых сценариев и выполнение тестовых случаев.
В Сравнение фактических и ожидаемых результатов на основе выполненных тестовых случаев.

Эффективная практика тестирования приведет к тому, что вышеуказанные шаги будут применены к политикам тестирования каждой организации, и, следовательно, обеспечит соблюдение строжайших стандартов в отношении качества программного обеспечения.

Модульное тестирование

Этот тип тестирования выполняется разработчиками до того, как установка будет передана группе тестирования для формального выполнения тестовых случаев. Модульное тестирование выполняется соответствующими разработчиками на отдельных единицах исходного кода назначенных областей. Разработчики используют тестовые данные, которые отличаются от тестовых данных группы обеспечения качества.

Цель модульного тестирования состоит в том, чтобы изолировать каждую часть программы и показать, что отдельные части являются правильными с точки зрения требований и функциональности.

Ограничения юнит-тестирования

Тестирование не может поймать каждую ошибку в приложении. Невозможно оценить каждый путь выполнения в каждом программном приложении. То же самое в случае модульного тестирования.

Существует ограничение на количество сценариев и тестовых данных, которые разработчик может использовать для проверки исходного кода. После исчерпания всех опций, нет другого выбора, кроме как прекратить модульное тестирование и объединить сегмент кода с другими модулями.

Интеграционное тестирование

Интеграционное тестирование определяется как тестирование объединенных частей приложения для определения их правильного функционирования. Интеграционное тестирование может выполняться двумя способами: интеграционное тестирование снизу вверх и интеграционное тестирование сверху вниз.

Sr.No. Метод тестирования интеграции
1

Восходящая интеграция

Это тестирование начинается с модульного тестирования, за которым следуют тесты прогрессивно более высокого уровня комбинаций модулей, называемых модулями или сборками.

2

Интеграция сверху вниз

В этом тестировании модули высшего уровня тестируются в первую очередь, а затем постепенно тестируются модули более низкого уровня.

Восходящая интеграция

Это тестирование начинается с модульного тестирования, за которым следуют тесты прогрессивно более высокого уровня комбинаций модулей, называемых модулями или сборками.

Интеграция сверху вниз

В этом тестировании модули высшего уровня тестируются в первую очередь, а затем постепенно тестируются модули более низкого уровня.

В комплексной среде разработки программного обеспечения обычно сначала выполняется восходящее тестирование, а затем – нисходящее. Процесс завершается несколькими тестами всего приложения, предпочтительно в сценариях, разработанных для имитации реальных ситуаций.

Тестирование системы

Системное тестирование тестирует систему в целом. Как только все компоненты интегрированы, приложение в целом подвергается строгой проверке на соответствие указанным стандартам качества. Этот тип тестирования выполняется специализированной командой тестирования.

Системное тестирование важно по следующим причинам:

  • Системное тестирование – это первый шаг в жизненном цикле разработки программного обеспечения, когда приложение тестируется в целом.

  • Приложение тщательно протестировано, чтобы убедиться, что оно соответствует функциональным и техническим характеристикам.

  • Приложение тестируется в среде, очень близкой к производственной среде, в которой оно будет развернуто.

  • Системное тестирование позволяет нам тестировать, проверять и проверять как бизнес-требования, так и архитектуру приложения.

Системное тестирование – это первый шаг в жизненном цикле разработки программного обеспечения, когда приложение тестируется в целом.

Приложение тщательно протестировано, чтобы убедиться, что оно соответствует функциональным и техническим характеристикам.

Приложение тестируется в среде, очень близкой к производственной среде, в которой оно будет развернуто.

Системное тестирование позволяет нам тестировать, проверять и проверять как бизнес-требования, так и архитектуру приложения.

Регрессионное тестирование

Всякий раз, когда вносятся изменения в программное приложение, вполне возможно, что это изменение затронуло другие области приложения. Регрессионное тестирование проводится для проверки того, что исправленная ошибка не привела к нарушению других функций или бизнес-правил. Целью регрессионного тестирования является обеспечение того, чтобы изменение, такое как исправление ошибки, не привело к обнаружению другой ошибки в приложении.

Регрессионное тестирование важно по следующим причинам:

  • Минимизируйте пробелы в тестировании, когда необходимо протестировать приложение с внесенными изменениями.

  • Тестирование новых изменений, чтобы убедиться, что сделанные изменения не повлияли ни на одну другую область приложения.

  • Смягчает риски, когда регрессионное тестирование выполняется в приложении.

  • Тестовое покрытие увеличивается без ущерба для сроков.

  • Увеличьте скорость для продвижения продукта.

Минимизируйте пробелы в тестировании, когда необходимо протестировать приложение с внесенными изменениями.

Тестирование новых изменений, чтобы убедиться, что сделанные изменения не повлияли ни на одну другую область приложения.

Смягчает риски, когда регрессионное тестирование выполняется в приложении.

Тестовое покрытие увеличивается без ущерба для сроков.

Увеличьте скорость для продвижения продукта.

Приемочное тестирование

Это, пожалуй, самый важный тип тестирования, так как он проводится группой обеспечения качества, которая будет оценивать, соответствует ли приложение предполагаемым спецификациям и удовлетворяет ли требование клиента. Команда QA будет иметь набор предварительно написанных сценариев и тестовых случаев, которые будут использоваться для тестирования приложения.

Будет поделено больше идей о приложении и может быть проведено больше тестов, чтобы оценить его точность и причины, по которым проект был инициирован. Приемочные тесты предназначены не только для выявления простых орфографических ошибок, косметических ошибок или пробелов в интерфейсе, но и для выявления любых ошибок в приложении, которые приведут к сбоям системы или серьезным ошибкам в приложении.

Выполняя приемочные тесты для приложения, команда тестирования снизит производительность приложения. Существуют также юридические и договорные требования для принятия системы.

Альфа-тестирование

Этот тест является первым этапом тестирования и будет проводиться среди команд (разработчиков и команд QA). Модульное тестирование, интеграционное тестирование и тестирование системы в сочетании друг с другом называется альфа-тестированием. На этом этапе в приложении будут проверены следующие аспекты:

  • Орфографические ошибки

  • Неработающие ссылки

  • Облачно

  • Приложение будет протестировано на машинах с самой низкой спецификацией для тестирования времени загрузки и любых проблем с задержкой.

Орфографические ошибки

Неработающие ссылки

Облачно

Приложение будет протестировано на машинах с самой низкой спецификацией для тестирования времени загрузки и любых проблем с задержкой.

Бета-тестирование

Этот тест выполняется после того, как альфа-тестирование было успешно выполнено. В бета-тестировании образец целевой аудитории тестирует приложение. Бета-тестирование также известно как предварительное тестирование . Бета-тестовые версии программного обеспечения идеально распространяются среди широкой аудитории в Интернете, частично для того, чтобы дать программе «реальный» тест, а частично для предварительного просмотра следующего выпуска. На этом этапе аудитория будет тестировать следующее:

  • Пользователи установят, запустят приложение и отправят свои отзывы команде проекта.

  • Типографские ошибки, запутывание потока приложений и даже сбои.

  • Получив обратную связь, команда проекта может решить проблемы перед выпуском программного обеспечения для реальных пользователей.

  • Чем больше проблем, которые вы решите, решают реальные проблемы пользователей, тем выше будет качество вашего приложения.

  • Наличие более качественного приложения при его публикации широкой публике повысит удовлетворенность клиентов.

Пользователи установят, запустят приложение и отправят свои отзывы команде проекта.

Типографские ошибки, запутывание потока приложений и даже сбои.

Получив обратную связь, команда проекта может решить проблемы перед выпуском программного обеспечения для реальных пользователей.

Чем больше проблем, которые вы решите, решают реальные проблемы пользователей, тем выше будет качество вашего приложения.

Наличие более качественного приложения при его публикации широкой публике повысит удовлетворенность клиентов.

Нефункциональное тестирование

Этот раздел основан на тестировании приложения по его нефункциональным атрибутам. Нефункциональное тестирование включает тестирование программного обеспечения на основе требований, которые являются нефункциональными по своей природе, но важны, такие как производительность, безопасность, пользовательский интерфейс и т. Д.

Некоторые из важных и часто используемых нефункциональных типов тестирования обсуждаются ниже.

Тестирование производительности

Он в основном используется для выявления узких мест или проблем с производительностью, а не для выявления ошибок в программном обеспечении. Существуют различные причины, которые способствуют снижению производительности программного обеспечения –

  • Сетевая задержка

  • Обработка на стороне клиента

  • Обработка транзакций базы данных

  • Балансировка нагрузки между серверами

  • Рендеринг данных

Сетевая задержка

Обработка на стороне клиента

Обработка транзакций базы данных

Балансировка нагрузки между серверами

Рендеринг данных

Тестирование производительности считается одним из важных и обязательных типов тестирования с точки зрения следующих аспектов:

  • Скорость (т.е. время отклика, рендеринг и доступ к данным)

  • Вместимость

  • стабильность

  • Масштабируемость

Скорость (т.е. время отклика, рендеринг и доступ к данным)

Вместимость

стабильность

Масштабируемость

Тестирование производительности может быть качественным или количественным и может быть разделено на различные подтипы, такие как нагрузочное тестирование и стресс-тестирование .

Нагрузочное тестирование

Это процесс тестирования поведения программного обеспечения путем применения максимальной нагрузки с точки зрения доступа к программному обеспечению и манипулирования большими входными данными. Это можно сделать как в нормальных условиях, так и в условиях пиковой нагрузки. Этот тип тестирования определяет максимальную емкость программного обеспечения и его поведение в пиковое время.

В большинстве случаев нагрузочное тестирование выполняется с помощью автоматизированных инструментов, таких как Load Runner, AppLoader, IBM Rational Performance Tester, Apache JMeter, Silk Performer, Visual Studio Load Test и т. Д.

Виртуальные пользователи (VUsers) определяются в инструменте автоматического тестирования, и сценарий выполняется для проверки нагрузочного тестирования программного обеспечения. Количество пользователей может быть увеличено или уменьшено одновременно или постепенно в зависимости от требований.

Стресс-тестирование

Стресс-тестирование включает тестирование поведения программного обеспечения в ненормальных условиях. Например, это может включать удаление некоторых ресурсов или применение нагрузки, превышающей фактический предел нагрузки.

Целью стресс-тестирования является тестирование программного обеспечения путем приложения нагрузки к системе и использования ресурсов, используемых программным обеспечением для определения критической точки. Это тестирование может быть выполнено путем тестирования различных сценариев, таких как –

  • Завершение или перезапуск сетевых портов случайным образом

  • Включение или выключение базы данных

  • Запуск различных процессов, которые потребляют ресурсы, такие как процессор, память, сервер и т. Д.

Завершение или перезапуск сетевых портов случайным образом

Включение или выключение базы данных

Запуск различных процессов, которые потребляют ресурсы, такие как процессор, память, сервер и т. Д.

Юзабилити-тестирование

Юзабилити-тестирование – это метод «черного ящика», который используется для выявления любых ошибок и улучшений в программном обеспечении путем наблюдения за пользователями через их использование и работу.

Согласно Нильсену, юзабилити можно определить с точки зрения пяти факторов: эффективности использования, способности к обучению, способности к памяти, ошибок / безопасности и удовлетворенности. По его словам, удобство использования продукта будет хорошим, а система пригодна для использования, если она обладает вышеуказанными факторами.

Найджел Беван и Маклеод считают, что удобство использования является требованием к качеству, которое можно измерить как результат взаимодействия с компьютерной системой. Это требование может быть выполнено, и конечный пользователь будет удовлетворен, если намеченные цели будут эффективно достигнуты с использованием надлежащих ресурсов.

Молич в 2000 году заявил, что удобная для пользователя система должна выполнять следующие пять целей: легко изучать, легко запомнить, эффективно использовать, удовлетворительно и легко понять.

В дополнение к различным определениям юзабилити существуют некоторые стандарты и модели и методы качества, которые определяют юзабилити в форме атрибутов и податрибутов, таких как ISO-9126, ISO-9241-11, ISO-13407 и IEEE std. 610,12 и т. Д.

Пользовательский интерфейс против юзабилити-тестирования

Тестирование пользовательского интерфейса включает тестирование графического интерфейса пользователя программного обеспечения. Тестирование пользовательского интерфейса гарантирует, что графический интерфейс работает в соответствии с требованиями и протестирован с точки зрения цвета, выравнивания, размера и других свойств.

С другой стороны, юзабилити-тестирование обеспечивает хороший и удобный графический интерфейс, который легко обрабатывается. Тестирование пользовательского интерфейса может рассматриваться как часть тестирования юзабилити.

Тестирование безопасности

Тестирование безопасности включает в себя тестирование программного обеспечения с целью выявления любых недостатков и пробелов с точки зрения безопасности и уязвимости. Ниже перечислены основные аспекты, которые должно обеспечить тестирование безопасности:

  • конфиденциальность

  • целостность

  • Аутентификация

  • Доступность

  • авторизация

  • Неотрекаемость

  • Программное обеспечение защищено от известных и неизвестных уязвимостей

  • Данные программного обеспечения в безопасности

  • Программное обеспечение соответствует всем правилам безопасности

  • Проверка и проверка ввода

  • Атаки SQL-вставки

  • Недостатки впрыска

  • Вопросы управления сессиями

  • Межсайтовые скриптовые атаки

  • Уязвимости переполнения буфера

  • Атаки с обходом каталогов

конфиденциальность

целостность

Аутентификация

Доступность

авторизация

Неотрекаемость

Программное обеспечение защищено от известных и неизвестных уязвимостей

Данные программного обеспечения в безопасности

Программное обеспечение соответствует всем правилам безопасности

Проверка и проверка ввода

Атаки SQL-вставки

Недостатки впрыска

Вопросы управления сессиями

Межсайтовые скриптовые атаки

Уязвимости переполнения буфера

Атаки с обходом каталогов

Тестирование переносимости

Тестирование переносимости включает в себя тестирование программного обеспечения с целью обеспечения его повторного использования и возможности его переноса из другого программного обеспечения. Ниже приведены стратегии, которые можно использовать для тестирования переносимости.

  • Перенос установленного программного обеспечения с одного компьютера на другой.

  • Сборка исполняемого файла (.exe) для запуска программного обеспечения на разных платформах.

Перенос установленного программного обеспечения с одного компьютера на другой.

Сборка исполняемого файла (.exe) для запуска программного обеспечения на разных платформах.

Тестирование переносимости можно рассматривать как одну из составных частей тестирования системы, поскольку этот тип тестирования включает общее тестирование программного обеспечения с точки зрения его использования в различных средах. Компьютерное оборудование, операционные системы и браузеры находятся в центре внимания тестирования переносимости. Некоторые предварительные условия для тестирования переносимости следующие:

Программное обеспечение должно быть разработано и закодировано с учетом требований переносимости.

Модульное тестирование было выполнено на связанных компонентах.

Интеграционное тестирование выполнено.

Тестовая среда была создана.