Пока нет оценок.
Пожалуйста, подождите...

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

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

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

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

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

Использование дискретных математических методов в тестировании

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

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

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

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

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

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

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

диаграмма Венна

диаграмма Венна

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

Теория множеств и ее роль в тестировании

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

Итак, теория множеств позволяет создать так называемый псевдокод:

  • M1={month:month has 30 days}
  • M2={month:month has 31 days except December}
  • M3={month:month is February}
  • M4={month:month is December} D1={day:1<=day<=28}
  • D2={day:1<=day<=29}
  • D3={day:1<=day<=30} D4={day:1<=day<=31}
  • Y1={year:year is a leap year}
  • Y2={year:year is not a leap year}

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

Теория графов

Большая часть дискретной математики основана на так называемых «теориях графов», изучающих графы. Эти графы применяются для качественного представления связей между данными или объектами. Наиболее распространенный пример графа – компьютерная сеть.

Графы играют основополагающую роль для процесса разработки программного обеспечения. К примеру, с их помощью можно разложить некоторые функции (сложные задачи) на мелкие составляющие части, что позволит эффективно понимать требующие бизнес-процессы.

Вернемся непосредственно к процессу тестирования ПО и представим, что у нас есть некий поток процесса (к примеру, перемещение задачи внутри системы отслеживания задач). Мы располагаем условием некоторой задачи и можем перенести ее на другой этап (ориентированный граф), или можем достичь определенной точки, где нет возможности редактировать сущность (неориентированный граф).

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

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

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

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

Сети Петри

Предлагаем ознакомиться с примером того, как ПО работает на основе микросервисной технологии снабженной сетью Петри.

Сети Петри

Сети Петри

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

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

Нейронные сети

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

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

Миллениум тестирование

Последний пример применения дискретной математики в QA рассмотрим на основе построения тестирования ПО. Сейчас есть очень много методологий проверок и подходов с названием «millennium testing», которые были разработаны и внедрены в обиход еще в начале 2000-ых годов.

BDD (от англ. Behavior Driven Development) – часть так называемого миллениум тестирования, которая позволяет тестировщикам выстраивать более тесную связь между приемкой функций и проверками, используемыми для тестирования определенной функциональности.

QA начинает BDD автоматизацию

QA начинает BDD автоматизацию

Базовая структура рабочего функционирования BDD выстроена на базе динамического графа (Сети Петри).

Итоги

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

  1. Эффективная помощь в понимании бизнес-логики разрабатываемого функционала;
  2. Возможность дробления сложных задач на мелкие компоненты;
  3. Выполнение эффективного тестирования с меньшей затратой выделенного времени;
  4. Наглядная визуализация внутреннего строения архитектуры ПО.

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

Оставить комментарий