Что такое циклическое тестирование? Методология, пример
⚡ Умное резюме
Тестирование циклов проверяет корректность работы циклов внутри программы, анализируя, что происходит, когда цикл пропускается, в него вводится один раз, он завершается и его выполнение превышает максимально допустимое количество проходов.
Что такое циклическое тестирование?
Тестирование цикла Это тип тестирования программного обеспечения, который полностью сосредоточен на проверке корректности циклов в программе. Он является частью тестирования управляющих структур, наряду с другими видами тестирования. тестирование путитестирование достоверности данных и тестирование условий эксплуатации.
Циклическое тестирование — это тестирование белого ящика Этот метод применяется тем, кто может прочитать исходный код и увидеть условие цикла, счетчик и путь выхода. Тестировщик не пытается угадать поведение, исходя из пользовательского интерфейса; сам цикл является объектом тестирования.
На приведенной ниже диаграмме показано место тестирования контуров в семействе тестов управляющих структур.
Типы протестированных петель
Прежде чем выбрать стратегию, определите, какой из четырех классов циклов вы рассматриваете. Примеры тестируемых типов циклов:
- Простой цикл — один петлевой участок с одним входом и одним выходом, например, обычный для, в то время как or делать пока построить.
- Вложенный цикл — один цикл вложен в другой, так что внутренний цикл завершается при каждом проходе внешнего цикла.
- Составной цикл — два или более циклов, выполняющихся один за другим последовательно.
- Неструктурированный цикл — Незапланированное сочетание вложенных и соединенных между собой циклов, обычно являющееся результатом входа в тело цикла или выхода из него.
Объем работы определяется классом. Для простого цикла требуется всего несколько итераций; для неструктурированного цикла обычно требуется перепроектирование кода, прежде чем его вообще можно будет протестировать.
Зачем проводить циклическое тестирование?
Тестирование цикла проводится по следующим причинам.
- Тестирование может исправить проблемы с повторением цикла.
- Тестирование циклов может выявить узкие места в производительности и пропускной способности.
- Путем проверки циклов можно определить неинициализированные переменные внутри цикла.
- Это помогает выявить проблемы инициализации циклов.
Есть и коммерческая причина. Цикл, выполняющий на одну итерацию больше, чем нужно, искажает итоговые данные; цикл, который никогда не завершается, приводит к зависанию процесса. Оба дефекта легко обнаружить, пока код находится на компьютере разработчика, но дорого — в производственной среде.
Как проводить циклическое тестирование: полная методология
При тестировании цикла необходимо проверить его на трех разных уровнях:
- Когда цикл вводится
- В ходе его исполнения и
- Когда петля осталась
Стратегия тестирования для всех этих циклов следующая.
Простой цикл
Простой цикл имеет один вход и один выход, как показано ниже.
Простой цикл тестируется следующим образом:
- Пропустить весь цикл
- Выполните 1 проход по циклу
- Сделайте 2 проход через петлю
- MAKE a проходит через петлю, где a < b, то есть типичное среднее количество итераций.
- MAKE b, b-1 и b+1 проходит через петлю, где b — это максимально допустимое количество проходов через замкнутый контур.
Последние два случая представляют наибольшую ценность. Пропуститьping Цикл доказывает, что условие выхода оценивается до выполнения тела цикла, и bДополнительный пример доказывает, что цикл отказывается выполнять действия за пределами заявленного лимита, а не переполняет массив.
Вложенный цикл
Вложенный цикл увеличивает количество возможных комбинаций итераций, поэтому проверка выполняется изнутри наружу, а не сразу.
Для создания вложенного цикла необходимо выполнить следующие шаги.
- Установите для всех остальных циклов минимальное значение и начните с самого внутреннего цикла.
- Для самого внутреннего цикла выполните простой тест цикла и сохраните для внешних циклов минимальное значение параметра итерации.
- Выполните проверку для следующего цикла и двигайтесь наружу.
- Продолжайте до тех пор, пока не будет проверен самый внешний цикл.
Составные циклы
Как показано на диаграмме, последовательные циклы располагаются один за другим в одном и том же пути выполнения.
В последовательно соединенных циклах, если два цикла независимы друг от друга, то они проверяются с использованием подхода простых циклов, в противном случае они проверяются как вложенные циклы.
Однако, если счетчик одного цикла используется в качестве начального значения для другого, то эти два цикла не считаются независимыми.
Неструктурированные петли
Неструктурированные циклы представляют собой наиболее сложный случай, поскольку управление включается и выключается из тела цикла в произвольных точках.
Для неструктурированных циклов необходимо перестроить структуру, чтобы она отражала использование конструкций структурированного программирования. После того как код будет сведен к простым, вложенным или конкатенированным формам, применяется описанная выше стратегия сопоставления.
Пример тестирования цикла с использованием тестовых примеров.
Наглядный пример наглядно демонстрирует количество итераций. Рассмотрим процедуру, которая умножает текущий результат на каждое целое число от 1 до 1. nФакториал. Счетчик цикла начинается с 1, условие выхода — противодействие > nЦикл объявлен таким образом, что он принимает максимум 12 проходов, прежде чем результат выйдет за пределы объявленного целочисленного типа.
Рассматривая это как простой цикл, рекомендуемое выше количество итераций преобразуется в следующее. контрольные примеры.
| Прецедент | Значение n | Выполненные пасы | Что это доказывает |
| TC01 | 0 | 0 (цикл пропущен) | Условие выхода оценивается до выполнения тела функции, и результат остается равным своему первоначальному значению 1. |
| TC02 | 1 | 1 | Один проход дает правильный результат, и счетчик увеличивается на одно деление. |
| TC03 | 2 | 2 | Аккумулятор переносит значение вперед между двумя последовательными проходами. |
| TC04 | 5 | 5 | Типичный средний показатель дает ожидаемые 120, что подтверждает обычное поведение системы. |
| TC05 | 11 | 11 | Даже один проход ниже максимального значения завершается нормально.b-1). |
| TC06 | 12 | 12 | Заявленное максимальное значение принимается, и цикл завершается.b). |
| TC07 | 13 | отклонены | Проход, превышающий максимально допустимый уровень, отклоняется, а не происходит незаметное переполнение.b+ 1). |
Обратите внимание, что TC01 и TC07 — это два случая, которые разработчики чаще всего упускают из виду, и именно они выявляют дефекты, связанные с пропущенной инициализацией и переполнением. Отрицательное значение n относится к тому же набору, если спецификация позволяет его предоставить, что связывает тестирование циклов с отрицательный тест.
Типичные дефекты, выявляемые при тестировании циклов.
Тестирование циклов постоянно выявляет одно и то же небольшое семейство ошибок, поэтому фиксированное количество итераций оправдывает каждый запуск.
- Границы с отклонением на один — состояние, записанное как < в котором <= Так и было задумано, поэтому цикл выполняет либо на один проход меньше, либо на один проход больше.
- Неинициализированные счетчики или аккумуляторы — итоговая сумма, содержащая остаток от предыдущего звонка.
- Бесконечные циклы — условие выхода, которое тело цикла никогда не сможет выполнить, поскольку счетчик обновляется только в некоторых ветвях.
- Предположения о пропущенных циклах — код после цикла, который считывает переменную, которую, как ожидалось, должно было установить тело цикла; это приводит к ошибке, если цикл выполняется ноль раз.
- Сбои в производительности и мощности — цикл, который корректен, но при каждом проходе повторно считывает базу данных, поэтому стоимость возрастает с увеличением количества итераций.
- Вложенные петли помех — внутренний цикл, который повторно использует счетчик внешнего цикла и незаметно изменяет количество итераций внешнего цикла.
Поскольку каждая ошибка соответствует определенному количеству итераций, обнаруженные здесь дефекты легко воспроизвести и быстро исправить по сравнению с дефектами, выявленными на более высоких уровнях. тестовые уровни.
Сравнение методов тестирования контуров управления и других методов тестирования управляющих структур.
Тестирование контуров управления — это один из методов, относящихся к семейству методов управления, и его легко спутать с соседними методами. В таблице ниже приведено их разграничение.
| Техника | На что это нацелено | Типичная цель охвата |
| Циклическое тестирование | Конструкция цикла: вход, количество итераций и выход. | Для каждого цикла учитывается нулевое, одно, типичное и граничное количество итераций. |
| Проверка состояния | Логические выражения внутри решений | Каждое условие оценивалось как истинное, так и ложное. |
| Тестирование потока данных | Определение и использование каждой переменной | Каждая пара «определение-использование» была задействована как минимум один раз. |
| Базовое тестирование пути | Независимые пути через граф потока управления | Число путей, равное цикломатической сложности. |
На практике эти методы скорее дополняют друг друга, чем конкурируют. Цикломатическая сложность показывает, сколько независимых путей существует, базовое тестирование путей их охватывает, а тестирование циклов затем добавляет количество итераций, которое само по себе покрытие путей не обеспечило бы. Все они являются динамическое тестирование действия, поскольку для получения результатов необходимо выполнить код.
Ограничение в циклическом тестировании
У этой методики есть реальные ограничения, и знание этих ограничений предотвращает чрезмерные инвестиции.
- Ошибки цикла появляются в основном в низкоуровневом программном обеспечении.
- Ошибки, выявленные во время циклического тестирования, не очень заметны.
- Многие из этих ошибок могут быть обнаружены операционной системой, поскольку они приводят к нарушениям границ памяти, обнаруживаемым ошибкам указателей и аналогичным сбоям.
- Определение класса каждого цикла и соответствующая его проверка требуют времени, что трудно оправдать на участках кода, несущих минимальный риск.





