Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ковалев(тестировщик).docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆
  1. Теоретическое введение

    1. Что такое тестирование?

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

По знанию системы:

Тестирование чёрного ящика или поведенческое тестирование — стратегия (метод) тестирования функционального поведения объекта (программы, системы) с точки зрения внешнего мира, при котором не используется знание о внутреннем устройстве тестируемого объекта. Под стратегией понимаются систематические методы отбора и создания тестов для тестового набора. 

«Белый ящик» — тестирование кода на предмет логики работы программы и корректности её работы с точки зрения компилятора того языка, на котором она писалась.

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

В исследованиях по методу "серого ящика" объединены методы "белого ящика" и способы тестирования с помощью входных данных по методу "черного ящика". 

По объекту тестирования:

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

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

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

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

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

Конфигурационное тестирование — ещё один из видов традиционного тестирования производительности. В этом случае тестируется эффект влияния на производительность изменений в конфигурации. 

Юзабилити-тестирование - исследование, выполняемое с целью определения, удобен ли некоторый искусственный объект (такой как веб-страница, пользовательский интерфейс или устройство) для его предполагаемого применения.

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

Тестирование безопасности - оценка уязвимости программного обеспечения к различным атакам.

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

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

По степени изолированности компонентов:

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

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

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

По степени автоматизации:

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

Автоматизированное тестирование — часть процесса тестирования на этапе контроля качества в процессе разработки программного обеспечения. Оно использует программные средства для выполнения тестов и проверки результатов выполнения, что помогает сократить время тестирования и упростить его процесс.

Полуавтоматизированное тестирование - ручной подход сочетается с автоматизированным. 

По времени проведения тестирования:

Альфа-тестирование — имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями/заказчиком. Подразделяется на дымовое тестирование, тестирование новой функциональности, подтверждающее, регрессивное тестирование и приёмочное.

“Дымовое” тестирование – это быстрое, неглубокое тестирование , на наиболее простых или типичных сценариях, с минимумом проверок (чтобы только дыма не было). Оно может выполняться как на “позитивных”, так и на “негативных” данных.

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

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

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

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

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

По признаку позитивности сценариев:

“Позитивное” тестирование  – это тестирование на данных или сценариях, которые соответствуют нормальному (штатному, ожидаемому) поведению системы. Основной целью “позитивного” тестирования является проверка того, что при помощи системы можно делать то, для чего она создавалась. “Негативное” тестирование  – это тестирование на данных или сценариях, которые соответствуют нештатному поведению тестируемой системы – различные сообщения об ошибках, исключительные ситуации, “запредельные” состояния и т.п.. Основной целью “негативного” тестирования является проверка устойчивости системы к воздействиям различного рода, валидация неверного набора данных, проверка обработки исключительных ситуаций.

По степени подготовленности к тестированию:

Тестирование по документации производится посредством изучения документов по проекту и поиска различных ошибок.

Тестирование ad hoc или интуитивное тестирование применяется при простом просмотре кода программы, изучении структуры и интуитивного поиска ошибок.

Для тестирования работы программы был взят метод «белого ящика».

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

Стратегия Белого ящика включает в себя следующие методы тестирования:

  • покрытие операторов (подразумевает выполнение каждого оператора программы, по крайней мере, один раз);

  • покрытие решений (необходимо составить такое число тестов, при которых каждое условие в программе примет как истинное значение, так и ложное значение);

  • покрытие условий (если после составления тестов у нас останутся не покрытые операторы, то мы должны дополнить свой набор тестов таким образом, чтобы каждый оператор выполняется не менее одного раза);

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

  • комбинаторное покрытие условий (все возможные комбинации результатов условий в каждом решении, а также каждый оператор выполнились, по крайней мере, один раз).

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

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

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