Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОП_7

.docx
Скачиваний:
0
Добавлен:
12.04.2025
Размер:
148.99 Кб
Скачать

ГУАП

КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ И СЕТЕЙ

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

Ассистент

Рыжов К.Ю.

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №7

МОДУЛЬНОЕ ТЕСТИРОВАНИЕ

по курсу: ОСНОВЫ ПРОГРАММИРОВАНИЯ

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

4116

подпись, дата

инициалы, фамилия

Санкт-Петербург 2022

Цель лабораторной работы: приобретение практических навыков в области тестирования программного обеспечения, изучение возможностей модульного тестирования в MS Visual Studio

Задание:

1. Скачать себе и настроить проект https://github.com/microsoft/calculator (или выбрать любой готовый проект с открытым кодом и готовыми тестами)

2. Выбрать любой модульный тест из проекта.

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

5. Описать входные значения и ожидаемые выходные (тестовые примеры).

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

7. Дать описание возвращаемой тестом ошибки и прочих ошибок, предусмотренных тестом.

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

9. Разработать тестовые требования и примеры.

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

Ход работы:

В качестве готового проекта взят калькулятор, находящийся по ссылке https://github.com/microsoft/calculator. Из проекта был выбран модульный тест UnitConverterTestBackspaceBasic, который проверяет корректность работы команды возврата. Тестовые требования: проверка функции Backspace на удаление последней цифры (если число имеет более одного знака) и на возврат нуля (если число состоит из одного знака).

Тестовые примеры: 1.) последовательный ввод 20.43 и команда backspace, в результате 20.4 .2.) ввод 2 и команда backspace, в результате 0.

Рисунок 1-Результат выполнения теста

Для непрохождения данного теста в файле UnitConverter.cpp папки CalcManager в строке 483 кода программы, выражение m_currentDisplay = L"0” заменено на m_currentDisplay = L"1”. Результат тестирования программы с ошибкой показан на рисунке 2.

Рисунок 2- результат выполнения теста с ошибкой

Код выбранного теста:

void UnitConverterTest::UnitConverterTestBackspaceBasic()

{

s_unitConverter->SendCommand(Command::Two);

s_unitConverter->SendCommand(Command::Zero);

s_unitConverter->SendCommand(Command::Decimal);

s_unitConverter->SendCommand(Command::Four);

s_unitConverter->SendCommand(Command::Three);

s_unitConverter->SendCommand(Command::Backspace);

VERIFY_IS_TRUE(s_testVMCallback->CheckDisplayValues(wstring(L"20.4"), wstring(L"20.4")));

s_unitConverter->SendCommand(Command::Backspace);

VERIFY_IS_TRUE(s_testVMCallback->CheckDisplayValues(wstring(L"20."), wstring(L"20")));

s_unitConverter->SendCommand(Command::Backspace);

VERIFY_IS_TRUE(s_testVMCallback->CheckDisplayValues(wstring(L"20"), wstring(L"20")));

s_unitConverter->SendCommand(Command::Backspace);

VERIFY_IS_TRUE(s_testVMCallback->CheckDisplayValues(wstring(L"2"), wstring(L"2")));

s_unitConverter->SendCommand(Command::Backspace);

VERIFY_IS_TRUE(s_testVMCallback->CheckDisplayValues(wstring(L"0"), wstring(L"0")));

}

Далее был написан Unit тест для функции fact(), которая вычисляет факториал числа. Данный тест проверяет полученные значения в ходе вызова данной функции для разных аргументов. Тестовые требования: проверка соответствия значений, полученных функцией, с реальным значением факториала. Тестовые примеры: 1.) полученное значение 7, факториал равен 5040 (правильно), 2.) полученное значение 3, факториал равен 4 (неправильно), 3.) полученное значение 5, факториал равен 120 (правильно), 4.) полученное значение 6, факториал равен 710 (неправильно).

Содержание теста, который находится в файле UnitTest1.cpp

#include "pch.h"

#include "CppUnitTest.h"

#include "C:\Users\Пользователь\OneDrive\Рабочий стол\fact.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTestApp1

{

TEST_CLASS(UnitTest1)

{

public:

TEST_METHOD(TestMethod1)

{

Assert::IsTrue(fact(7) == 5040);

}

TEST_METHOD(TestMethod2)

{

Assert::IsTrue(fact(3) == 7);

}

TEST_METHOD(TestMethod3)

{

Assert::IsTrue(fact(5) == 120);

}

TEST_METHOD(TestMethod4)

{

Assert::IsTrue(fact(6) == 710);

}

};

}

Текст заголовочного файла fact.h с функцией:

#pragma once

#include <iostream>;

using namespace std;

long double fact(int N)

{

if (N < 0)

return 0;

if (N == 0)

return 1;

else

return N * fact(N - 1);

}

Текст главного файла main.cpp:

#include <iostream>;

#include "fact.h";

using namespace std;

int main()

{

int N;

setlocale(0, "");

cout << "Введите число для вычисления факториала: ";

cin >> N;

cout << "Факториал для числа " << N << " = " << fact(N) << endl << endl;

return 0;

}

Рисунок 3 - Результат прохождения тестов для функции вычисления факториала

Вывод: в ходе выполнения лабораторной работы были приобретены практические навыки в области тестирования программного обеспечения, изучены возможности модульного тестирования в MS Visual Studio. Готовый код приложения с тестами был изменён для неуспешного прохождения теста. Было разработано модульное тестирование для функции вычисления факториала.

Соседние файлы в предмете Основы программирования