Автоматическое тестирование для Microsoft Bot Framework
Сейчас я работаю над своим первым ботом с Microsoft Bot Framework, с ASP.NET.
После ручного тестирования с помощью эмулятора бота я ищу лучший способ создания автоматического тестирования для бота.
Учитывая две проблемы:
- Как лучше всего автоматизировать такие тесты?
- Каков наилучший метод для проверки диалога, который может возвращать разные ответы на один и тот же ввод?
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');
});
...так далее...