Самый быстрый - Fastest

Самый быстрый это модельное тестирование инструмент, который работает со спецификациями, написанными в Обозначение Z. Инструмент реализует (Кристиа и Родригес Монетти 2009 ) Платформа тестовых шаблонов (TTF), предложенный Филом Стоксом и Дэвидом Кэррингтоном в (Акции и Каррингтон, 1996 г. ).

использование

Fastest представляет пользовательский интерфейс командной строки. Сначала пользователю необходимо загрузить спецификацию Z, написанную на Латекс формат, подтверждающий ISO стандарт (Z Стандарт 2002 ). Затем пользователь должен ввести список операций для тестирования, а также тактика тестирования обратиться к каждому из них. На третьем этапе Fastest генерирует дерево тестирования каждой операции. После создания деревьев тестирования пользователи могут просматривать их и их тестовые классы, и, что более важно, они могут чернослив любой тестовый класс и автоматически или вручную. После того, как деревья тестирования были обрезаны, пользователи могут дать команду Fastest найти одно из них. абстрактный тестовый пример для каждого листа в каждом дереве тестирования. (Кристиа, Родригес Монетти и Альбертенго 2009 )

Тактика тестирования, поддерживаемая Fastest

В настоящее время,[когда? ] Fastest поддерживает следующие тактики тестирования:

Обрезка тестовых деревьев в Fastest

Fastest предоставляет два способа обрезки деревьев тестирования (Кристиа, Родригес Монетти и Альбертенго 2010 ):

  • Автоматическая обрезка.
Чтобы сократить дерево тестирования, Fastest анализирует предикат каждого листа, чтобы определить, является ли предикат противоречием. Поскольку эта проблема неразрешимый, инструмент реализует алгоритм максимального усилия, который могут быть улучшены пользователями. Важнейшим аспектом алгоритма является библиотека так называемых теоремы исключения каждое из которых представляет собой семейство противоречий. Пользователи могут расширить эту библиотеку, просто отредактировав текстовый файл. Теоремы исключения являются конъюнкциями параметрических Z атомарных предикатов.
  • Ручная обрезка.
Самые быстрые пользователи могут обрезать поддеревья или отдельные листья деревьев тестирования с помощью двух команд. Эти команды сократят все тестовые классы в поддереве независимо от того, пусты они или нет. Основная цель этих команд - позволить инженерам сократить количество или исключить неважные тестовые примеры.

Как Fastest находит абстрактные тестовые примеры

Инструмент находит абстрактные тестовые примеры путем вычисления конечной модели для каждого листа в дереве тестирования (Кристиа и Родригес Монетти 2009 ). Конечные модели рассчитываются путем ограничения типа каждого ВИС переменную до конечного множества, а затем путем вычисления Декартово произведение между этими наборами. Каждый листовой предикат оценивается для каждого элемента этого декартова произведения до тех пор, пока один из них не удовлетворит предикат (что означает, что был найден абстрактный тестовый пример) или пока он не будет исчерпан (что означает, что либо тестовый класс неудовлетворительный или конечная модель неадекватна). В последнем случае у пользователя есть шанс помочь инструменту найти правильную конечную модель или сократить тестовый класс, потому что он неудовлетворителен.

Архитектура и технологии

Самый быстрый - это Ява приложение на основе Инструменты сообщества Z (CZT) проект. Инструмент можно использовать в одном из двух режимов (Кристиа и Родригес Монетти 2009 ):

  • В распределенный режим Самый быстрый работает как клиент-сервер заявление. Приложение может быть установлено на нескольких компьютерах, каждый из которых действует как клиент, сервер или и то, и другое. Пользователи получают доступ к приложению через клиентов, которые отправляют тестовые классы на серверы (называемые серверы тестирования) которые пытаются найти абстрактный тестовый пример из них. Таким образом, самая тяжелая задача распределяется между максимально возможным количеством компьютеров. Поскольку расчет абстрактного тестового примера из тестового класса полностью независим друг от друга, эта архитектура ускоряет весь процесс пропорционально количеству тестовых серверов.
  • В режим приложения каждый экземпляр Fastest полностью независим друг от друга. Все задачи рассчитываются на локальном компьютере.

Добавление новой тактики тестирования

Как видно из TTF презентация тактика тестирования необходимы для метода. Это инструменты, которые инженеры должны использовать для создания наиболее интересных тестовых случаев. В таком случае, чем больше разумных тактик тестирования доступно инженерам, тем лучше.

В Fastest пользователи могут добавлять собственные тактики тестирования, реализовав Tactic интерфейс предоставленный инструментом. В этом интерфейсе есть методы для настройки и применения тактики тестирования. Определение интерфейса следующее:

упаковка client.blogic.testing.ttree.tactics;импорт java.util. *;импорт net.sourceforge.czt.z.ast.Spec;импорт common.z.TClass;импорт common.z.OpScheme;/** * Интерфейс, абстрагирующий тактику тестирования (необходим для создания деревьев тестов) и * делает возможным его применение в тестовом классе для создания новых. */общественный интерфейс Тактика {        /**     * Применяет эту тактику к указанному классу тестирования и возвращает список с     * сгенерированные тестовые классы.     * @param tClass     * @возвращаться     */    общественный Список<TClass> applyTactic(TClass tClass);        /**     * Устанавливает технические характеристики тестируемой системы.     * @param opScheme     */    общественный пустота setSpec(Спецификация спецификация);        /**     * Получает блок схемы Z тестируемой операции.     * @возвращаться     */    общественный Спецификация getSpec();          /**     * Устанавливает блок схемы Z тестируемой операции.     * @param opScheme     */    общественный пустота setOriginalOp(OpScheme opScheme);        /**     * Получает блок схемы Z тестируемой операции.     * @возвращаться     */    общественный OpScheme getOriginalOp();        /**     * Разбирает параметры этой тактики.     * @param str     * @возвращаться     */    общественный логический parseArgs(Нить ул.);        /**     * Устанавливает экземпляр TacticInfo, связанный с этим объектом.     * @paramtacticInfo     */    общественный пустота setTacticInfo(TacticInfo тактикаИнфо);        /**     * Получает экземпляр TacticInfo, связанный с этим объектом.     * @возвращаться     */    общественный TacticInfo getTacticInfo();        /**     * Получает описание этой тактики.     * @ вернуть строку с описанием этой тактики.     */        общественный Нить getDescription();        /**     * Устанавливает описание этой тактики.     * @param описание     */    общественный пустота setDescription(Нить описание);}

Смотрите также

Примечания

Рекомендации

  • Кристиа, Максимилиано; Родригес Монетти, Пабло (2009). «Внедрение и применение структуры Stocks-Carrington для модельно-ориентированного тестирования». Формальные методы и программная инженерия, 11-я Международная конференция по формальным методам проектирования, ICFEM 2009. Рио-де-Жанейро, Бразилия: Springer-Verlag.
  • Акции, Фил; Кэррингтон, Дэвид (1996), «Фреймворк для тестирования на основе спецификации», IEEE Transactions по разработке программного обеспечения, 22 (11): 777–793, Дои:10.1109/32.553698.
  • Информационные технологии - Формальная спецификация Z - Синтаксис, система типов и семантика (1 МБ PDF) (ISO / IEC 13568: 2002 ред.), 2002, с. 196 стр..
  • Кристиа, Максимилиано; Альбертенго, Пабло; Родригес Монетти, Пабло (2010). «Сокращение деревьев тестирования в структуре тестовых шаблонов путем обнаружения математических противоречий». 8-я Международная конференция IEEE по программной инженерии и формальным методам (SEFM), 2010 г.. Пиза, Италия: IEEE.