cpp-2013 #16 Automated testing

Post on 03-Jul-2015

518 views 0 download

Transcript of cpp-2013 #16 Automated testing

Автоматизоване тестування

Тестування

• Тестування – процес пошуку дефектів

• Тестування не може довести відсутності дефектів

– Лише їх наявність

• В будь-якій програмі є дефекти

• Краще знаходити дефекти раніше, ніж пізніше

Тестування

• Відбувається разом із розробкою

• Спосіб: запускаємо і дивимось чи працює

• Створюємо допоміжні засоби

– Консольні програми

– Допоміжний UI

Testing Framework

Призначення:

• Виконання тестів

• API для написання тестів

• Автоматизація

• Перегляд результатів

// offtopic

*.sdf file can grow large

Keep VS IntelliSense cache in %TEMP% instead of current solution folderhttp://stackoverflow.com/questions/7706984/visual-studio-2010-c-project-remove-sdf-file

Simple test#define BOOST_TEST_MODULE MathTests#include "boost/test/included/unit_test.hpp"#include "math.hpp"

BOOST_AUTO_TEST_CASE(AddTwoPositiveIntegersReturnsCorrectResult){

Math math;

auto result = math.add(1, 2);

BOOST_REQUIRE_EQUAL(3, result);}

Call System Under Test (Act)

Set up System Under Test (Arrange)

Descriptive name

Assert

Unit test

Модульний тест (unit test)

Показує, що модуль працює правильно

Тестує лише логіку (add)

Не тестує взаємодію з БД, файлами, мережею

Виконується в пам’яті

Тестує лише один клас/метод

Короткий і читабельний

Не містить циклів та умов

Повторюваний, не залежить від послідовності

Assertions

BOOST_REQUIRE(true);BOOST_REQUIRE_EQUAL_COLLECTIONS(begin(), end(),

begin(), end());BOOST_REQUIRE_GE(4, 3); // 4 >= 3BOOST_REQUIRE_GT(4, 3); // 4 > 3BOOST_REQUIRE_LE(3, 4); // 3 <= 4BOOST_REQUIRE_LT(3, 4); // 3 < 4BOOST_REQUIRE_NE(3, 4); // 3 != 4BOOST_FAIL("Failure");