Калайда В.Т., Романенко В.В. Технология разработки программного обеспечения (1015641), страница 23
Текст из файла (страница 23)
Такая ошибка не обязательно будетобнаружена тестированием граничных значений.Тестирование комбинаций входных условий — непростаязадача, поскольку даже при построенном эквивалентном разбиении входных условий число комбинаций обычно астрономически велико. Если нет систематического способа выбора подмножества входных условий, то, как правило, выбирается произвольное подмножество, приводящее к неэффективному тесту.Метод функциональных диаграмм или диаграмм причинно-следственных связей помогает систематически выбирать тесты с высокой результативностью. Он дает полезный побочныйэффект, так как позволяет обнаруживать неполноту и неоднозначность исходных спецификаций.Функциональная диаграмма представляет собой формальный язык, на который транслируется спецификация, написаннаяна естественном языке.
Диаграмме можно сопоставить цифровую логическую цепь (комбинаторную логическую сеть), нодля ее описания используется более простая нотация (форма записи), чем обычная форма записи, принятая в электронике. Дляуяснения метода функциональных диаграмм вовсе не обязательно знание электроники, но желательно понимание булевскойлогики (т.е. логических операторов и, или и не). Построение тестов этим методом осуществляется в несколько этапов.1. Спецификация разбивается на «рабочие» участки. Этосвязано с тем, что функциональные диаграммы становятся слишком громоздкими при применении данногометода к большим спецификациям. Например, когдатестируется система разделения времени, рабочимучастком может быть спецификация отдельной команды. При тестировании компилятора в качестве рабочего участка можно рассматривать каждый отдельный оператор языка программирования.2.
В спецификации определяются причины и следствия.Причина есть отдельное входное условие или класс эквивалентности входных условий. Следствие есть выходное условие или преобразование системы (остаточное действие, которое входное условие оказываетна состояние программы или системы). Например,145если сообщение программе приводит к обновлениюосновного файла, то изменение в нем и являетсяпреобразованием системы; подтверждающее сообщение было бы выходным условием. Причины и следствие определяются путем последовательного (словоза словом) чтения спецификации. При этом выделяются слова или фразы, которые описывают причины иследствия. Каждым причине и следствию приписывается отдельный номер.3. Анализируется семантическое содержание спецификации, которая преобразуется в булевский граф, связывающий причины и следствия. Это и есть функциональная диаграмма.4. Диаграмма снабжается примечаниями, задающимиограничения и описывающими комбинации причин и(или) следствий, которые являются невозможными изза синтаксических или внешних ограничений.5.
Путем методического прослеживания состояний условий диаграммы она преобразуется в таблицу решенийс ограниченными входами. Каждый столбец таблицырешений соответствует тесту.6. Столбцы таблицы решений преобразуются в тесты.Базовые символы для записи функциональных диаграммпоказаны на рис. 6.9.ТождествоaНеbaИлиИabcbaVdΛcbРис. 6.9 — Базовые логические отношенияфункциональных диаграмм146Каждый узел диаграммы может находиться в двух состояниях — 0 или 1; 0 означает состояние «отсутствует», а 1 —«присутствует». Функция тождество устанавливает, что еслизначение a есть 1, то и значение b есть 1; в противном случаезначение b есть 0.
Функция не устанавливает, что если a есть 1,то b есть 0; в противном случае b есть 1. Функция или устанавливает, что если a, или b, или c есть 1, то d есть 1; в противномслучае d есть 0. Функция и устанавливает, что если d и b есть 1,то и c есть 1; в противном случае c есть 0. Последние две функции разрешают иметь любое число входов.Для иллюстрации изложенного рассмотрим диаграмму,отображающую спецификацию:Символ в колонке 1 должен быть буквой «А» или «В», а вколонке 2 — цифрой. В этом случае файл обновляется. Еслипервый символ неправильный, то выдается сообщение Х12, аесли второй символ неправильный — сообщение X13.Причинами являются: 1 — символ «А» в колонке 1; 2 —символ «В» в колонке 1; 3 — цифра в колонке 2, а следствиями— 70 — файл обновляется; 71 — выдается сообщение Х12; 72— выдается сообщение X13.Функциональная диаграмма показана на рис.
6.10. Отметим, что здесь создан промежуточный узел 11.171V211Λ37072Рис. 6.10 — Пример функциональнойдиаграммыНа рис. 6.11 показана эквивалентная логическая схема.371V12Λ7072147Рис. 6.11 — Логическая схема, эквивалентнаядиаграмме на рис. 6.10Хотя диаграмма отображает спецификацию, она содержатневозможную комбинацию причин — причины 1 и 2 не могутбыть установлены в 1 одновременно. В большинстве программопределенные комбинации причин невозможны из-за синтаксических или внешних ограничений (например, символ не можетпринимать значения «А» и «В» одновременно).ИсключаетВключаетaEaIbbcТребуетОдно и только одноaOaRbbРис.
6.12 — Символы ограниченийВ этом случае используются дополнительные логическиеограничения, изображенные на рис. 6.12. Ограничение E устанавливает, что E должно быть истинным, если хотя бы одна изпричин — a или b — принимает значение 1 (a и b не могут принимать значение 1 одновременно). Ограничение I устанавливает, что, по крайней мере, одна из величин a, b или c всегдадолжна быть равной 1 (a, b и c не могут принимать значение0 одновременно). Ограничение O устанавливает, что одна итолько одна из величин a или b должна быть равна 1. Ограничение R устанавливает, что если a принимает значение 1, то и bдолжно быть равно 1 (т.е. невозможно, чтобы a было равно 1, аb — 0).148aMbРис. 6.13 — Символ для скрытого ограниченияЧасто возникает необходимость в ограничениях для следствий. Ограничение M на рис.
6.13 устанавливает, что еслиследствие a имеет значение 1, то следствие b должно иметь значение 0.Как видно из рассмотренного выше примера, физическиневозможно, чтобы причины 1 и 2 присутствовали одновременно, но возможно, чтобы присутствовала одна из них. Следовательно, они связаны ограничением E (рис. 6.14.).1E71V2311Λ7072Рис. 6.14 — Пример функциональной диаграммыс ограничением «исключает»Проиллюстрируем использование функциональных диаграмм для получения тестов. С этой целью воспользуемся спецификацией на команду отладки в интерактивной системе.Команда DISPLAY используется для того, чтобы отобразить на экране распределение памяти.
Синтаксис команды показан на рис. 6.15. Скобки представляют альтернативные необязательные операнды. Прописные буквы обозначают ключевыеслова операндов, а буквы с предшествующими точками — значения операндов (т.е. действительные значения операндов, которые должны быть подставлены). Подчеркнутые операнды соответствуют стандартным значениям (т.е. если операнд опущен,то принимается стандартное значение).149DISPLAY адрес 10адрес2ENDсчетчикбайтов1Рис.
6.15 — Синтаксис команды DISPLAYПервый операнд (адрес 1) определяет адрес первого байтаобласти памяти, содержимое которой должно быть отображенона экран. Длина адреса задается 1—6 шестнадцатеричнымицифрами (0—9, А—F). Если первый операнд не определен, топредполагается, что адрес равен 0. Адрес должен приниматьзначение из действительной области памяти машины.Второй операнд определяет объем памяти, который должен быть отображен.
Если адрес 2 определен, то он, в своюочередь, определяет адрес последнего байта области памяти,которую необходимо отобразить на экран. Длина этого адресазадается также 1—6 шестнадцатеричными цифрами. Он долженбыть больше или равен начальному адресу (адрес 1). Аналогично, адрес 2 обязан принимать значения из действительной области памяти машины. Если в качестве второго операнда определено END, то память отображается до последнего действительного адреса машины.
Если же в качестве операнда определенсчетчик байтов, то он, в свою очередь, определяет числобайтов памяти, которые нужно отобразить (начиная с байта садресом адрес 1). Операнд счетчик байтов является шестнадцатеричным целым числом (длиной от одной до шести цифр).Сумма значений операндов счетчик байтов и адрес 1 не должна превышать действительного размера памяти плюс единица, асчетчик байтов должен, по крайней мере, иметь значение 1.Состояние памяти отображается на экран терминала в виде одной или нескольких строк следующего формата:хххххх = слово 1 слово 2 слово 3 слово 4,где хххххх есть шестнадцатеричный адрес слова 1.Всегда отображается полное число слов (четырехбайтовых последовательностей, где адрес первого байта в слове кратен четырем), независимо от значения операнда адрес 1 или150отображаемого объема памяти.
Все выходные строки всегда содержат четыре слова (16 байт). Первый байт отображаемой области памяти находится в пределах первого слова.Могут иметь место следующие сообщения об ошибках:M1 – НЕПРАВИЛЬНЫЙ СИНТАКСИС КОМАНДЫM2 – ЗАПРАШИВАЕТСЯ АДРЕС, БОЛЬШИЙ ДОПУСТИМОГОMЗ – ЗАПРАШИВАЕТСЯ ОБЛАСТЬ ПАМЯТИ С НУЛЕВЫМ ИЛИОТРИЦАТЕЛЬНЫМ АДРЕСОМПримеры команды DISPLAY:DISPLAYотображает первые четыре слова в памяти (стандартное значение начального адреса 0, а стандартное значение счетчикабайтов 1).DISPLAY 77Fотображает слово, содержащее байт с адресом 77F, и три последующих слова.DISPLAY 77F – 407Aотображает слова, содержащие байты с адресами от 77F до407А.DISPLAY 77F.6отображает слова, содержащие шесть байт, начиная с адреса77F.DISPLAY 50FF – ENDотображает слова, содержащие байты с адреса 50FF до концапамяти.Первый шаг заключается в тщательном анализе спецификации с тем, чтобы идентифицировать причины и следствия.Причинами являются:1.
Наличие первого операнда.2. Операнд адрес 1 содержит только шестнадцатеричныецифры.3. Операнд адрес 1 содержит от одного до шести символов.4. Операнд адрес 1 находится в пределах действительнойобласти памяти.5. Второй операнд есть END.1516.7.8.9.Второй операнд есть адрес 2.Второй операнд есть счетчик байтов.Второй операнд отсутствует.Операнд адрес 2 содержит только шестнадцатеричныецифры.10.
Операнд адрес 2 содержит от одного до шести символов.11. Операнд адрес 2 находится в пределах действительнойобласти памяти.12. Операнд адрес 2 больше или равен операнду адрес 1.13. Операнд счетчик байтов содержит только шестнадцатеричные цифры.14. Операнд счетчик байтов содержит от одного до шестисимволов.15. Счетчик байтов + адрес 1 размер памяти + 1.16.
Счетчик байтов 1.17. Запрашиваемая область памяти настолько велика, чтотребуется много строк на экране.18. Начало области не выровнено на границу слова.Каждой причине соответствует произвольный единственный номер. Заметим, что для описания второго операнда необходимы четыре причины (5—8), так как второй операнд можетпринимать значения 1) END, 2) адрес 2, 3) счетчик байтов,4) может отсутствовать и 5) неопределенное значение, т.е.