Тестирование софта - статьи

ce076b8f

Неопределенные значения и уточняемые типы


Поскольку в процессе тестирования возможна ситуация, когда состояние целевой системы не полностью определено, для моделирования состояния системы удобно использовать типы, поддерживающие неопределенные значения. Будем считать, что на множестве значений типов заданы отношения уточнения, являющиеся отношениями частичного порядка. Отношения уточнения позволяют сравнивать информативность значений: чем «больше» значение в отношении уточнения, тем больше информации оно несет (см. Рисунок 3). Введем несколько понятий.

Неопределенные значения и уточняемые типы

Рисунок 3.Отношение уточнения значений типа.

Определение. Тип T с заданным на на нем отношением уточнения

Неопределенные значения и уточняемые типы
T или просто
Неопределенные значения и уточняемые типы
и называть неопределенным значением типа T. Также будем считать, что любое значение типа T можно получить за конечное число уточнений неопределенного значения
Неопределенные значения и уточняемые типы
T.

Определение. Максимальные значения уточняемого типа T по отношению

Неопределенные значения и уточняемые типыT называются (полностью) определенными значениями типа T. Значения уточняемого типа T, не являющиеся полностью определенными, называются неопределенными или не полностью определенными значениями типа T.

Определение. Пусть T - уточняемый тип, тогда через Tc будем обозначать (полностью) определенный подтип типа T, то есть подтип, состоящий из всех полностью определенных значений типа T.

Если некоторое свойство P имеет не полностью определенное значение x, это означает, что на самом деле значением свойства P является одно из полностью определенных значений, уточняющих x, но какое именно - неизвестно. Нужно быть аккуратным при сравнении не полностью определенных значений на равенство. С одной стороны, разным неопределенным значениям может соответствовать одно и то же полностью определенное значение, с другой, одному неопределенному значению могут соответствовать разные полностью определенные значения.

Пример.
Рассмотрим пример уточняемого типа ST, представляющего нечеткое множество значений типа T. Нечеткое множество s определяется трехзначной функцией принадлежности fs: T → {true, false,

Неопределенные значения и уточняемые типы
}. fs(x) интерпретируется следующим образом: если fs(x) = true, то x принадлежит множеству s, если fs(x) = false, то x не принадлежит множеству s, если fs(x) =
Неопределенные значения и уточняемые типы
, то неизвестно, принадлежит x множеству s или нет. Отношение уточнения естественно определить таким образом: s1
Неопределенные значения и уточняемые типыsT s2 тогда и только тогда, когда из того что fs1(x) = true, вытекает, что fs2(x) = true, а и из того, что fs1(x) = false, вытекает, что fs2(x) = false. Определение. Пусть T1, …, Tn - уточняемые типы. Определим на декартовом произведении T1× … ×Tn отношение уточнения: (x1, …, xn)
Неопределенные значения и уточняемые типыT1× ... ×Tn (y1, …, yn) тогда и только тогда, когда x1
Неопределенные значения и уточняемые типыT1 y1, …, xn
Неопределенные значения и уточняемые типыTn yn. От функций, определенных на уточняемых типах будет требовать регулярности и полноты: чем определеннее значение аргумента, тем определеннее значение функции, причем полностью определенному значению аргумента соответствует полностью определенное значение функции. Определение. Функция f: T1 → T2 называется регулярной, если из того, что x
Неопределенные значения и уточняемые типыT1 y следует, что f(x)
Неопределенные значения и уточняемые типыT2 f(y). Определение. Функция f: T1 → T2 называется полной, если f(T1с)
Неопределенные значения и уточняемые типы T2с, то есть из того, что x
Неопределенные значения и уточняемые типы T1c следует, что f(x)
Неопределенные значения и уточняемые типы T2c. Обычно в языках программирования и спецификаций есть базовые типы и есть составные типы, значения которых строятся на основе значений других типов. Определение. Составной тип называется регулярным, если все его конструкторы являются регулярными функциями. Определение. Составной тип называется полным, если все его конструкторы являются полными функциями.

Содержание раздела