使用 botium 和 testmybot 包测试聊天机器人
Testing the Chatbots using botium and testmybot packages
如何使用 botium 或 testmybot 节点包测试聊天机器人?
我找不到任何端到端示例来理解这一点。
Testmybot and Botium 的 Git 集线器存储库中包含多个示例。
Botium Wiki contains some useful information and a Walkthrough.
运行创建 Botium 脚本的基本步骤如下(来自one of the samples)
安装要求
- 安装Node.js
- 安装docker
- 安装docker-compose
还有其他不需要 docker 的示例可用。
初始化 Botium 目录
打开命令行window,创建目录,初始化NPM并下载Botium包。
mkdir botium
cd botium
npm init
npm install --save botium-core
加载 botium 库
首先,加载 botium 库并需要 类.
const BotDriver = require('botium-core').BotDriver
const Capabilities = require('botium-core').Capabilities
const Source = require('botium-core').Source
配置能力
告诉 Botium 正在测试哪种聊天机器人以及如何连接它。在此示例中,聊天机器人应加载到 docker 容器中,并且 Botium 必须连接到 Microsoft Bot Framework。
const driver = new BotDriver()
.setCapability(Capabilities.PROJECTNAME, 'core-CreateNewConversation')
.setCapability(Capabilities.CONTAINERMODE , 'docker')
.setCapability(Capabilities.BOTFRAMEWORK_API, true)
.setCapability(Capabilities.BOTFRAMEWORK_APP_ID, 'my microsoft app id')
.setCapability(Capabilities.BOTFRAMEWORK_CHANNEL_ID, 'facebook')
配置聊天机器人存储库
Botium 直接从源 Github 存储库中检索聊天机器人代码。作为替代方案,可以先克隆存储库并从本地目录加载。在 CI 环境中,从 Git 加载通常更有意义。
此外,初始化 Git 存储库的命令 ("npm install")、启动聊天机器人服务的命令 ("npm start") 和 运行 示例聊天机器人需要一些环境变量.
driver.setSource(Source.GITURL, 'https://github.com/Microsoft/BotBuilder-Samples.git')
.setSource(Source.GITDIR, 'Node/core-CreateNewConversation')
.setSource(Source.GITPREPARECMD, 'npm install')
.setCapability(Capabilities.STARTCMD, 'npm start')
.setEnv('MICROSOFT_APP_ID', 'my microsoft app id')
.setEnv('MICROSOFT_APP_PASSWORD', 'my microsoft app password')
.setEnv('NODE_DEBUG', 'botbuilder')
.setEnv('DEBUG', '*')
运行进行对话并评估回应
Botium 提供了一个“fluent interface”。
首先,初始化 Botium 驱动程序(创建工作目录,下载存储库,docker 构建网络,...)并启动。
driver.BuildFluent()
.Start()
...
然后,通过向聊天机器人发送输入 ("UserSaysText") 或等待聊天机器人的反应 ("WaitBotSaysText") 开始对话。对话是为正在使用的聊天机器人量身定制的。如果聊天机器人没有反应或出现意外反应,对话将立即结束。
...
.UserSaysText('hi bot')
.WaitBotSaysText((text) => assert('You\'ve been invited to a survey! It will start in a few seconds...', text))
.WaitBotSaysText(null, 10000, (text) => assert('Hello... What\'s your name?', text))
.UserSaysText('John')
.WaitBotSaysText((text) => assert('Hi John, How many years have you been coding?', text))
.UserSaysText('5')
.WaitBotSaysText((text) => assert('What language do you code Node using?', text))
.UserSaysText('CoffeeScript')
.WaitBotSaysText((text) => assert('Got it... John you\'ve been programming for 5 years and use CoffeeScript.', text))
...
最后,Botium 被停止并执行了一些清理任务。
不要忘记调用"Exec",否则什么都不会执行!
...
.Stop()
.Clean()
.Exec()
...
运行程序和观察输出
现在运行程序像往常一样在命令行中运行window。
[ec2-user@ip-172-30-0-104 botframework]$ node botiumFluent.js
SUCCESS: Got Expected <You've been invited to a survey! It will start in a few seconds...>
SUCCESS: Got Expected <Hello... What's your name?>
SUCCESS: Got Expected <Hi John, How many years have you been coding?>
SUCCESS: Got Expected <What language do you code Node using?>
SUCCESS: Got Expected <Got it... John you've been programming for 5 years and use CoffeeScript.>
READY
[ec2-user@ip-172-30-0-104 botframework]$
TestMyBot
Botium 与 Selenium/Appium 正在做的事情相当(统一 API 和 "Page Object Model")。 TestMyBot 是 Botium 之上的一层,用于将 Botium 与 CI/CD 管道集成并测试 运行 像 Mocha 和 Jasmine 这样的工具。对话不必像上面那样编码,而是"scripted"文本文件,excel文件或yml文件,例如:
调查
#me
hi
#bot
You've been invited to a survey! It will start in a few seconds...
#bot
Hello... What's your name?
#me
John
#bot
Hi John, How many years have you been coding?
#me
10
#bot
What language do you code Node using?
#me
C#
#bot
I didn't understand. Please choose an option from the list.
#me
JavaScript
#bot
Got it... John you've been programming for 10 years and use JavaScript.
所有这些文件都必须放在目录 spec/convo 中,并且 Jasmine 或 Mocha(或任何其他测试 运行ner)的测试用例是用 on-the-fly 创建的只是一个简短的小脚本(放入 spec/testmybot.spec.js):
const bot = require('testmybot');
bot.helper.jasmine().setupJasmineTestSuite(60000);
了解 Jasmine 或 Mocha 知识真的很有帮助。正确设置后,运行 的唯一命令是:
npm run test
如何使用 botium 或 testmybot 节点包测试聊天机器人?
我找不到任何端到端示例来理解这一点。
Testmybot and Botium 的 Git 集线器存储库中包含多个示例。
Botium Wiki contains some useful information and a Walkthrough.
运行创建 Botium 脚本的基本步骤如下(来自one of the samples)
安装要求
- 安装Node.js
- 安装docker
- 安装docker-compose
还有其他不需要 docker 的示例可用。
初始化 Botium 目录
打开命令行window,创建目录,初始化NPM并下载Botium包。
mkdir botium
cd botium
npm init
npm install --save botium-core
加载 botium 库
首先,加载 botium 库并需要 类.
const BotDriver = require('botium-core').BotDriver
const Capabilities = require('botium-core').Capabilities
const Source = require('botium-core').Source
配置能力
告诉 Botium 正在测试哪种聊天机器人以及如何连接它。在此示例中,聊天机器人应加载到 docker 容器中,并且 Botium 必须连接到 Microsoft Bot Framework。
const driver = new BotDriver()
.setCapability(Capabilities.PROJECTNAME, 'core-CreateNewConversation')
.setCapability(Capabilities.CONTAINERMODE , 'docker')
.setCapability(Capabilities.BOTFRAMEWORK_API, true)
.setCapability(Capabilities.BOTFRAMEWORK_APP_ID, 'my microsoft app id')
.setCapability(Capabilities.BOTFRAMEWORK_CHANNEL_ID, 'facebook')
配置聊天机器人存储库
Botium 直接从源 Github 存储库中检索聊天机器人代码。作为替代方案,可以先克隆存储库并从本地目录加载。在 CI 环境中,从 Git 加载通常更有意义。 此外,初始化 Git 存储库的命令 ("npm install")、启动聊天机器人服务的命令 ("npm start") 和 运行 示例聊天机器人需要一些环境变量.
driver.setSource(Source.GITURL, 'https://github.com/Microsoft/BotBuilder-Samples.git')
.setSource(Source.GITDIR, 'Node/core-CreateNewConversation')
.setSource(Source.GITPREPARECMD, 'npm install')
.setCapability(Capabilities.STARTCMD, 'npm start')
.setEnv('MICROSOFT_APP_ID', 'my microsoft app id')
.setEnv('MICROSOFT_APP_PASSWORD', 'my microsoft app password')
.setEnv('NODE_DEBUG', 'botbuilder')
.setEnv('DEBUG', '*')
运行进行对话并评估回应
Botium 提供了一个“fluent interface”。
首先,初始化 Botium 驱动程序(创建工作目录,下载存储库,docker 构建网络,...)并启动。
driver.BuildFluent()
.Start()
...
然后,通过向聊天机器人发送输入 ("UserSaysText") 或等待聊天机器人的反应 ("WaitBotSaysText") 开始对话。对话是为正在使用的聊天机器人量身定制的。如果聊天机器人没有反应或出现意外反应,对话将立即结束。
...
.UserSaysText('hi bot')
.WaitBotSaysText((text) => assert('You\'ve been invited to a survey! It will start in a few seconds...', text))
.WaitBotSaysText(null, 10000, (text) => assert('Hello... What\'s your name?', text))
.UserSaysText('John')
.WaitBotSaysText((text) => assert('Hi John, How many years have you been coding?', text))
.UserSaysText('5')
.WaitBotSaysText((text) => assert('What language do you code Node using?', text))
.UserSaysText('CoffeeScript')
.WaitBotSaysText((text) => assert('Got it... John you\'ve been programming for 5 years and use CoffeeScript.', text))
...
最后,Botium 被停止并执行了一些清理任务。 不要忘记调用"Exec",否则什么都不会执行!
...
.Stop()
.Clean()
.Exec()
...
运行程序和观察输出
现在运行程序像往常一样在命令行中运行window。
[ec2-user@ip-172-30-0-104 botframework]$ node botiumFluent.js
SUCCESS: Got Expected <You've been invited to a survey! It will start in a few seconds...>
SUCCESS: Got Expected <Hello... What's your name?>
SUCCESS: Got Expected <Hi John, How many years have you been coding?>
SUCCESS: Got Expected <What language do you code Node using?>
SUCCESS: Got Expected <Got it... John you've been programming for 5 years and use CoffeeScript.>
READY
[ec2-user@ip-172-30-0-104 botframework]$
TestMyBot
Botium 与 Selenium/Appium 正在做的事情相当(统一 API 和 "Page Object Model")。 TestMyBot 是 Botium 之上的一层,用于将 Botium 与 CI/CD 管道集成并测试 运行 像 Mocha 和 Jasmine 这样的工具。对话不必像上面那样编码,而是"scripted"文本文件,excel文件或yml文件,例如:
调查
#me
hi
#bot
You've been invited to a survey! It will start in a few seconds...
#bot
Hello... What's your name?
#me
John
#bot
Hi John, How many years have you been coding?
#me
10
#bot
What language do you code Node using?
#me
C#
#bot
I didn't understand. Please choose an option from the list.
#me
JavaScript
#bot
Got it... John you've been programming for 10 years and use JavaScript.
所有这些文件都必须放在目录 spec/convo 中,并且 Jasmine 或 Mocha(或任何其他测试 运行ner)的测试用例是用 on-the-fly 创建的只是一个简短的小脚本(放入 spec/testmybot.spec.js):
const bot = require('testmybot');
bot.helper.jasmine().setupJasmineTestSuite(60000);
了解 Jasmine 或 Mocha 知识真的很有帮助。正确设置后,运行 的唯一命令是:
npm run test