- •Пояснительная записка
- •Перечень условных обозначений
- •Введение
- •Технико-экономическое обоснование проектируемой интеллектуальной системы
- •2.Анализ способов размещения всплывающей подсказки
- •4.1.Планирование тестирования
- •4.2. Средства автоматизации процедуры тестирования.
- •4.3.Техника модульного тестирования.
- •4.4.Проведение юнит-тестирования
- •Направления дальнейшего развития прототипа интеллектуальной справочной системы и пути промышленного изготовления спроектированной интеллектуальной системы
- •Развитие бз исс
4.3.Техника модульного тестирования.
Для большинства популярных языков программирования высокого уровня существуют инструменты и библиотеки модульного тестирования. Для С++ одним из таких инструментов является Boost::Test. Boost — одна из самых известных (и сам больших) библиотек для C++, а Boost::Test – это Фреймворк для тестирования, входящий в неё и построенный на макросах.
4.4.Проведение юнит-тестирования
Рассмотрим класс, единственная задача которого – деление и умножение некоторого числа и сохранение результата:
class Calculate
{
public:
explicit Calculate(int value)
: Value_(value)
{
}
void Divide(int value)
{
if (value == 0)
{
throw std::invalid_argument("Деление на ноль!");
}
Value_ /= value;
}
void Multiply(int value)
{
Value_ *= value;
}
int Result() const
{
return Value_;
}
private:
int Value_;
};
Сделаем по тесту на каждый метод:
#include "calculator.h"
#include <boost/test/unit_test.hpp>
#define BOOST_TEST_MODULE testCalculate
BOOST_AUTO_TEST_CASE(testCalculate)
{
Calculator calculator(12);
BOOST_CHECK_EQUAL(calculate.Result(), 12);
}
BOOST_AUTO_TEST_CASE(testCalculateDivide)
{
Calculate calculate(12);
calculate.Divide(3);
BOOST_CHECK_EQUAL(calculate.Result(), 4);
calculate.Divide(2);
BOOST_CHECK_EQUAL(calculate.Result(), 2);
}
BOOST_AUTO_TEST_CASE(testCalculateMultiply)
{
Calculator calculate(12);
calculate.Multiply(2);
BOOST_CHECK_EQUAL(calculate.Result(), 24);
calculate.Multiply(3);
BOOST_CHECK_EQUAL(calculate.Result(), 72);
}
Мы рассмотрели проверку равенства двух сущностей BOOST_CHECK_EQUAL, но помимо этого Boost Test предоставляет еще ряд инструментов:
BOOST_CHECK(условие)
Простейшая проверка истинно условие или нет.
BOOST_CHECK_EQUAL(значение_1, значение_2)
Проверка на равенство двух значений.
BOOST_CHECK_CLOSE(значение_1, значение_2, точность)
Проверка на равенство чисел с плавающей точкой. Два значения считаются равными, если не отличаются на значение более указанного (в процентах).
BOOST_CHECK_BITWISE_EQUAL(значение_1,значение_2)
Отличная штука! Проверит два значения побитово и сообщит в каком месте биты отличаются.
BOOST_CHECK_EQUAL_COLLECTIONS(начало_1,конец_1,начало_2,конец_2)
Проверка равенства двух последовательностей (массивов или контейнеров), на вход получает пару начало-конец последовательности (указатели или итераторы).
BOOST_CHECK_THROW(инструкция, исключение)
Проверка, что при выполнении инструкции будет вызвано указанное исключение.
Направления дальнейшего развития прототипа интеллектуальной справочной системы и пути промышленного изготовления спроектированной интеллектуальной системы
Развитие бз исс
В качестве направления дальнейшего развития базы знаний рассматриваются:
расширение БЗ ИСС по числовым системам путем добавления новых статей по уже разработанным подразделам;
введение новых подразделов в БЗ;
интеграция БЗ ИСС по числовым системам с другими БЗ систем проекта OSTIS.
Перспективами разработки ИСС по выбранной технологии являются:
создание совместимых компонентов для создания предметно независимых интеллектуальных систем;
возможность осуществления интеграции «сверху» и «снизу»;
возможность последовательной и параллельной работы над компонентами разрабатываемой ИСС;
использование разработанной ИСС пользователями различной степени компьютерной подготовки, а также возможность участия в проекте экспертов из различных ПрО.
В рамках промышленного изготовления спроектированной интеллектуальной системы необходимо:
использование технологий инженерии знаний, взаимодействие с экспертами данной предметной области;
привлечение профессиональных разработчиков на всех этапах создания ИСС;
наличие мощных инструментальных средств разработки;
инвестирование в разработку и в технологию разработки ИСС.