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

  • 6.2 Теоретические сведения и пример выполнения Unit test

  • Типы тестирования: Модульное тестирование ( Unit testing )

  • Интеграционное тестирование

  • Системное тестирование

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

  • МУ+лаб+раб+6. 6 Тестирование ms visualStudio 1 Задание для лабораторной работы


    Скачать 1.07 Mb.
    Название6 Тестирование ms visualStudio 1 Задание для лабораторной работы
    Дата21.11.2022
    Размер1.07 Mb.
    Формат файлаdocx
    Имя файлаМУ+лаб+раб+6.docx
    ТипДокументы
    #804633

    6 Тестирование MS VisualStudio
    6.1 Задание для лабораторной работы
    Инструмент разработки программного обеспечения Microsoft Visual Studio 2013 предоставляет множество способов тестирования приложений с целью проверки их функциональности и производительности. Необходимо выполнить тестирование программного продукта, используя один из типов тестов Visual Studio.
    6.2 Теоретические сведения и пример выполнения
    Unit test – блок кода (обычно метод), который вызывает тестируемый блок кода и проверяет его правильность работы. Если результат Unit – теста не совпадает с ожидаемым результатом, тест считается не пройденным.

    Типы тестирования:

    Модульное тестирование (Unit testing) – тестирование каждой атомарной функции приложения отдельно, с использованием объектов искусственно смоделированной среды.

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

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

    Создадим новый проект – библиотека классов (Class Library), и назовем его MyCalcLib (рисунок 1).

    Рисунок 1 – Создание проекта
    Переименуем созданный класс из Class1 в MyCalc (рисунок 2).


    Рисунок 2 – Переименование класса
    Далее добавим открытый метод, который будет возвращать int, с названием Sum в качестве параметра он принимает int x и int y, и этом методе возвращаем x + y. Текст кода предоставлен ниже:
    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;
    namespace MyCalcLib

    {

    public class MyCalc

    {

    public int Sum(int x, int y)

    {

    return x + y;

    }

    }

    }

    Для этого метода нам необходимо создать Unit Test. Правой кнопкой мыши кликаем в обозреватели решений по решению MyCalcLib, выбираем добавить  новый проект (рисунок 3). Затем в списке проектов переключаемся на вкладку Test, далее в правой части необходимо указать тип теста: модульный тест, веб-тест или тест пользовательского интерфейса, в данном случае выбираем проект модульного теста (Unit Test Project) и назовем его MyCalcLib.Tests (рисунок 4).



    Рисунок 3 – Добавление проекта в решение

    Рисунок 4 – Окно мастера создания нового проекта
    Переименуем в обозреватели решений UnitTest1 в MyCalcTests (рисунок 5).


    Рисунок 5 – Переименование в MyCalcTests
    Unit – тестами являются методы, которые помечены атрибутом [TestMethod], Unit – тесты собираются в классы, которые помечены атрибутом [TestClass]. Текст кода предоставлен ниже:
    using System;

    u sing Microsoft.VisualStudio.TestTools.UnitTesting;
    namespace MyCalcLib.Tests

    {

    [TestClass]

    public class MyCalcTests

    {

    [TestMethod]

    public void TestMethod1()

    {

    }

    }

    }
    Чтобы использовать TestClass и TestMethod атрибуты необходимо подключить пространство имен Microsoft.VisualStudio.TestTools.UnitTesting.

    Для того чтобы мы имели возможность работать с классом MyCalc.cs, который находится в отдельной сборке, необходимо эту сборку подключить, для этого правой кнопкой мыши кликаем в обозреватели решений по папке References в MyCalcLib.Tests, и в контекстном меню выбираем добавить ссылку (рисунок 6).

    Рисунок 6 – Контекстное меню добавление новой ссылки
    Выбираем проект MyCalcLib из текущего решения (рисунок 7). Теперь эта сборка подключена.

    Рисунок 7 – Менеджер ссылок
    Теперь необходимо написать Unit – тест, который будет проверять правильность работы метода Sum, для этого вначале переименуем имя метода из TestMethod1 в Sum_10and20_30returned (это метод на вход будет принимать два значения 10 и 20, результат, который будет возвращен этим методом будет равен 30), это необходимо для того чтобы четко понимать и отображать что именно мы тестируем. Далее мы делаем три операции arrange (здесь создаются переменные), act (здесь выполняются действия над системой) и assert (проверка, что операции выполнились успешно и Unit – тест завершен правильно), эти три операции формируют шаблон AAA (рисунок 8).


    Рисунок 8 – Подход AAA
    Текст кода:

    using System;

    using Microsoft.VisualStudio.TestTools.UnitTesting;
    namespace MyCalcLib.Tests

    {

    [TestClass]

    public class MyCalcTests

    {

    [TestMethod]

    public void Sum_10and20_30returned()

    {

    // arrange

    int x = 10;

    int y = 20;

    int expected = 30;
    //act

    MyCalc c = new MyCalc();

    int actual = c.Sum(x, y);
    //assert

    Assert.AreEqual(expected, actual);

    }

    }

    }

    x – переменная созданная для отправки в метод тестируемого класса.

    y – переменная созданная для отправки в метод тестируемого класса.

    expected – переменная созданная для хранения ответа метода при правильном его функционирование (то что мы ожидаем получить).

    actual – переменная для хранения фактического ответа тестируемого метода.

    MyCalc c = new MyCalc(); эта строка создает объект с классом который содержит тестируемый метод.

    Assert.AreEqual(expected, actual); в этой строке реализовано сравнения фактического ответа тестируемого метода и необходимого ответа.
    Если в результате выполнения фрагмента кода приведенного выше значения expected и actual будут равны, то в таком случае мы получим результат true и Unit – тест – закончится успешно, если же они не будут равны, то мы получим ошибку.

    Для запуска теста в обозреватели теста (Test Explorer), для того чтобы вызвать окно обозревателя решений кликаем ТЕСТ  окна  обозреватель тестов (рисунок 9), кликом по необходимому тесту вызвать контекстное меню и в контекстном меню кликнуть по выполнить выбранные тесты (рисунок 10) или же в верхней панели в закладке тест пройти по вкладке выполнить и в нем выбрать необходимый вариант (рисунок 11). Если тесты отсутствуют в обозреватели решений, необходимо выполнить сборку решения, для этого в верхней панели выбираем СБОРКА (Build)  Собрать решение.

    Рисунок 9 – Включение окна обозревателя тестов

    Рисунок 10 – Вызов теста из обозревателя теста

    Рисунок 11 – Выполнение тестов через верхнею панель
    Данная иконка показывает что наш Unit - тест не запускался (рисунок 12).

    Рисунок 12 – Невыполненные тесты
    На рисунке ниже (рисунок 13) показано что для метода Sum есть один Unit – тест, но он ни разу не запускался.

    Рисунок 13 – Невыполненные тесты для метода Sum
    Когда тест завершился если он завершился удачно рядом с тестом должна появиться данная иконка и также в нижней части обозревателя теста не должно выводиться не каких ошибок (рисунок 14). Также после успешного завершения теста можно посмотреть время его исполнения (в нашем случае это 5 мс).

    Рисунок 14 – Результат теста

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

    Рисунок 15 – Результат покрытия кода
    Если мы выполним изменения в методе Sum, и они приведут к тому, что появятся ошибки, то после запуска Unit – теста, мы увидим какая произошла ошибка и в каком методе. Данная иконка свидетельствует о том, что в тесте произошел сбой.

    После завершения теста в обозреватели решения (рисунок 16) видно, что в тесте произошло сбой, в нижней его части видно, что сбой произошел в Assert.AreEqual из-за несоответствия ожидаемого параметра 30 и фактического 31. Следовательно, этот тест можно считать не пройдённым поскольку не совпал параметры. Время, затраченное на произведение этого теста равно 25 мс.

    Рисунок 16 - Результат теста с сбоем
    Текст кода с ошибкой:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;
    namespace MyCalcLib

    {

    public class MyCalc

    {

    public int Sum(int x, int y)

    {

    return x + y + 1;

    }

    }

    }
    Также существует иной способ создания Unit – теста, если вы не ходите самостоятельно создавать эти проекты и именовать все классы внутри, то можно кликнуть правой кнопкой мыши по необходимому методу (в нашем случае это Sum), и в контекстном меню выбрать пункт Create Uunit Test (рисунок 17).

    Если в контекстном меню отсутствует этот пункт, то необходимо в верхней панели выбрать СЕРВИС, затем пункт Расширения и обновления, далее выбираем В сети, и задаем в поиске Unit Test Generator, его необходимо установить.

    Рисунок 17 – Контекстное меню

    При этом появится дополнительное окошко, в котором можно выбрать Framework для тестирования, в какой проект положить Unit – тест, указать правила именования файла, класса и метода, а также наполнение самого Unit – теста (можно сделать чтобы Unit – тест заканчивался ошибкой, чтобы выдавало исключение или чтобы он был пустой), на рисунке 18 приведено окно Unit Test Generator.

    Рисунок 18 - Окно Unit Test Generator
    После этого создастся дополнительный проект с именем MyCalcTests (рисунок 19). В этот проект сразу добавляется сборка на MyCalcLib и MyCalcTests.cs в котором находится фрагмент с кодом Unit – теста.

    Рисунок 19 – Обозреватель решений и фрагмент кода


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