Файл: Практическая работа 2 Методы тестирования в ходе выполнения практической работы необходимо разработать алгоритм решения задачи.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 82
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
-
вызывает выполнение всех результатов каждого решения, по крайней мере, один раз; -
передает управление каждой точке входа (например, точке входа, case-единице) по крайней мере один раз (чтобы обеспечить выполнение каждого оператора программы по крайней мере один раз).
Для программ, содержащих решения, каждое из которых имеет более одного условия, минимальный критерий состоит из набора тестов, вызывающих выполнение всех возможных комбинаций результатов условий в каждом решении и передающих управление каждой точке входа программы, по крайней мере, один раз.
Тестирование методом белого ящика (индивидуальные задания)
-
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму элементов массива, расположенных после минимального элемента. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму элементов массива, расположенных между минимальным и максимальным элементами. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить среднеарифметическое значение элементов массива. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить среднеквадратическое значение элементов массива. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить среднегеометрическое значение ненулевых элементов массива. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить среднегармоническое значение положительных элементов массива. -
В одномерном динамическом массиве, состоящем из nэлементов, поменять местами максимальный и минимальный элементы. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму элементов массива, расположенных до последнего положительного элемента. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму элементов массива, расположенных между первым и последним нулевыми элементами. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму модулей элементов массива, расположенных после первого элемента, равного нулю. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму положительных элементов массива, расположенных до максимального элемента. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму элементов массива, расположенных до минимального элемента. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму элементов массива, расположенных между первым и последним положительными элементами. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить среднее значение элементов, расположенных в массиве между первым последним нулевыми элементами. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами. -
В одномерном динамическом массиве, состоящем из n элементов, определить номер минимального и максимального элементов массива. -
В одномерном динамическом массиве, состоящем из n элементов, определить сумму модулей элементов массива, расположенных после первого отрицательного элемента. -
В одномерном динамическом массиве, состоящем из n элементов, определить количество элементов массива, больших С. -
В одномерном динамическом массиве, состоящем из n элементов, определить количество элементов массива, меньших С. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму отрицательных элементов массива. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму положительных элементов массива. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить произведение элементов массива с четными номерами. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму элементов массива, расположенных после минимального элемента. -
В одномерном динамическом массиве, состоящем из n элементов, вычислить сумму элементов массива, расположенных до максимального элемента.
СТРАТЕГИЯ «ЧЕРНОГО ЯЩИКА»
Одним из способов проверки программ является стратегия тестирования, называемая стратегией "черного ящика" или тестированием с управлением по данным. В этом случае программа рассматривается как "черный ящик" и такое тестирование имеет целью выяснения обстоятельств, в которых поведение программы не соответствует спецификации.
Для обнаружения всех ошибок в программе необходимо выполнить исчерпывающее тестирование, т.е. тестирование на всех возможных наборах данных. Для тех же программ, где исполнение команды зависит от предшествующих ей событий, необходимо проверить и все возможные последовательности.
Очевидно, что построение исчерпывающего входного теста для большинства случаев невозможно. Поэтому, обычно выполняется "разумное" тестирование, при котором тестирование программы ограничивается прогонами на небольшом подмножестве всех возможных входных данных. Естественно при этом целесообразно выбрать наиболее подходящее подмножество (подмножество с наивысшей вероятностью обнаружения ошибок).
Правильно выбранный тест подмножества должен обладать следующими свойствами:
1) уменьшать, причем более чем на единицу число других тестов, которые должны быть разработаны для достижения заранее определенной цели «приемлемого» тестирования:
2) покрывать значительную часть других возможных тестов, что в некоторой степени свидетельствует о наличии или отсутствии ошибок до и после применения этого ограниченного множества значений входных данных.
Стратегия "черного ящика" включает в себя следующие методы формирования тестовых наборов:
-
эквивалентное разбиение; -
анализ граничных значений; -
анализ причинно-следственных связей; -
предположение об ошибке.
Эквивалентное разбиение
Основу метода составляют два положения:
1.Исходные данные программы необходимо разбить на конечное число классов эквивалентности, так чтобы можно было предположить, что каждый тест, являющийся представителем некоторого класса, эквивалентен любому другому тесту этого класса. Иными словами, если тест какого-либо класса обнаруживает ошибку, то предполагается, что все другие тесты этого класса эквивалентности тоже обнаружат эту ошибку и наоборот.
2.Каждый тест должен включать по возможности максимальное количество различных входных условий, что позволяет минимизировать общее число необходимых тестов. Первое положение используется для разработки набора "интересных" условий, которые должны быть протестированы, а второе - для разработки минимального набора тестов.
Разработка тестов методом эквивалентного разбиения осуществляется в два этапа:
– выделение классов эквивалентности;
– построение тестов.
Выделение классов эквивалентности
Классы эквивалентности выделяются путем выбора каждого входного условия (обычно это предложение или фраза из спецификации) и разбиением его на две или более групп. Для этого используется таблица следующего вида:
Входное условие | Правильные классы эквивалентности | Неправильные классы эквивалентности |
Задаются входные условия | включают правильные данные | Включают неправильные данные |
Выделение классов эквивалентности является эвристическим процессом, однако при этом существует ряд правил:
-
Если входные условия описывают область значений; -
Если входное условие описывает число значений, то определяется один правильный класс эквивалентности и два неправильных; -
Если входное условие описывает множество входных значений и есть основания полагать, что каждое значение программист трактует особо, то определяется правильный класс эквивалентности для каждого значения и один неправильный класс; -
Если входное условие описывает ситуацию «должно быть, то определяется один правильный класс эквивалентности и один неправильный; -
Если есть любое основание считать, что различные элементы класса эквивалентности трактуются программой неодинаково, то данный класс разбивается на меньшие классы эквивалентности.
Анализ граничных значений
Граничные условия - это ситуации, возникающие на, выше или ниже границ входных классов эквивалентности. Анализ граничных значений отличается от эквивалентного разбиения следующим:
-
Выбор любого элемента в классе эквивалентности в качестве представительного при анализе граничных условий осуществляется таким образом, чтобы проверить тестом каждую границу этого класса. -
При разработке тестов рассматриваются не только входные условия (пространство входов), но и пространство результатов.
Применение метода анализа граничных условий требует определенной степени творчества и специализации в рассматриваемой проблеме. Тем не менее, существует несколько общих правил этого метода:
-
Правило 1 - построить тесты для границ области и тесты с неправильными входными данными для ситуаций незначительного выхода за границы области, если входное условие описывает область значений (например, для области входных значений от -1.0 до +1.0 необходимо написать тесты для ситуаций -1.0, +1.0, -1.001 и +1.001). -
Правило 2 - построить тесты для минимального и максимального значений условий и тесты, большие и меньшие этих двух значений, если входное условие удовлетворяет дискретному ряду значений. Например, если входной файл может содержать от 1 до 255 записей, то проверить 0,1,255 и 256 записей. -
Использовать правило 1 для каждого выходного условия. Причем, важно проверить границы пространства результатов, поскольку не всегда границы входных областей представляют такой же набор условий, как и границы выходных областей. Не всегда также можно получить результат вне выходной области, но, тем не менее, стоит рассмотреть эту возможность. -
Использовать правило 2 для каждого выходного условия. -
Если вход или выход программы есть упорядоченное множество (например, последовательный файл, линейный список, таблица), то сосредоточить внимание на первом и последнем элементах этого множества. -
Попробовать свои силы в поиске других граничных условий.
Анализ граничных условий, если он применен правильно, является одним из наиболее полезных методов проектирования тестов. Однако следует помнить, что граничные условия могут быть едва уловимы и определение их связано с большими трудностями, что является недостатком
этого метода. Второй недостаток связан с тем, что метод анализа граничных условий не позволяет проверять различные сочетания исходных данных.
Анализ причинно-следственных связей
Метод анализа причинно-следственных связей помогает системно выбирать высокорезультативные тесты. Он дает полезный побочный эффект, позволяя обнаруживать неполноту и неоднозначность исходных спецификаций.
Для использования метода необходимо понимание булевской логики (логических операторов - и, или, не). Построение тестов осуществляется в несколько этапов.
1. Спецификация разбивается на «рабочие» участки, так как таблицы причинно-следственных связей становятся громоздкими при применении метода к большим спецификациям. Например, при тестировании компилятора в качестве рабочего участка можно рассматривать отдельный оператор языка.
2. В спецификации определяются множество причин и множество следствий. Причина есть отдельное входное условие или класс эквивалентности входных условий. Следствие есть выходное условие или преобразование системы. Каждым причине и следствию приписывается отдельный номер.
3. На основе анализа семантического (смыслового) содержания спецификации строится таблица истинности, в которой последовательно перебираются все возможные комбинации причин и определяются следствия каждой комбинации причин. Таблица снабжается примечаниями, задающими ограничения и описывающими комбинации причин и/или следствий, которые являются невозможными из-за синтаксических или внешних ограничений. Аналогично, при необходимости строится таблица истинности для класса эквивалентности.
Примечание. При этом можно использовать следующие приемы:
По возможности выделять независимые группы причинно-следственных связей в отдельные таблицы.
Истина обозначается "1". Ложь обозначается "0". Для обозначения безразличных состояний условий применять обозначение "Х", которое предполагает произвольное значение условия (0 или 1).
4. Каждая строка таблицы истинности преобразуется в тест. При этом по возможности следует совмещать тесты из независимых таблиц.
Недостаток метода заключается в том, что он неадекватно исследует граничные условия.
Предположение об ошибке
Часто программист с большим опытом выискивает ошибки "без всяких методов". При этом он подсознательно использует метод "предположение об ошибке". Процедура метода предположения об ошибке в значительной степени основана на интуиции. Основная идея метода состоит в том, чтобы перечислить в некотором списке возможные ошибки или ситуации, в которых они могут появиться, а затем на основе этого списка составить тесты. Другими словами, требуется перечислить те специальные случаи, которые могут быть не учтены при проектировании.
ПРИМЕР ПРИМЕНЕНИЯ МЕТОДОВ ТЕСТИРОВАНИЯ «ЧЕРНЫЙ ЯЩИК»
Пусть необходимо выполнить тестирование программы, определяющей точку пересечения двух прямых на плоскости. Попутно, она должна определять параллельность прямой одной их осей координат.
В основе программы лежит решение системы линейных уравнений:
Ax + By = C и Dx + Ey = F.
1.1 Метод эквивалентных разбиений
Используя метод эквивалентных разбиений, получаем для всех коэффициентов один правильный класс эквивалентности (коэффициент - вещественное число) и один неправильный (коэффициент - не вещественное число). Откуда можно предложить 7 тестов:
1) все коэффициенты - вещественные числа;
2) - 7) поочередно каждый из коэффициентов - не вещественное число.