66 Бит
Екатеринбург, Добролюбова 16
info@66bit.ru

Оставить заявку на сотрудничество

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

Тестирование программного обеспечения: его роль в разработке ПО для бизнеса

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

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

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

-2

Цели тестирования программного обеспечения

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

В первую же неделю после релиза, совершенно неожиданно, народ начать слать возмущённые отзывы, а дело вот в чём:

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

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

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

-3

Ручное и автоматизированное

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

  • Ручное тестирование ПО

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

  • Автоматическое тестирование ПО

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

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

Позитивные и негативные сценарии

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

Видов тестирования сценариев есть два:

  • Тестирование позитивных сценариев

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

  • Тестирование негативных сценариев

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

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

Статическое и динамическое

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

  • Статическое тестирование ПО

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

  • Динамическое тестирование ПО

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

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

Методы белого и чёрного ящика

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

  • Метод чёрного ящика

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

  • Метод белого ящика

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

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

Функциональное и нефункциональное

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

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

Функциональная отладка программного обеспечения проводится поэтапно:

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

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

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

На этом этапе тестирование софта показывает, как работоспособные модули системы взаимодействуют между собой.

  • Системное тестирование

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

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

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

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

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

Нефункциональное тестирование включает в себя несколько видов, однако не требует поэтапного выполнения:

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

-4

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

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

1. Анализ тестирования

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

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

2. Планирование и подготовка теста

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

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

3. Выполнение теста

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

4. Закрытие теста

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

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

Документация для тестирования

Какие вопросы относительно процесса отладки ПО могут возникнуть у заказчика и команды разработки? Что именно мы тестируем? С помощью какого метода? Когда и как долго оно будет проводиться? Каковы критерии хорошего и плохого результата тестов?

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

Тест план не имеет строгих стандартов, однако мы выделили наиболее важные и распространённые его пункты:

  • Вводная информация о продукте, его целях и назначении.
  • Объект отладки программного обеспечения— модуль или сценарий, который будет тестироваться на работоспособность.
  • Функции объекта, которые необходимо проверить
  • Функции объекта, которые проверять нет необходимости
  • Тестовые подходы — методы тестирования
  • Критерии результатов тестирования
  • Критерии приостановления и возобновления тестирования софта
  • Задачи тестирования
  • Ресурсы системы
  • Обязанности
  • Роли и ответственности
  • Временные рамки и расписание тестирования
  • Оценка рисков
  • Долгожданные результаты
  • Согласования

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

  • Предусловия

Описание текущего состояния системы и подготовки модулей и компонентов к будущим тестированиям софта.

  • Шаги

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

  • Ожидаемый результат

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

-5

Суперсилы классного тестировщика

"Я не считаю себя замечательным программистом. Я просто хороший программист с замечательными привычками" — Мартин Фаулер.

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

  • Усидчивость и терпение
  • Критическое мышление и креатив
  • Перфекционизм
  • Коммуникабельность

Тестировщик должен уметь разрушить систему так, чтобы из обломков собрать идеальный продукт. Если ваш ребёнок ломает и разбирает все свои игрушки, присмотритесь, может перед вами будущий тестировщик?

Разработка программного обеспечения от 66 Бит

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

Поделиться в соцсетях:

Миграция с Windows на Linux для бизнеса
Всё, везде и сразу: корпоративный портал для вашего бизнеса