Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 50
Текст из файла (страница 50)
Это гораздо хуже, но все равно не так плохо, как в случае примитивной стратегии, основанной на комбинации экстремальных точек, которая предполагает проведение тестов. Ситуация осложняется с ростом размерности, то есть вероятность пропустить ошибку, вкравшуюся между выбранными контрольными точками, растет с ростом размерности. Тем не менее, в 1995 году мы не располагали надежной статистикой для количественной оценки риска, а могли пользоваться лишь теоретическими исследованиями. Афифи с соавторами [АЕ(Е92] продемонстрировали, что для полной уверенности в отсутствии ошибок, вкравшихся между выбранными точками НА и ВНЕ, а также для проверки на наличие множества других разных ошибок доменов вам необходимо и+ 2 грамотно подобранных тестов на одну границу (слабое предположение).
Как минимум, одна из точек должна быть точкой НА и одна должна быть точкой ВНЕ. Особенности контрольных точек (то есть что кроется за словами «грамотно подобранный»), а также алгоритмы выбора этих точек лежат за рамками данной книги, но подробно изложены в [Аг[Г92]. 7.4.6.3. Типы ошибок доменов Из трех целей, преследуемых при рассмотрении стратегий более высокого порядка, вторая и третья могут быть лостигнуты при исследовании стратегии Х х 1 [СОНЕ78] Х х 1 — приемлемая стратегия, которую можно использовать для диагностики природы ошибок в случае, если вы определили что ваша граница содержит ошибки. Она также помогает понять суть тестирования доменов и природы ошибок в целом. И, наконец, в любой специализированной литературе, описывающей тестирование доменов, предполагается, что вы знакомы с этой стратегией.
Применение стратегии Хх1 позволяет проводить диагностику ошибок, поскольку, выбирая и точек НА, мы можем убедиться в корректности граничной гиперплоскости с размерностью и — 1 в и-мерном пространстве (например, линии в двухмерном пространстве и поверхности в трехмерном пространстве). Мы можем рассматривать возможные варианты ошибок доменов в пространстве с размерностью два и более для случая, когда все границы доменов линейны. В сущности, тестирование доменов представляет собой одну из немногих областей, где можно описать ошибки ва языке математики.
Данная стратегия требует наличия и точек НА и одной точки ВНЕ для п-мерного пространства. 1. Ошибка закрытия. Граница, которая должна быть открытой, реализована как закрытая, а граница, которая должна быть закрытой, реализована как открытая. Мы будем рассматривать случай закрытых границ, а анализ открытых оставим в качестве упражнения. Тестирование одиночной точки НА выявит эту ошибку, если на границе нет случайной корректности.
Ошибка закрытия — это наиболее часто встречающаяся ошибка доменов. 7.ч. Методы 203 ЯД ПРАВИЛЬНО Яйй НЕПРАВИЛЬНО А 2. Сдвиг домена «вверх» или «вниз». В одномерном пространстве эта ошибка эквивалентна сдвигу влево илн вправо. Сдвиг домена возникает вследствие ошибки в постоянном слагаемом неравенства: слишком большое или слишком маленькое значение, или смена его знака. Это относится к и-мерному пространству. В отсутствии сдвига (корректная реализация) точка НА обрабатывается как домен А, а точка ВНЕ как домен В.
После сдвига вверх все три точки будут обрабатываться как домен А. ТОЧКА ВНЕ ч в ГРАНИЦА СДВИНУТА ВВЕРХ ПРАВИЛЬНО ТОЧКА ВНЕ Я предлагаювамсамостоятельнопроверить,чтостратегияН к1вдвухмерном пространстве работает для всех видов сдвига (слишком большое, слишком маленькое значение или смена знака константы), для открытых и закрытых доменов. Сдвиги доменов, как правило, довольно значительны. Наиболее вероятной причиной возникновения сдвига является грубая ошибка Е1р2, например отсутствие десятичной точки или ее неправильное положение.
Однако простая перестановка цифр в числе может привести н к небольшим сдвигам. Поэтому так важно выбирать точку ВНЕ как можно ближе к границе. 3. Поворот домена. В одномерном пространстве этому нет аналога, но эта ошибка встречается в пространстве с размерностью два и более. Поворот домена возникает вследствие какой-либо ошибки в коэффициентах тестируемого неравенства.
204 Глава 7 ° Тестирование доменов Я повернул границу домена против часовой стрелки. В отсутствие поворота точка ВНЕ обрабатывается как домен В. После поворота эта точка попадает в домен А, и, следовательно, мы получили ошибку. Поворот домена является следствием ошибки в коэффициентах (влинейных неравенствах), и, подобно сдвигу, он скорее будет большим, нежели маленьким. И точно так же, выбирая точку ВНЕ как можно ближе к границе, мы можем повысить чувствительность к маленьким сдвигам. 4. Лишняя граница.
Стратегия Хх 1 применима также и для поиска лишних границ. Вместо двух доменов возникают четыре. Предположим, лишней границе соответствует некоторые различия в процессе обработки, так что мы можем отличить, скажем, домен А от домена А'. В' в ТОЧКАВНЕ Сравнение двух точек НА, выбранных так, чтобы новая граница проходила между ними, выявит расхождение. Стратегиями к 1 слепа к лишним границам, которые не приводят к изменению обработки. Однако это не смертельно, поскольку пользователь также их не заметит. 5.
Пропущенная граница. Сравните любую из точек НА с точкой ВНЕ. В результате отсутствия границы домены А и В будут обрабатываться одинаково (но мы не можем сказать, будет ли это обработка соответствовать домену А или домену В). ТОЧКАВНЕ 7.4.6.4. Иллюстрация стратегии И х 1 Какие контрольные точки нам надо взять7 Для слабой стратегии Хх 1, где мы тестируем граничные уравнения, а не сегменты границ, выбирайте точки НА как можно дальше друг от друга, а точки ВНЕ посередине между ними.
Вот некоторые комментарии для случая размерности большей, чем два. 1. Точки НА должны быть линейно независимы. К примеру, в трехмерном пространстве оии не могут быть коллинеарными, то есть лежать на одной линии. В четырехмерном пространстве, где границы объемны, точки не могут быть компланарны. Имеет смысл выбирать точки НА рядом с узлами доменов, поскольку узловые точки доменов всегда независимы. 7.4. Методы 205 2.
Точки ВНЕ надо выбирать рядом с центром тяжести точек НА. Для линий берите середину между точками НА. Для плоскостей выбирайте точку, лежащую в середине треугольника, построенного на точках НА, то есть как можно ближе к точке, равноудаленной от вершин треугольника. Применим стратегию Х х 1 для тестирования верхней границы домена 4. Домен 4. налог - 0 31СОД - 728.50ьготн - 6400 0 СОД > 59700 + 2350льготн СОД <- 121200 > 235ОЛьготы Число льгот (Льготы) не может быть отрицательным, поэтому мы выбираем ноль в качестве нижней границы.
Здесь не задан верхний предел, но мы можем выбрать его сами, задав достаточно большое значение для уменьшения вероятности пропуска маленьких сдвигов или поворотов; например, 100. Льготы представляются целыми числами, поэтому 1 — это наименьшее значение (из тех, что мы можем выбрать), отличающееся от узловой точки. Подставляя 1 и 100, мы получаем 123550 и 356200,соответственно. Итак, мы выбрали следующие точки НА: (1, 123550) и (100, 356200). Наш следующий шаг — выбор точки ВНЕ. Для начала выберем точку на границе, посередине между двумя точками НА, то есть Льготы = 50.
Подставляя зто значение в уравнение границы, мы получаем 238700. Но наша точка ВНЕ должна лежать снаружи домена, в данном случае — немного выше, поэтому мы берем точку ВНЕ равной (50, 238700.01). Последнее, что нам надо сделать, это подставить полученные три набора значений в уравнение для налогов, чтобы получить наш предсказанный итог. Однако будьте уверены, что вы подставляете точку ВНЕ в уравнение расчета налогов для домена 5, а не домена 4. Выполнив это, мы получаем и!едующие варианты теста: Л го Сод Налог 1 123550.00 31172.0000 50 238700 01 31172 0036 100 356200.00 31172.0000 Это не является проявлением случайной корректности, поскольку наша залача заключается не в поиске различий между точками в одном и том же домене, а в определении, не попала ли точка по ошибке в другой (например, смежный) домен. При расчете налога для точки ВНЕ в этом домене (4) получается 31172,0031 вместо 31172,0036. Налог получился один и тот же для всех трех точек, однако домены и налоговые ставки не были линейно независимы.
Вообще говоря, подобная ситуация нетипична, и это подтверждает следующий пример: Неравенство точка НА 771 (х. у1 точка НА 772 1х, у1 точка ВНЕ у > 0 О. 0 0001 О. 10 -0 0001, 5 х >= 0 0.0001. 0 10. 0 5. -0.000! 2у < х+4 2, 3 12. 8 б 999. 5.499 4у >" х-4 4. 0 20, 4 12.0001. 1 999 у <- -х+16 0 16 16. О 8.0001. 8.0001 Я не стану приводить результат вычисления функции в этом домене, но давайте предположим, что он у нас есть и что случайная корректность со смежным доменом отсутствует. Я проиллюстрирую процедуру на примере проектирования тестов для последней из этих границ. Нам надо выбрать точки НА как можно дальше друг от друга, имея в виду, что, используя слабую стратегию Хх 1, мы можем проверить 206 Глава г ° Тестирование доменов лишь границу целиком и не можем проверить отдельные сегменты данного домена. Таким образом, я могу взять любые значения на прямой, и наиболее далекими друг от друга будут точки (х=О, у-16) и (х 16, у-0).
Средняя точка между ними будет равна (8,8). Поэтому для теста мы используем значения х= 8.0001 и у=8.0001. Оси Х и т' также принадлежат границам этого домена. Ошибки, связанные с координатными осями, встречаются довольно редко, но вы, возможно, все-таки захотите их протестировать. Минимальное значение у равно нулю, поэтому (О, 0.0001) и, например, (О, 10) — неплохой выбор для точек НА. Тогда для точки ВНЕ получаем значение ( — 0.0001, 5).
Следующее уравнение описывает открытую границу, и поэтому мне пришлось вычесть небольшую величину, чтобы точка ВНЕ лежала внутри. Я надеюсь, что вы нарисуете эти линии, их закрытия и тестовые точки на миллиметровой бумаге, чтобы проследить за тем, что я делал. 7.4.7. Сильное тестирование доменов Отличие между сильным и слабым тестированием доменов заключается в том, что при слабом тестировании мы разрабатываем ряд тестов для каждого граничного неравенства, в то время как при сильном тестировании мы используем отдельный набор тестов для каждого сегмента границы'.