теория_3 (1035082)

Файл №1035082 теория_3 (Методичка и инструкции на ЛР №8)теория_3 (1035082)2017-12-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

7.3. Тестовое окружение

7.3.1Теоретическое вступление

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

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

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

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



Рис. 7.1. Обобщенная схема среды тестирования

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

  1. Вызов тестируемого модуля

  2. 1 + передача в тестируемый модуль входных значений и прием результатов

  3. 2 + вывод выходных значений

  4. 3 + протоколирование процесса тестирования и ключевых точек программы

Заглушки могут выполнять следующие функции:

  1. Не производить никаких действий (такие заглушки нужны для корректной сборки тестируемого модуля и

  2. Выводить сообщения о том, что заглушка была вызвана

  3. 1 + выводить сообщения со значениями параметров, переданных в функцию

  4. 2 + возвращать значение, заранее заданное во входных параметрах теста

  5. 3 + выводить значение, заранее заданное во входных параметрах теста

  6. 3 + принимать от тестируемого ПО значения и передавать их в драйвер

Тестовое окружение для объектно-ориентированного ПО выполняет те же самые функции, что и для структурных программ (на процедурных языках). Однако, оно имеет некоторые особенности, связанные с применением наследования и инкапсуляции.

Если при тестировании структурных программ минимальным тестируемым объектом является функция, то в объектно-ориентированным ПО минимальным объектом является класс. При применении принципа инкапсуляции все внутренние данные класса и некоторая часть его методов недоступна извне. В этом случае тестировщик лишен возможности обращаться в своих тестах к данным класса и произвольным образом вызывать методы; единственное, что ему доступно – вызывать методы внешнего интерфейса класса.

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

  1. Драйвер создает один или больше объектов тестируемого класса, все обращения к объектам происходят только с использованием их внешнего интерфейса. Текст драйвера в этом случае представляет собой т.н. тестирующий класс, который содержит по одному методу для каждого тестового примера. Процесс тестирования заключается в последовательном вызове этих методов. Вместо заглушек в состав тестового окружения входит программный код реальной системы, соответственно, отсутствует изоляция тестируемого класса. Именно такой подход к тестированию принят сейчас в большинстве методологий и сред разработки. Его классическое название – unit testing (тестирование модулей).

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

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

  4. Используются специальные средства доступа к закрытым данным и методам класса на уровне объектного или исполняемого кода – скрипты отладчика или accessors в Visual Studio.

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

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

7.3.2 На примере "Калькулятора"

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

На этом семинаре мы сами напишем простой тестовый драйвер на C# для тестирования функций "Калькулятора", используя спецификацию второго семинара.

Замечание. Код программы слегка изменен для упрощения компиляции отдельных модулей. Так, исключена работа с переменной Program.res, а класс CalcClass объявлен как public.

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

  1. Оба входных параметра принадлежат допустимой области, и выходное значение принадлежит допустимой области.

  2. Первый входной параметр принадлежит допустимой области, второй не принадлежит допустимой области

  3. Первый входной параметр не принадлежит допустимой области, второй принадлежит допустимой области

  4. Оба входных параметров принадлежат допустимой области, а значение функции не принадлежит допустимой области.

Составим программу:

private void buttonStartDel_Click(object sender, EventArgs e)

{

try

{

richTextBox1.Text = "";

richTextBox1.Text += "Test Case 1\n";

richTextBox1.Text += "Входные данные: a= 78508, b = -304\n";

richTextBox1.Text += "Ожидаемый результат: res = 78204 &&

error = \"\""+"\n";

int res = CalcClass.Add(78508, -304);

string error = CalcClass.lastError;

richTextBox1.Text += "Код ошибки: " + error + "\n";

richTextBox1.Text += "Получившийся результат: " +"res = "+

res.ToString() +" error = "+error.ToString() +"\n";

if (res == 78204 && error == "")

{

richTextBox1.Text += "Тест пройден\n\n";

}

else

{

richTextBox1.Text += "Тест не пройден\n\n";

}

}

catch (Exception ex)

{

richTextBox1.Text += "Перехвачено исключение: " +

ex.ToString() + "\nТест не пройден.\n";

}

try

{

richTextBox1.Text += "Test Case 2\n";

richTextBox1.Text += "Входные данные: a= -2850800078, b =

3000000000\n";

richTextBox1.Text += "Ожидаемый результат: res = 0 && error =

\"Error 06\"\n";

int res = CalcClass.Add(-2850800078, 3000000000);

string error = CalcClass.lastError;

richTextBox1.Text += "Код ошибки: " + error + "\n";

richTextBox1.Text += "Получившийся результат: " + "res = " +

res.ToString() + " error = " + error.ToString() + "\n";

if (res == 0 && error == "Error 06")

{

richTextBox1.Text += "Тест пройден\n\n";

}

else

{

richTextBox1.Text += "Тест не пройден\n\n";

}

}

catch (Exception ex)

{

richTextBox1.Text += "Перехвачено исключение: " +

ex.ToString() + "\nТест не пройден.\n";

}

try

{

richTextBox1.Text += "Test Case 3\n";

richTextBox1.Text += "Входные данные: a= 3000000000, b = -

2850800078\n";

richTextBox1.Text += "Ожидаемый результат: res = 0 && error =

\"Error 06\"\n";

int res = CalcClass.Add(3000000000, -2850800078);

string error = CalcClass.lastError;

richTextBox1.Text += "Код ошибки: " + error+"\n";

richTextBox1.Text += "Получившийся результат: " + "res = " +

res.ToString() + " error = " + error.ToString() + "\n";

if (res == 0 && error == "Error 06")

{

richTextBox1.Text += "Тест пройден\n\n";

}

else

{

richTextBox1.Text += "Тест не пройден\n\n";

}

}

catch (Exception ex)

{

richTextBox1.Text += "Перехвачено исключение: " +

ex.ToString() + "\nТест не пройден.\n";

}

try

{

richTextBox1.Text += "Test Case 4\n";

richTextBox1.Text += "Входные данные: a= 2000000000, b =

2000000000\n";

richTextBox1.Text += "Ожидаемый результат: res = 0 && error =

\"Error 06\"\n";

int res = CalcClass.Add(2000000000, 2000000000);

string error = CalcClass.lastError;

richTextBox1.Text += "Код ошибки: " + error +"\n";

richTextBox1.Text += "Получившийся результат: " + "res = " +

res.ToString() + " error = " + error.ToString() + "\n";

if (res == 0 && error == "Error 06")

{

richTextBox1.Text += "Тест пройден\n\n";

}

else

{

richTextBox1.Text += "Тест не пройден\n\n";

}

}

catch (Exception ex)

{

richTextBox1.Text += "Перехвачено исключение: " +

ex.ToString() + "\nТест не пройден.\n";

}

}

Листинг 7.1. Текст программы

Каждый тестовый пример находится внутри блока try-catch для того, чтобы перехватить любое сгенерированное исключение внутри методов Add().

При этом файл CalcClass.dll, в котором и реализованы все математические методы, необходимо добавить в References проекта.

Проведем тестирование и получим следующий результат:

Test Case 1

Входные данные: a= 78508, b = -304

Ожидаемый результат: res = 78204 && error = ""

Код ошибки:

Получившийся результат: res = 78204 error =

Тест пройден

Test Case 2

Входные данные: a= -2850800078, b = 3000000000

Ожидаемый результат: res = 0 && error = "Error 06"

Код ошибки: Error 06

Получившийся результат: res = 0 error = Error 06

Тест пройден

Test Case 3

Входные данные: a= 3000000000, b = -2850800078

Ожидаемый результат: res = 0 && error = "Error 06"

Код ошибки: Error 06

Получившийся результат: res = 0 error = Error 06

Характеристики

Тип файла
Документ
Размер
59 Kb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов лабораторной работы

Методичка и инструкции на ЛР №8
Инструкции
Задание_1
01sem-giveaway
Спецификация на программу Калькулятор.doc
Задание_2
02sem-giveaway
+Ее___ _кв_кЕ _  и_е__№_.doc
-_и__Еа _ _б_п__Еб_а _Е жЕ_____ак_и.doc
BaseCalculator.exe
02sem-soft
BaseCalculatorNew
BaseCalculator
Properties
AssemblyInfo.cs
Resources.Designer.cs
Resources.resx
Settings.Designer.cs
Settings.settings
bin
Debug
BaseCalculator.exe
BaseCalculator.exe.config
BaseCalculator.pdb
BaseCalculator.vshost.exe
BaseCalculator.vshost.exe.config
Release
BaseCalculator.exe
BaseCalculator.exe.config
BaseCalculator.pdb
BaseCalculator.vshost.exe
BaseCalculator.vshost.exe.config
obj
Debug
Refactor
TempPE
Properties.Resources.Designer.cs.dll
Задание_3
03sem-soft
Dll
CalcClass.dll
Program
TestDriver
TestDriver
Properties
AssemblyInfo.cs
Resources.Designer.cs
Resources.resx
Settings.Designer.cs
Settings.settings
bin
Debug
AnalaizerClass.cs
CalcClass.dll
My.dll
TestDriver.exe
TestDriver.pdb
TestDriver.vshost.exe
obj
Debug
Refactor
TempPE
ResolveAssemblyReference.cache
TestDriver.MainForm.resources
TestDriver.Properties.Resources.resources
TestDriver.csproj.GenerateResource.Cache
TestDriver.exe
TestDriver.pdb
TestDriver.csproj.FileList.txt
Задание_4
04sem-soft
Dll
AnalaizerClass.dll
CalcClass.dll
Program
TestDriver
TestDriver
Properties
AssemblyInfo.cs
Resources.Designer.cs
Resources.resx
Settings.Designer.cs
Settings.settings
bin
Debug
AnalaizerClass.cs
CalcClass.dll
My.dll
TestDriver.exe
TestDriver.pdb
TestDriver.vshost.exe
obj
Debug
Refactor
TempPE
ResolveAssemblyReference.cache
TestDriver.MainForm.resources
TestDriver.Properties.Resources.resources
TestDriver.csproj.GenerateResource.Cache
TestDriver.exe
TestDriver.pdb
Задание_5
05sem-soft
BaseCalculator
BaseCalculator
Properties
AssemblyInfo.cs
Resources.Designer.cs
Resources.resx
Settings.Designer.cs
Settings.settings
bin
Debug
BaseCalculator.exe
BaseCalculator.exe.config
BaseCalculator.pdb
BaseCalculator.vshost.exe
BaseCalculator.vshost.exe.config
Release
BaseCalculator.exe
BaseCalculator.exe.config
BaseCalculator.pdb
BaseCalculator.vshost.exe
BaseCalculator.vshost.exe.config
obj
Debug
Refactor
TempPE
Properties.Resources.Designer.cs.dll
BaseCalculator.BaseCalc.resources
BaseCalculator.Properties.Resources.resources
BaseCalculator.csproj.GenerateResource.Cache
BaseCalculator.exe
Задание_6
05sem-soft
BaseCalculator
BaseCalculator
Properties
AssemblyInfo.cs
Resources.Designer.cs
Resources.resx
Settings.Designer.cs
Settings.settings
bin
Debug
BaseCalculator.exe
BaseCalculator.exe.config
BaseCalculator.pdb
BaseCalculator.vshost.exe
BaseCalculator.vshost.exe.config
Release
BaseCalculator.exe
BaseCalculator.exe.config
BaseCalculator.pdb
BaseCalculator.vshost.exe
BaseCalculator.vshost.exe.config
obj
Debug
Refactor
TempPE
Properties.Resources.Designer.cs.dll
BaseCalculator.BaseCalc.resources
BaseCalculator.Properties.Resources.resources
BaseCalculator.csproj.GenerateResource.Cache
BaseCalculator.exe
Задание_7
09sem-soft
BaseCalculatorNew
BaseCalculator
Properties
AssemblyInfo.cs
Resources.Designer.cs
Resources.resx
Settings.Designer.cs
Settings.settings
bin
Debug
BaseCalculator.exe
BaseCalculator.exe.config
BaseCalculator.pdb
BaseCalculator.vshost.exe
BaseCalculator.vshost.exe.config
Release
BaseCalculator.exe
BaseCalculator.exe.config
BaseCalculator.pdb
BaseCalculator.vshost.exe
BaseCalculator.vshost.exe.config
obj
Debug
Refactor
TempPE
Properties.Resources.Designer.cs.dll
BaseCalculator.BaseCalc.resources
BaseCalculator.Properties.Resources.resources
BaseCalculator.csproj.GenerateResource.Cache
BaseCalculator.exe
Задание_8
10sem-soft
BaseCalculatorNew
BaseCalculator
Properties
AssemblyInfo.cs
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее