Скидки до 60% и 3 курса в подарок 2 дня 13 :45 :02 Выбрать курс
Код
#статьи

Что такое тестирование программ и зачем оно нужно

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

Иллюстрация: Merry Mary для Skillbox Media

Вероятно, ни одну вещь в мире нельзя сделать без ошибок, и программы не исключение. Допустим, вы написали код и не видите в нём явных багов. Как узнать, что будет при реальном использовании: поведёт ли себя программа так, как от неё ожидают?

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

Содержание


Что такое тестирование программного обеспечения и зачем оно нужно

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

Вот несколько примеров программных ошибок, или багов:

  • Вы вводите в поле ответ на вопрос и нажимаете Enter. После этого программа неожиданно завершает работу, не сохранив информацию. И та же ошибка повторяется в следующий раз.
  • Другой случай: вы играете, например, в какую-нибудь стрелялку. Неожиданно персонажи начинают хаотично двигаться, конвульсивно дёргаться, терять или отращивать конечности. И вообще ведут себя не так, как им положено. Некоторое время программа не реагирует на нажатие клавиш, после чего выдаёт «Game over».
  • Ещё один пример: вы заходите в личный кабинет интернет-магазина. Нажимаете «Оплатить», а вас выкидывает на главную страницу, да ещё и разлогинивает.

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

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

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

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

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

Виды тестирования выделяют по разным критериям:

  • По необходимости запуска — статическое и динамическое. При статическом проверяют требования, документацию и код без запуска программы. При динамическом запускают программу и проверяют её работу.
  • По цели — функциональное и нефункциональное. Функциональное проверяет, выполняет ли программа нужные задачи. Нефункциональное — насколько она быстрая, надёжная, защищённая и совместимая с окружением.
  • По знанию внутреннего устройства — чёрный, белый и серый ящик. Чёрный ящик — проверка поведения программы без опоры на код. Белый — проверки с учётом структуры и логики кода. Серый — проверки с частичным знанием устройства системы.
  • По способу выполнения — ручное и автоматизированное. При ручном тестировании проверки выполняет человек, при автоматизированном — программные средства.

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

Уровни тестирования: модульное, интеграционное, системное и приёмочное

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

  • Модульное тестирование делается в самом начале, когда готовы те куски кода, которые можно проверить по отдельности: объекты, классы, функции, программные модули. Тесты пишутся отдельно для каждой функции или метода. На этом этапе проверяют работоспособность части кода, нет ли регрессии — не появились ли после изменения кода ошибки там, где раньше всё работало нормально. Это самый нижний уровень тестирования, часто это делают те, кто пишет код.
  • К интеграционному тестированию переходят после модульной проверки. Здесь тестируют связи между проверенными элементами и то, как программа взаимодействует с операционной системой, оборудованием.
  • Системное тестирование показывает, соответствует ли готовая система функциональным и нефункциональным требованиям.
  • Приёмочное тестирование проходит, когда заказчик принимает приложение от разработчиков. Его цель — убедиться, что продукт удовлетворяет требованиям клиента. На основании приёмочного тестирования покупатель решает, готова ли программа, или её нужно дорабатывать.

Цели тестирования также зависят от этапа работы с продуктом:

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

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

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

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

Шаг 1. Планирование тестирования

Команда QA определяет объём и способы проверки, необходимые ресурсы и критерии завершения работы. Сроки и приоритеты она согласует с командой проекта. Эти договорённости фиксируют в тест-плане и обновляют его по мере развития продукта.

Шаг 2. Разработка тестов

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

Шаг 3. Подготовка среды и инструментов

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

Шаг 4. Тестирование

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

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

Шаг 5. Фиксирование ошибок и проверка исправлений

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

Шаг 6. Подведение итогов

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

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

Кто занимается тестированием

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

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

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

При этом тестирование — задача не только QA-команды. Разработчики пишут модульные и интеграционные тесты, аналитики помогают уточнять требования, а представители заказчика могут участвовать в приёмочном тестировании, чтобы убедиться, что продукт решает поставленные бизнес-задачи.

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

Коротко о главном

  • Тестирование помогает находить ошибки в коде, оценивать качество программы и снижать риск сбоев.
  • Проверить все сценарии невозможно, поэтому в первую очередь тестируют функции, связанные с наиболее существенными рисками для пользователей и бизнеса.
  • Уровни тестирования определяют масштаб проверки, а виды — её цель, способ выполнения и подход к проверке.
  • Исправление одного бага может нарушить работу других функций, поэтому после изменений QA-команда проверяет и само исправление, и то, что раньше работало.
  • В процессе работы тестировщики взаимодействуют с другими командами: составляют баг-репорты для разработчиков, уточняют требования у аналитиков и общаются с представителями заказчика.


Хотите стать тестировщиком?
На курсе Skillbox вы будете практиковаться на кейсах VK и добавите 9+ проектов в портфолио.
Узнать о курсе
Курс «Профессия Инженер по тестированию + ИИ»
Вы освоите профессию с нуля и изучите 3 языка для автотестов
на выбор: Java, JavaScript или Python.
Подробнее
Курс с трудоустройством: «Профессия Инженер по тестированию + ИИ» Узнать о курсе
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована