cpp-2013 #16 automated testing

9

Click here to load reader

Upload: eleks-developers-courses-if

Post on 03-Jul-2015

518 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: cpp-2013 #16 Automated testing

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

Page 2: cpp-2013 #16 Automated testing

Тестування

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

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

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

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

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

Page 3: cpp-2013 #16 Automated testing

Тестування

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

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

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

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

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

Page 4: cpp-2013 #16 Automated testing

Testing Framework

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

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

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

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

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

Page 6: cpp-2013 #16 Automated testing

// 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

Page 7: cpp-2013 #16 Automated testing

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

Page 8: cpp-2013 #16 Automated testing

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

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

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

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

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

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

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

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

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

Page 9: cpp-2013 #16 Automated testing

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");