Lecture04 (Лекции в ПДФ), страница 4

PDF-файл Lecture04 (Лекции в ПДФ), страница 4 Тестирование на основе моделей (63521): Лекции - 9 семестр (1 семестр магистратуры)Lecture04 (Лекции в ПДФ) - PDF, страница 4 (63521) - СтудИзба2020-08-21СтудИзба

Описание файла

Файл "Lecture04" внутри архива находится в папке "Лекции в ПДФ". PDF-файл из архива "Лекции в ПДФ", который расположен в категории "". Всё это находится в предмете "тестирование на основе моделей" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 4 страницы из PDF

Обычно этаразность проявляется в различных выражениях, используемых для описаниярезультатов функции в разных подобластях. Выделенные подобласти значенийпараметров обычно образуют подобласти многомерного пространства.•Определяются все компоненты связности выделенных областей, все границыобластей, компоненты связности границ, границы границ, и т.д.Обычные границы называются границами первого порядка, их границы — границамивторого порядка, и. т.п.Пример: если функция имеет три числовых параметра, чаще всего ее областьопределения — область в трехмерном пространстве.

Границы первого порядка — этоповерхности, отделяющие область определения и разделяющие ее на подобласти.Границы второго порядка — кривые, по которым пересекаются или соприкасаютсяграницы первого порядка, или которыми они разбиваются на гладкие куски. Границытретьего порядка — точки, являющиеся точками пересечения или касания границвторого порядка, а также отделяющие границы второго порядка друг от друга иразбивающие их на гладкие куски.•Тестовые данные подбираются следующим образом.Областью здесь называется компонента связности одной из выделенных подобластейобласти определения, а также компонента связности границы любого порядка.o Для всякой области должен быть набор значений параметров, лежащийвнутри этой области. Обычно его стараются выбирать где-то «посередине»,ближе к центру масс области.o Для всякой компоненты связности границы любого порядка любой области,если область не включает эту компоненту границы (т.е.

сама граница невходит в область определения или принадлежит другой подобласти),должен быть набор значений параметров, лежащий в этой области какможно ближе к границе.Для области в трехмерном пространстве должна быть выбрана точка внутри нее.Для всякой поверхности, являющейся гладким куском ее границы, если этаповерхность входит в область, выбирается точка, лежащая на ней, если нет —выбирается точка, лежащая внутри области, но как можно ближе к этойповерхности.Для всякой кривой, являющейся гладким куском границы 2-го порядка, если этакривая входит в область, выбирается точка на ней, если нет — для всякого кускаповерхности-границы, ограничиваемого этой кривой и входящего в область,выбирается точка, лежащая на этом куске как можно ближе к кривой, для всякогокуска поверхности, не входящего в область, выбирается точка, лежащая внутриобласти как можно ближе к этому куску поверхности и этой кривой.Для всякой точки, входящей в границу третьего порядка, если она входит в область,выбирается эта точка, если нет — выбираются точки вблизи нее, лежащие на всехсодержащих ее кривых-границах, входящих в область, на всех поверхностях,входящих в область, чьи границы не все входят в нее, и в самой области, если естьее поверхность-граница, проходящая через эту точку и не входящая в область.Пример.Пусть тестируется реализация банковского счета с ограниченным кредитом.

Втестируемом компоненте две операции — положить деньги на счет и снять деньги со счета.Пусть снимаемая/заносимая сумма и текущий баланс счета представлены 32-битнымицелыми числами.•Выделение областей определения операций и их естественных подобластей даетследующие результаты.o Операция внесения денег на счет добавляет вносимую сумму к балансу длятех сумм и балансов, для которых результирующая сумма не превышаетмаксимального 32-битного числа.Если итоговый баланс может превысить максимум, эта операция не должнавыполнять никаких действий, но должна вернуть какое-то указание наслишком большую сумму на счете для выполнения этой операции.o Операция снятия денег со счета вычитает снимаемую сумму из баланса,если итог не станет меньше минимально возможного баланса,соответствующего максимально возможному кредиту.

Если кредит приэтом превышается, баланс не изменяется, а возвращается указание нанедостаточность суммы на счете для выполнения этой операции.Для каждой из операций выделены две подобласти различного поведения. Областьюопределения каждой из них служит все множество пар возможных значений балансаи вносимой/снимаемой суммы, которая должна быть положительной.Полученные области изображены на рисунках ниже.вносимая суммаInteger.MAX_VALUE-Integer.MAX_VALUE-maxCreditInteger.MAX_VALUEбалансРазбиение области определения для операции внесения денег на счет. Границаголубого или красного цвета означает, что она включается в голубую или,соответственно, красную областьснимаемая суммаInteger.MAX_VALUE-Integer.MAX_VALUE••-maxCreditInteger.MAX_VALUEбалансРазбиение области определения для операции снятия денег со счета.Для обеих операций получилось по две подобласти, представленные на рисункахразными цветами.

Голубым цветом выделена область нормального поведения,красным — область балансов и сумм, при которых выполнение операции внормальном режиме невозможно.В обоих случаях область голубая область имеет границу, состоящую из трехсегментов. Красные области в обоих случаях ограничены двумя сегментами исоприкасаются с одним из сегментов голубой области.Значения тестовых данных (в данном случае, включающие и значение баланса,являющееся состоянием тестируемого компонента), получаемые на основе эвристикипокрытия всех подобластей, границ и окрестностей границ, изображены дляоперации внесения денег на счет ниже (большие черные точки).

Для второй операцииони получаются аналогичным образом. Заметим, что больше всего тестовымиданными должны быть покрыты окрестности границы, разделяющей выделенныеподобласти.Некоторые выбранные точки (внутри голубой области вблизи голубой границы ивнутри красной области вблизи красных границ) не являются необходимыми с точкизрения эвристик доменного тестирования, но часто такие точки добавляются (вколичестве, не превосходящим число точек, выбранных по основной эвристике) дляотслеживания других видов ошибок.вносимая суммаInteger.MAX_VALUE-Integer.MAX_VALUE-maxCreditInteger.MAX_VALUEбалансБолее сложный пример.Рассмотрим программу решения квадратного уравнения ax2+bx+c=0. Можно считать, чтопрограмма оформлена в виде функции int solveEquation(double a, double b, double c, double*x1, double *x2).

Первые три ее параметра являются коэффициентами уравнения, последниедва предназначены для возвращения его решений, а целочисленный результат — этоколичество решений.a = 0,Условиеa=b=a=a ≠ 0, b2a ≠ 0, b2a ≠ 0, b2с=0b = 0,4ac < 04ac = 04ac > 0b≠0с≠001012Число∞решенийРезультат–101012Таблица 1. Подобласти области определения программы, решающей квадратноеуравнение.Если решений два, возвращается 2, и указатели на оба решения. Если есть только однорешение, возвращается 1 и оба указателя x1 и x2 указывают на одно и то же значение. Еслирешений нет, возвращается 0, и значения по указателям произвольны.

Если решенийбесконечно много, возвращается –1.Для этой функции четко выделены подмножества области определения, представленные втаблице выше. Они определяют разбиение ее пространства параметров на 4 подобласти спомощью конуса нулевого дискриминанта и плоскости нулевого первого коэффициента иеще 7 компонентов их границ. Итого выделяется 11 подобластей и элементов границ.•внутренность конуса b2 = 4ac сверху от плоскости a = 0 — a > 0 и b2-4ac > 0;•внутренность конуса снизу от плоскости — a < 0 и b2-4ac > 0;•вне конуса и сверху от плоскости — a > 0 и b2-4ac < 0;•вне конуса и снизу от плоскости — a < 0 и b2-4ac < 0;конус сверху от плоскости —a > 0 и b2-4ac = 0;•конус снизу от плоскости —a < 0 и b2-4ac = 0;•полуплоскость — a = 0 и b > 0;•полуплоскость — a = 0 и b < 0;•полупрямая — a = 0, b = 0 и c > 0;•полупрямая — a = 0, b = 0 и c < 0;•точка, вершина конуса — a = 0, b = 0 и c = 0.Для каждой выделенной подобласти, каждой границы (куска поверхности конуса,полуплоскости, полупрямой или точки), а также для окрестностей границ необходимоподобрать наборы значений параметров, попадающих в соответствующее множество.•abcРисунок 1.

Подобласти параметров для программы, решающей квадратные уравнения.Техники автоматизации построения тестов, нацеленных на покрытиеКак уже говорилось, методы, нацеленные на покрытие, плохо автоматизируются. Однако,есть несколько приемов, которые в ряде случаев позволяют строить такие тестыавтоматически.•Если для каждой из выделенных ситуаций написать специальную функцию,возвращающую 1, если набор значений параметров попадает в соответствующуюситуацию, и 0 иначе, можно выделять подходящие наборы значений из некоторогобольшого их множества, фильтруя его с помощью таких функций.•Для предиката, определяющего условия попадания в заданную ситуацию, можнонаписать программу на одном из языков логического программирования, например,Prolog, выполнение которой будет находить значения параметров, удовлетворяющиеэтому предикату, а значит, покрывающие соответствующую ситуацию.•Помимо Prolog’а, для решения этой задачи можно использовать другие методыпрограммирования с логическими ограничениями (Constraint Logic Programming).В ряде случае для построения наборов тестовых данных, покрывающих многоразных ситуаций, выделяемых определенным критерием покрытия, можноиспользовать генетические алгоритмы.При этом геном считается последовательность операций, выполняемых надтестируемым компонентом и данными, и заканчивающаяся вызовом некоторойоперации компонента с подготовленными данными.

Оценочной функцией всегонабора нужно считать получаемое набором тестов покрытие по выделенномукритерию, а оценочной функцией одного теста — его близость к достижению еще непокрытых ситуаций.Алгебраические методыАлгебраические методы построения тестов достаточно экзотичны и очень редкоиспользуются на практике. Основной их недостаток — необходимость иметь описаниетестируемых компонентов как абстрактных типов данных с полным набором аксиом,описывающих соотношения между операциями. Получить такие описания для практическизначимых систем очень тяжело.Эти методы дают средние значения полноты тестирования и позволяют находить ошибкиот простых до средней сложности. Достаточно сложную и специфическую ошибку с ихпомощью найти тяжело.Один из алгебраических методов построения тестов состоит в следующем.•Выбирается некоторый набор стартовых цепочек операций.•Для каждой стартовой цепочки просматриваются все ее начала.

Если одна изначальных цепочек может быть преобразована в эквивалентный вид при помощиодной из аксиом, это преобразование выполняется над всей цепочкой.В результате для каждой стартовой цепочки получается множество цепочек,эквивалентных ей. Поскольку они получены с помощью однократного примененияаксиом, их можно назвать цепочками первого порядка.Если количество полученных цепочек невелико, к каждой из них можно применитьту же технику, получив цепочки 2-го порядка, и т.д.Тестирование состоит в последовательном выполнении одной из стартовых цепочек•и всех, эквивалентных ей, со сравнением получаемых результатов.Пример.Рассмотрим алгебраическое описание списка, приведенное в Лекции 3.[].size() = 0[X.size()] ≡ [X](i <= X.size()) => X.add(i, o).size() = X.size()+1(i < X.size()) => X.remove(i).size() = X.size()–1(i < X.size()) => [X.get(i)] ≡ [X](i, j <= X.size() & i < j) => [X.add(i, o1).add(j, o2)] ≡ [X.add(j–1, o2).add(i, o1)](i <= X.size()) => [X.add(i, o1).add(i, o2)] ≡ [X.add(i, o2).add(i+1, o1)](i <= X.size()) => [X.add(i, o).remove(i)] ≡ [X](i, j <= X.size() & i < j) => [X.add(i, o).remove(j)] ≡ [X.remove(j–1).add(i, o)](i, j <= X.size() & i > j) => [X.add(i, o).remove(j)] ≡ [X.remove(j).add(i, o)](i <= X.size()) => X.add(i, o).get(i) = o(i, j <= X.size() & i < j) => X.add(i, o).get(j) = X.get(j-1)(i, j <= X.size() & i > j) => X.add(i, o).get(j) = X.get(j)(i, j < X.size()-1 & i < j) => [X.remove(i).remove(j)] ≡ [X.remove(j+1).remove(i)](i, j < X.size() & i <= j) => X.remove(i).get(j) = X.get(j+1)(i, j < X.size() & i > j) => X.remove(i).get(j) = X.get(j)В качестве стартовой возьмем одну цепочку [].add(0, o1).add(1, o2).Эквивалентными ей цепочками будут следующие.[].add(0, o1).add(1, o2).size()[].add(0, o1).add(1, o2).get(0)[].add(0, o1).add(1, o2).get(1)[].add(0, o2).add(0, o1)[].add(0, o1).add(1, o2).add(0, o3).remove(0)[].add(0, o1).add(1, o2).add(1, o3).remove(1)[].add(0, o1).add(1, o2).add(2, o3).remove(2)Цепочек второго порядка получится уже достаточно много.Чтобы проверить эквивалентность получаемых списков можно применить к ним всеоперации, возвращающие некоторые значения, и сравнить результаты.

В данном случае этооперации size(), get(0), get(1).Таким образом, в нашем случае нужно взять стартовую цепочку X, каждую изполученных эквивалентных ей цепочек Y и сравнить их при помощи следующих проверок.X.size() == Y.size() && X.get(0) == Y.get(0) && X.get(1) == Y.get(1)Литература.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее