Виды, уровни и методы тестирования

Введение

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

Виды тестирования и какие они бывают

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

Уровни функционального тестирования:

Модульное тестирование (Unit Testing)
Представь, что программа, это большая книга, а каждый модуль в этой программе, это как отдельная глава. Модульное тестирование — это когда мы проверяем каждую главу книги, чтобы убедиться, что она написана правильно и рассказывает свою историю точно. Точно так же в программе каждый модуль отвечает за свою часть работы. Мы проводим модульное тестирование, чтобы увидеть, работает ли каждый модуль правильно. Мы «читаем» код модуля, проверяя, что он выполняет свои задачи без ошибок. Модули — это части нашего приложения, такие как: аватар, комментарий, сообщение, лайк и т. д. Приложение состоит из кучи модулей. Модули можно представить как пазлы.
Интеграционное тестирование (Integration Testing)
Здесь проверяется взаимодействие между разными модулями и компонентами как внутри нашего ПО, так и со сторонними системами. Например на нашем сайте есть интеграция Яндекс Карт и нам надо проверить, что это интеграция корректно работает в нашем приложении.
Системное тестирование (System Testing)
В системном тестировании мы тестируем не только отдельные части программы, но и то, как они работают вместе, как они обмениваются информацией и как реагируют на действия пользователя. Мы хотим убедиться, что весь продукт функционирует так, как задумано.
Это как тестировать не только каждый отдельный зубчик в механической модели, но и то, как они вращаются вместе и передают движение друг другу. Таким образом, системное тестирование помогает нам увидеть, работает ли весь программный продукт гармонично и без ошибок.
Приемочное тестирование (Acceptance Testing)
Последний этап перед выпуском программы. Заказчик или пользователи проводят тестирование для убеждения в том, что программа соответствует их потребностям и требованиям.
Каждый уровень функционального тестирования направлен на обеспечение качества разных аспектов программы. Это подобно проведению поэтапных проверок в автомастерской, начиная от тщательной проверки каждой детали, затем интеграции воедино и, наконец, тестирования автомобиля как единого функционирующего механизма.
2
Нефункциональное тестирование
Это тестирование не фокусируется только на том, как продукт делает свою основную работу, но и на том, как он работает в различных условиях и с разными параметрами.
В программировании нефункциональное тестирование включает в себя такие вещи, как скорость работы программы, ее стабильность, безопасность и даже внешний вид пользовательского интерфейса. Таким образом, это как проверка всех «других важных вещей», которые делают программу хорошей не только в плане функциональности, но и в плане качества.

Уровни нефункционального тестирования:

  • 1
    Тестирование на стресс
    Проверка поведения программы при критических нагрузках и других условия, а также её восстановительной способности после них.
  • 2
    Масштабируемость
    Оценка способности программы масштабироваться под растущую нагрузку и объемы задач.
  • 3
    Удобство использования
    Оценка удобства интерфейса пользователя, навигации, доступности функций и общей пользовательской дружелюбности
  • 4
    Совместимость
    Проверка работы программы на различных браузерах, операционных системах и платформах.
  • 5
    Инсталляционное тестирование
    Процесс проверки корректной и успешной установки программного продукта на целевой компьютер или устройство.
  • 6
    Безопасность
    Мы хотим убедиться, что программа защищена от злонамеренных атак и несанкционированного доступа. Мы проводим специальные тесты, чтобы обнаружить уязвимости в программе, которые могут быть использованы злоумышленниками.
  • 7
    Надежность
    Мы хотим убедиться, что программа будет работать стабильно и надежно в различных ситуациях. Мы проверяем, как программа ведет себя при разных условиях, например, при возникновении непредвиденных ситуаций.
  • 8
    Производительность
    Мы хотим понять, насколько хорошо программа справляется с большим количеством пользователей и задач. Мы проверяем, сколько времени она требует для выполнения разных действий, например, загрузки страницы или обработки данных.
  • 9
    Конфигурационное тестирование
    Когда создается программа, она может работать на разных устройствах или под разными настройками. Мы хотим убедиться, что программа работает правильно и стабильно в разных конфигурациях. Мы проверяем, как программа ведет себя при разных условиях использования.
    Нефункциональное тестирование важно для обеспечения высокого качества программного продукта и обеспечения удовлетворения требований пользователей в плане производительности, безопасности и удобства использования, подобно проверке каждого аспекта автомобиля для гарантии его надежности и комфорта.
3

Тестирование,

связанное с изменениями

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

Уровни тестирования, связанного с изменениями:

Регрессионное тестирование (Regression testing)
Когда разработчики добавляют новые функции или исправляют ошибки в программе, мы проверяем, что старые части программы все еще работают как надо. Тесты проводятся от модуля, где внесли изменение, и идет вширь, начиная с ближайших интеграций. Это уже более подробные тесты, в отличии от дымового тестирования и занимают обычно большое количество времени, из-за этого часто автоматизируются.
Дымовое тестирование
(Smoke Testing)
Когда разработчики создают новую версию программы или вносят изменения, мы сначала делаем быструю проверку. Мы запускаем программу, чтобы увидеть, работает ли она хотя бы в общих чертах и нет ли очевидных проблем. По сути, это быстрая черед тестов в ширь, по основной функциональности.
Санитарное тестирование
(Sanity testing)
Это такой уровень тестирования ПО, который выполняется после внесения изменений или исправлений в код с целью проверить, не нарушилась ли базовая функциональность внесенных изменений. При санитарном тестировании, ты тестируем только конкретный новый модуль, или модуль, где были внесены изменения в код. Тесты проводятся уже не вширь, как при других методах, а вглубь модуля.

Что такое методы тестирования и какие они бывают

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

Методы тестирования:

  • Черный ящик (black box)
    Представляет собой методологический подход, при котором тестировщик фокусируется на тестировании функциональности программного продукта без знания внутренних деталей его работы. Это означает, что тестировщик рассматривает программу как «черный ящик», не зная, как она реализована внутри. То есть тестирует ПО как обычный пользователь, используя только пользовательский интерфейс.
  • Белый ящик (white box)
    Представляет собой методологический подход, при котором мы знаем код, логику продукта. В отличие от черного ящика, где акцент делается на функциональности без знания внутренней реализации, белый ящик позволяет проводить тестирование с учетом внутренней логики и кода программы. Тестирование белого ящика обычно проводится на уровне отдельных функций, модулей или компонентов программы и используется разработчиками.
  • Серый ящик (gray box)
    Представляет собой методологический подход, который объединяет элементы и черного, и белого ящика. При сером ящике тестировщик имеет частичное знание о внутренней структуре и логике программного продукта, но не раскрывается полностью до деталей, как при белом ящике. Как и в черном ящике, тестирование сосредотачивается на функциональных аспектах программы и ее поведении внешне, без глубокого анализа внутренних механизмов. Примерами тестирования серого ящика являются: тестирование API через Postman или когда у нас есть доступ к базе данных или логам.
Заключение
Все эти аспекты тесно взаимосвязаны в процессе обеспечения качества программного обеспечения. Функциональное тестирование помогает убедиться, что продукт соответствует ожиданиям пользователей, а разнообразные уровни этого тестирования гарантируют полное покрытие функциональных аспектов. Нефункциональное тестирование, в свою очередь, уделяет внимание производительности, безопасности и другим важным характеристикам продукта. Тестирование связанное с изменениями позволяет обнаружить влияние изменений на существующий функционал.
Made on
Tilda