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

Лабораторная работа №20 (часть 2)

Отладка и тестирование ПО

 

Цель: Изучить основы модульного тестирования.

Содержание отчета:

1. Цель

2. Название

3. Выполнение индивидуальных заданий

 

Теоретическая часть

Идея модульного тестирования состоит в том, что параллельно основному компоненту программы, который включает непосредственно алгоритмы её работы, создаётся дополнительный «тестовый», в котором имитируется работа основного компонента в тех или иных условиях. По результатам выполнения «тестового» компонента судят о правильности работы основного.

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

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

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

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

Подобные фреймворки часто входят в состав интегрированных сред разработки (IDE). Собственный фреймворк для модульных тестов имеет и Visual Studio.

Для его использования в разделе «Тест» окна создания нового проекта есть специальный шаблон под названием «Проект модульного теста».

Что собой представляет данный шаблон?

При создании проекта модульного теста создаётся обычный класс, но:

· Как сам класс, так и его методы помечаются специальными атрибутами TestClass и TestMethod соответственно.
Данные атрибуты сообщают компилятору о том, что это класс модульного теста и тестовые методы.

· Методы класса должны быть открытыми (public) и иметь тип void.

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

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

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

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

Ниже представлена «шаблонная» структура класса модульного теста. Обратите внимание на подключение пространства имён Microsoft.VisualStudio.TestTools.UnitTesting.

C#

1 2 3 4 5 6 7 8 9 10 11 12 13 using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace MyUnitTestProject { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { } } }

Простейший пример модульного (Unit) тестирования

В качестве примера для наглядности и лучшего понимания возьмём простейший класс.

C#

1 2 3 4 5 6 7 8 9 10 11 public class MyClass { public int Method1(int a, int b) { return a * b; } public void Method2() { throw new Exception(); } }

Данный класс содержит только два метода.

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

Второй имитирует ошибку, заложенную в программе в процессе написания.

Создадим модульный тест для этого класса.

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

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

C#

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using MyWindowsFormsApplication; namespace MyUnitTestProject { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { MyClass myClass = new MyClass(); myClass.Method1(3, 4); } [TestMethod] public void TestMethod2() { MyClass myClass = new MyClass(); myClass.Method2(); } } }

 

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

В этой библиотеке надо описать свое индивидуальное задание в виде функции.

После чего надо нажать правой кнопкой мыши и добавит новый проект в обозреватель решений в sln-файл. После чего выбрать тест и проект модульного теста.

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

Выделить галочкой нужную нам библиотеку и подключить.

Ниже приведен пример кода для теста.

После написания кода теста надо пересобрать решение для этого нам нужно нажать на кнопку сборка и пересобрать решение.

 

После этого надо открыть обозреватель тестов и запустить тест. Для этого нужно нажать на кнопку тестирование – окна- обозреватель тестов.

Затем нажать правой кнопкой мыши на тест который мы создали и запустить.

В случае удачно прохождения теста он будет обозначаться как пройденный.

 

Индивидуальные задания

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

Вариант 1

1. Дана следующая функция y=f(x):
y = 2x - 10, если x > 0
y = 0, если x = 0
y = 2 * |x| - 1, если x < 0.

Требуется найти значение функции по переданному x.

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

 

Вариант 2

 

1. Вводятся три целых числа. Определить какое из них наибольшее.

 

2. Найти сумму и произведение цифр, введенного натурального числа. Например, если введено число 325, то сумма его цифр равна 10 (3+2+5), а произведение 30 (3*2*5).

 

Вариант 3

 

1. Вычислить факториал введенного числа.

2. С клавиатуры вводится натуральное число. Найти его наибольшую цифру. Например, введено число 764580. Наибольшая цифра в нем 8.

 

 


Дата добавления: 2020-04-08; просмотров: 303; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!