Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 49
Текст из файла (страница 49)
198 Глава 7 ° Тестирование доменов ! ~!!!!::.":::."-:~~!!!-."::.!!,"!!!!!'::!::.!!!~т~т» ! Рис. 7.4. Ошибки в одномерном пространстве (закрытый домен) Сравним эту стратегию с эвристической стратегией тестирования доменов для одномерного случая. Эвристическая стратегия предусматривает тестирование точки НЛ, точки ВНЕ, а также точек вблизи границы, но но другую сторону от нее (<противоположность» точке ВНЕ) — то есть три теста для проверки одной границы, в то время как стратегия 1 х 1 требует лишь два теста. Неплохо.
Мы уменьшили число тестов на треть и ничего при атом не потеряли; выигрыш в пространстве с большей размерностью будет гораздо более сушественный. Привтеним данную стратегию для случая нескольких границ. Спецификация доменов, приведенная в подразделе 7.3.1, после представления каждой границы в виде одного выражения выглядит так: Домен Тесты нал доход > 0 НА-0 ВНЕ-0.00001 нал доход -< 22100 НА=22100 ВНЕ-22100.00001 нал доход > 22100 НА-88?66 ВНЕ-92+66-6666? нап доход -< 53500 НА=53500 ВНЕ-53500.00001 нал доход > 53500 нА-53598 Вн?-58596-9668+ нап доход =< 115000 НА=115000 ВНЕ-115000 00001 нап доход > 115000 НА-??5666 ВнЕ-1+5666 †.9968-т нап доход =< 250000 НА"250000 ВНЕ-250000.00001 нал доход > 250000 НА-256666 ВНЕ-856666-6666? У нас есть пять доменов (на самом деле шесть) и пять определенных границ, которые мы проверяем при помоши 1О тестов; примитивной стратегии в то же самое время требуется 15 тестов, и при этом она не даст нам ничего нового.
'» 7.ч. Методы 199 7.4.4. Слабая стратегия 1х1, пространство с размерностью два и выше Наша первая задача — определить, есть ли у нас ошибки, связанные с доменами. Границы, не содержащие ошибок, не требуют тестирования. Для границ, содержаьцих ошибки, будет полезно понять, что же неправильно в их реализации. Для этого нам необходима более сильная стратегия (Х х 1, см. ниже). Для более узкой задачи (и более полезной для быстрой оценки), когда требуется определить, есть ошибки или их нет, стратегию 1м1 можно использовать в пространстве размерности два и более. Я называю ее «слабой» стратегией 1 к 1, поскольку делаю следующие предположения: каждая граница простирается до +, границы не содержат разрывов, и закрытие последовательно вдоль всей длины границ.
Данная стратегия не ограничена требованием линейности границ или, скажем, функциями, определенными для вещественных чисел, — она применима без исключений к фактически любым доменам, которые могут определяться в программах. Эта стратегия предусматривает тестирование одной точки НА и одной точки ВНЕ для каждого граничного неравенства, то есть тестирование двух точек, находящихся так близко друг к другу, чтобы они могли удовлетворять определению точек НА и ВНЕ. Заметим, что точка НА может и не лежать непосредственно на границе, если компьютерная или языковая система представления чисел не дает такой возможности.
Точка НА всего лишь должна удовлетворять условиям границы. Такая ситуация продемонстрирована на следующем рисунке, Правильная граница показана на нем сплошной линией. Направление ее закрытия, как обычно, отмечено штриховкой, Одна из возможных ошибочных реализаций показана пунктирной линией. Заметим, что мы не ограничены линейными границами доменов.
Попробуйте изменить расположение этой кривой, и убедитесь, что в любом случае (за одним исключением, отмеченным ниже) либо точка НА будет лежать в домене В, либо точка ВНЕ будет лежать в домене А. 200 Глава 7 ° Тестирование доменов Исключение иллюстрирует данный рисунок. Ошибочная граница проходит на нем как раз между выбранными точками НА и ВНЕ.
Прежде чем перейти к рассмотрению способов обнаружения данной ошибки, мы должны оценить вероятность ее возникновения. А она мала, поскольку мы имеем дело со случайными ошибками, а не с вредительством. Ошибки доменов в большинстве случаев достаточно масштабны и обладают явно выраженными симптомами. Например, возле десятичной точки пропущен коэффициент, или она поставлена не туда куда надо, пропущена или изменена константа, или даже пропущено целое выражение. В результате подобных ошибок происходит довольно существенное искажение ошибочной границы. Как мы можем от этого защититься? Выбором точек НА и ВНЕ настолько близко друг к другу, насколько это только возможно.
У нас нет гарантии, что ошибочная граница не попадет в зазор между выбранными контрольными точками, но вероятность этого мала. Но насколько действительно мала эта вероятность? Теория может дать качественную оценку ~ АЕ!Е92, ) ЕНС94). Дженг и Ваюкер [7 ЕХО94], основываясь на теоретических исследованиях, приводят убедительные аргументы, подтверждающие, что она ничтожна. Любое тестирование характеризуется вероятностью, с которой оно пропустит серьезные ошибки. Аргументы Дженга и Ваюкера могут быть достаточно хороши для тестирования обыкновенного программного обеспечения, но для жизненно важных программ или для программ, создающих серьезные финансовые документы, может возникнуть желание избежать риска и использовать более сильные (и требующие гораздо больших затрат) методы, гарантирующие, что подобные коварные ошибки не останутся незамеченными.
Давайте применим стратегию 1 х 1 к следующему примеру. Лонен 4 налог 0.31СОЛ - 728.5йьгогн - 8400.0 СОЛ н 59700 + 2350йьгогн СОЛ < 121200 + 2350йьгогн Мы об этом не говорим, но число льгот (Льготы), очевидно, должно быть целочисленным и быть больше нуля. Мы начнем с выбора точки НА, поскольку это проще всего сделать. Выберете любую точку, удовлетворяющую границе домена.
У нас есть две границы. Для второй границы мы имеем СОД = 121200 + 2350Льготы, поэтому, выбирая, например, значение Льготы = 5, получаелг СОД = 132950. Нам надо, чтобы точка ВНЕ лежала совсеги близко. В данном приложении наименьшей различимой величиной является ленни, поэтому значение, меньшее на два порядка, будет удовлетворять нашелгу условию.
То есть получаем СОД - 132950. 0001 и Льготы 5. Заметим, что вы вправе выбирать значение точки ВНЕ настолько близкое, насколько вам позволяет система представления чисел, чтобы пе нарушались расчеты при округлении или вследствие ошибки компьютера. К примеру, вы можете выбрать значение СОД = 132950,000000000001, при условии, что ваш компьютер и/или язык поддерживают вычисления с плавающей точкой до такой значащей цифры. Это полезно, поскольку уменьшается вероятность пропустить ошибку, вкравшуюся между точек НА и ВНЕ. С другой стороны, если система представления чисел поддерживает вычисления (для последнего примера) только до десятой значащей цифры, то ваши точки НА и ВНЕ сведутся, по сути, к одной точке, и вы уже не будете использовать данную стратегию.
Я предлагаю вам самим разрабо- ?.ч. Методы 201 тать тесты для других границ этого домена и рассчитать ожидаемые значения для спроектированных вами тестов. 7.4.5. Вырожденный случай В п-мерном пространстве вырождение возникает, если домен определяется как область с размерностью меньшей, чем и. А и  — смежные домены и оба открыты по отношению к показанной на рисунке границе. Домен В открыт Точка НА для А, В и С Точка ВНЕ дл Домен С закрыт Линия С обозначает границу и представляет собой отдельный домен.
Согласно определению, граница должна быть закрыта. Стратегия 1 н 1 будет здесь работать, если вы корректно интерпретируете составляющие элементы. Домен А открыт, поэтому мы берем точку НА на границе, а точку ВНЕ внутри А. Для В тоже надо выбрать точку НА, но мы можем взять ее той же самой, что и для А. Точка ВНЕ для В лежит внутри В. Как насчет С? Она закрыта, поэтому, согласно определению, точка ВНЕ должна лежать снаружи. Снаружи чего? Снаружи С и, следовательно, в обоих доменах А и В. Повторяюсь, точки могут быть общими. Таким образом, в случае вырождения нам не нужны дополнительные тесты, если мы уточним, что мы подразумеваем под «точкой ВНЕ» в данной ситуации. 7.4.6.
Стратегии более высокого порядка для пространства с размерностью два и более 7.4.6.1. Для чего нужны стратегии более высокого порядка? Существуют две причины для использования стратегий более высокого порядка. Чтобы быть уверенными, что ошибки границ различных типов не могут остаться незамеченными для выбранных точек НА и ВНЕ базовой стратегии 1 х 1 и чтобы получить информацию об ошибке, выявленной при помощи более простой стратегии.
На самом деле у нас есть три причины, чтобы обсудить стратегии более высокого порядка. В дополнение к первым двум причинам мы можем использовать стратегии более высокого порядка, для того чтобы оценить их вклад в тестирование в целом. 7.4.62. Безопасность тестирования Все стратегии более высокого порядка требуют большего числа контрольных точек, существенно большего. В большинстве случаев число дополнительных тестов, 202 Глава 7 ° Тестирование доменов приходящихся на одну границу, пропорционально размерности пространства, Если Ь вЂ” число границ, то стратегия 1 х 1 подразумевает проведение 2Ь тестов. Все более надежные методы требуют уже порядка Ьх п тестов, где п — размерность пространства.