测试聊天机器人的新方法——Botfuel Dialog

文章做者:Maxime Khoygit

原文连接:Writing integration tests for a Botfuel Dialog chatbotgithub

编译:一熊翻译组 Masonnpm

输入图片说明

目标

在这篇教程中你能够学习如何使用 Jest 来测试你的聊天机器人,它是一个由 Facebook 开发的测试库。不过,你也可使用其它测试库,例如 Mocha。json

至于这篇教程的目标,是让你学习如何将机器人的手动测试自动化,以确保聊天机器人如期工做。async

对于这篇教程,咱们会从简单的样例机器人开始。请确保你已按照入门教程运行直至安装部分。学习

举个例子,初始的样例机器人会有以下的行为:测试

输入图片说明

让咱们来写一个测试来确保这一简单功能的运转。ui

配置

首先,咱们须要安装 Jest 做开发基础:翻译

npm install --dev jestcode

一旦 Jest 安装完成,添加以下test脚本到你的package.json文件:

"scripts": {
  "start": "botfuel-run",
  "train": "botfuel-train",
  "test": "jest"
},

你能够经过npm test来运行 Jest。

为了在测试模式下运行聊天机器人,咱们须要一个配置文件指出咱们将用到的test适配器。用以下内容在根级别建立一个test-config.js文件:

module.exports = {
  adapter: 'test',
};

写测试

为了模拟人与机器人之间的对话,咱们会使用Botplay方法。这种方法须要一组用户消息,其能够表明全部用户会发给聊天机器人的全部消息。对于用户来讲,它多是如下几种类型:

  • PostbackMessage (回执消息)
  • UserImageMessage (用户图片消息)
  • UserTextMessage (用户文本消息)

在咱们的样例中,他们都是些简单的UserTextMessage

举个例子,模拟这段对话:

输入图片说明

咱们会编写:

const bot = new Bot(config);
const userId = bot.adapter.userId;

await bot.play([
  new UserTextMessage('Hello'),
  new UserTextMessage('My name is Bob'),
]);

用户与机器人被捕捉的输出消息被储存进bot.adapter.log,因此咱们能够编写如下程序来测试机器人是否如期响应:

expect(bot.adapter.log)
  .toEqual([
    new UserTextMessage('Hello'),
    new BotTextMessage('Hello human!'),
    new UserTextMessage('My name is Bob'),
    new BotTextMessage('Nice to meet you Bob!'),
  ]
    .map(msg => msg.toJson(userId))
  );

比较指望的与实际的输出,咱们提供方便的toJson方法以便消息能够相比作原生的 JSON。这种方法须要userId做为一个参数,由于每一个UserTextMessage均可以转化为 JSON 的形式,并以消息做者的分类储存在userId下。

这里,你一样也可使用所有的消息类型。

让咱们来写一下完整的测试样例吧!

在聊天机器人的跟级别构建一个tests库并在其中用以下内容建立一个hello.test.js文件:

const { Bot, BotTextMessage, UserTextMessage } = require('botfuel-dialog');
const config = require('../test-config');

test('answers greeting and name', async () => {
  const bot = new Bot(config);
  const userId = bot.adapter.userId;

  await bot.play([new UserTextMessage('Hello'), new UserTextMessage('My name is Bob')]);

  expect(bot.adapter.log).toEqual(
    [
      new UserTextMessage('Hello'),
      new BotTextMessage('Hello human!'),
      new UserTextMessage('My name is Bob'),
      new BotTextMessage('Nice to meet you Bob!'),
    ].map(msg => msg.toJson(userId)),
  );
});

运行测试前,先执行如下命令:

BOTFUEL_APP_TOKEN=<the BOTFUEL_APP_TOKEN> BOTFUEL_APP_ID=<the BOTFUEL_APP_ID> BOTFUEL_APP_KEY=<the BOTFUEL_APP_KEY> npm test

这里须要你的应用证书由于你的聊天机器人会调用 NLP API。

你会看到以下结果:

输入图片说明

到此为止,恭喜你,你已经成功地将一个聊天机器人的测试样例自动化!

一熊翻译组隶属于一熊科技,咱们不生产科技杂文,咱们只是 GFW 上语种间的搬运工,欢迎点击「一熊翻译组」来加入咱们。主线产品「倍洽」日前迎来新版本上线,欲体验智能聊天机器人所带来的将来气息,与全新工做体验的无穷魅力,欢迎点击「倍洽」,从建立属于你的第一个团队开始……

输入图片说明

相关文章
相关标签/搜索