Фонд оценочных средств профессионального модуля
Скачать 6.85 Mb.
|
Часть 1. Разработка тестовых наборов с использованием метода эквивалентного разбиения 1. Ознакомиться с теоретическими сведениями по стратегиям тестирования. 2. В соответствии с вариантом, подготовить исчерпывающие тесты с использованием метода эквивалентного разбиения. 3. Выполнить тестирование предложенной программы. 4. Сделать вывод о результативности тестирования с использованием стратегии "черного ящика". 5. При наличии ошибки в программе, сформулировать гипотезу для локализации ошибки. Часть 2. Разработка тестовых наборов с использованием метода анализа граничных условий 1. Ознакомиться с теоретическими сведениями по стратегиям тестирования. 2. В соответствии с вариантом, подготовить исчерпывающие тесты с использованием метода анализа граничных условий. 3. Выполнить тестирование предложенной программы. 4. Сделать вывод о результативности тестирования с использованием стратегии "черного ящика". 5. При наличии ошибки в программе, сформулировать гипотезу для локализации ошибки. Часть 3. Разработка тестовых наборов с использованием анализа причинно-следственных связей 1. Ознакомиться с теоретическими сведениями по стратегиям тестирования. 2. В соответствии с вариантом, подготовить исчерпывающие тесты с использованием метода анализа причинноследственных связей. 3. Выполнить тестирование предложенной программы. 4. Сделать вывод о результативности тестирования с использованием стратегии "черного ящика". 5. При наличии ошибки в программе, сформулировать гипотезу для локализации ошибки. Практическая работа №11 Способы анализа граничных решений Цель занятия: проанализировать методы тестирования программных продуктов, оценить различные методы с точки зрения детективности и покрывающей способности тестов Подготовка к лабораторной работе: Ознакомиться с лекционным материалом по теме «Тестирование программ» учебной дисциплины «Технология разработки программного обеспечения». Изучить соответствующие разделы в литературе, приведенной в методических описаниях к лабораторной работе. Теория: 1. Тестирование по принципу «черного ящика» Одним из способов проверки программ является стратегия тестирования, называемая стратегией «черного ящика» или тестированием с управлением по данным. В этом случае программа рассматривается как «черный ящик» и такое тестирование имеет целью выяснения обстоятельств, в которых поведение программы не соответствует спецификации. Для обнаружения всех ошибок в программе необходимо выполнить исчерпывающее тестирование, т.е. тестирование на всех возможных наборах данных. Для тех же программ, где исполнение команды зависит от предшествующих ей событий, необходимо проверить и все возможные последовательности. Очевидно, что построение исчерпывающего входного теста для большинства случаев невозможно. Поэтому, обычно выполняется »разумное» тестирование, при котором тестирование программы ограничивается прогонами на небольшом подмножестве всех возможных входных данных. Естественно при этом целесообразно выбрать наиболее подходящее подмножество (подмножество с наивысшей вероятностью обнаружения ошибок). Правильно выбранный тест подмножества должен обладать следующими свойствами: 1) уменьшать, причем более чем на единицу число других тестов, которые должны быть разработаны для достижения заранее определенной цели «приемлемого» тестирования: 2) покрывать значительную часть других возможных тестов, что в некоторой степени свидетельствует о наличии или отсутствии ошибок до и после применения этого ограниченного множества значений входных данных. Стратегия «черного ящика» включает в себя следующие методы формирования тестовых наборов: эквивалентное разбиение; анализ граничных значений; анализ причинно-следственных связей; предположение об ошибке. 1.1. Эквивалентное разбиение 1.1.1.Основу метода составляют два положения: Исходные данные программы необходимо разбить на конечное число классов эквивалентности, так чтобы можно было предположить, что каждый тест, являющийся представителем некоторого класса, эквивалентен любому другому тесту этого класса. Иными словами, если тест какого-либо класса обнаруживает ошибку, то предполагается, что все другие тесты этого класса эквивалентности тоже обнаружат эту ошибку и наоборот Каждый тест должен включать по возможности максимальное количество различных входных условий, что позволяет минимизировать общее число необходимых тестов. Первое положение используется для разработки набора «интересных» условий, которые должны быть протестированы, а второе - для разработки минимального набора тестов. Разработка тестов методом эквивалентного разбиения осуществляется в два этапа: выделение классов эквивалентности; построение тестов. 1.1.2.Выделение классов эквивалентности Классы эквивалентности выделяются путем выбора каждого входного условия (обычно это предложение или фраза из спецификации) и разбиением его на две или более групп. Для этого используется таблица следующего вида:
Правильные классы включают правильные данные, неправильные классы - неправильные данные. Выделение классов эквивалентности является эвристическим процессом, однако при этом существует ряд правил: Если входные условия описывают область 999 и два неправильных XXзначений (например «целое данное может принимать значения от 1 до 999»), то выделяют один правильный класс 1<1 и X>999. Если входное условие описывает число значений (например, «в автомобиле могут ехать от одного до шести человек»), то определяется один правильный класс эквивалентности и два неправильных (ни одного и более шести человек). Если входное условие описывает множество входных значений и есть основания полагать, что каждое значение программист трактует особо (например, «известные способы передвижения на АВТОБУСЕ, ГРУЗОВИКЕ, ТАКСИ, МОТОЦИКЛЕ или ПЕШКОМ»), то определяется правильный класс эквивалентности для каждого значения и один неправильный класс (например «на ПРИЦЕПЕ»). Если входное условие описывает ситуацию «должно быть» (например, «первым символом идентификатора должна быть буква»), то определяется один правильный класс эквивалентности (первый символ - буква) и один неправильный (первый символ - не буква). Если есть любое основание считать, что различные элементы класса эквивалентности трактуются программой неодинаково, то данный класс разбивается на меньшие классы эквивалентности. 1.1.3.Построение тестов Этот шаг заключается в использовании классов эквивалентности для построения тестов. Этот процесс включает в себя: Назначение каждому классу эквивалентности уникального номера. Проектирование новых тестов, каждый из которых покрывает как можно большее число непокрытых классов эквивалентности, до тех пор, пока все правильные классы не будут покрыты (только не общими) тестами. Запись тестов, каждый из которых покрывает один и только один из непокрытых неправильных классов эквивалентности, до тех пор, пока все неправильные классы не будут покрыты тестами. Разработка индивидуальных тестов для неправильных классов эквивалентности обусловлено тем, что определенные проверки с ошибочными входами скрывают или заменяют другие проверки с ошибочными входами. Недостатком метода эквивалентных разбиения в том, что он не исследует комбинации входных условий. 1.2. Анализ граничных значений. Граничные условия - это ситуации, возникающие на, выше или ниже границ входных классов эквивалентности. Анализ граничных значений отличается от эквивалентного разбиения следующим: Выбор любого элемента в классе эквивалентности в качестве представительного при анализе граничных условий осуществляется таким образом, чтобы проверить тестом каждую границу этого класса. При разработке тестов рассматриваются не только входные условия (пространство входов), но и пространство результатов. Применение метода анализа граничных условий требует определенной степени творчества и специализации в рассматриваемой проблеме. Тем не менее, существует несколько общих правил этого метода: Построить тесты для границ области и тесты с неправильными входными данными для ситуаций незначительного выхода за границы области, если входное условие описывает область значений (например, для области входных значений от -1.0 до +1.0 необходимо написать тесты для ситуаций -1.0, +1.0, -1.001 и +1.001). Построить тесты для минимального и максимального значений условий и тесты, большие и меньшие этих двух значений, если входное условие удовлетворяет дискретному ряду значений. Например, если входной файл может содержать от 1 до 255 записей, то проверить 0, 1, 255 и 256 записей. Использовать правило 1 для каждого выходного условия. Причем, важно проверить границы пространства результатов, поскольку не всегда границы входных областей представляют такой же набор условий, как и границы выходных областей. Не всегда также можно получить результат вне выходной области, но, тем не менее, стоит рассмотреть эту возможность. Использовать правило 2 для каждого выходного условия. Если вход или выход программы есть упорядоченное множество (например, последовательный файл, линейный список, таблица), то сосредоточить внимание на первом и последнем элементах этого множества. Попробовать свои силы в поиске других граничных условий. Анализ граничных условий, если он применен правильно, является одним из наиболее полезных методов проектирования тестов. Однако следует помнить, что граничные условия могут быть едва уловимы и определение их связано с большими трудностями, что является недостатком этого метода. Второй недостаток связан с тем, что метод анализа граничных условий не позволяет проверять различные сочетания исходных данных. 1.3. Анализ причинно-следственных связей. Метод анализа причинно-следственных связей помогает системно выбирать высокорезультативные тесты. Он дает полезный побочный эффект, позволяя обнаруживать неполноту и неоднозначность исходных спецификаций. Для использования метода необходимо понимание булевской логики (логических операторов - и, или, не). Построение тестов осуществляется в несколько этапов. 1) Спецификация разбивается на «рабочие « участки, так как таблицы причинно-следственных связей становятся громоздкими при применении метода к большим спецификациям. Например, при тестировании компилятора в качестве рабочего участка можно рассматривать отдельный оператор языка. 2) В спецификации определяются множество причин и множество следствий. Причина есть отдельное входное условие или класс эквивалентности входных условий. Следствие есть выходное условие или преобразование системы. Каждым причине и следствию приписывается отдельный номер. 3) На основе анализа семантического (смыслового) содержания спецификации строится таблица истинности, в которой последовательно перебираются все возможные комбинации причин и определяются следствия каждой комбинации причин. Таблица снабжается примечаниями, задающими ограничения и описывающими комбинации причин и/или следствий, которые являются невозможными из-за синтаксических или внешних ограничений. Аналогично, при необходимости строится таблица истинности для класса эквивалентности. Примечание. При этом можно использовать следующие приемы: По возможности выделять независимые группы причинно-следственных связей в отдельные таблицы. Истина обозначается «1». Ложь обозначается «0». Для обозначения безразличных состояний условий применять обозначение «Х», которое предполагает произвольное значение условия (0 или 1). 4) Каждая строка таблицы истинности преобразуется в тест. При этом: по возможности следует совмещать тесты из независимых таблиц; для классов эквивалентности входных условий дополнительно необходимо Недостаток метода - неадекватно исследует граничные условия. 1.4. Предположение об ошибке. Часто программист с большим опытом выискивает ошибки «без всяких методов». При этом он подсознательно использует метод «предположение об ошибке». Процедура метода предположения об ошибке в значительной степени основана на интуиции. Основная идея метода состоит в том, чтобы перечислить в некотором списке возможные ошибки или ситуации, в которых они могут появиться, а затем на основе этого списка составить тесты. Другими словами, требуется перечислить те специальные случаи, которые могут быть не учтены при проектировании. 2. Пример применения методов тестирования «черным ящиком» Пусть необходимо выполнить тестирование программы, определяющей точку пересечения двух прямых на плоскости. Попутно, она должна определять параллельность прямой одной их осей координат. В основе программы лежит решение системы линейных уравнений: Ax + By = C и Dx + Ey = F. 2.1. Используя метод эквивалентных разбиений, получаем для всех коэффициентов один правильный класс эквивалентности (коэффициент - вещественное число) и один неправильный (коэффициент - не вещественное число). Откуда можно предложить 7 тестов: 1) все коэффициенты - вещественные числа; 2)- 7) поочередно каждый из коэффициентов - не вещественное число. 2.2. По методу граничных условий: можно считать, что для исходных данных граничные условия отсутствуют (коэффициенты - «любые» вещественные числа); для результатов - получаем, что возможны варианты: единственное решение, прямые сливаются (множество решений), прямые параллельны (отсутствие решений). Следовательно, можно предложить тесты, с результатами внутри области: 0); результат - единственное решение ( = 0 и результат - множество решений (x=y=0); = 0, но результат - отсутствие решений (x0 или y0); и с результатами на границе: = 0,01; = -0,01; = 0, x = 0,01, y = 0; = 0, y = -0,01, x = 0. 2.3. По методу анализа причинно-следственных связей: Определяем множество условий. а) для определения типа прямой: - для определения типа и существования первой прямой; - для определения типа и существования второй прямой; б) для определения точки пересечения: = 0 x= 0 y= 0 Выделяем три группы причинно-следственных связей (определение типа и существования первой линии, определение типа и существования второй линии, определение точки пересечения) и строим таблицы истинности.
Такая же таблица строится для второй прямой.
Каждая строка этих таблиц преобразуется в тест. При возможности (с учетом независимости групп) берутся данные, соответствующие строкам сразу двух или всех трех таблиц. В результате к уже имеющимся тестам добавляются: проверки всех случаев расположения обеих прямых - 6 тестов по первой прямой вкладываются в 6 тестов по второй прямой так, чтобы варианты не совпадали, - 6 тестов; выполняется отдельная проверка несовпадения условия x= 0 или y= 0 (в зависимости от того, какой тест был выбран по методу граничных условий) - тест также можно совместить с предыдущими 6 тестами; 2.4. По методу предположения об ошибке добавим тест: все коэффициенты - нули. Всего получили 20 тестов по всем четырем методикам. Если еще попробовать вложить независимые проверки, то возможно число тестов можно еще сократить. (Не забудьте для каждого теста заранее указывать результат!). 3.Общая стратегия тестирования. Все методологии проектирования тестов могут быть объединены в общую стратегию. Это оправдано тем, что каждый метод обеспечивает создание определенного набора тестов, но ни один из них сам по себе не может дать полный набор тестов. Приемлемая стратегия состоит в следующем: Если спецификация состоит из комбинации входных условий, то начать рекомендуется с применения метода функциональных диаграмм. В любом случае необходимо использовать анализ граничных значений. Определить правильные и неправильные классы эквивалентности для входных и выходных данных и дополнить, если это необходимо, тесты, построенные на предыдущих шагах. Для получениядополнительных тестов рекомендуется использовать метод предположения об ошибке. Порядок выполнения работы: Ознакомиться с теоретическими сведениями по стратегиям тестирования. В соответствии с вариантом задачи, подготовить тесты по методикам стратегии»черного ящика». Предлагаемые тесты свести в таблицу.
Разработать программу. Выполнить тестирование. Занести в таблицу результаты. Сделать вывод о роли тестирования с использованием стратегии «черного ящика» и возможностях его применения. Сформулировать его достоинства и недостатки. Варианты заданий: Задача 1. Разработать программу решения уравнения , где a, b, c - любые вещественные числа. Задача 2. Разработать программу определения суммарной длины тени, которую отбрасывают на ось ОХ отрезки, параллельные этой оси и заданные координатами x начала и конца отрезка: Задача 3. Разработать программу исследования уравнений второго порядка с двумя неизвестными Ax2+2Bxy+Cy2+2Dx+2Ey+F=0. Программа должна определять вид графика: эллипс, парабола, гипербола, две пересекающиеся прямые, две параллельные прямые, две мнимые прямые. Примечание. Вид прямой втрого порядка определяется по двум дискриминантам большому: и малому . Малый дискиминант для эллипса положителен, для гиперболы отрицателен, для параболы равен нулю. Если большой дискриминант равен нулю, то линия второго порядка распадается на две прямых: для эллиптического вида - пересекающиеся мнимые прямые (точка), для гиперболического вида - пара пересекающихся действительных прямых, для параболического вида - две параллельные прямые. Задача 4. Разработать программу определения вида треугольника, заданного длинами его сторон: равносторонний, равнобедренный, прямоугольный, разносторонний. Задача 5. Разработать программу определения вида четырехугольника, заданного координатами вершин на плоскости: квадрат, прямоугольник, параллелограмм, ромб, равнобедренная трапеция, прямоугольная трапеция, трапеция общего вида, четырехугольник общего вида. Задача 6. Разработать программу, определяющую взаимное расположение прямых в пространстве: параллельны, пересекаются, скрещиваются и отдельно, расположение каждой прямой (параллельна оси, перпендикулярна плоскости или общего расположения). Прямые задаются координатами двух точек. Примечание. Две прямые лежат в одной плоскости, если , прямые параллельны если , где l=x2-x1, m=y2-y1, n=z2-z1 (верхний индекс соответствует номеру прямой). Защита отчета по лабораторной работе Отчет по лабораторной работе должен включать в себя: Задание. Алгоритм программы. Таблицу с результатами тестирования. Вывод. Защита отчета по лабораторной работе заключается в предъявлении преподавателю полученных результатов (на экране монитора), демонстрации полученных навыков и ответах на вопросы преподавателя. Практическая работа №12 Способы диаграмм причин-следствий Цель работы: изучить диаграммы причин – следствий Диаграмма причин и следствий (ДПС) представляет собой эффективное средство для анализа суммарного влияния всех факторов, воздействующих на процесс, и, следовательно, может служить как руководство для улучшения качества. Эта диаграмма носит также названия «рыбий скелет», так как отчасти напоминает такую фигуру или диаграмма Исикавы в честь японского ученого Каори Исикавы, являющегося автором этой разработки. Общая идея этого метода очевидна. Положим, что мы хотим включить свет вечером в доме, но свет не включается. Нам необходимо рассмотреть и проанализировать причины, приведшие к такой ситуации. На рис. 1 приведена диаграмма, позволяющая выявить различные факторы, обуславливающие возникновение нештатной ситуации. Подобная диаграмма и носит название диаграммы причин и следствий. Рис. 1. Диаграмма причин и следствий Обычно диаграмма конструируется следующим образом: вначале выделяются главные (по мнению разработчика) причины, оказывающие влияние на конечный эффект; затем определяются причины второго порядка и т. д. В рассматриваемом примере главными причинами являются Power, Bulb, Plug/Cord, and Lamp (Напряжение, электрическая лампочка, выключатель и светильник), а к причинам второго порядка относятся Power outage, No house current и т. д. Выбор категории причин и средств для построения диаграммы зависит от рассматриваемой задачи. Например, производство программного обеспечения для компьютеров включает различные типы ресурсов и оборудования. Такое оборудование, которое влияет на качество финального продукта, может быть разделено на некоторые общие категории: персонал (разработчики, тестеры, системные инженеры); оборудование (платформы, средства отладки); материалы (лицензированный доступный код, компиляторы); методы (выбор правильных алгоритмов и решений); измерения (эффективность контрольных операций). перечисленные факторы создают своего рода «карту», которая позволяет создать качественный выходной продукт. Для разработки таких диаграмм предложена следующая методика: создать карту потоков в той сфере, результаты деятельности которой необходимо улучшить; определить проблему, которую необходимо решить; найти все возможные причины, влияющие на проблему; расположить найденные причины рациональным образом; построить диаграмму причин и результатов, которая точно отображает все соотношения. Приведем пример построения такой диаграммы по данным, указанным в п.3. Положим, что на качество программного обеспечения влияют следующие причины: персонал, оборудование, материалы, методы. Создадим в пакете Statistica новый файл данных, состоящий из четырех переменных. Далее из опции меню Statistics перейти к Industrial Stat & Six Sigma и модулю Process Analysis (Анализ процесса). В открывшемся окне выделить Cause-effect diagrams (Диаграммы причин и следствий) (рис. 2). Рис. 2. Окно анализа процесса В новом окне выделить попарно переменные, которые будут находиться выше и ниже центральной оси диаграммы (рис. 3). Рис. 3. Окно выбора переменных Далее, используя опции рисования, изобразить в правой части диаграммы прямоугольник, внеся в него надпись «Качество», а над остальными стрелками указать соответствующие обозначения причин. В итоге получается ДПС, показанная на рис. 4. Рис. 4. Диаграмма причин и следствий Задание для практической работы: Построить диаграмму причин и следствий для ситуации, определяющей успеваемость студента. Практическая работа №13 Нисходящее тестирование интеграций Цель работы: изучить порядок нисходящего тестирования интеграций данном подходе модули объединяются движением сверху вниз по управляющей иерархии, начиная от главного управляющего модуля. Подчиненные модули добавляются в структуру или в результате поиска в глубину, или в результате поиска в ширину. Рассмотрим пример (рис.8.4). Рисунок 8.4 – Нисходящая интеграция системы Опишем шаги процесса нисходящей интеграции. Главный управляющий модуль(находится на вершине иерархии) используется как тестовый драйвер. Все непосредственно подчиненные ему модули временно замещаются заглушками. Одна из заглушек заменяется реальным модулем. Модуль выбирается поиском в ширину или в глубину. После подключения каждого модуля (и установки на нем заглушек) проводится набор тестов, проверяющих полученную структуру. если в модуле – драйвере уже нет заглушек, производится смена модуля-драйвера (поиском в ширину и ли глубину). Выполняется возврат на шаг 2 (до тех пор, пока не будет построена целая структура). Категории заглушек представлены на рис.8.5. Рисунок 8.5 – Категории заглушек Практическая работа №14 Восходящее тестирование интеграций Цель работы: изучить порядок выполнения восходящего тестирования интеграций При восходящем тестировании интеграции сборка и тестирование системы начинается с модулей – атомов, располагаемых на нижних уровнях иерархии. Модули подключаются движением снизу вверх. Подчиненные модули всегда доступны, нет необходимости в заглушках. Рассмотрим по шагам методику восходящей интеграции: Модули нижнего уровня объединяются в кластеры(группы, блоки), выполняющие определенную программную функцию. Для координации вводов-выводов тестового варианта пишется драйвер, управляющий тестированием кластеров. Тестируется кластер. Драйверы удаляются, а кластеры объединяются в структуру движением вверх. Рисунок 8.6 – Восходящие интеграция системы Пример восходящей интеграции системы приведен на рис.8.6. Различные типы драйверов приведены на рис.8.7. Рисунок 8.7 – Различные типы драйверов Тестирование правильности После окончания тестирования интеграции программная система собрана в единый корпус, интерфейсные ошибки обнаружены и откорректированы. Теперь начинается последний шаг программного тестирования – тестирование правильности. Цель – подтвердить, что функции , описанные в спецификации требований к ПС, соответствуют ожиданиям заказчика. Подтверждение правильности ПС выполняется с помощью тестов «черного ящика», которые демонстрируют соответствие требованиям. При обнаружении отклонений от спецификации требований создается список недостатков. Как правило, отклонения и ошибки, выявленные при подтверждении правильности, требуют изменения сроков разработки продукта. Важным элементом подтверждения правильности является проверка конфигурации ПС. Конфигурацией ПС называют совокупность всех элементов информации, вырабатываемых в процессе конструирования ПС. Минимальная конфигурация ПС включает следующие базовые элементы: системную спецификацию; план программного проекта; спецификацию требований к ПС, работающий или бумажный макет; предварительное руководство пользователя; спецификация проектирования; листинги исходных текстов программ; план и методику тестирования, тестовые варианты и полученные результаты; руководство по работе и инсталляции; exe-код выполняемой программы; описание базы данных; руководство пользователя по настройке; документы сопровождения; стандарты и методики конструирования ПС. Практическая работа №15 Анализ предметной области Цель работы: изучить методологию объектно-ориентированного моделирования и получить практические навыки в моделировании предметной области с помощью UML. 1> |