如何自动测试 QnA Maker Bot(Bot Framework V4,C#)?

How to automatically test a QnA Maker Bot (Bot Framework V4, C#)?

我正在基于 QnA Maker 和 Microsoft Bot Framework V4 on C# 构建机器人。我有几个知识库,我想验证机器人是否以正确的答案回答我的问题。有没有办法自动测试这种类型的机器人?

是否有可能将此自动化测试过程实施到 Azure Pipelines 中?

我无法专门为您提供 C# 方面的帮助,但我正在使用我的 nodejs 机器人进行此类测试,因此这可能会有所帮助。我回答了你们中的另一个问题 ,我在其中给出了我的特定 nodejs 代码进行测试。这个答案将更多地关注自动化测试和使用 Azure Pipelines 来执行它的方法。

我正在使用 mocha 作为我的测试框架,但如果 C# 中有类似的东西,这种方法应该有效。这是我的知识不完整的地方;我不知道 npm test 的 C# 等价物是什么。

无论如何,我希望我在 nodejs 中的方法可以转移到 C# 中。我想提一下,您实际上可以采用两种不同的方法来实施测试。

  1. 创建一个测试机器人适配器并模拟您的整个机器人,测试具体识别话语,将其发送到 QnA Maker,根据需要处理响应,并将响应发布给用户(并验证该响应内容)。
  2. 直接对 QnA maker 进行 REST 调用并验证结果

如果您担心机器人会正确处理活动、在正确的时间调用 QnA Maker 连接器、正确解析响应并获得正确的答案,请选择选项 1。如果您只是想确保您的 QnA 服务正在运行并返回预期结果,您可以使用方法 2。我个人使用方法 1,但我模拟了 web 服务响应(使用 npm 库中的 nock)所以我根本没有测试 QnA Maker,只有机器人。在您的管道中进行实时测试(如果您的测试确定是否创建发布)可能会出现问题。

如果您检查 上的答案,那应该会为您提供选项 1 所需的方法。对于选项 2,我建议使用 Azure Function 并编写自己的测试来进行 REST调用 QnA Maker 并验证结果。

这些测试中的任何一个都可以在 Azure Pipelines 中完成。对于 nodejs/option 1,我只是 运行 npm test 命令,它被配置为执行我所有的测试文件。如果任何测试失败,则管道失败并且(根据我的配置)不会创建任何版本。我不确定 C# 的等价物是什么。对于选项 2,老实说,我什至不担心将其放入管道中,因为它独立于您的机器人代码。只需在 Azure Functions(如果你使用它)或任何你想要的执行触发器中设置你的测试计划,并获得一些可操作的输出。例如。我在 Azure Functions 中有一个实时集成测试器,这是一个类似的概念,它会根据结果和状态变化发送服务关闭和服务恢复消息。