Главная страница
Навигация по странице:

  • Цель работы

  • лаб7. Отчет защищен с оценкой преподаватель ст преподаватель


    Скачать 214.89 Kb.
    НазваниеОтчет защищен с оценкой преподаватель ст преподаватель
    Дата15.08.2022
    Размер214.89 Kb.
    Формат файлаdocx
    Имя файлалаб7.docx
    ТипОтчет
    #646414

    ГУАП

    КАФЕДРА № 44

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

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

    Ст. преподаватель










    Д.В. Куртяник

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




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




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




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

    Модульное тестирование

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







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

    СТУДЕНТ ГР. №

    4017










    А.А.Леонтьева










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




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


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

    Цель работы: приобретение практических навыков в области тестирования программного обеспечения, изучение возможностей модульного тестирования в MS Visual Studio.
    Ход работы:
    Сначала я скачала проект с https://github.com/microsoft/calculator , настроила и открыла его в среде разработки Visual Studio. Далее запустила вложенные тесты. Выполнились все Unit тесты, UI тесты выполнились частично (рисунок 1).


    Рисунок 1. Выполнение тестов
    Захожу в Solution Items > Calc Manager > CEngine > CalcInput.cpp

    Теперь меняю значение с 0 на 1. Данное число влияет на определение знака числа и некоторых операций с ним (рисунок 2,3).



    Рисунок 2. Код до изменения


    Рисунок 3. Код после изменения


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

    Имеем Assert failed в функциях:

    1. TryAddDigitMaxCount

    2. TryAddDigitRolloverBaseCheck

    3. TryAddDigitRolloverDecimal

    4. CalculatorManagerTestMaxDigitsReached

    5. CalculatorManagerTestMaxDigitsReached_LeadingDecimal

    6. CalculatorManagerTestMaxDigitsReached_TrailingDecimal





    Рисунок 4. Ошибки при запуске тестов
    Затем, создадим собственный проект, в котором описан простой калькулятор сложения, вычитания, умножения и деления на языке программирования C#.

    ICalculator.cs
    namespace Domain

    {

    public interface ICalculator

    {

    double Sum(double a, double b);
    double Substract(double a, double b);
    double Multiply(double a, double b);
    double Divide(double a, double b);

    }

    }

    Calculator.cs

    namespace Domain

    {

    public class Calculator : ICalculator

    {

    public double Sum(double a, double b)

    {

    return a + b;

    }
    public double Substract(double a, double b)

    {

    return a - b ;

    }
    public double Multiply(double a, double b)

    {

    return a * b;

    }


    public double Divide(double a, double b)

    {

    return a / b;

    }

    }

    }

    Program.cs

    using System;

    using Domain;

    namespace ConsoleApp

    {

    class Program

    {

    static void Main(string[] args)

    {

    // Ввод данных

    Console.WriteLine("Введите первое число");

    var a = InputDouble();

    Console.WriteLine("Введите второе число");

    var b = InputDouble();

    Console.WriteLine("Введите знак операции");

    var operation = Console.ReadLine();

    // Расчёт

    double result;

    var calculator = new Calculator();

    switch (operation)

    {

    case "+":

    result = calculator.Sum(a, b);

    break;

    case "-":

    result = calculator.Substract(a, b);

    break;

    case "*":

    result = calculator.Multiply(a, b);

    break;

    case "/":

    if (b == 0)

    throw new Exception();

    result = calculator.Divide(a, b);

    break;

    default:

    throw new ArgumentOutOfRangeException(nameof(operation));

    }

    // Вывод

    Console.WriteLine($"Результат операции {operation} над {a} и {b} равен {result}");

    }

    private static double InputDouble()

    {

    var input = Console.ReadLine();

    var result = double.Parse(input);

    return result;

    }

    }

    }

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

    CalculatorTests.cs

    using Domain;

    using NUnit.Framework;

    namespace Tests1

    {

    public class CalculatorTests

    {

    public const double positive = double.PositiveInfinity;

    public const double negative= double.NegativeInfinity;

    [TestCase(0, 0, 0)]

    [TestCase(0, 42, 42)]

    [TestCase(42, 0, 42)]

    [TestCase(2, 3, 5)]

    [TestCase(-2, 10, 8)]

    [TestCase(-2, 1, -1)]

    public void SumTests1(double a, double b, double expected)

    {

    var actual = new Calculator().Sum(a, b);

    Assert.AreEqual(expected, actual);

    }

    [TestCase(5, 1, 4)]

    [TestCase(42, 0, 42)]

    public void SubstractTests1(double a, double b, double expected)

    {

    var actual = new Calculator().Substract(a, b);

    Assert.AreEqual(expected, actual);

    }

    [TestCase(42, 0, 0)]

    [TestCase(42, 1, 42)]

    [TestCase(2, 3, 6)]

    public void MultiplyTests1(double a, double b, double expected)

    {

    var actual = new Calculator().Multiply(a, b);

    Assert.AreEqual(expected, actual);

    }

    [TestCase(42, 1, 42)]

    [TestCase(8, 2, 4)]

    [TestCase(5, 2, 2.5d)]

    [TestCase(5,0,double.PositiveInfinity)]

    public void DivideTests1(double a, double b, double expected)

    {

    var actual = new Calculator().Divide(a, b);

    Assert.AreEqual(expected, actual);

    }

    [TestCase(42, 1, 42)]

    [TestCase(8, 2, 4)]

    [TestCase(5, 2, 2.5d)]

    [TestCase(5, 0, double.PositiveInfinity)]

    public void DivideException1(double a,double b,double expected)

    {

    var actual = new Calculator().Divide(a, b);

    if (b == null)

    throw new System.EntryPointNotFoundException();

    Assert.AreEqual(expected, actual);

    }

    }

    }



    Рисунок 5. Результат работы программы


    Рисунок 6. Результат работы теста

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

    [TestCase(42, 1, 42)]

    [TestCase(8, 2, 4)]

    [TestCase(5, 2, 2.5d)]

    [TestCase(5, 0, 0)] // 5/0 != 0

    public void DivideTests1(double a, double b, double expected)

    {

    var actual = new Calculator().Divide(a, b);

    Assert.AreEqual(expected, actual);

    }



    Рисунок 8. Ошибка прохождения теста

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


    написать администратору сайта