Цикломатическая сложность
Цикломатическая сложность участка кода - это количественная мера количества линейно независимых путей в нем. Это программный показатель, используемый для обозначения сложности программы. Он вычисляется с использованием графа потока управления программы. Узлы на графе указывают наименьшую группу команд программы, а направленное ребро в ней соединяет два узла, т.е. если вторая команда может сразу следовать за первой командой.
Например, если исходный код не содержит оператора потока управления, его цикломатическая сложность будет равна 1, а исходный код содержит в нем единственный путь. Точно так же, если исходный код содержит одно условие if, тогда цикломатическая сложность будет равна 2, потому что будет два пути: один для истинного, а другой для ложного.
Математически для структурированной программы ориентированный граф внутри потока управления - это ребро, соединяющее два основных блока программы, поскольку управление может переходить от первого ко второму.
Итак, цикломатическая сложность M будет определена как,
M = E – N + 2P
where,
E = the number of edges in the control flow graph
N = the number of nodes in the control flow graph
P = the number of connected components
Шаги, которые необходимо выполнить при вычислении цикломатической сложности и разработке тестовых случаев:
- Построение графа с вершинами и ребрами из кода.
- Выявление независимых путей.
- Расчет цикломатической сложности
- Дизайн тестовых случаев
Пусть фрагмент кода как таковой:
А = 10 ЕСЛИ B> C ТО А = В ЕЩЕ А = С ENDIF Распечатать A Печать B Печать C
График потока управления приведенного выше кода
Цикломатическая сложность, вычисленная для приведенного выше кода, будет из графа потока управления. График показывает семь форм (узлов), семь линий (ребер), следовательно, цикломатическая сложность 7-7 + 2 = 2.
Использование цикломатической сложности:
- Таким образом, определение независимого выполнения пути оказалось очень полезным для разработчиков и тестировщиков.
- Он может убедиться, что каждый путь был протестирован хотя бы один раз.
- Таким образом помогает больше сосредоточиться на непокрытых путях.
- Покрытие кода можно улучшить.
- Риск, связанный с программой, может быть оценен.
- Эти метрики, которые использовались ранее в программе, помогают снизить риски.
Преимущества цикломатической сложности:.
- Его можно использовать как показатель качества, отражающий относительную сложность различных конструкций.
- Он может вычислять быстрее, чем метрики Холстеда.
- Он используется для измерения минимальных усилий и наилучших областей концентрации для тестирования.
- Он может направлять процесс тестирования.
- Наносить легко.
Недостатки цикломатической сложности:
- Это мера сложности управления программами, а не данные - сложность данных.
- В этом случае вложенные условные структуры труднее понять, чем невложенные.
- В случае простых сравнений и схем принятия решений это может дать неверную цифру.
Ссылка: https://en.wikipedia.org/wiki/Cyclomatic_complexity
Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.