Методические указания по выполнению практических работ по мдк


Практическая работа № 2.6. Модульное тестирование



Pdf көрінісі
бет8/26
Дата12.10.2022
өлшемі2,59 Mb.
#152842
түріМетодические указания
1   ...   4   5   6   7   8   9   10   11   ...   26
Байланысты:
тестилеу лек русс

Практическая работа № 2.6. Модульное тестирование 
Цель работы: изучить возможность создания автоматических тестов, для модульного 
тестирования. 


13 
Сегодня тестирование – это обязательная часть процесса разработки программного 
обеспечения (далее – ПО). Это связано с жесткими правилами конкуренции для компаний, 
производящих программные продукты (ПП). 
Раньше таких компаний на рынке было мало и пользователи программных продуктов 
были продвинутыми и заменяли тестеров. Если в программе обнаруживались баги, то 
пользователь звонил или отправлял письмо в компанию, где ошибку исправляли и по почте 
отправляли дискетку со свежим релизом. Но начиная с 1990 года согласно статистики продажи 
персональных компьютеров с каждым годом удваивались. И появилась армия пользователей, 
которая не готова была что-то тестировать. Если что-то не устроило было проще обменять на 
другой софт, т.к. число компаний производящих ПО тоже увеличивалось с каждых готом. И у 
пользователей появился выбор что покупать и чем пользоваться. 
Таким образом, тестирование ушло внутрь компаний, и появилась профессия 
тестировщика. 
Рассмотрим определение, которое записано в SWEBOK. 
Тестирование ПО – это проверка соответствия между реальным поведением программы 
и ее ожидаемым поведением на конечном наборе тестов, выбранном определенным образом. 
[IEEE Guide to Software Engineering Body of Knowledge, SWEBOK, 2004]. 
Все виды тестирования можно условно разделить на две большие группы: 
Статическое тестирование (static testing).
Динамическое тестирование (dynamic testing). 
Статическое тестирование – это процесс анализа самой разработки программного 
обеспечения, т. е. тестирование без запуска программы. 
К данной группе можно отнести анализ кода. Данный вид тестирования осуществляется 
в основном программистами. Проводят тестирование артефактов разработки программного 
обеспечения, таких как требования, дизайн или программный код, проводимое без исполнения 
этих артефактов. Например, с помощью рецензирования или статического анализа. 
Статический анализ кода (static code analysis) – это анализ исходного кода, 
производимый без его исполнения. 
Динамическое тестирование – это тестовая деятельность, предусматривающая 
эксплуатацию (запуск) программного продукта. 
Динамическое тестирование предполагает запуск программы, выполнение всех еe 
функциональных модулей и сравнение фактического ее поведения с ожидаемым. 
Статическое тестирование позволяет обнаружить дефекты, которые являются 
результатом ошибки и привести к сбоям в программном обеспечении. Динамическое 
тестирование позволяет продемонстрировать непосредственно сбои в программном 
обеспечении. 
Существует несколько признаков, по которым принято производить классификацию 
видов тестирования. 
По знанию системы выделяют: 

тестирование «черного ящика» (black box testing); 

тестирование «белого ящика» (white box testing); 

тестирование «серого ящика» (grey box testing). 
Модульное тестирование, или юнит-тестирование (англ. unit testing) — процесс в 
программировании, позволяющий проверить на корректность отдельные модули исходного 
кода программы. 
Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. 
Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к 
регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также 
облегчает обнаружение и устранение таких ошибок. 
Цель модульного тестирования — изолировать отдельные части программы и показать, 
что по отдельности эти части работоспособны. 
Задание 1. Создание проекта программы, модули которого будут тестироваться. 


14 
Разработаем проект содержащий класс, который вычисляет площадь прямоугольника по 
длине двух его сторон. 
Создадим в Visual Studio новый проект Visual C# -> Библиотека классов. Назовём 
его MathTaskClassLibrary. 
Class1 переименуем в Geometry. 
В классе реализуем метод, вычисляющий площадь прямоугольника. Для демонстрации 
остановимся на работе с целыми числами. Код программы приведён ниже. 
Рисунок 2 
Создание проекта для модульного тестирования в Visual Studio. 
Чтобы выполнить unit-тестирование, необходимо в рамках того же самого решения 
создать ещё один проект соответствующего типа. 
Правой кнопкой щёлкните по решению, выберите “Добавить” и затем “Создать 
проект…”. 
Рисунок 3 
В открывшемся окне в группе Visual C# щёлкните “Тест”, а затем выберите “Проект 
модульного теста”. Введите имя проекта MathTaskClassLibraryTests и нажмите “ОК”. Таким 
образом проект будет создан. 
Рисунок 4 


15 
Перед Вами появится следующий код: 
Рисунок 5 
Директива [TestMethod] обозначает, что далее идёт метод, содержащий модульный (unit) 
тест. А [TestClass] в свою очередь говорит о том, что далее идёт класс, содержащий методы, в 
которых присутствуют unit-тесты. 
В соответствии с принятыми соглашениями переименуем класс UnitTest1 
в GeometryTests. 
Затем в References проекта необходимо добавить ссылку на проект, код которого будем 
тестировать. Правой кнопкой щёлкаем на References, а затем выбираем “Добавить ссылку…”. 
В появившемся окне раскрываем группу “Решение”, выбираем “Проекты” и ставим 
галочку напротив проекта MathTaskClassLibrary. Затем жмём “ОК”. 
Рисунок 6 
Также в коде необходимо подключить с помощью директивы using следующее 
пространство имён: using MathTaskClassLibrary; 
Займёмся написание теста. Проверим правильно ли вычисляет программа площадь 
прямоугольника со сторонами 3 и 5. Ожидаемый результат (правильное решение) в данном 
случае это число 15. 
Переименуем метод TestMethod1() в RectangleArea_3and5_15returned(). Новое название 
метода поясняет, что будет проверяться (RectangleArea – площадь прямоугольника) для каких 
значений (3 и 5) и что ожидается в качестве правильного результата (15 returned). 
Тестирующий метод обычно содержит три необходимых компонента: 
1.
исходные данные: входные значения и ожидаемый результат; 
2.
код, вычисляющий значение с помощью тестируемого метода; 
3.
код, сравнивающий ожидаемый результат с полученным. 
Соответственно тестирующий код будет таким: 


16 
Рисунок 7 
Для 
сравнения 
ожидаемого 
результата 
с 
полученным 
используется 
метод AreEqual класса Assert. Данный класс всегда используется при написании unit тестов в 
Visual Studio. 
Теперь, чтобы просмотреть все тесты, доступные для выполнения, необходимо открыть 
окно “Обозреватель тестов”. Для этого в меню Visual Studio щёлкните на кнопку “ТЕСТ”, 
выберите “Окна”, а затем нажмите на пункт “Обозреватель тестов”. 
Рисунок 8 
В студии появится следующее окно: 
Рисунок 9 
В данный момент список тестов пуст, поскольку решение ещё ни разу не было собрано. 
Выполним сборку нажатием клавиш Ctrl + Shift + B. После её завершения в “Обозревателе 
тестов” появится наш тест. 


17 
Рисунок 10 
Синяя табличка с восклицательным знаком означает, что указанный тест никогда не 
выполнялся. Выполним его. 
Для этого нажмём правой кнопкой мыши на его имени и выберем “Выполнить 
выбранные тесты”. 
Рисунок 11 
Зелёный кружок с галочкой означает, что модульный тест успешно пройден: ожидаемый 
и полученный результаты равны. 
Изменим код метода RectangleArea, вычисляющего площадь прямоугольника, чтобы 
сымитировать провал теста и посмотреть, как поведёт себя Visual Studio. Прибавим к 
возвращаемому значению 10. 
Запустим unit-тест. 


18 
Рисунок 12 
Как Вы видите, красный круг с крестиком показывает провал модульного теста, а ниже 
указано, что при проверке ожидалось значение 15, а по факту оно равно 25. 
Задание 2. Разработать программу для подсчета объема цилиндра и создать модульный 
тест. 


Достарыңызбен бөлісу:
1   ...   4   5   6   7   8   9   10   11   ...   26




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет