Главная страница
Навигация по странице:

  • Практическая работа №7 Разработка ПП с использованием объектно – ориентированного программирования Цель

  • Практическая работа №8 Разработка справочной системы

  • Контекстная часть справочной системы

  • Практическая работа №9 Тестирование методом «белого ящика»

  • Практическая работа №10 Тестирование по методу «черного ящика»

  • Краткие сведения из теории

  • Выделение классов эквивалентности

  • Анализ граничных значений

  • Анализ причинно-следственных связей

  • Фонд оценочных средств профессионального модуля


    Скачать 6.85 Mb.
    НазваниеФонд оценочных средств профессионального модуля
    Дата10.02.2022
    Размер6.85 Mb.
    Формат файлаdocx
    Имя файлаphpyoZamf_FOS-03.docx
    ТипПротокол
    #357630
    страница5 из 16
    1   2   3   4   5   6   7   8   9   ...   16

    Задания для самостоятельного выполнения

    Составить и записать алгоритм решения задачи в графическом и словесно-формульном виде. Задание выполняется по вариантам: 1 вариант выполняет нечетные номера, 2 вариант все четные.

    1. Даны числа x, y. Проверить истинность высказывания: «Точка с координатами (x ,y ) лежит во второй координатной четверти».

    2. Даны числа x , y . Проверить истинность высказывания: «Точка с координатами (x ,y ) лежит в четвертой координатной четверти».

    3. Даны два целых числа: A , B . Проверить истинность высказывания: «Справедливы неравенства A > 2 и B < 3».

    4. Даны два целых числа: A, B. Проверить истинность высказывания: «Справедливы неравенства A > 0 или B < —2».

    5. Даны три целых числа: A, B, C. Проверить истинность высказывания: «Справедливо двойное неравенство A < B < C».

    6. Даны три целых числа: A , B, C. Проверить истинность высказывания: «Число B находится между числами A и C».

    7. Даны три целых числа: A , B , C. Проверить истинность высказывания: «Каждое из чисел A , B, C положительное».

    8. Даны три целых числа: A , B , C. Проверить истинность высказывания: «Хотя бы одно из чисел A , B , C положительное».

    9. Даны три целых числа: A , B , C. Проверить истинность высказывания: «Ровно одно из чисел A , B , C положительное».

    10. Даны три целых числа: A, B, C. Проверить истинность высказывания: «Ровно два из чисел A, B, C являются положительными».

    11. Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара совпадающих».

    12. Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара взаимно противоположных».

    13. Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую последовательность».

    14. Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют убывающую последовательность».

    15. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.

    16. Даны три целых числа. Найти количество положительных чисел в исходном наборе.

    17. Даны три целых числа. Найти количество отрицательных чисел в исходном наборе.

    18. Даны два числа. Если их значения не равны, то присвоить каждому сумму этих значений, а если равны, то присвоить числам нулевые значения. Вывести новые значения Aи B .

    19. Даны два числа. Если их значения не равны, то присвоить каждому большее из этих значений, а если равны, то присвоить числам нулевые значения. Вывести новые значения A и B .

    20. Даны три числа. Найти наименьшее из них.

    21. Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и наибольшим).

    22. Даны три числа. Вывести вначале наименьшее, а затем наибольшее из данных чисел.

     

    Контрольные вопросы

    1. Способы представления алгоритма

    2. Что такое разветвляющийся алгоритм?

    3. Как в блок-схемах изображаются ветвления?

    4. Что такое простое условие?

    5. Что такое составное условие?
    Практическая работа №7

    Разработка ПП с использованием объектно – ориентированного программирования

    Цель:

    ·       изучение свойств ООП

    ·       формирование навыков объявления объектов

    ·       формирование навыков объявления дочерних объектов

    ·       закрепление навыков использования пользовательских процедур в программах

     

    Задание: опишите тип объектов – равносторонних треугольников с параметрами: координаты центра, сторона, цвет. Пусть методами будут А) порождение треугольника; Б) изменение его цвета; В) изменение его размера. Опишите массив из 50 объектов, используя его в программе, порождающей 50 разноцветных треугольников со случайным расположением, "пульсирующих”. Добавьте объект типа закрашенный треугольник, дочерний для типа треугольник. Объекты типа закрашенный треугольник должны "стихийно” то увеличиваться, то уменьшаться.








    uses graph, crt;

    type

                   TRect = object

                   private

                                  x, y, a: integer;

                                  color:   word;

                   public

                                  procedure init(ax, ay, aa: integer; acolor: word);

                                  procedure draw(acolor: word);

                                  procedure show;

                                  procedure hide;

                                  procedure modify(dr: integer);

                   end;

                   TOrange = object(TRect)

                                  procedure draw(acolor: word);

                                  procedure show;

                                  procedure hide;

                                  procedure modify(dr: integer);

                   end;

     

    procedure TRect.init;

    begin

                   x:=ax;   y:=ay;

                   a:=aa;

                   color:=acolor;

    end;

    procedure TRect.draw;

    begin

                   SetColor(acolor);

            MoveTo(x,y);

            LineTo(Round(x-a/2),y+a);

            LineTo(Round(x+a/2),y+a);

            LineTo(x,y);

    end;

    procedure TRect.show;

    begin

                   draw(color);

    end;

    procedure TRect.hide;

    begin

                   draw(getbkcolor);

    end;

    procedure TRect.modify;

    begin

                   hide;

                   if dr = 1

                   then inc(a)

                   else dec(a);

                   show;

    end;

    procedure TOrange.draw;

    begin

                   SetColor(acolor);

            MoveTo(x,y);

            LineTo(Round(x-a/2),y+a);

            LineTo(Round(x+a/2),y+a);

            LineTo(x,y);

                   SetFillStyle(SolidFill, acolor);

                   FloodFill(x, y, acolor);

    end;
    procedure TOrange.show;

    begin

                   draw(color);

    end;

    procedure TOrange.hide;

    begin

                   draw(getbkcolor);

    end;

    procedure TOrange.modify;

    begin

                   if dr = 1

                   then begin

                                  inc(a);

                                  show;

                   end else

                                  if a <> 1

                                  then begin

                                                hide;

                                                dec(a);

                                                show;

                                  end;

    end;

    procedure InitGr;

    var

                   d, r, err: integer;

    begin

                   clrscr;

                   d:=detect;

                   InitGraph(d, r, '');

                   err:=GraphResult;

                   if err <> 0

                   then begin

                                  writeln('Ошибка инициализации графического режима');

                                  readkey;

                                  halt;

                   end;

    end;

     

    const

                   N = 50;

                   TIME = 10;

    var

                   circle_arr: array [1 .. N] of TRect;

                   orange_arr: array [1 .. N] of TOrange;

                   i: 1 .. N;

    begin

                   InitGr;

                   randomize;

                   for i:=1 to N do begin

                                  circle_arr[i].init(random(GetMaxX), random(GetMaxY), 1, random(GetMaxColor));

                                  orange_arr[i].init(random(GetMaxX), random(GetMaxY), 1, random(GetMaxColor));

                   end;

                   repeat

                                  delay(TIME);

                                  i:=random(N)+1;

                                  circle_arr[i].modify(random(2));

                                  orange_arr[i].modify(random(2));

                   until keypressed;

                   CloseGraph;

    end.
    Практическая работа №8

    Разработка справочной системы

    Цель работы

     изучение нормативно правовой документации,

    регламентирующей разработку документации на программные

    средства.

     изучение структуры справочной системы ПС.

     закрепление навыков разработки справочной системы

    ПС.

    Краткие сведения из теории

    Общие сведения о структуре справочной системы

    В справочную систему следует включать разделы, ознакомление с которыми

    предшествует работе с программой: системные требования, установка программы и т. п.

    Когда пользователь запрашивает справку, например, нажатием на клавишу F1, на экран автоматически выводится раздел, связанный с активным элементом. Таковым может

    оказаться верхнее диалоговое окно, элемент интерфейса, на котором находится фокус ввода, элемент интерфейса, на который пользователь навел указатель мыши и т. д.

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

    Возможно включение в справочные системы мультимедийный контент: звуковые и видео-файлы, а также Flash.

    Полноценная справочная система состоит, по крайней мере, из двух частей: общей и контекстной. Более того, материал, который из-за большого объема невыгодно печатать

    на бумаге или неудобно искать в линейном документе, нередко включают только в справочную систему.

    Общая часть справочной системы

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

    Таким образом получается электронная энциклопедия по программе или программно-аппаратному комплексу. Удобство ее еще и в том, что большинство форматов справки (и, следовательно, большинство просмотровых программ) позволяет снабдить справку удобными средствами навигации и поиска, в том числе, полнотекстового.

    Контекстная часть справочной системы

    В контекстную часть справочной системы включают:

     описание каждого режима и диалогового окна;

     подсказки по элементам главного окна, окон

    документов и диалоговых окон;

     подсказки по пунктам меню и кнопкам панелей

    инструментов;

     подсказки по употребляемым терминам.

    Разделы контекстной части связывают с определенными элементами интерфейса, что требует координации, (как правило, несложной) действий автора справки и разработчиков программы.

    Методика и стиль изложения информации в справочной системе

    На практике справочная система часто представляет собой

    текст руководства пользователя, представленный в определенном электронном формате.

    Как правило, справочная система — это гипертекст.

    Гипертекст не предполагает последовательного чтения.

    Читатель может выполнить поиск или нажать на клавишу F1 и в результате получить доступ к произвольному (с точки зрения автора) разделу гипертекста.

    Составляя тот или иной раздел, автор не может рассчитывать на то, что читатель уже усвоил материал предшествующих разделов или хотя бы осведомлен об их

    существовании. Поэтому следует стремиться к тому, чтобы каждый раздел представлял собой самодостаточную статью, при ограниченном объеме в понятную пользователю в отрыве от остального материала.

    Таким образом, раздел должен быть чем-то вроде статьи в энциклопедии или обстоятельного ответа на заданный кем-то вопрос. Это может достигаться, в частности, более активным дублированием текста (определений, концепций), чем в линейном документе.

    Если полное понимание раздела невозможно без ознакомления с некоторыми другими разделами справки, на них должны быть сделаны ссылки.

    Глоссарий – перечень уникальных понятий, используемых в приложении и его интерфейсе. В качестве примера таковых могут выступать названия элементов меню, окон, режимов, текст командных кнопок и т.д.

    Недопустимо наличие различных терминов для определения одного и того же понятия. Описание понятий должно отвечать промышленному руководству, соответствующему выбранной платформе (MS Microsoft).

    Задания к работе

    1. Составить схему меню программы, определить количество режимов работы, количество диалоговых окон.

    2. В тетради для практических работ составить список основных терминов предметной области для определения глоссария приложения.

    3. Определить разделы, которые должны быть включены в содержание и предметный указатель справочной системы.

    4. С использованием текстового редактора подготовить 5-6 статей по каждому разделу справочной системы: изложение алгоритмов выполнения пользователем отдельных функций (процедурная справка). Размер статьи - 1 -2 экранных страницы.

    5. Добавить описания общей концепции приложения, ее функциональности в целом, а также отдельных функций, предоставляемых пользователю для выполнения (обзорная

    справка).

    6. Сформировать файл тем справок в виде файла *.rtf .

    7. Сформировать файл справочной системы *.hlp, создав

    файл Проекта справки и откомпилировав его средствами

    программы MS Help Workshop (HCRTF).

    8. Используя те же средства создания справочной

    системы, сформировать файл содержания *.cnt

    Практическая работа №9

    Тестирование методом «белого ящика»

    Цель работы: изучить методы тестирования логики программы, формализованные описания результатов тестирования и стандарты по составлению схем программ.

    Подготовка к лабораторной работе

    1. Ознакомиться с лекционным материалом по теме «Этапы разработки программного обеспечения. Тестирование и отладка программных продуктов» учебной дисциплины «Технология разработки программного обеспечения».

    2. Изучить соответствующие разделы в изданиях [1, 2, 7, 8, 9, 37, 45].

    3. Ознакомиться с разд. 5.2 данного пособия.

    Теоретическая часть. Виды тестирования

    Тестирование программного обеспечения включает в себя целый комплекс действий, аналогичных последовательности процессов разработки программного обеспечения. В него входят [7]:

    • постановка задачи для теста;

    • проектирование теста;

    • написание тестов;

    • тестирование тестов;

    • выполнение тестов;

    • изучение результатов тестирования.

    Наиболее важным является проектирование тестов. Существуют разные подходы к проектированию тестов.

    Первый состоит в том, что тесты проектируются на основе внешних спецификаций программ и модулей либо спецификаций сопряжения модуля с другими модулями, программа при

    этом рассматривается как «черный ящик». Смысл теста заключается в том, чтобы проверить, соответствует ли программа внешним спецификациям. При этом содержание модуля не имеет значения. Такой подход получил название — стратегия «черного ящика».

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

    Ни один из этих подходов не является оптимальным. Реализация тестирования методом «черного ящика» сводится к проверке всех возможных комбинаций входных данных. Невозможно протестировать программу, подавая на вход бесконечное множество значений, поэтому ограничиваются определенным набором данных. При этом исходят из максимальной отдачи теста по сравнению с затратами на его создание. Она измеряется вероятностью того, что тест выявит ошибки, если они имеются в программе. Затраты измеряются временем и стоимостью подготовки, выполнения и проверки результатов теста.

    Тестирование методом «белого ящика» также не дает 100%-ной гарантии того, что модуль не содержит ошибок. Даже если предположить, что выполнены тесты для всех ветвей алгоритма, нельзя с полной уверенностью утверждать, что программа соответствует ее спецификациям. Например, если требовалось написать программу для вычисления кубического корня, а программа фактически вычисляет корень квадратный, то реализация будет совершенно неправильной, даже если проверить все пути. Вторая проблема — отсутствующие пути. Если программа реализует спецификации не полностью (например, отсутствует такая специализированная функция, как проверка на отрицательное значение входных данных программы вычисления квадратного корня), никакое тестирование существующих путей не выявит такой ошибки. И наконец, проблема зависимости результатов тестирования от входных данных. Одни данные будут давать правильные результаты, а другие нет. Например, если для определения равенства трех чисел программируется выражение вида:

    ? (А + В+ С)/Ъ=А,

    то оно будет верным не для всех значений А, В и С (ошибка возникает в том случае, когда из двух значений В или С одно больше, а другое на столько же меньше А). Если концентрировать внимание только на тестировании путей, нет гарантии, что эта ошибка будет выявлена.

    Таким образом, полное тестирование программы невозможно, т. е. никакое тестирование не гарантирует полное отсутствие ошибок в программе. Поэтому необходимо проектировать тесты таким образом, чтобы увеличить вероятность обнаружения ошибки в программе.

    Стратегия «белого ящика»

    Существуют следующие методы тестирования по принципу «белого ящика»:

    • покрытие операторов;

    • покрытие решений;

    • покрытие условий;

    • покрытие решений/условий;

    • комбинаторное покрытие условий.

    Метод покрытия операторов

    Целью этого метода тестирования является выполнение каждого оператора программы хотя бы один раз.

    Пример.

    Если для тестирования задать значения переменных А = 2, В= О, Х=3, будет реализован путь асе, т. е. каждый оператор программы выполнится один раз (рис. Л5.1, а). Но если внести в алгоритм ошибки — заменить в первом условии and на or, а во втором Х> 1 на Х< 1 (рис. Л5.1, б), ни одна ошибка не будет обнаружена (табл. Л5.1). Кроме того, путь abd вообще не будет охвачен тестом, и если в нем есть ошибка, она также не будет обнаружена. В табл. Л5.1 ожидаемый результат определяется по блок-схеме на рис. Л5.1, а, а фактический — по рис. Л5.1, б.

    Как видно из этой таблицы, ни одна из внесенных в алгоритм ошибок не будет обнаружена.

    Таблица Л5.1. Результат тестирования методом покрытия операторов

    Тест

    Ожидаемый

    результат

    Фактический

    результат

    Результат

    тестирования

    А = 2, В= 0, Х=Ъ

    Х= 2,5

    Х= 2,5

    Неуспешно

     

    а б

    Рис. Л5.1. Пример алгоритма программы: а — правильный; б — с ошибкой

    Метод покрытия решений (покрытия переходов)

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

    Для программы, приведенной на рис. Л5.1, покрытие решений может быть выполнено двумя тестами, покрывающими пути {асе, аЬс!}, либо {асс1, аЬе}. Для этого выберем следующие исходные данные; {А = 3, В= О, Х=3} — в первом случае и {А = 2, В= 1, Х= 1} — во втором. Однако путь, где X не меняется, будет проверен с вероятностью 50 %: если во втором условии вместо условия Х> 1 записано Х<, то ошибка не будет обнаружена двумя тестами.

    Результаты тестирования приведены в табл. Л5.2.

    Таблица Л5.2. Результат тестирования методом покрытия решений

    Тест

    Ожидаемый

    результат

    Фактический

    результат

    Результат

    тестирования

    /1 = 3, В= 0, Х=2

    X = 1

    X = 1

    Неуспешно

    А = 2, В = 1, Х= 1

    Х=2

    *

    II

    Успешно

    Метод покрытия условий

    Этот метод может дать лучшие результаты по сравнению с предыдущими. В соответствии с методом покрытия условий записывается число тестов, достаточное для того, чтобы все возможные результаты каждого условия в решении выполнялись, по крайней мере, один раз.

    В рассматриваемом примере имеем четыре условия: {А> 1, 5=0},  = 2, Х> 1}. Следовательно, требуется достаточное число тестов, такое, чтобы реализовать ситуации, где А > 1, А < 1, 5 = 0 и й#0 в точке а и /1 = 2, А *2, Х> и Т< 1 в точке Ь. Тесты, удовлетворяющие критерию покрытия условий (табл. Л5.3), и соответствующие им пути:

    а) А = 2, 5 = 0, Х=4 асе;

    б) А = 1, 5= 1, Х=0 аЬс!.

    Таблица Л5.3. Результаты тестирования методом покрытия условий

    Тест

    Ожидаемый

    Фактический

    Результат

    результат

    результат

    тестирования

    /1 = 2, В= 0, Х= 4

    *=з

    Х= 3

    Неуспешно

    А= 1, В= 1, Х=0

    *=0

    Х= 1

    Успешно

    Метод покрытия решений/условий

    Критерий покрытия решений/условий требует такого достаточного набора тестов, чтобы все возможные результаты каждого условия выполнялись по крайней мере один раз, все результаты каждого решения выполнялись по крайней мере один раз и, кроме того, каждой точке входа передавалось управление по крайней мере один раз.

    Недостатки метода:

    • не всегда можно проверить все условия;

    • невозможно проверить условия, которые скрыты другими условиями;

    • недостаточная чувствительность к ошибкам в логических выражениях.

    Так, в рассматриваемом примере два теста метода покрытия условий

    а) А = 2, В = О, Х= 4 асе;

    б) А= 1, В= 1, Х=0 аЬс!

    отвечают и критерию покрытия решений/условий. Это является следствием того, что одни условия приведенных решении скрывают другие условия в этих решениях. Так, если условие А > 1 будет ложным, транслятор может не проверять условия В= О, поскольку при любом результате условия В= 0 результат решения ((А > )&(В=0)) примет значение ложь. То есть в варианте на рис. Л5.1 не все результаты всех условий выполнятся в процессе тестирования.

    Рассмотрим реализацию того же примера на рис. Л5.2. Наиболее полное покрытие тестами в этом случае осуществляется



    ' ’



    так, чтобы выполнялись все возможные результаты каждого простого решения. Для этого нужно покрыть пути aceg (тест А = 2, В= О, Х= 4), асё/к (тест А = 3, В = 1, Х= 0), аЬ/к (тест А = 0, В= 0, Х= 0), аЬр (тест Л = 0, В = 0, Х= 2).

    Протестировав алгоритм на рис. Л5.2, нетрудно убедиться в том, что критерии покрытия условий и критерии покрытия решений/условий недостаточно чувствительны к ошибкам в логических выражениях.

    Метод комбинаторного покрытия условий

    Критерий комбинаторного покрытия условий удовлетворяет также и критериям покрытия решений, покрытия условий и покрытия решений/условий.

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

    1. А> 1, В= 0. 5. А = 2, Х> 1.

    2. А > 1, Вф 0.

    3. А< 1, В= 0.

    4. А< 1, Вф 0.

    6. А = 2, 1.

    7. Аф2, Х> 1.

    8. Аф2, Х< 1.

    Для того чтобы протестировать эти комбинации, необязательно использовать все 8 тестов. Фактически они могут быть покрыты четырьмя тестами (табл. Л5.4):

    А = 2, В = 0, Х=4 (покрывает 1,5};

    А = 2, В = 1, Х= 1 (покрывает 2,6};

    • А = 0,5, В= 0, Х= 2 (покрывает 3, 7};

    А = I, В = 0, Х= (покрывает 4, 8}.

    Таблица Л5.4. Результаты тестирования методом комбинаторного покрытия условий

    Тест

    Ожидаемый

    результат

    Фактический

    результат

    Результат

    тестирования

    А-2, В=0, X- 4

    *=з

    *=з

    Неуспешно

    А = 2, В= 1, Х= 1

    Х= 2

    Г)

    СЧ

    II

    Успешно

    А = 0,5, В= 0, Х=2

    Х=3

    Х= 4

    Успешно

    А= 1, ?=0, *= 1

    Х= 1

    Х= 1

    Неуспешно

    Порядок выполнения работы

    1. Спроектировать тесты по принципу «белого ящика» для программы, разработанной в лабораторной работе № 4. Использовать схемы алгоритмов, разработанные и уточненные в лабораторных работах № 2, 3.

    2. Выбрать несколько алгоритмов для тестирования и обозначить буквами или цифрами ветви этих алгоритмов.

    3. Выписать пути алгоритма, которые должны быть проверены тестами для выбранного метода тестирования.

    4. Записать тесты, которые позволят пройти по путям алгоритма.

    5. Протестировать разработанную вами программу. Результаты оформить в виде таблиц (см. табл. Л5.1— Л5.4).

    6. Проверить все виды тестов и сделать выводы об их эффективности.

    7. Оформить отчет по лабораторной работе.

    8. Сдать и защитить работу.

    Защита отчета по лабораторной работе

    Отчет по лабораторной работе должен состоять из:

    1. Постановки задачи.

    2. Блок-схемы программ.

    3. Тестов.

    4. Таблиц тестирования программы.

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

    Контрольные вопросы

    1. Охарактеризуйте этап реализации и тестирования программного продукта.

    2. Какие существуют виды тестирования?

    3. Назовите критерии выбора тестов.

    4. Перечислите свойства тестов.

    5. Приведите критерии надежности программ.

    6. В чем заключается оценка надежности программ?

    Практическая работа №10

    Тестирование по методу «черного ящика»

    Цель работы:приобретение навыков разработки тестовых заданий по методу "черного ящика".

    Краткие сведения из теории

    Одним из способов проверки программ является стратегия тестирования, называемая стратегией "черного ящика" или тестированием с управлением по данным. В этом

    случае программа рассматривается как "черный ящик" и такое тестирование имеет целью выяснения обстоятельств, в которых поведение программы не соответствует

    спецификации.

    Стратегия "черного ящика" включает в себя следующие методы формирования тестовых наборов:

    1. эквивалентное разбиение;

    2. анализ граничных значений;

    3. анализ причинно-следственных связей;

    4. предположение об ошибке.

    1. Эквивалентное разбиение

    Основу метода составляют положения:

    1. Исходные данные программы необходимо разбить на конечное число классов эквивалентности.

    2. Каждый тест должен включать по возможности максимальное количество различных входных условий, что позволяет минимизировать общее число необходимых тестов.

    Первое положение используется для разработки набора "интересных" условий, которые должны быть протестированы, а второе - для разработки минимального набора тестов.

    Разработка тестов методом эквивалентного разбиения осуществляется в два этапа:

     выделение классов эквивалентности;

     построение тестов.

    Выделение классов эквивалентности

    Классы эквивалентности выделяются путем выбора каждого входного условия (обычно это предложение или фраза из спецификации) и разбиением его на две или более групп

    Если есть основание считать, что различные элементы класса эквивалентности трактуются программой неодинаково, то данный класс разбивается на меньшие классы

    эквивалентности.

    Построение тестов

    Этот шаг заключается в использовании классов эквивалентности для построения тестов. Этот процесс включает в себя:

     Назначение каждому классу эквивалентности уникального номера.

     Проектирование новых тестов, каждый из которых покрывает как можно большее число непокрытых классов эквивалентности, до тех пор, пока все правильные классы не будут покрыты (только не общими) тестами.

     Запись тестов, каждый из которых покрывает один и только один из непокрытых неправильных классов эквивалентности, до тех пор, пока все неправильные классы не будут покрыты тестами.

    Разработка индивидуальных тестов для неправильных классов эквивалентности обусловлено тем, что определенные проверки с ошибочными входами скрывают или заменяют другие проверки с ошибочными входами. Недостатком метода эквивалентных разбиения в том, что он не исследует комбинации входных условий.

    Анализ граничных значений

    Граничные условия - это ситуации, возникающие на, выше или ниже границ входных классов эквивалентности.

    Применение метода анализа граничных условий требует определенной степени творчества и специализации в рассматриваемой проблеме. Тем не менее, существует

    несколько общих правил этого метода:

    1. Построить тесты для границ области и тесты с неправильными входными данными для ситуаций незначительного выхода за границы области, если входное условие описывает область значений (например, для области входных значений от -1.0 до +1.0 необходимо написать тесты для ситуаций -1.0, +1.0, -1.001 и +1.001).

    2. Построить тесты для минимального и максимального значений условий и тесты, большие и меньшие этих двух значений, если входное условие удовлетворяет дискретному ряду значений. Например, если входной файл может содержать от 1 до 255 записей, то проверить 0, 1, 255 и 256 записей.

    3. Использовать правило 1 для каждого выходного условия.

    4. Использовать правило 2 для каждого выходного условия.

    5. Если вход или выход программы есть упорядоченное множество (например, последовательный файл, линейный список, таблица), то сосредоточить внимание на первом и последнем элементах этого множества.

    6. Попробовать свои силы в поиске других граничных

    условий.

    Анализ причинно-следственных связей

    Метод анализа причинно-следственных связей помогает системно выбирать высокорезультативные тесты. Он дает полезный побочный эффект, позволяя обнаруживать неполноту и неоднозначность исходных спецификаций.

    Для использования метода необходимо понимание булевской логики (логических операторов - и, или, не).

    Построение тестов осуществляется в несколько этапов.

    1. Спецификация разбивается на «рабочие » участки, так как таблицы причинно-следственных связей становятся громоздкими при применении метода к большим спецификациям.

    2. В спецификации определяются множество причин и множество следствий. Причина есть отдельное входное условие или класс эквивалентности входных условий. Следствие есть выходное условие или преобразование системы. Каждым причине и следствию приписывается отдельный номер.

    3. На основе анализа семантического (смыслового) содержания спецификации строится таблица истинности, в которой последовательно перебираются все возможные комбинации причин и определяются следствия каждой комбинации причин.

    4. Каждая строка таблицы истинности преобразуется в тест.

    Предположение об ошибке

    Часто программист с большим опытом выискивает ошибки "без всяких методов". При этом он подсознательно использует метод "предположение об ошибке".

    Процедура метода предположения об ошибке в значительной степени основана на интуиции.

    Основная идея метода состоит в том, чтобы перечислить в некотором списке возможные ошибки или ситуации, в которых они могут появиться, а затем на основе этого списка составить тесты.

    Другими словами, требуется перечислить те специальные случаи, которые могут быть не учтены при проектировании.

    Общая стратегия тестирования

    Все методологии проектирования тестов могут быть объединены в общую стратегию. Это оправдано тем, что каждый метод обеспечивает создание определенного набора

    тестов, но ни один из них сам по себе не может дать полный набор тестов. Приемлемая стратегия состоит в следующем:

    1. Если спецификация состоит из комбинации входных условий, то начать рекомендуется с применения метода функциональных диаграмм.

    2. В любом случае необходимо использовать анализ граничных значений.

    3. Определить правильные и неправильные классы эквивалентности для входных и выходных данных и дополнить, если это необходимо, тесты, построенные на предыдущих шагах.

    4. Для получения дополнительных тестов рекомендуется использовать метод предположения об ошибке.

    Задание к работе

    1   2   3   4   5   6   7   8   9   ...   16


    написать администратору сайта