Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

TMPA-2015: Testing of a Robot-Programming Environment

2,292 views

Published on

Testing of a Robot-Programming Environment
Dmitry Mordvinov, Yury Litvinov, Saint Petersburg State University, Saint Petersburg

12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg

Published in: Science
  • Be the first to comment

  • Be the first to like this

TMPA-2015: Testing of a Robot-Programming Environment

  1. 1. Тестирование среды программирования роботов Юрий Литвинов, СПбГУ yurii.litvinov@gmail.com Дмитрий Мордвинов, СПбГУ mordvinov.dmitry@gmail.com Санкт-Петербург, 14.11.2015
  2. 2. О TRIK Studio ● Обучение школьников программированию и робототехнике ● Программа в виде визуальной модели ● Исполнение на реальном роботе (ТРИК, NXT, EV3) ● Двумерная модель ● Генерация кода (C, JavaScript, F#) ● Реализация на C++, Qt
  3. 3. Модульное тестирование ● Qt Test ● CPPUnit ● Boost.Test ● CppUnitLite ● Unit++, ● CxxTest ● Google C++ Testing Framework ○ Google C++ Mocking Framework ● Наиболее полно покрыты следующие компоненты: ○ Ядро ○ Синтаксический анализатор и интерпретатор текстового языка ● Хуже всего тестовое покрытие у кода, относящегося к пользовательскому интерфейсу
  4. 4. Тестирование пользовательского интерфейса ● Требования ○ Кроссплатформенность ○ Бесплатность ○ Простота ● Qt Test ● Qt Script ● Фасад доступа к элементам пользовательского интерфейса ○ Доступ к элементам управления ○ Высокоуровневые команды ○ Обход системных диалогов ○ Показ действий пользователю ■ Позволяет использовать эту же систему для демонстраций
  5. 5. Функциональное тестирование ● Тестирование интерпретатора посредством исполнения тестовых программ на двумерной модели робота ● Реализация ○ XML-язык для ограничений ○ Рефлексия для доступа к полям устройств робота ○ Проверка ограничений на каждом “тике” модельного времени
  6. 6. Язык ограничений на решения ● Множество событий { 1 , 2 , ..., } ● Событие – это тройка ( , , ), может быть взведено и опущено ● – условие срабатывания события, формула логики первого порядка ● – список триггеров [ 1 , 2 , ..., ]. Выполняются в момент истинности ci ● Синтаксический сахар: ограничения – ( , ! , [ ( )]) ○ Лимит времени (модельного) ● Предикаты ○ >, <, <=, >=, =, ! = ○ Пространственные предикаты ○ Состояния событий, ( ) и ( ) ○ Таймер ● Символы: константы, variableValue( ), арифметические и геометрические операции, objectState(path)
  7. 7. Пример <constraints> <timelimit value="2000"/> <constraint failMessage="Робот покинул допустимую зону!"> <inside objectId="robot1" regionId="warzone"/> </constraint> <event settedUpInitially="true"> <conditions glue="and"> <equals> <objectState object="robot1.shell.lastPhrase"/> <string value="Привет"/> </equals> <equals> <objectState object="robot1.display.smiles"/> <bool value="true"/> </equals> </conditions> <trigger> <success/> </trigger> </event> </constraints>
  8. 8. Использование ● Реализовано 20 тестовых задач, от простого движения вперёд до ПД-регуляторов ● Трудозатраты ~2 человеко- недель ● Прогон полного набора тестов занимает порядка нескольких минут ● Задачи покрывают годовой школьный курс по робототехнике ● Использование для проверки задач в системе онлайн-обучения
  9. 9. Результаты ● Модульное тестирование: Google C++ Testing/Mocking Framework ● Тестирование GUI: скрипты на Qt Script для Qt Test ○ В процессе внедрения выявлено 12 важных дефектов ● Функциональное тестирование: исполнение программ на симуляторе ○ В процессе внедрения выявлено порядка 10 важных дефектов ● Переиспользование технологий для реализации другой функциональности ○ Режим обучения пользователя с демонстрациями на Qt Script ○ Проверка домашних заданий в онлайн-курсе с использованием системы функционального тестирования ● Реализация: https://github.com/qreal/qreal

×