Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 46
Текст из файла (страница 46)
Ошибка, связанная с этими константами, может привести к нарушению смежности доменов. Вам придется протестировать отношения в обоих направлениях, чтобы убелиться, что ничего не пропущено и нет перекрытий доменов, Веса связей. Неравенства, определяющие границы между доменами. Так как домены могут встречаться в нескольких неравенствах, то между двумя доменами может существовать несколько связей. Для иллюстрации этого требуется как минимум двумерное пространство. Вы можете моделировать это посредством одной связи для каждого неравенства.
Неравенство (в пространстве с размерностью два или более) может являться границей для множества доменов. Две линии, пересекающиеся на плоскости, определяют четыре области и, следовательно, четыре ломена. Три неравенства на плоскости могут задать семь доменов'. Наша стратегическая задача — тестирование неравенств, а пе доменов. Веси узлов.
Вычисления, соответствующие доменам. Заметим, что одному домену может соответствовать более одного вычисления. Домен может быть определен таким образом, что оп будет состоять из граничащих частей, или, даже из несвязанных частей. Примером может служить слелующая спецификация. 0 < х -< 17 Процесс А 17<к = <34 Процесс В 34<х = <39 Процесс С 39<х - <44 Процесс А 44<к Процесс В Домен, соответствующий процессу А, состоит из двух несвязанных частей. Как нам его лучше исследовать? Я предпочитаю рассматривать каждую часть такого домена как самостоятельный субдомен, который обрабатывается совместно с некоторыми другими субдоменами (другими частями домена).
Я придерживаюсь этого принципа, поскольку так или иначе нам все равно придется их тестировать. В дальнейшем помните, что все, сказанное о тестировании доменов, касается также и тестирования субдоменов (если они есть). Покрытие узлов: Для осуществления покрытия узлов вы должны сделать как минимум четыре вещи: 1. Рассмотреть по меньшей мере одну контрольную точку н каждом домене, чтобы убедиться, что с помощью оператора СйзЕ выбран надлежащий вариант обработки, и, если сортировка проведена корректно, убедиться в правильности обработки.
Это означает проведение как минимум одного теста для каждого домена. Однако один тест не может обеспечить надежную проверку процесса обработки, Обработка домена может представлять собой целую програм- ' Число доменов определяемых н-неравенствами, растет стремительно с ростом размерности пространства.
(Опрелеленпе возможного числа ломенов представляет собой очень сложную математическую задачу, которая носит название <проблема блина» в двухагерноь~ пространстве и <проблема апельсина в трехмернол~ пространстве.) 188 Глава 7 ° Тестирование доменов му, включающую в себя поток управления, потоки данных, потоки транзакций и другие средства. Используйте для проверки соответствующую модельг. 2.
Для доменов, состоящих из субдоменов (как смежных, так и не смежных), убедитесь, что все требуемые части существуют и обрабатываются в соответствии с требованиями. 3. Убедитесь, что домены не перекрываются. В одномерных и двухмерных пространствах это делается графически. В пространстве с размерностью три и более, используйте соответствующие алгебраические инстрултенты [ЪЪ(Н!Т951 (их описание лежит за пределами данной книги). В большинстве случаев, однако, перекрытие доменов происходит на границах. 4.
Убедитесь, что входное пространство является полным. Каждый входной вектор должен быть обработан, лаже если эта «обработкам означает отбраковку ввода. В одномернолт и двухмернолт пространстве вы можете провести эту проверку самостоятельно. В пространстве с размерностью три и более используйте соответствующие алгебраические инструменты !ЪЪ(Н!Т95! (их описание лежит за пределами данной книги).
Как и в случае перекрытия, большинство подобных ошибок возникает на границах доменов. Покрытие связей/ Ниже указано, в каком порядке следует его проводить. 1. Убедитесь, что все домены, которые должны быть смежными, на самом деле смежные, то есть имеют общее граничное неравенство. 2. Убедитесь в отсутствии лишних границ. В этом вам поможет стратегия тестирования доменов. 3. Убедитесь в корректности всех граничных неравенств. В этом заключается основная задача тестирования доменов. В качестве примера разработки модели тестирования долтенов рассмотрим вариант формы 1040', строки с 32 по 38.
У меня была задача построить пример, включающий как л(инимум две входные переменные. Вот мой вариант спецификации для строк 32 — 38. 32; АО)цэ(еб Огоээ !псояе Слуаит входои в эгон примере (Скорректированный Общий Доход (СОД!! 33: Беэ проверки. полагается равным 0 34. Стандартные отчисления В этом примере иы берем их равныии $6200 35: (СОД!-$6200 Заданные вычисления бе: Льготы Слуяит входом в этом лринере 36 $2350 * Льготы В этан примере игнорируеи верхний предел $0!350 37: нал доход = Мах (О.
С35-СЗБ! Налогоаблагаеный доход. Мы буден ' Проверка обработки мажет быть пронсдспа в гоч числе путем тестирования домена, если, навримср, обработка представляет собой алгсбраичсскггс чравпспис. Это можно рассматривать как проверку корректности вырожденного домена, заланного с помомью орсдиката равенства. 1ЛГ(Е921. ' Этот вариант сильно искажает бланк декларации. по:гтому, пожалуйста, ис используйтс его в целях, связанных с уплатой налогов. 7.3. Отношения и модель 189 длл всех значений использовать таблицу расчета налогов 38; Таблица расчета налогов 0 < нал доход -< $22100 $22100 < нап доход "< $53500 налог - 0.15 * нал доход налог = $3315 + 0 28 * (нал поход — $22100) $53500 < нал доход =< $П5000 налог = $12107 + 0 31 * (нап доход - $53500) налог = $3П72 + 0 36 * Снап доход -$П5000) $250000 < нал доход налог = $79722 г 0.396 * (нал доход - $250000) Нашей задачей является разработка модели тестирования доменов, которую мы можем использовать для проверки корректности реализации таблицы налогов.
Прежде всего нам надо выразить таблицу налогов через входные переменные (СОД и Льготы). Проделайте это, заменяя входные переменные на соответствующие выражения, и затем, используя символическую подстановку, получите таблицу налогов. Я выполнил эти действия и вычеркнул несущественные для результата строки. Вот как выглядит моя перегруппированная модель: 32 СОД (Скорректированный Общий Доход) Вход бе: Льготы Вход 38 Налог. рассчитанный из таблицы расчета налогов Домен 1 налог - 0 0 СОД-6200-2350 * Льготы < 0 Домен 2: налог - 0 15 * (СОД - 6200 - 2350 * Льготы> СОЛ - 6200 - 2350 * Льготы > 0 СОД - 6200 - 2350 * Льготы <= 22100 Домен 3 налог = 33!5 + 0,28 * ((СОД - 6200 - 2350 * Льготы) - 22100)) СОД - 6200 - 2350 * Льготы > 22100 СОД - 6200 - 2350 * Льготы <- 53500 Доиен 4, налог - 12107 + 0.31 * ((СОД - 6.200 - 2.350 * Льготы) - 53500)) СОД - 6200 - 2350 * Льгош ) > 53500 СОЛ - 6200 - 2350 * Льготы <= П5000 Домен 5, налог - ЗП72 + 0.36 * ((СОД - б 200 - 2,350 * Льготы) - П5000)) СОД - 6200 - 2350 * Льготы > П5000 СОД - 6200 - 2350 * Льготы <- 250000 Домен б налог = 79772 + 0.396 * ((СОД - 6200 - 2350 * Льготы) — 250000)) СОД - 6200 - 2350 * Льготы > 250000 Ы 15000 < нал дохоп =< $250000 Чтобы сделать это, я использовал функцию поиска н замены в текстовом редакторе.
Сначала я передвинул строку бе в начало. Затем'я удалил строки ЗЗ и 34, поскольку в этом примере их значения счнтатотся заданными и приведены в первоначальной модели. Далее я подставил СОД-6200 вместо С35, удалил строку 35 и упорядочил алгебраические выражения. Перед проведением подстановки я заключил выражения в скобки, чтобы избежать ошибок, таких как изменения знака из-за двойного знака «минус» и умножения выражения на константу, например, при вычислении переменной налог.
Следующая подстановка была проведена для строки 36. Переменную Мах в строке 37 я удалил путем добавления другого домена, как вы можете видеть для случая отрицательного налогооблагаемого дохода. Затем я заменил переменную нал доход и получил конечные выражения, которые н привел здесь (после небольшой перегруппировки для того, чтобы привести их 190 Глава 7 ° Тестирование доменов все к одинаковому виду).
Затем я упростил алгебраические выражения для налогов и получил в результате следующую модель: 32: СОД 1Скорректированный Обмий Доход1 Вход бе: Льготы Вход 38: Налог, рассчитанный из таблицы расче~а налогов Домен 1 налог = 0.0 СОД <= 6200+2350Льготы Домен 2: налог - О. 15СОД - 352.5Льготы - 930 0 СОД > 6200 + 2350Льготы СОД <" 28300 + 2350дьготы Домен 3: налог - 0.28СОД - 658 Од>готы - 4609 0 СОД > 28300 + 2350Льготы СОД <- 59700 + 2350 Льготы Домен 4 налог - 0 31СОД - 728.5Л>готы - 6400 0 СОД > 59700 + 2350дьготы иСОД< 121200+2350Льготы Доиен 5 малог = 0.36СОД - 846.0Льготы - 12460 СОД > 121200 + 2350дьготы СОД < 256200 + 2350Льготы Домен 6.
налог - 0.396 СОД - 930.6Л>готы - 21683 2 СОД > 256200 + 2350Льготы На рис. 7.2 показан возможно более наглядный способ представления этих доменов. В одномерном и двумерном пространстве будет не лишним изображать домены графически, подобно тому, как это сделал я. Границы доменов представляют собой несколько параллельных линий. Это типичные домены, встречающиеся на практике, Тем це менее, нам потребовалось выполнить алгебраические преобразования, для того чтобы упростить эти границы и выразить их через входные переменные. Интерпретация предикатов. Символическая подстановка, проделанная выше, для того чтобы выразить домены через входные переменные, называется интерпретицией предикитов.
Любое неравенство имеет внд предиката, который может принимать значение ИСТИНА или ЛОЖЬ. Предикат мы интерпретируем в терминах входных переменных. Зачем все усложнять, интерпретируя предикаты грашш доменов? Почему бы нам не работать непосредственно со строками спецификации ВНС? Дело в том, что в этом случае у вас уже не будет модели для тестирования доменов, это будет модель потока управления. Нашей же целью является проверка корректной реализации граничных предикатов (или их аналогов в коде). Наша конечная модель является избыточной. Граничные неравенства появляются в ней дважды (по одному разу для каждого задаваемого ею домена).