Содержание

Слайд 2

Что такое Unit Testing

Unit Testing - тестирование модулей приложения с помощью программных

Что такое Unit Testing Unit Testing - тестирование модулей приложения с помощью
процедур.
Обычно Unit Tests пишутся разработчиками, и являются первым уровнем тестирования приложения.
Позволяют выявлять проблемы в незаконченных  модулях на стадии разработки.
Можно рассматривать как средство документирования кода.

Слайд 3

Что тестировать?

Код должен быть относительно простым
Не иметь большого числа зависимостей
Обладать необходимым интерфейсом

Что тестировать? Код должен быть относительно простым Не иметь большого числа зависимостей
для тестирования
Входные и выходные данные должны быть стабильными и легко воспроизводимыми

Слайд 4

Когда тестировать?

Есть два подхода:
Написание Unit Tests предшествует написанию кода
Создание тестов после окончания

Когда тестировать? Есть два подхода: Написание Unit Tests предшествует написанию кода Создание
реализации функциональности

Слайд 5

Test Driven Developmet

Test Driven Developmet

Слайд 6

Пример теста

#include "UnitTest++\UnitTest++.h"
#include "..\FeatureExtractionCore\SharedLinks.h"
#include "..\FeatureExtractionCore\BoundCalculator.h"
using namespace SightPower::XGIP::Plugins::FeatureExtractionCore;
TEST(BoundTest1)
{
Vertices points;
points.push_back(Vertex( 2.4, 5.6, -2.06));
points.push_back(Vertex( 3.67,

Пример теста #include "UnitTest++\UnitTest++.h" #include "..\FeatureExtractionCore\SharedLinks.h" #include "..\FeatureExtractionCore\BoundCalculator.h" using namespace SightPower::XGIP::Plugins::FeatureExtractionCore; TEST(BoundTest1)
7.8, 0.8));
points.push_back(Vertex(-1.5, -2.9, 4.5));
points.push_back(Vertex(-0.6, -7.6, -0.12));
Bound b;
ComputeBound(b, points.begin(), points.end(), [&](const Vertex&)->bool{return true;});
CHECK_EQUAL(-1.5, b.X);
CHECK_EQUAL(-7.6, b.Y);
CHECK_EQUAL(-2.06, b.Z);
CHECK_EQUAL(3.67, b.FX);
CHECK_EQUAL(7.8, b.FY);
CHECK_EQUAL(4.5, b.FZ);
}

Слайд 7

UnitTest++ Виды тестов

Простой тест
TEST(YourTestName)
{
}
Тест с состоянием - Fixture
struct SomeFixture
{
SomeFixture() { /*

UnitTest++ Виды тестов Простой тест TEST(YourTestName) { } Тест с состоянием -
some setup */ }
~SomeFixture() { /* some teardown */ }
int testData;
};
TEST_FIXTURE(SomeFixture, YourTestName)
{
int temp = testData;
}

Слайд 8

UnitTest++ Макросы проверки

CHECK(false);
CHECK_EQUAL(10, 20);
CHECK_CLOSE(3.14, 3.1415, 0.01)
CHECK_THROW(throw TestException(), TestException);
UNITTEST_TIME_CONSTRAINT(50);

UnitTest++ Макросы проверки CHECK(false); CHECK_EQUAL(10, 20); CHECK_CLOSE(3.14, 3.1415, 0.01) CHECK_THROW(throw TestException(), TestException); UNITTEST_TIME_CONSTRAINT(50);

Слайд 9

Вывод результатов

Вывод результатов тестирования в Visual Studio:
Tests.vcxproj -> q:\XGIP\Platform\SightPower.XGIP.Plugins.FeatureExtractionTests.exe
EigenTest.cpp(63): error : Failure

Вывод результатов Вывод результатов тестирования в Visual Studio: Tests.vcxproj -> q:\XGIP\Platform\SightPower.XGIP.Plugins.FeatureExtractionTests.exe EigenTest.cpp(63):
in EigenTest: Expected 0.5 +/- 1e-005 but was 0.423481
PlaneTest.cpp(38): error : Failure in PlaneTest3: Expected 78.3 +/- 0.0001 but was 4.3
FAILURE: 2 out of 11 tests failed (2 failures).
Test time: 0.66 seconds.

Слайд 10

Преимущества использования Unit Testing

Выявление проблем на стадии разработки
Создание атомарного малосвязанного кода
Выявление проблем

Преимущества использования Unit Testing Выявление проблем на стадии разработки Создание атомарного малосвязанного
связанных с зависимостями
Автоматический Regression Testing
Имя файла: Unit-Testing.pptx
Количество просмотров: 124
Количество скачиваний: 0