博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
测试聊天机器人的新方法——Botfuel Dialog
阅读量:5924 次
发布时间:2019-06-19

本文共 2394 字,大约阅读时间需要 7 分钟。

文章作者:

原文链接:

编译: Mason

前言:因为 Botfuel Dialog 聊天机器人是一个网络应用,你可以依靠它强大的编程功能,例如单元与集成测试,来测试你的机器人。

目标

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

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

对于这篇教程,我们会从开始。请确保你已按照运行直至部分。

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

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

配置

首先,我们需要安装 Jest 作开发基础:

npm install --dev jest

一旦 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 上语种间的搬运工,欢迎点击来加入我们。主线产品日前迎来新版本上线,欲体验智能聊天机器人所带来的未来气息,与全新工作体验的无穷魅力,欢迎点击,从创建属于你的第一个团队开始……

转载地址:http://kgivx.baihongyu.com/

你可能感兴趣的文章
WordPress 如何不使用插件安装网站跟踪代码
查看>>
星巴克获潘兴资本9亿美元战略投资
查看>>
MOBIM接口说明
查看>>
mybatis-generator:generate无法生成dao层pojo层mapper层,漏了转义字符
查看>>
【3y】从零单排学Redis【青铜】
查看>>
数据科学比赛经历分享——风机开裂故障预警比赛
查看>>
习题 3: 数字和数学计算
查看>>
Nginx 源码分析:ngx_hash_t(下)
查看>>
phantomjs抛出IOException
查看>>
验证码爬取并识别-云大urp教务系统大作战(1)
查看>>
docker和kubernetes docker的区别
查看>>
Debian 项目领导人职位已有三位侯选者
查看>>
11-玩转数据结构-并查集
查看>>
MODIS数据的简介和下载(六)——基于浏览器模拟登陆下载的方式以及D3L Tool开发...
查看>>
Android--List转换String,String转换List
查看>>
webstorm使用技巧
查看>>
网上总结较好的知识点以及学习步骤
查看>>
SonarQube 7.7 发布,代码质量管理平台
查看>>
轻松了解Spring中的控制反转和依赖注入(一)
查看>>
在Excel表里面插入背景图
查看>>