Microsoft Bot Framework的自动测试

时间:2016-12-27 16:34:13

标签: c# testing automated-tests botframework botconnector

我现在正在使用带有ASP.NET的Microsoft Bot Framework的第一个机器人上工作。

使用bot模拟器手动测试后,我正在寻找为机器人创建自动测试的最佳方法。

考虑两个问题:

  1. 自动化此类测试的最佳工具是什么?
  2. 测试可以为同一输入返回不同答案的对话框的最佳方法是什么?

3 个答案:

答案 0 :(得分:7)

一种替代方法是使用DirectLine进行功能测试。需要注意的是,机器人需要托管,但它很强大。查看AzureBot tests project以查看其工作原理。

另一种选择是,正在做BotFramework团队正在进行的一些单元测试。

如果您使用的是对话框,可以查看EchoBot unit tests,因为它们很容易理解。

如果您正在使用Chain,请查看他们如何使用AssertScriptAsync方法。

如果您正在寻找模拟Luis服务的方法,请参阅this

答案 1 :(得分:3)

您可能需要考虑Selenium。 Selenium是Web浏览器自动化软件,允许您编写以编程方式读取和写入网页DOM的测试。使用Selenium脚本,您可以:

  • 登录任何提供网络客户端的渠道(其中大部分都是:WebChat,Telegram,Skype,Facebook)
  • 与您的机器人开始对话
  • 执行诸如向聊天发布消息并等待回复等操作
  • 测试回复是否符合您的预期。

答案 2 :(得分:1)

对于Node.js中的机器人的自动测试,使用ConsoleConnector的方式与GitHub上的BotBuilder中的测试相同,例如,看看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');
});

...等...