08 Июл 2022
10 мин
13826

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

Классификации: по запуску кода на исполнение, по доступу к коду и архитектуре и другие.

Содержание

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

Этапы тестирования

1️⃣ Анализ требований. Тестирование начинают на этапе разработки требований к ПО. Во время проектирования тестировщики определяют, какие аспекты архитектуры можно тестировать и с какими параметрами эти тесты работают.

2️⃣ Планирование тестирования. На этом этапе разрабатывают стратегию, план, тестовый стенд. Это нужно, чтобы упростить работу.

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

3️⃣ Разработка тестов. Сюда относят создание и описание процедуры тестирования, сценариев, наборов тестовых данных.

4️⃣ Выполнение. Тестировщики выполняют программное обеспечение на основе планов и тестовых документов. Собирают список ошибок и передают команде разработчиков.

5️⃣ Отчеты о тестировании. Создают метрики и составляют окончательные отчеты, готово ли ПО к выпуску.

6️⃣ Анализ результатов тестирования. Или анализ дефектов, который выполняет команда разработчиков вместе с клиентом. Решают, какие дефекты исправить, а какие — отклонить. Например, потому что поведение ПО на самом деле корректное, то есть ожидаемое.

7️⃣ Повторное тестирование дефекта. Когда команда разработчиков устраняет дефект, тестировщики проводят повторную проверку.

8️⃣ Регрессионное тестирование. Обычно для каждой интеграции нового, модифицированного или исправленного ПО создают небольшую тестовую программу. Она состоит из подмножества тестов. Это нужно, чтобы убедиться, что последняя версия ничего не испортила, — программа всё еще работает правильно.

9️⃣ Завершение теста. К этому этапу переходят, когда решают, что проверка пройдена и поведение ПО соответствует критериям. Архивируют сведения об основных выходных данных, результаты, журналы и документы. Их используют в качестве справочных материалов для будущих проектов.

Этапы тестирования в разных компаниях могут отличаться. Они зависят от методологии разработки ПО. Список выше подходит для методологии «модель водопада». А в компаниях, которые применяют экстремальное программирование или «гибкую методологию», этапы могут быть другими, так как тестирование интегрировано в написание кода. Такой принцип называют «разработкой через тестирование».

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

Джефф Каролло
«Как тестируют в Google»

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

🔎 По запуску кода на исполнение

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

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

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

🔎 По доступу к коду и архитектуре

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

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

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

Освоить эти и другие методы можно на курсе Skypro «Инженер по тестированию». За 12 месяцев даем всё необходимое для уверенного старта в профессии: навыки ручного и автоматического тестирования, автоматизации, работы с системами баг-трекинга и программирования. Преподаватели — действующие тестировщики, которые дают актуальные знания и навыки, а не сухую теорию. А кураторы и наставники поддерживают и помогают разобраться со сложными темами.

🔎 По уровню тестирования

Модульное

Проверку проводят на уровне частей, которые проверяют функциональность частей кода приложения. Для объектно-ориентированного программирования это обычно уровень класса. Минимальные тесты модулей тестируют конструкторы и деструкторы. Модульные тесты пишут разработчики, когда работают с кодом по методу «белого ящика», чтобы проверить работу функции.

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

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

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

Компоненты тестируют по очереди или все вместе. Первый вариант самый удобный: можно быстрее обнаружить и исправить проблемы с интерфейсом.

Уровень интеграционного тестирования можно разделить на:

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

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

Системное

Это тестирование программной системы, чтобы оценить ее по всем требованиям.

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

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

На уровне системного тестирования иногда используют:

Monkey-тест

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

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

Дымовое тестирование, или smoke-тестирование

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

Дымовое тестирование помогает обнаружить серьезные дефекты на ранних этапах разработки и таким образом сэкономить ресурсы.

Приемочное 

На этом уровне тестирование проводится с точки зрения заказчика или пользователя.

Пользовательское приемочное тестирование (UAT). Его выполняет клиент, часто на собственном оборудовании. Может быть частью процесса передачи между любыми двумя фазами разработки.

Эксплуатационные приемочные испытания (OAT). Их используют, чтобы проверить предварительный выпуск продукта, услуги или системы. OAT — это распространенный тип нефункционального тестирования ПО. Его в основном применяют в проектах разработки и обслуживания программного обеспечения.

Контрактные и нормативные приемочные испытания. Первые выполняют на основе критериев приемки контракта. Вторые — на основе нормативных документов, применяемых к программному продукту. Оба этих тестирования проводят пользователи или тестировщики.

🔎 По методу выполнения тестовых сценариев

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

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

На курсе Skypro «Инженер по тестированию» освоите и ручное, и автоматическое тестирование. Если учиться по 10–12 часов в неделю — через 9 месяцев станете уверенным новичком в профессии и сможете найти новую работу. А центр карьеры поможет составить классное резюме и подготовиться к техническому собеседованию.

Принципы программного тестирования

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

Выявление дефектов

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

Исчерпывающее тестирование невозможно

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

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

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

Раннее тестирование экономит время и деньги

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

В этом случае тестировщик работает параллельно с разработчиком. К примеру, пока разработчик пишет код первой версии, тестировщик разрабатывает тест-кейсы.

Тест-кейс — это документ, где специалист прописывает последовательность действий, условия и параметры для проведения тестирования.

Кластеризация, или скопление дефектов

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

«Парадокс пестицидов»

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

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

Тестирование зависит от контекста

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

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

Заблуждения об отсутствии ошибок

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

Главное о видах тестирования ПО

  • Тестирование — важная часть процесса разработки программного обеспечения. Основа контроля качества и работоспособности продукта.
  • Это сложный поэтапный процесс. Перед выполнением теста анализируют требования, разрабатывают стратегию тестирования, создают и описывают процедуры.
  • Есть несколько видов тестирования программного обеспечения. Например, статическое — без запуска программы, динамическое — с запуском, пассивное — на основе системных журналов. Без доступа или с доступом к коду — методы «черного и белого ящиков». С программными средствами или без них — ручное и автоматизированное.
  • Чтобы получить хороший результат, специалисты учитывают в своей работе семь основных принципов тестирования: цель тестирования — не отсутствие ошибок, а их проверка и обнаружение; исчерпывающее тестирование невозможно; ранее тестирование экономит время и деньги; принцип скопления дефектов; «парадокс пестицидов»‎; тестирование зависит от контекста и заблуждение об отсутствии ошибок.

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

Преподаватели — руководители направления тестирования в ВТБ, Skyeng. Дадут актуальные знания и помогут собрать портфолио. В конце получите диплом государственного образца.

Добавить комментарий