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



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

有没有可能在Azure Pipelines中实现这种自动化测试过程?

我不能具体帮助您使用C#,但我正在用我的nodejs bot进行这种类型的测试,所以这可能会有所帮助。我在这里回答了你们的另一个问题,我已经给出了用于测试的特定nodejs代码。这个答案将更多地集中在自动化测试的方法上,并使用Azure Pipelines来执行它

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

无论如何,我希望我在nodejs中的方法可以在C#中为您转移。我想指出的是,实际上有两种不同的方法可以用来实现您的测试。

  1. 创建一个测试机器人适配器并模拟整个机器人,专门测试识别话语,将其发送到QnAMaker,根据需要处理响应,并将响应发布给用户(并验证响应内容(
  2. 直接对QnA制造商进行REST调用并验证结果

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

如果你检查了另一个问题的答案,这应该会为你提供选项1所需的方法。对于选项2,我建议使用Azure函数,只需编写自己的测试,即可对QnAMaker进行REST调用并验证结果。

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

最新更新