Тесты, базирующиеся на блок-схеме

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    101,83 Кб
  • Опубликовано:
    2015-03-19
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Тесты, базирующиеся на блок-схеме












Тесты, базирующиеся на блок-схеме


Введение


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

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

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

1. Тесты, базирующиеся на блок-схеме


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

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

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

2. Примеры тестов на основе блок-схем

 

Пример тестирования программы о том, является ли год високосным

Рассмотрим следующий блок кода.

if (year% 400 == 0)

{. WriteLine («Год високосный \n»);

}if (year% 100 == 0)

{. WriteLine («Год не високосный \n»);

}if (year% 4 == 0)

{. WriteLine («Год високосный \n»);

}. WriteLine («Год не високосный \n»);

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

Блок-схема к этому коду выглядит следующим образом

Рисунок 1. Блок-схема «Високосный год»

Для максимальной отдачи и покрытия тестами всех ветвей блок-схемы используем следующие тестовые данные:

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

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

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

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

Пример тестирования программы о нахождении корня уравнения на отрезке с заданной точностью

Рассмотрим следующий блок кода.

public static double func (double x)

{-2.4 * x * x * x - 28.512 * x * x - 40.6272 * x + 44.928;

}static double divide (double x1, double x2, double e) /* 8 */

{res = 0;(Math. Abs (x2 - x1) > e) /* 9 */

{= (x1 + x2) / 2; /* 11 */(func(res) >= 0) /* 12 */= res; /* 13 */= res; /* 14 */

}(x1 + x2 / 2.0); /* 10 */

}void Main (string[] args)

{(true)

{x1 = 0.0, /* 1 */= 0.0,= 0.0;left = «»,= «»,= «»;. Write («Введите левую координату отрезка»); left = Console. ReadLine(); /* 2 */. Write («Введите правую координату отрезка»); right = Console. ReadLine();. Write («Введите точность»); accurate = Console. ReadLine();(! Double. TryParse (left, out x1) ||! Double. TryParse (right, out x2) ||! Double. TryParse (accurate, out e)) /* 3 */. WriteLine («Данные введены неверно»); /* 4 */

else if (e <= 0) /* 5 */. WriteLine («Точность должна быть больше нуля»); /* 6 */

else

{Answer = divide (x1, x2, e); /* 7 */. Write («Ответ: {0} \n», Answer); /* 15 */

}

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

тестирование программный уравнение

Рисунок 2. «Программа о нахождении корня уравнения»

Используем следующие тестовые данные (x1, x2, e):

·        -1; -2; -3. При таких данных программа дойдет до 5 блока, обнаружит ошибку в допустимом значении переменной, а на 6 блоке выведет информацию и закончит текущую итерацию выполнения программы.

·        30; 20; 15. При таком наборе тестовых данных программа дойдет до блока номер 9 и поскольку не будет выполняться условие, что модуль разности x2 и x1 больше точности e, программа пойдет в блок 10 и затем завершит итерацию выполнения в блоке 15.

·        30; 20; 1. При таких данных программа дойдет до блока 12, после невыполнения условия в котором она попадет в блок 14, а затем обратно в блок 9, и так до тех пор пока на 12 блоке, не выполнится условие и программа на закончит работу в блоке 13.

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

Рассмотрит следующий блок кода.

if((x1 > 999) || (y1 > 999) || (x2 > 999) || (y2 > 999) || (x3 > 999) || (y3 > 999) || (x4 > 999) || (y4 > 999) ||(x1 < -999) || (y1 < -999) || (x2 < -999) || (y2 < -999) || (x3 < -999) || (y3 < -999) || (x4 < -999) || (y4 < -999)) /* 1 */. WriteLine («Введенные данные выходят за границы требуемого диапазона»); /* 2 */

double a1 = y1 - y2,= x2 - x1,= x1 * y2 - x2 * y1,= y3 - y4,= x4 - x3,= x3 * y4 - x4 * y3;((x1 == x2 && y1 == y2) || (x3 == x4) && (y3 == y4)) /* 3 */

Console. WriteLine («Прямые вырождены в точку»); /* 4 */

else if (((a1 * b2) == (a2 * b1)) && ((a1 * c2) == (a2 * c1))) /* 5 */. WriteLine («Прямые совпадают»); /* 6 */if ((a1 * b2) == (a2 * b1)) /* 7 */. WriteLine («Прямые параллельны»); /* 8 *//* 9 */

{X = (c1 * b2 - c2 * b1) / (b1 * a2 - b2 * a1), /* 10 */= (c2 * a1 - c1 * a2) / (b1 * a2 - b2 * a1);. WriteLine («X = {0}, Y = {1}», X, Y); /* 11 */

}

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

Рисунок 3. «Программа о пересечении двух прямых на плоскости»

Используем следующие тестовые данные:

·        1001; 1002; 1003; 1004; -1001; -1002; -1003; -1004. После проверки в блоке 1, программа попадет в блок 2, где выведется сообщение о нарушении границ диапазона.

·        50, 2, 50, 2, 30, 6, 30, 6. При таком наборе тестовых данных программа зайдет в блок 3 и далее попадет в блок 4, после чего выведет информационное сообщение о вырожденности случая и закончит свою работу.

·        5; 4; 7; 4; 3; 4; 6; 4. При таких данных программа дойдет до блока 5 и оттуда попадет в блок 6, и закончит работу, выведя сообщение о том, что прямые совпадают.

·        5; 2; 5; 7; 8; 1; 8; 7. При таком наборе тестовых данных программа зайдет в блок 7, откуда попадет в блок 8 и выведя сообщение о том, что прямые параллельны, закончит работу.

·        2; 1; 6; 1; 4; 5; 4; -1. При таких данных программа дойдет до блока 9, без исключительных ситуаций, произойдет расчет точки пересечения и программа закончит работу, выведя на экран точку пересечения с координатами (4; 1).

 

 


Заключение


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

2.      Шимаров, В.А. Тестирование программ: цели и особенности инструментальной поддержки // Программное обеспечение ЭВМ / АН БССР. 1994. - Вып. 100 - с. 19-43

.        Марченко, А.Л. Основы программирования на C# 2.0 / А.Л. Марченко. - М.: БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ.ру, 2007

.        Веб-сайт: http://www.zyxware.com/articles/3436/why-error-guessing-is-significant-in-testing

.        Веб-сайт: http://www.softwaretestingsoftware.com/error-guessing/

Похожие работы на - Тесты, базирующиеся на блок-схеме

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!