【发布时间】:2016-12-27 16:34:13
【问题描述】:
我现在正在使用 Microsoft Bot Framework 和 ASP.NET 开发我的第一个机器人。
在使用机器人模拟器手动测试后,我正在寻找为机器人创建自动测试的最佳方法。
考虑两个问题:
- 自动化此类测试的最佳工具是什么?
- 测试可以对同一输入返回不同答案的对话框的最佳方法是什么?
【问题讨论】:
标签: c# azure testing automated-tests botframework
我现在正在使用 Microsoft Bot Framework 和 ASP.NET 开发我的第一个机器人。
在使用机器人模拟器手动测试后,我正在寻找为机器人创建自动测试的最佳方法。
考虑两个问题:
【问题讨论】:
标签: c# azure testing automated-tests botframework
另一种方法是使用 DirectLine 进行功能测试。需要注意的是,该机器人需要托管,但它很强大。查看AzureBot tests project 了解其工作原理。
另一种选择是做 BotFramework 团队正在为他们的一些单元测试做的事情。
如果您使用对话框,可以查看EchoBot unit tests,因为它们很容易理解。
如果你使用的是 Chain,那么看看他们是如何使用 AssertScriptAsync 方法的。
如果您正在寻找模拟 Luis 服务的方法,请参阅 this。
【讨论】:
您可能需要考虑Selenium。 Selenium 是 Web 浏览器自动化软件,允许您编写以编程方式读取和写入网页 DOM 的测试。使用 Selenium 脚本,您可以:
【讨论】:
对于 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');
});
...等等...
【讨论】: