Teams 应用测试工具

注意

Microsoft Teams 工具包的最新预发行版中提供了 Teams 应用测试工具。 确保安装 Teams 工具包的最新预发行版

Teams 应用测试工具 (测试工具) 使调试基于机器人的应用变得轻松。 你可以与机器人聊天,并在 Microsoft Teams 中查看其消息和自适应卡片。 无需 Microsoft 365 开发人员帐户、隧道或 Teams 应用和机器人注册即可使用测试工具。

下图显示了一个示例应用,其中显示了一个自适应卡片,其中包含测试工具中的命令列表。 它还提供命令的说明,以便你无需手动搜索代码即可测试应用:

屏幕截图显示 Teams 应用测试工具自适应卡片。

以下是测试工具的优点:

  • 沙盒环境:测试工具的沙盒环境模拟 Teams 的行为、外观和用户体验。

  • 隧道:不需要外部隧道服务,因为测试工具在机器人可以与之通信的本地服务器上运行。

  • 减少帐户依赖项:调试机器人不需要 Microsoft 365 开发人员租户和应用上传权限。

  • 快速内部循环迭代:优化对应用设计和机器人逻辑进行更改的过程,而无需将机器人重新部署到云。

  • 模拟数据和活动:使用测试工具可以轻松测试复杂方案,例如,在新成员加入通道时,使用模拟数据和活动触发器发送欢迎消息。

  • 可靠:测试工具可靠,因为机器人的自适应卡片使用与 Teams 中的相同呈现技术。

  • 与现有 Teams 机器人应用程序集成:测试工具毫不费力地与使用 Bot Framework SDK 构建的现有 Teams 机器人应用程序集成。

  • 支持不同范围:测试工具支持在个人、团队和群组聊天范围内进行测试。

先决条件

确保安装以下工具,用于在测试工具中生成和部署机器人:

  安装 用于使用...
  Teams 工具包 Microsoft Visual Studio Code扩展,用于为应用创建项目基架。 使用最新的预发行版。
  Node.js 后端 JavaScript 运行时环境。 有关详细信息,请参阅 项目类型的Node.js 版本兼容性表
  Visual Studio Code JavaScript、TypeScript 或 SharePoint 框架 (SPFx) 生成环境。 使用最新版本。

了解测试工具

测试工具是具有名为 的 CLI 命令的 teamsapptesternpm 包。 运行 teamsapptester start时,它会在本地计算机上打开一个模拟 Teams Web 客户端和 Bot Framework 服务的 Web 应用。 此 Web 应用不需要任何云资源,因为它使用模拟数据来模拟 Teams 的上下文信息。

若要在测试工具上使用 Teams 机器人,需要提供:

  • 消息终结点:机器人消息终结点是链接测试工具和机器人的 URL。 可以使用环境变量更新终结点, BOT_ENDPOINT 也可以使用默认值 http://localhost:3978/api/messages
  • 配置文件 (可选) :配置文件告知测试工具 Teams 中的自定义上下文信息。 该文件在项目的根文件夹中名为 .teamsapptesttool.yml 。 如果 Teams 找不到此文件,它将使用默认配置。 有关详细信息,请参阅 自定义 Teams 上下文

Teams 工具包中的测试工具体验

与 Teams 客户端相比,测试工具为机器人应用程序提供了更快的调试体验。

  1. 打开 Visual Studio Code。

  2. 选择“Visual Studio Code活动栏中的 Teams 工具包”图标。

  3. 选择“ 创建新应用”。

    屏幕截图显示了 Teams 工具包边栏中“创建新项目”链接的位置。

  4. 选择“ 机器人”。

    屏幕截图显示了 Teams 工具包应用模板。

  5. 选择“ AI 聊天机器人”。 如果需要为机器人提供其他功能,请选择其他选项。

    屏幕截图显示要添加到新应用的应用功能。

  6. 选择 “JavaScript”。

    屏幕截图显示了用于选择编程语言的选项。

  7. 选择“ 默认文件夹”。

    屏幕截图显示了默认位置的选择。

    若要更改默认位置,请执行以下步骤:

    1. 选择“ 浏览”。

      屏幕截图显示了选择的浏览位置选项。

    2. 选择项目工作区的位置。

    3. 选择 “选择文件夹”。

      屏幕截图显示要选择的文件夹。

  8. 为应用输入合适的 名称,然后选择 Enter 键。

    屏幕截图显示输入应用名称的位置。

    此时会显示一个对话框,你需要选择“是”或“否”来信任此文件夹中文件的作者。

    屏幕截图显示了要信任或不信任此文件夹中文件的作者的对话框。

  9. 在左窗格中,选择“ 运行”和“调试 (Ctrl+Shift+D) ”,然后在下拉列表 中选择“在测试工具中调试” (预览)

    屏幕截图显示用于在测试工具中选择“调试”的选项。

  10. 测试工具在网页中打开机器人。

    屏幕截图显示了在测试工具中打开的机器人。

活动触发器

可以使用活动触发器在测试工具中模拟活动。 有两种类型的活动触发器:

  1. 预定义的活动触发器
  2. 自定义活动触发器

预定义的活动触发器

测试工具提供预定义的活动触发器来测试机器人的功能。

类别 活动 处理程序
触发安装更新活动 安装机器人


卸载机器人
onInstallationUpdate
onInstallationUpdateAdded

onInstallationUpdate
onInstallationUpdateRemove
触发对话更新活动 添加用户

添加机器人

添加通道
onMembersAdded

onTeamsMembersAddedEvent

onTeamsChannelRenamedEvent
删除用户


删除机器人


删除频道

删除团队
onMembersRemoved
onTeamsMembersRemovedEvent

onMembersRemoved
onTeamsMembersRemovedEvent

onTeamsChannelDeletedEvent

onTeamsTeamDeletedEvent
重命名通道

重命名团队
onTeamsChannelRenamedEvent

onTeamsTeamRenamedEvent

注意

并非所有范围都提供所有类型的活动。 例如,不能在个人聊天或群组聊天中添加或删除频道。

在测试工具的 模拟活动 菜单中提供了预定义的活动触发器。

若要模拟 “添加用户” 活动,请执行以下步骤:

  1. 在“测试工具”中,转到 “模拟活动 ”,然后选择“ 添加用户”。

    屏幕截图显示模拟活动下的“添加用户”选项。

    此时将显示一个弹出窗口,用于预览活动处理程序。

  2. 选择“ 发送活动”。

    屏幕截图显示用于为预定义的模拟活动添加用户发送活动的选项。

    机器人发送响应。

    屏幕截图显示了预定义的模拟活动添加用户的响应。

自定义活动触发器

可以使用 自定义活动 来自定义活动触发器,例如 , reactionsAdded以满足机器人应用的要求。 测试工具会自动填充活动的必需属性。 还可以修改活动类型并添加更多属性。

  1. 选择模拟 活动>自定义活动

    屏幕截图显示模拟活动下的选项列表。

  2. 添加 messageReaction 以在 属性 type 下自定义活动并调用自定义活动。

    {
      "type": "messageReaction",
      "reactionsAdded": [
        {
          "type": "like"
        }
      ],
      "replyToId": "d60fd1cb-3e8f-44ef-849c-404806ba1b47"
    }
    
  3. 选择“ 发送活动”。

    屏幕截图显示自定义模拟活动后发送活动的选项。

    机器人在响应中发送 onReactionsAdded 处理程序。

    屏幕截图显示了自定义模拟活动的响应。

自定义 Teams 上下文

项目根文件夹中的配置文件允许你自定义 Teams 上下文信息,例如聊天、团队和用户。 该文件提供模拟数据,用于测试 Bot Framework API 或 Bot Builder SDK 方法,例如 TeamsInfo.getTeamMembers

默认配置

测试工具在项目的根文件夹中包含一个内置配置文件。
# yaml-language-server: $schema=https://aka.ms/teams-app-test-tool-config/0.1.0/config.schema.json
# Visit https://aka.ms/teams-app-test-tool-config-guide for more details on this file.

# This configuration file customizes the Teams context information like chats, teams, and users.
# It contains mock data for testing Bot Framework APIs or Bot Builder SDK methods such as TeamsInfo.getTeamMembers().
# You can customize this file to change API response if your bot code uses these APIs.
version: "0.1.0"
tenantId: 00000000-0000-0000-0000-0000000000001
bot:
  id: 00000000-0000-0000-0000-00000000000011
  name: Test Bot
currentUser:
  id: user-id-0
  name: Alex Wilber
  userPrincipleName: alexw@example.com
  aadObjectId: 00000000-0000-0000-0000-0000000000020
  givenName: Alex
  surname: Wilber
  email: alexw@example.com
users:
  - id: user-id-1
    name: Megan Bowen
    userPrincipleName: meganb@example.com
    aadObjectId: 00000000-0000-0000-0000-0000000000021
    givenName: Megan
    surname: Bowen
    email: meganb@example.com
  - id: user-id-2
    name: Adele Vance
    userPrincipleName: adelev@example.com
    aadObjectId: 00000000-0000-0000-0000-0000000000022
    givenName: Adele
    surname: Vance
    email: adelev@example.com
  - id: user-id-3
    name: Isaiah Langer
    userPrincipleName: isaiah@example.com
    aadObjectId: 00000000-0000-0000-0000-0000000000023
    givenName: Isaiah
    surname: Langer
    email: isaiahl@example.com
  - id: user-id-4
    name: Patti Fernandez
    userPrincipleName: pattif@example.com
    aadObjectId: 00000000-0000-0000-0000-0000000000024
    givenName: Patti
    surname: Fernandez
    email: pattif@example.com
  - id: user-id-5
    name: Lynne Robbins
    userPrincipleName: lynner@example.com
    aadObjectId: 00000000-0000-0000-0000-0000000000025
    givenName: Lynne
    surname: Robbins
    email: lynner@example.com
personalChat:
  id: personal-chat-id
groupChat:
  id: group-chat-id
  name: Group Chat
team:
  id: team-id
  name: My Team
  aadGroupId: 00000000-0000-0000-0000-000000000031
  channels:
    - id: channel-announcements-id
      name: Announcements

更新配置文件

如果机器人代码使用 Bot Framework API,则可以修改配置文件以更改 API 响应。 让我们考虑在团队中安装的 Azure DevOps 通知机器人,该机器人从 Azure DevOps 提取非活动 bug。 它标识非活动 bug 的所有者,提取其电子邮件地址,并每天向其个人聊天发送通知。

若要在测试工具中全面测试此机器人,更新配置文件以使用非活动 bug 所有者的正确电子邮件地址至关重要。

  1. 转到 .teamsapptesttool.yml 项目的根文件夹中的文件。

  2. 转到 users 部分并更新 name所需用户的 、 userPrincipleNameemail

    users:
        - id: user-id-1
          name: Megan Bowen
          userPrincipleName: meganb@example.com
          aadObjectId: 00000000-0000-0000-0000-0000000000021
          givenName: Megan
          surname: Bowen
          email: some-real-user@real-domain.onmicrosoft.com
    
  3. 保存文件,然后选择 F5 以在测试工具中进行调试。

注意

在 Visual Studio Code 中编辑配置文件时,Intellisense 会自动更新属性名称,并在输入无效值时发出警告。

必须认识到更新配置文件有三个主要影响:

  • 它会影响从 Bot Framework 连接器 API 获取的响应, TeamsInfo.getPagedMembers()例如 。
  • 它塑造活动有效负载中的详细信息,例如 activity.recipient
  • 它会影响测试工具中的用户界面,例如群聊名称。

限制

  • 通过 Teams 应用清单启用的机器人功能不可用,因为测试工具不会处理它。

  • 测试工具不支持除自适应卡片以外的所有类型的卡片。

  • 测试工具不支持以下自适应卡片功能:

  • 测试工具不支持以下体验:

    • 移动设备
    • 会议
  • 测试工具可以模拟以下体验:

    功能 在测试工具中调试 在本地调试 Teams 应用
    基本发送/接收消息 可用 可用
    Bot Framework API (TeamsInfo.getPagedMembers () ...) 可用 (使用模拟数据) 进行响应 可用
    发送 Teams 事件 可用的 (模拟活动) 可用
    键入指示器 不可用 可用
    选项卡、消息扩展、对话 (TeamsJS v1.x) 中称为任务模块、单一登录 (SSO) 和非自适应卡 不可用 可用

使用测试工具调试现有应用

确保已使用 Teams 工具包创建现有机器人。 若要使用测试工具调试机器人,请执行以下步骤:

  1. 在 Teams 工具包中打开现有机器人的项目文件夹。

  2. 转到 EXPLORER.vscode>。

  3. 选择 “launch.json ”,并在文件末尾添加以下代码:

    // .vscode/launch.json 
    
    { 
        ... 
        "compounds": [ 
            ... 
            { 
                "name": "Debug in Test Tool", 
                "configurations": [ 
                    "Attach to Local Service" 
                ], 
                "preLaunchTask": "Start Teams App (Test Tool)", 
                "presentation": { 
                    "group": "1-local", 
                    "order": 1 
                }, 
                "stopAll": true 
            }, 
        ] 
    } 
    
  4. 转到 tasks.json 并在文件末尾添加以下代码:

        { 
          "label": "Start Test Tool", 
          "type": "shell", 
          "command": "npm run dev:teamsfx:launch-testtool", 
          "isBackground": true, 
          "options": { 
            "env": { 
              "PATH": "${workspaceFolder}/devTools/teamsapptester/node_modules/.bin:${env:PATH}" 
            } 
          }, 
          "windows": { 
            "options": { 
              "env": { 
                "PATH": "${workspaceFolder}/devTools/teamsapptester/node_modules/.bin;${env:PATH}" 
              } 
            } 
          }, 
          "problemMatcher": { 
            "pattern": [ 
              { 
                "regexp": "^.*$", 
                "file": 0, 
                "location": 1, 
                "message": 2 
              } 
            ], 
            "background": { 
              "activeOnStart": true, 
              "beginsPattern": ".*", 
              "endsPattern": "Listening on" 
            } 
          }, 
          "presentation": { 
            "panel": "dedicated", 
            "reveal": "silent" 
          } 
        }, 
      ],
    }
    
  5. “资源管理器”下,创建 .localConfigs.testtool 文件并添加以下代码:

    // .localConfigs.testTool
    # A gitignored place holder file for local runtime configurations when debug in test tool
    BOT_ID=
    BOT_PASSWORD=
    TEAMSFX_NOTIFICATION_STORE_FILENAME=.notification.testtoolstore.json
    
  6. 转到 资源管理器>env

  7. 创建 .env.testtool 文件并添加以下代码:

    // .env.testtool
    # This file includes environment variables that can be committed to git. It's gitignored by default because it represents your local development environment
    # Built-in environment variables
    TEAMSFX_ENV=testtool
    # Environment variables used by test tool
    TEAMSAPPTESTER_PORT=56150
    
  8. 如果有自定义环境变量,请在 .env.testtool.env.testtool.user 中设置其值。

  9. .env.testtool.user 中添加 OpenAI 密钥或 Azure OpenAI 密钥和终结点。

    # SECRET_OPENAI_API_KEY=***********
    SECRET_AZURE_OPENAI_API_KEY=***********
    SECRET_AZURE_OPENAI_ENDPOINT=<https://your-openai-service-name.openai.azure.com/>
    
  10. 转到 package.json 并在 属性下 scripts 添加以下代码:

    "scripts": {
        ... 
        "dev:teamsfx:testtool": "env-cmd --silent -f .localConfigs.testTool npm run dev", 
        "dev:teamsfx:launch-testtool": "env-cmd --silent -f env/.env.testtool teamsapptester start", 
        ... 
    },
    
  11. 在左窗格中,选择“ 运行和调试 (Ctrl+Shift+D) 并在下拉列表 中选择”在测试工具中调试 ”。

    屏幕截图显示用于在测试工具中选择“调试”的选项。

测试工具成功调试现有机器人。

常见问题

如果测试工具不支持其功能,如何测试机器人?

你始终可以使用 Teams 客户端来测试测试测试工具不支持的功能。 选择“ 在 Teams (Edge) 中调试”或“ 在 Teams (Chrome) 中调试 ”选项,在 Teams 客户端中测试应用程序。
 

如何知道测试工具是否不支持机器人中的功能?

测试工具在检测到不支持的功能时,在对话和日志面板中显示警告消息。

屏幕截图显示了不受支持的功能的警告消息。
 

Microsoft 是否建议仅使用测试工具来测试机器人应用程序?

否。 我们始终建议用户在将应用程序移动到生产环境之前在 Teams 客户端中测试其机器人应用程序。
 

代码示例

示例名称 Description Node.js
测试工具示例应用 用于浏览测试工具的示例机器人应用。 View

分步指南

按照 分步指南 使用 Teams 应用测试工具调试 AI 聊天机器人。

另请参阅