微软机器人框架的自动化测试

7

我现在正在使用ASP.NET和Microsoft Bot Framework开发我的第一个机器人。

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

考虑到以下两个问题:

  1. 哪种工具是自动化测试的最佳选择?
  2. 如何测试可以返回不同答案的对话框?
3个回答

8

一种替代方案是使用DirectLine进行功能测试。需要注意的是,机器人需要托管在服务器上,但它非常强大。查看AzureBot测试项目以了解其工作原理。

另一个选择是BotFramework团队为部分单元测试所做的。

如果您正在使用Dialogs,则可以查看EchoBot单元测试,因为它们易于理解。

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

如果您想要模拟Luis服务,请参见此处


实际上,这个链接 https://github.com/Microsoft/BotBuilder/tree/master/CSharp/Tests/Microsoft.Bot.Sample.Tests 更适合展示单元测试,因为它包含了一些真实的例子。 - OmG

3
您可以考虑使用Selenium。Selenium是一款Web浏览器自动化软件,允许您编写测试脚本,以编程方式读取和写入Web页面的DOM。使用Selenium脚本,您可以:
  • 登录任何提供Web客户端的渠道(大多数渠道都提供:例如WebChat、Telegram、Skype和Facebook)
  • 与您的机器人开始对话
  • 执行操作,如在聊天中发布消息并等待回复
  • 测试回复是否符合预期。

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');
});

...etc...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接