Автоматическое тестирование C# кода

Тестирование функций, использующих условия и циклы с помощью Unit-тестов. Рассмотрение сущности и особенностей применения метода Test-Driven-Development. Переименование имени класса и имени метода. Проверка возможных вариантов возврата значения функции.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 23.05.2022
Размер файла 2,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Лабораторная работа

Тема “Автоматическое тестирование C# кода”

1.1 Теоретические сведения

1. Что такое автоматические тесты?

Это код который тестирует ваш код автоматически.

2. Автоматические тесты как замена ручным тестам? Для чего нужны автоматические тесты?

Пример: У вас есть какая-то функция. Вам нужно проверить правильно ли она работает.

При Ручном тестировании, Вы выполняете следующие шаги:

1) Запускаете приложение

2) Вводите логин и пароль

3) Переходите на страницу где Ваша функция используется

4) Заполняете значения в форму

5) Нажимаете на кнопку

6) Проверяете результат выполнения функции

7) Повторяете все действия для разных значений

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

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

Также тесты можно запускать:

* когда вы поменяли что-то в своем коде и хотите проверить, что он все еще работает правильно;

* перед отправкой кода в репозиторий;

* и перед отправкой кода на рабочий сервер.

Бывает 3 вида автоматических тестов:

1. Unit-тесты;

2. Integration-тесты;

3. End-to-end-тесты;

Unit-тесты - тесты без внешних зависимостей, таких как обращений к базам данных, обращений к веб-серверам, и обращений к файловой системе.

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

Integration-тесты - тесты с внешними зависимостями.

End-to-end-тесты - тесты с привлечением пользовательского интерфейса.

3. Что нужно тестировать и когда?

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

4. Писать сначала тесты или сначала приложение?

Существует метод разработки при котором сначала пишутся тесты, так называемый Test-Driven-Development(TDD). Преимущества метода: иногда этот метод позволяет избежать написания ненужного кода, за счет того что после написания всех тестов для тестирования функционала целью является написание кода который будет проходить все тесты.

5. Как писать тесты?

Для того чтобы писать тесты необходим Фреймворк. Фреймворк дает вам библиотеку, которая поможет писать тесты, а также запускатель тестов(TestRunner), который покажет которые из ваших тестов прошли успешно, а которые завершились с ошибкой. Существует несколько фреймворков, таких как: NUnit, MSTest, xUnit. В данной лабораторной работе мы начнем использовать MSUnit, так как он встроен в Visual Studio. А затем будем использовать NUnit.

1.2 Порядок выполнения

Вам нужно скачать архив `LAB1_starter.zip', разархивировать. В Visual Studio: Файл -> Открыть->Решение или проект… Выбрать файл TestNinja.sln.

В окне “Обозреватель решений” выбрать и ознакомится с содержимым файла Reservation.cs в папке “Fundamentals”- это файл который мы будем тестировать на рисунке 1

Рисунок 1

Функция CanBeCancelledBy проверяет “можно ли Отменить резервацию” принимает на вход Класс Пользователя User(1). Если пользователь Админ(2), то возвращает true, если пользователь тот который создал резервацию(3), то true. Если кто-то другой, то false(4).

В окне “Обозреватель решений” на надписи “Решение “TestNinja”” нажать правой кнопкой и выбрать “Добавить”->”Создать проект, как показано на рисунках 2-4.

Рисунок 2

Рисунок 3

Рисунок 4

На рисунке 5 показаны декораторы класса(1) и декораторы методов(2). Эти декораторы сообщают Фреймворку какие классы и методы тестирования необходимо запускать.

Рисунок 5

Далее нам необходимо переименовать имя класса и имя метода. Для этого нужно установить курсор на слово имени класса, нажать Ctrl+R, и ввести новое имя класса. Результат на рисунке 6. Так же, необходимо переименовать имя файла класса с UnitTest1.cs в ReservationTests.cs

Рисунок 6

В таком виде “принято”(convention) писать названия методов. Вместо слова “Scenario” в имени метода пишется что мы хотим протестировать. Вместо слова “ExpectedBehavior” в имени метода пишется какого результата мы ожидаем. В данном случае мы хотим проверить Админ ли пользователь когда он действительно админ. И результат должен быть true. Поэтому мы переименуем этот метод как показано на рисунке 7.

Рисунок 7

Наконец, мы будем писать первый тест.

Каждый тест который мы пишем состоит, условно, из 3-х частей: Arrange, Act, и Assert.

Arrange - то место где мы инициализируем необходимые нам объекты, которые мы хотим протестировать. В нашем случае класс Reservation(1).

Act - это где мы выполняем действия над объектами. В нашем случае мы хотим вызвать метод объекта, CanBeCancelledBy, который мы хотим протестировать. И получить результат выполнения этого метода.(2) Для этого мы передаем объект User в метод и записываем результат в переменную result.

Assert - место где мы проверяем что результат выполнения метода правильный. В нашем случае, результат должен быть true.(3) Для того чтобы проверить переменную result, мы используем класс Фреймворка Assert.

Класс Assert содержит множество статических методов для проверки значений переменных. В данном случае мы используем метод IsTrue и передаем в него переменную result.

Что содержит каждая часть можно увидеть на рисунке 8.

Рисунок 8

В разделе Arrange при обращении к классу Reservation() он будет подчеркнут красным. Чтобы исправить нужно нажать сочетание клавиш Ctrl и точка. Из контекстного меню выбрать “Добавьте ссылку в TestNinja” как показано на рисунке 9.

Рисунок 9

В заключении, чтобы запустить тесты: выбрать Тест->Выполнить->Все тесты как на рисунке 10.

Рисунок 10

Должно запуститься окно “Обозреватель тестов”. Если этого не произошло то его можно открыть из Тест->Окна-> Обозреватель тестов. Вы должны увидеть окно, как на рисунке 11.

Рисунок 11

Теперь откройте файл Reservation.cs и создайте ошибку в коде. Исправьте возвращаемое значение с true на false для первого условия на проверку пользователя Админ как показано на рисунке 12. Запустите тесты в окне “Обозреватель тестов”. При запуске тестов они не должны пройти без ошибок, так как функция теперь работает неправильно как на рисунке 13. Верните правильное значение true.

Рисунок 12

Рисунок 13

1.3 Задание

1.3.1 Общее задание

Функция CanBeCancelledBy содержит 3 возможных результата возврата значений. Мы уже проверили первое из них, если пользователь Админ. Ваше задание: написать еще 2 теста для того чтобы проверить оставшиеся 2 возможных варианта возврата значения функции.

Критерии оценки:

? тесты написаны правильно и работают - 10 баллов;

? соблюдена структура Arrange-Act-Assert(“triple A”) - 3 балла;

? соблюдено “принятое” правило названий методов тестов и имен файлов - 2 балла.

тест функция класс метод

1.3.2 Индивидуальное задание

В индивидуальном задании вы будете тестировать один метод из файла Math_Lab1.cs.

Методы в этом файле пронумерованы. Номер вашего варианта соответствует вашему порядковому номеру в портале. Выполнение не своего варианта оценивается в 0 баллов.

Задание:

Создать новый Модульный тест в проект TestNinja.unitTests, нажав правой кнопкой на проекте выбрать “Добавить”->”Модульный тест…” как показано на рисунке 14.

Рисунок 14

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

Критерии оценки:

? Дать правильное имя вашему файлу теста “Math_Lab1.cs”; 2 балла;

? тесты написаны правильно и работают - 15 баллов;

? соблюдена структура Arrange-Act-Assert(“triple A”) - 5 баллов;

? соблюдено “принятое” правило названий методов тестов и имен файлов - 3 балла.

Размещено на Allbest.ru


Подобные документы

  • Понятие, виды и функции тестов, компьютерное тестирование. Государственные стандарты создания компьютерных тестов и практическая реализация комплекса генерации тестов: СУБД и язык программирования, пользовательский интерфейс, экономическая эффективность.

    дипломная работа [2,1 M], добавлен 29.06.2012

  • Создание электрической схемы проектируемого устройства с помощью графического интерфейса. Улучшение кодовой базы с помощью рефакторинга. Разработка алгоритма работы программы. Использование методики Test driven development, написание тестового покрытия.

    курсовая работа [1,3 M], добавлен 15.02.2016

  • Тестирование и отладка программного обеспечения: понятие, принципы, этапы, цели и задачи. Тестирование методом сандвича как компромисс между восходящим и нисходящим подходами. Сущность метода "белого и черного ящика", отладки программного обеспечения.

    курсовая работа [36,9 K], добавлен 21.07.2012

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

    курсовая работа [167,8 K], добавлен 01.10.2009

  • Автоматизация регрессионного тестирования. Классификация по способу сопровождения. Построение потового графа. Набор модульных тестов. Покрытие тестами классов эквивалентности. Тестирование методом "черного ящика". Тесты регрессии на "закрытых" багах.

    курсовая работа [1,8 M], добавлен 16.01.2017

  • Структура целей разрабатываемой программы и ограничения на входные и выходные данные. Таблицы решений для функции "Чтение и проверка на корректность файла". Тестирование функции "Проверка на корректность". Результат обработки в виде выходного документа.

    курсовая работа [4,1 M], добавлен 26.07.2014

  • Примеры построения тестов и технологии исследования алгоритмов на их основе. Построение тестов на основе метода покрытия решений и проведение исследования соответствующего исходного алгоритма и алгоритма с ошибками в операторах проверки условий.

    контрольная работа [224,8 K], добавлен 24.05.2016

  • Проектирование программного модуля. Описание схемы программы и структуры разрабатываемого пакета. Написание кода ввода исходных данных и основных расчетов. Тестирование программного модуля. Тестирование решения задачи. Методы численного интегрирования.

    курсовая работа [549,9 K], добавлен 20.03.2014

  • Разработка и тестирование программы класса Точка. Спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров функций программы. Текст программы на языке C++. Особенности тестирования программы.

    лабораторная работа [43,1 K], добавлен 21.07.2012

  • Разработка программы нахождения значения определенного интеграла с помощью метода трапеций. Оценка абсолютной погрешности метода. Использование среды программирования Visual Studio Community 2015 для написания программы. Работа с графическим интерфейсом.

    курсовая работа [573,8 K], добавлен 17.03.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.