Автоматическое тестирование для Microsoft Bot Framework

Сейчас я работаю над своим первым ботом с Microsoft Bot Framework, с ASP.NET.

После ручного тестирования с помощью эмулятора бота я ищу лучший способ создания автоматического тестирования для бота.

Учитывая две проблемы:

  1. Как лучше всего автоматизировать такие тесты?
  2. Каков наилучший метод для проверки диалога, который может возвращать разные ответы на один и тот же ввод?

3 ответа

Решение

Одной из альтернатив является проведение функциональных тестов с использованием DirectLine. Предостережение заключается в том, что бот должен быть размещен, но он мощный. Проверьте проект тестов AzureBot, чтобы увидеть, как это работает.

Другая альтернатива - делать то, что делает команда BotFramework для некоторых своих модульных тестов.

Если вы используете диалоги, вы можете взглянуть на модульные тесты EchoBot, поскольку они просты в использовании.

Если вы используете цепочку, посмотрите, как они используют метод AssertScriptAsync.

Если вы ищете способ макетировать Luis Service, посмотрите это.

Возможно, вы захотите рассмотреть Selenium. Selenium - это программное обеспечение для автоматизации веб-браузера, позволяющее вам писать тесты, которые программно читают и записывают в DOM веб-страницы. С помощью скрипта Selenium вы можете:

  • Войдите в систему на любом канале, который предоставляет веб-клиент (и большинство из них: WebChat, Telegram, Skype, Facebook, например)
  • начать разговор с вашим ботом
  • выполнять операции, такие как отправка сообщения в чат и ожидание ответа
  • проверьте, является ли ответ тем, что вы ожидали.

Для автоматического тестирования ботов в Node.js хорошо работает ConsoleConnector так же, как тесты в BotBuilder на GitHub, например, посмотрите https://github.com/Microsoft/BotBuilder/blob/master/Node/core/tests/localization.js:

var assert = require('assert');
var builder = require('../');

describe('localization', function() {
this.timeout(5000);
it('should return localized prompt when found', function (done) { 
    var connector = new builder.ConsoleConnector();       
    var bot = new builder.UniversalBot(connector);
    bot.dialog('/', function (session, args) {
        session.send('id1');
    });
    bot.on('send', function (message) {
        assert(message.text === 'index-en1');
        done();
    });
    connector.processMessage('test');
});

...так далее...

Другие вопросы по тегам