Темы лекции: Unit-тестирование.
Практическое задание: Unit-тестирование.
Тренер: Игорь Шкулипа, к.т.н.
Платформа .Net и язык программирования C#.
Занятие 17
http://www.slideshare.net/IgorShkulipa 2
Модульное тестирование
Unit testing (юнит тестирование или модульное тестирование) —
заключается в изолированной проверке каждого отдельного элемента
путем запуска тестов в искусственной среде.
Unit (Элемент) — наименьший компонент, который можно
скомпилировать.
Драйверы — модули тестов, которые запускают тестируемый элемент.
Заглушки — заменяют недостающие компоненты, которые вызываются
элементом и выполняют следующие действия:
• возвращаются к элементу, не выполняя никаких других действий;
• отображают трассировочное сообщение и иногда предлагают
тестировщику продолжить тестирование;
• возвращают постоянное значение или предлагают тестеру самому
ввести возвращаемое значение;
• осуществляют упрощенную реализацию недостающей
компоненты;
• имитируют исключительные или аварийные условия.
http://www.slideshare.net/IgorShkulipa 3
Подходы к unit-тестированию
White-box testing. Для конструирования тестов используются
внутренняя структура кода и управляющая логика. При этом существует
вероятность, что код будет проверяться так, как он был написан, а это не
гарантирует корректность логики.
Black-box testing. Для конструирования тестов используются требования
и спецификации ПО.
Недостатки:
• таким способом невозможно найти взаимоуничтожающихся
ошибок,
• некоторые ошибки возникают достаточно редко (ошибки работы с
памятью) и потому их трудно найти и воспроизвести
http://www.slideshare.net/IgorShkulipa 4
Стратегия модульного тестирования
Модульное тестирование является одной из ключевых практик
методологии экстремального программирования:
• Написание тестов помогает войти в рабочий ритм
• Придает уверенность в работоспособности кода.
• Дает запас прочности при дальнейшей интеграции или изменениях
кода.
Модульное тестирование оправдано, если оно:
• Снижает время на отладку
• Дает возможность поиска ошибок с меньшими затратами, нежели
при других подходах
• Дает возможность дешевого поиска ошибок при изменениях кода в
дальнейшем
http://www.slideshare.net/IgorShkulipa 5
Цель модульного тестирования
Получение работоспособного кода с наименьшими затратами. И его применение
оправдано тогда и только тогда, когда оно дает больший эффект, нежели другие
методы.
Отсюда следует несколько выводов:
• Нет смысла писать тесты на весь код. Некоторые ошибки проще найти
на более поздних стадиях. Так, например, для ООП данное правило может
звучать так: нет смысла писать тесты на класс, который используется
только одним классом. Эффективней написать тесты на вызывающий класс
и создать тесты тестирующие все участки кода.
• Писать тесты для кода потенциально подверженного изменениям
более выгодно, чем для кода, изменение которого не предполагается.
Сложная логика меняется чаще, чем простая. Следовательно, в первую
очередь имеет смысл писать модульные тесты на сложную логику. А на
простую логику писать позднее или вообще тестировать другими методами.
• Для того чтобы как можно реже изменять тесты следует хорошо
планировать интерфейсы. То же самое можно сказать и применительно к
написанию исходного кода. Действительно, создание хорошей архитектуры
часто определяет дальнейший ход проекта. И есть оптимум, на каком этапе
архитектура «достаточно хороша».
http://www.slideshare.net/IgorShkulipa 6
Планирование тестов
• Код с не оттестированными участками не может быть опубликован
• Тесты должны базироваться на спецификации
• На каждое требование должен быть, как минимум, один тест. Неважно,
ручной или автоматический
• Простой тест нужен т.к. несмотря на малую вероятность нахождения
ошибки, цена пропущенной ошибки чрезмерно высока
• Наиболее эффективный способ создания тестового набора —
совместное использование методов черного и белого ящиков.
http://www.slideshare.net/IgorShkulipa 7
TDD
TDD (Test-Driven Development) - это методика разработки, позволяющая
оптимизировать использование модульных тестов. Стоит подчеркнуть,
что речь идет именно об оптимальном, а не максимальном
применении. Задача, которую преследует TDD, - достижение баланса
между усилиями и результатом.
С практической точки зрения, основой TDD является цикл
«red/green/refactor»:
• в первой фазе программист пишет тест,
• во второй - код, необходимый для того, чтобы тест работал,
• в третьей, при необходимости, производится рефакторинг.
В соответствии с принципом "Test First", следует писать только такой
код, который абсолютно необходим, чтобы тесты выполнялись
успешно.
http://www.slideshare.net/IgorShkulipa 8
Пример. Создание теста
http://www.slideshare.net/IgorShkulipa 9
Пример. Создание теста
http://www.slideshare.net/IgorShkulipa 10
Пример. Создание теста
http://www.slideshare.net/IgorShkulipa 11
Класс-тест
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod, ExpectedException(typeof(ArgumentException))]
public void TestMethod1()
{
TDDExample.FactorialClass.Factorial(-1);
}
}
}
http://www.slideshare.net/IgorShkulipa 12
Тестируемый класс
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Numerics;
namespace TDDExample
{
public class FactorialClass
{
public static BigInteger Factorial(int number)
{
if (number < 0) throw new
ArgumentException("Argument is Less than Zero.");
if (number == 0) return 1;
else return Factorial(number - 1) * number;
}
}
}
http://www.slideshare.net/IgorShkulipa 13
Запуск теста
http://www.slideshare.net/IgorShkulipa 14
Тест с другими данными
14
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1 {
[TestMethod, ExpectedException(typeof(ArgumentException))]
public void TestMethod1()
{
TDDExample.FactorialClass.Factorial(10);
}
}
}
http://www.slideshare.net/IgorShkulipa 15
Класс Assert
Проверяет условия, использующие утверждения "истина/ложь", в процессе
модульных тестов.
Пространство имен: Microsoft.VisualStudio.TestTools.UnitTesting
Методы:
• AreEqual, AreEqual<T> / AreNotEqual, AreNotEqual<T> + 17 перегрузок -
проверяет два указанных объекта на равенство/неравенство. Утверждение не
выполняется, если объекты не равны.
• AreSame / AreNotSame + 2 перегрузки - проверяет, ссылаются ли две
указанные объектные переменные на один и тот же объект / на разные объекты.
• Equals - определяет равенство двух объектов.
• Fail - отменяет выполнение утверждения без проверки каких-либо условий.
• Inconclusive - указывает, что утверждение не может быть проверено.
• IsFalse / IsTrue - проверяет, имеет ли указанное условие значение false/true.
• IsInstanceOfType / IsNotInstanceOfType - проверяет, является / не является
ли указанный объект экземпляром заданного типа.
• IsNull / IsNotNull - проверяет, имеет / не имеет ли указанный объект значение
null
• ReplaceNullChars - заменяет в строке символы null ('0') на "0".
http://www.slideshare.net/IgorShkulipa 16
Пример. Тестируемый класс
public class FactorialClass
{
public static BigInteger Factorial(int number)
{
if (number < 0) throw new
ArgumentException("Argument is Less than Zero.");
if (number == 0) return 1;
else return Factorial(number - 1) * number;
}
public static double CircleSquare(double radius)
{
return 3.14 * radius * radius;
}
public static double CircleLength(double radius)
{
return 2.0 * 3.14 * radius;
}
}
http://www.slideshare.net/IgorShkulipa 17
Пример. Класс-тест
[TestClass]
public class UnitTest1 {
[TestMethod, ExpectedException(typeof(ArgumentException))]
public void TestFactorial() {
TDDExample.FactorialClass.Factorial(-100);
}
[TestMethod]
public void TestCircleSquare() {
double testRadius = 10;
double expectedResult = Math.PI * Math.Pow(testRadius, 2);
double actualResult = TDDExample.FactorialClass.CircleSquare(testRadius);
double tolerance=0.01;
Assert.AreEqual(expectedResult, actualResult, tolerance);
}
[TestMethod]
public void TestCircleLength() {
double testRadius = 10;
double expectedResult = 2.0 * Math.PI * testRadius;
double actualResult = TDDExample.FactorialClass.CircleLength(testRadius);
double tolerance = 0.01;
Assert.AreEqual(expectedResult, actualResult, tolerance);
}
}
http://www.slideshare.net/IgorShkulipa 18
Результат
http://www.slideshare.net/IgorShkulipa 19
Лабораторная работа №17. Unit-тестирование
В индивидуальных курсовых проектах при необходимости использовать
создание unit-тестов и TDD.

More Related Content

PDF
Разработка через тестирование (TDD и BDD)
PPT
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
PDF
ук 03.007.02 2011
PPTX
Документация тестировщика - Александр Трибушный
PPT
JavaTalks.Unit Testing.Part 1
ODT
TAP
PDF
Марина Широчкина - Тестирование
PPTX
Мелочь пузатая или Объем тест кейса против его содержательности
Разработка через тестирование (TDD и BDD)
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
ук 03.007.02 2011
Документация тестировщика - Александр Трибушный
JavaTalks.Unit Testing.Part 1
TAP
Марина Широчкина - Тестирование
Мелочь пузатая или Объем тест кейса против его содержательности

What's hot (20)

PDF
50 оттенков красного
PDF
JUnit, дай пять!
PDF
Марина Широчкина: Тестирование
PDF
Визуализация покрытия автоматизированными UI тестами
PPTX
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
PPTX
Разработка и сопровождении авто-тестов (Selenium)
PDF
Евгений Сафронов "Тестирование. точка зрения разработчика"
PDF
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
PPT
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
KEY
Testing RIA with Selenium
PPTX
Автоматизация и Selenium IDE
PPTX
ковалев нестандатное нт
ODP
анализ кода: от проверки стиля до автоматического тестирования
PPT
Unit testing best practices
PDF
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
PDF
«Я спросил у сервера...», Илья Пастушков
PPTX
Инструментальный подход к разработке протоколов
PPTX
тестирование по стратегии черного ящика
PPTX
автоматизация тестирования с помощью Selenium
50 оттенков красного
JUnit, дай пять!
Марина Широчкина: Тестирование
Визуализация покрытия автоматизированными UI тестами
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
Разработка и сопровождении авто-тестов (Selenium)
Евгений Сафронов "Тестирование. точка зрения разработчика"
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Testing RIA with Selenium
Автоматизация и Selenium IDE
ковалев нестандатное нт
анализ кода: от проверки стиля до автоматического тестирования
Unit testing best practices
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
«Я спросил у сервера...», Илья Пастушков
Инструментальный подход к разработке протоколов
тестирование по стратегии черного ящика
автоматизация тестирования с помощью Selenium
Ad

Viewers also liked (20)

PPTX
What is Lean UX?
DOC
SAEEDcv.
PPTX
Tarea6
DOCX
Trabajo completo correcion
PDF
JavaScript Базовый. Занятие 05.
PPTX
Production diary 2
PDF
C# Web. Занятие 07.
PPTX
Advanced LinkedIn Techniques
PDF
Общие темы. Тема 02.
PPTX
Production diary 4
DOCX
Trabajo completo
PDF
C++ STL & Qt. Занятие 08.
PPTX
Biotecnología
PDF
Organists Review.compressed
PDF
Общие темы. Тема 01.
PDF
C++ Базовый. Занятие 02.
PPTX
Production diary 12
PDF
Truly Verona
PPTX
Production diary 4
PDF
C++ Базовый. Занятие 15.
What is Lean UX?
SAEEDcv.
Tarea6
Trabajo completo correcion
JavaScript Базовый. Занятие 05.
Production diary 2
C# Web. Занятие 07.
Advanced LinkedIn Techniques
Общие темы. Тема 02.
Production diary 4
Trabajo completo
C++ STL & Qt. Занятие 08.
Biotecnología
Organists Review.compressed
Общие темы. Тема 01.
C++ Базовый. Занятие 02.
Production diary 12
Truly Verona
Production diary 4
C++ Базовый. Занятие 15.
Ad

Similar to C# Desktop. Занятие 17. (20)

PDF
C++ STL & Qt. Занятие 10.
PPTX
Test Driven Development in .NET Applications
PPTX
Автоматизация.pptx
PPTX
Test driven development in net
PPTX
Unit tests
PPTX
Software Testing
PPT
Тестирование весна 2014 смешанное занятие 2
PDF
2015-03-07 03 Сергей Александрович. 50 оттенков красного
PPTX
Тестирование ПО
PDF
Модульное тестирование с помощью visual studio 2012 MS Test, Nunit, X-unit.ne...
PDF
Victor Kuliamin.CSEDays
PPTX
Ошибки начинающих Tdd практиков, плюсы применения
PPTX
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
PPTX
Mva stf module 2 - rus
PPTX
тестирование по
PPTX
лекция3 QA
PDF
Unit тестирование
PDF
тестирование
PPT
Unit testing
PPTX
Unit tests final
C++ STL & Qt. Занятие 10.
Test Driven Development in .NET Applications
Автоматизация.pptx
Test driven development in net
Unit tests
Software Testing
Тестирование весна 2014 смешанное занятие 2
2015-03-07 03 Сергей Александрович. 50 оттенков красного
Тестирование ПО
Модульное тестирование с помощью visual studio 2012 MS Test, Nunit, X-unit.ne...
Victor Kuliamin.CSEDays
Ошибки начинающих Tdd практиков, плюсы применения
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
Mva stf module 2 - rus
тестирование по
лекция3 QA
Unit тестирование
тестирование
Unit testing
Unit tests final

More from Igor Shkulipa (20)

PDF
Общие темы. Тема 03.
PDF
JavaScript Базовый. Занятие 06.
PDF
JavaScript Базовый. Занятие 11.
PDF
JavaScript Базовый. Занятие 09.
PDF
JavaScript Базовый. Занятие 10.
PDF
JavaScript Базовый. Занятие 08.
PDF
JavaScript Базовый. Занятие 07.
PDF
JavaScript Базовый. Занятие 01.
PDF
JavaScript Базовый. Занятие 04.
PDF
JavaScript Базовый. Занятие 03.
PDF
JavaScript Базовый. Занятие 02.
PDF
C# Web. Занятие 09.
PDF
C# Web. Занятие 08.
PDF
C# Web. Занятие 04.
PDF
C# Web. Занятие 12.
PDF
C# Web. Занятие 16.
PDF
C# Web. Занятие 14.
PDF
C# Web. Занятие 15.
PDF
C# Web. Занятие 13.
PDF
C# Web. Занятие 11.
Общие темы. Тема 03.
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 02.
C# Web. Занятие 09.
C# Web. Занятие 08.
C# Web. Занятие 04.
C# Web. Занятие 12.
C# Web. Занятие 16.
C# Web. Занятие 14.
C# Web. Занятие 15.
C# Web. Занятие 13.
C# Web. Занятие 11.

C# Desktop. Занятие 17.

  • 1. Темы лекции: Unit-тестирование. Практическое задание: Unit-тестирование. Тренер: Игорь Шкулипа, к.т.н. Платформа .Net и язык программирования C#. Занятие 17
  • 2. http://www.slideshare.net/IgorShkulipa 2 Модульное тестирование Unit testing (юнит тестирование или модульное тестирование) — заключается в изолированной проверке каждого отдельного элемента путем запуска тестов в искусственной среде. Unit (Элемент) — наименьший компонент, который можно скомпилировать. Драйверы — модули тестов, которые запускают тестируемый элемент. Заглушки — заменяют недостающие компоненты, которые вызываются элементом и выполняют следующие действия: • возвращаются к элементу, не выполняя никаких других действий; • отображают трассировочное сообщение и иногда предлагают тестировщику продолжить тестирование; • возвращают постоянное значение или предлагают тестеру самому ввести возвращаемое значение; • осуществляют упрощенную реализацию недостающей компоненты; • имитируют исключительные или аварийные условия.
  • 3. http://www.slideshare.net/IgorShkulipa 3 Подходы к unit-тестированию White-box testing. Для конструирования тестов используются внутренняя структура кода и управляющая логика. При этом существует вероятность, что код будет проверяться так, как он был написан, а это не гарантирует корректность логики. Black-box testing. Для конструирования тестов используются требования и спецификации ПО. Недостатки: • таким способом невозможно найти взаимоуничтожающихся ошибок, • некоторые ошибки возникают достаточно редко (ошибки работы с памятью) и потому их трудно найти и воспроизвести
  • 4. http://www.slideshare.net/IgorShkulipa 4 Стратегия модульного тестирования Модульное тестирование является одной из ключевых практик методологии экстремального программирования: • Написание тестов помогает войти в рабочий ритм • Придает уверенность в работоспособности кода. • Дает запас прочности при дальнейшей интеграции или изменениях кода. Модульное тестирование оправдано, если оно: • Снижает время на отладку • Дает возможность поиска ошибок с меньшими затратами, нежели при других подходах • Дает возможность дешевого поиска ошибок при изменениях кода в дальнейшем
  • 5. http://www.slideshare.net/IgorShkulipa 5 Цель модульного тестирования Получение работоспособного кода с наименьшими затратами. И его применение оправдано тогда и только тогда, когда оно дает больший эффект, нежели другие методы. Отсюда следует несколько выводов: • Нет смысла писать тесты на весь код. Некоторые ошибки проще найти на более поздних стадиях. Так, например, для ООП данное правило может звучать так: нет смысла писать тесты на класс, который используется только одним классом. Эффективней написать тесты на вызывающий класс и создать тесты тестирующие все участки кода. • Писать тесты для кода потенциально подверженного изменениям более выгодно, чем для кода, изменение которого не предполагается. Сложная логика меняется чаще, чем простая. Следовательно, в первую очередь имеет смысл писать модульные тесты на сложную логику. А на простую логику писать позднее или вообще тестировать другими методами. • Для того чтобы как можно реже изменять тесты следует хорошо планировать интерфейсы. То же самое можно сказать и применительно к написанию исходного кода. Действительно, создание хорошей архитектуры часто определяет дальнейший ход проекта. И есть оптимум, на каком этапе архитектура «достаточно хороша».
  • 6. http://www.slideshare.net/IgorShkulipa 6 Планирование тестов • Код с не оттестированными участками не может быть опубликован • Тесты должны базироваться на спецификации • На каждое требование должен быть, как минимум, один тест. Неважно, ручной или автоматический • Простой тест нужен т.к. несмотря на малую вероятность нахождения ошибки, цена пропущенной ошибки чрезмерно высока • Наиболее эффективный способ создания тестового набора — совместное использование методов черного и белого ящиков.
  • 7. http://www.slideshare.net/IgorShkulipa 7 TDD TDD (Test-Driven Development) - это методика разработки, позволяющая оптимизировать использование модульных тестов. Стоит подчеркнуть, что речь идет именно об оптимальном, а не максимальном применении. Задача, которую преследует TDD, - достижение баланса между усилиями и результатом. С практической точки зрения, основой TDD является цикл «red/green/refactor»: • в первой фазе программист пишет тест, • во второй - код, необходимый для того, чтобы тест работал, • в третьей, при необходимости, производится рефакторинг. В соответствии с принципом "Test First", следует писать только такой код, который абсолютно необходим, чтобы тесты выполнялись успешно.
  • 11. http://www.slideshare.net/IgorShkulipa 11 Класс-тест using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestProject1 { [TestClass] public class UnitTest1 { [TestMethod, ExpectedException(typeof(ArgumentException))] public void TestMethod1() { TDDExample.FactorialClass.Factorial(-1); } } }
  • 12. http://www.slideshare.net/IgorShkulipa 12 Тестируемый класс using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Numerics; namespace TDDExample { public class FactorialClass { public static BigInteger Factorial(int number) { if (number < 0) throw new ArgumentException("Argument is Less than Zero."); if (number == 0) return 1; else return Factorial(number - 1) * number; } } }
  • 14. http://www.slideshare.net/IgorShkulipa 14 Тест с другими данными 14 using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestProject1 { [TestClass] public class UnitTest1 { [TestMethod, ExpectedException(typeof(ArgumentException))] public void TestMethod1() { TDDExample.FactorialClass.Factorial(10); } } }
  • 15. http://www.slideshare.net/IgorShkulipa 15 Класс Assert Проверяет условия, использующие утверждения "истина/ложь", в процессе модульных тестов. Пространство имен: Microsoft.VisualStudio.TestTools.UnitTesting Методы: • AreEqual, AreEqual<T> / AreNotEqual, AreNotEqual<T> + 17 перегрузок - проверяет два указанных объекта на равенство/неравенство. Утверждение не выполняется, если объекты не равны. • AreSame / AreNotSame + 2 перегрузки - проверяет, ссылаются ли две указанные объектные переменные на один и тот же объект / на разные объекты. • Equals - определяет равенство двух объектов. • Fail - отменяет выполнение утверждения без проверки каких-либо условий. • Inconclusive - указывает, что утверждение не может быть проверено. • IsFalse / IsTrue - проверяет, имеет ли указанное условие значение false/true. • IsInstanceOfType / IsNotInstanceOfType - проверяет, является / не является ли указанный объект экземпляром заданного типа. • IsNull / IsNotNull - проверяет, имеет / не имеет ли указанный объект значение null • ReplaceNullChars - заменяет в строке символы null ('0') на "0".
  • 16. http://www.slideshare.net/IgorShkulipa 16 Пример. Тестируемый класс public class FactorialClass { public static BigInteger Factorial(int number) { if (number < 0) throw new ArgumentException("Argument is Less than Zero."); if (number == 0) return 1; else return Factorial(number - 1) * number; } public static double CircleSquare(double radius) { return 3.14 * radius * radius; } public static double CircleLength(double radius) { return 2.0 * 3.14 * radius; } }
  • 17. http://www.slideshare.net/IgorShkulipa 17 Пример. Класс-тест [TestClass] public class UnitTest1 { [TestMethod, ExpectedException(typeof(ArgumentException))] public void TestFactorial() { TDDExample.FactorialClass.Factorial(-100); } [TestMethod] public void TestCircleSquare() { double testRadius = 10; double expectedResult = Math.PI * Math.Pow(testRadius, 2); double actualResult = TDDExample.FactorialClass.CircleSquare(testRadius); double tolerance=0.01; Assert.AreEqual(expectedResult, actualResult, tolerance); } [TestMethod] public void TestCircleLength() { double testRadius = 10; double expectedResult = 2.0 * Math.PI * testRadius; double actualResult = TDDExample.FactorialClass.CircleLength(testRadius); double tolerance = 0.01; Assert.AreEqual(expectedResult, actualResult, tolerance); } }
  • 19. http://www.slideshare.net/IgorShkulipa 19 Лабораторная работа №17. Unit-тестирование В индивидуальных курсовых проектах при необходимости использовать создание unit-тестов и TDD.