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

发表于:2018-3-05 10:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨雷    来源:infoq

  前言:因为 Botfuel Dialog 聊天机器人是一个网络应用,你可以依靠它强大的编程功能,例如单元与集成测试,来测试你的机器人。
  目标
  在这篇教程中你可以学习如何使用 Jest 来测试你的聊天机器人,它是一个由 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文件:
  写测试
  为了模拟人与机器人之间的对话,我们会使用Bot的play方法。这种方法需要一组用户消息,其可以代表所有用户会发给聊天机器人的所有消息。对于用户来说,它可能是以下几种类型:
  ●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文件:
  运行测试前,先执行以下命令:
  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。
  你会看到如下结果:
  到此为止,恭喜你,你已经成功地将一个聊天机器人的测试样例自动化!


上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。 
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号