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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

ФГБОУ ВПО

«БРЯНСКИЙ ГОСУДАРСТВЕННЫЙ

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра «Информатика и программное обеспечение»

КУРСОВАЯ РАБОТА

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

Вариант №___

Всего листов_____

Выполнил студент гр.11-ПрИ зач. кн.№__

_______________________Ретивых К.Е.

«_____»______________2014

Руководитель

____________ к.т.н., доц. Коростелев Д.А.

«_____»______________2014 г.

Брянск 2014

Оглавление

ВВЕДЕНИЕ. 3

1 ТЕСТЫ, БАЗИРУЮЩИЕСЯ НА БЛОК-СХЕМЕ. 4

2 ПРИМЕРЫ ТЕСТОВ НА ОСНОВЕ БЛОК-СХЕМ.. 5

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

2.2 Тестирование поля ввода даты.. 6

2.3 Тестирование программы на MVC c БД MySQL. 6

ЗАКЛЮЧЕНИЕ. 7

СПИСОК ЛИТЕРАТУРЫ.. 8

ВВЕДЕНИЕ

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

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

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

ТЕСТЫ, БАЗИРУЮЩИЕСЯ НА БЛОК-СХЕМЕ

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

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

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

ПРИМЕРЫ ТЕСТОВ НА ОСНОВЕ БЛОК-СХЕМ

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

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

if (year % 400 == 0) { Console.WriteLine("Год високосный \n"); } else if (year % 100 == 0) { Console.WriteLine("Год не високосный \n"); } else if (year % 4 == 0) { Console.WriteLine("Год високосный \n"); } else Console.WriteLine("Год не високосный \n");    

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

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

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

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

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

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

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

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

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

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

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

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

public static double func(double x) { return -2.4 * x * x * x - 28.512 * x * x - 40.6272 * x + 44.928; } public static double divide(double x1, double x2, double e) /* 8 */ { double res = 0; while (Math.Abs(x2 - x1) > e) /* 9 */ { res = (x1 + x2) / 2; /* 11 */ if (func(res) >= 0) /* 12 */ x1 = res; /* 13 */ else x2 = res; /* 14 */ } return (x1 + x2 / 2.0); /* 10 */ } static void Main(string[] args) { while (true) { double x1 = 0.0, /* 1 */ x2 = 0.0, e = 0.0; string left = " ", right = " ", accurate = " "; Console.Write("Введите левую координату отрезка "); left = Console.ReadLine(); /* 2 */ Console.Write("Введите правую координату отрезка "); right = Console.ReadLine(); Console.Write("Введите точность "); accurate = Console.ReadLine(); if (!Double.TryParse(left, out x1) || !Double.TryParse(right, out x2) || !Double.TryParse(accurate, out e)) /* 3 */ Console.WriteLine("Данные введены неверно"); /* 4 */ else if (e <= 0) /* 5 */ Console.WriteLine("Точность должна быть больше нуля"); /* 6 */ else { double Answer = divide(x1, x2, e); /* 7 */ Console.Write("Ответ: {0} \n", Answer); /* 15 */ }

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

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

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

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

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

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

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

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

Наши рекомендации