> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 测试用户

> 在 OneSignal 中将用户标记为测试用户，以便在正式发送前验证所有订阅的消息投递、渲染效果和 Journey 行为。

**测试用户**是您指定用于测试消息投递的用户。测试用户拥有专属细分过滤器，可以从消息编辑器、Journey 受众以及 Webhook 测试中直接定向发送。

测试标记是用户级属性：将用户标记为测试用户后，该用户在同一测试名称下的**所有**订阅都会自动应用此标记。您可以通过用户档案、手动创建用户时、从任意订阅，或通过 API 将用户标记为测试用户。

<Frame caption="OneSignal 仪表板受众 > 订阅页面。显示一个订阅，其中选项菜单和添加为测试订阅选项已高亮显示。">
  <img src="https://mintcdn.com/onesignal/ZcUnlVp78Ic-q_xR/images/dashboard/add-as-test-subscription.png?fit=max&auto=format&n=ZcUnlVp78Ic-q_xR&q=85&s=7c51e0962a7a0d8c688c0114054b031d" alt="Options menu on a subscription record with Add as test user highlighted" width="2902" height="1346" data-path="images/dashboard/add-as-test-subscription.png" />
</Frame>

## 将用户标记为测试用户

### 通过用户档案

当您已知该用户且无需找到具体订阅时，可使用此方式。

1. 前往**受众 > 用户**，打开用户档案。
2. 选择**操作 > 添加为测试用户**。
3. 输入测试用户名称。该用户关联的所有订阅都将以相同名称添加为测试订阅。

### 手动创建用户时

通过仪表板的**新建用户**表单手动添加单个用户时，勾选**添加为测试用户**并提供名称。为该用户创建的所有订阅都将以该名称标记为测试订阅。

### 通过订阅

当您已知设备的订阅 ID 或希望通过活动记录找到您的设备时，可使用此方式。将订阅标记为测试订阅会将对应用户标记为测试用户，并同步至该用户的所有其他订阅。

1. 前往**受众 > 订阅**，[找到您要测试的设备的订阅](./subscriptions#finding-subscriptions)。
2. 在订阅旁边，选择**选项 > 添加为测试订阅**。
3. 输入测试用户名称。

### 通过 API

在使用 REST API 创建或更新用户时，设置 `test_user_name` 属性：

<CodeGroup>
  ```bash Create user theme={null}
  curl -X POST https://api.onesignal.com/apps/YOUR_APP_ID/users \
    -H "Content-Type: application/json" \
    -d '{
      "properties": {
        "test_user_name": "QA Device - Jane"
      }
    }'
  ```

  ```bash Update user theme={null}
  curl -X PATCH https://api.onesignal.com/apps/YOUR_APP_ID/users/by/{alias_label}/{alias_id} \
    -H "Content-Type: application/json" \
    -d '{
      "properties": {
        "test_user_name": "QA Device - Jane"
      }
    }'
  ```
</CodeGroup>

要移除测试用户标签，请将 `test_user_name` 设置为空字符串（`""`）。

请参阅[创建用户](/reference/create-user)和[更新用户](/reference/update-user)获取完整 API 参考。

***

## 向测试用户发送消息

用户被标记为测试用户后，您可以通过以下方式向其发送消息：

* **消息编辑器**：使用**测试与预览**操作。
* **Journey**：使用[测试用户细分过滤器](./segmentation#filters)将入口规则限定为仅针对测试用户。请参阅 [Journey 设置](./journeys-settings)。
* **Webhook 测试**：Journey Webhook 可以在正式上线前针对测试用户进行验证。请参阅 [Journey Webhook](./journeys-webhook)。

***

## 常见问题

### 如何删除测试用户？

通过仪表板：

* **通过用户档案：** 打开用户，选择**选项 > 取消测试用户**。
* **通过订阅列表：** 前往**受众 > 订阅**，找到该用户的任意订阅，选择**选项 > 从测试订阅中移除**。

以上任一操作都会清除该用户及其所有订阅的测试标记。用户和订阅仍保留在您的应用中，只是不再被标记为测试用户。

您也可以通过 API 将用户的 `test_user_name` 设置为 `""` 来清除标记。

### 测试用户和测试订阅有什么区别？

两者已无实质区别。测试状态存储在用户级别，因此将任意一个订阅标记为测试订阅，即会将对应用户标记为测试用户，并将该标记应用至该用户的所有其他订阅。订阅列表中的"添加为测试订阅"入口仅作为便捷操作保留。

### 我的测试用户有一个显示为已取消订阅的订阅，如何重新订阅？

最简单的方法是在**用户档案 > 订阅**标签页中手动重新订阅。

<Frame caption="OneSignal 仪表板用户档案 > 订阅标签页。显示手动重新订阅选项。">
  <img src="https://mintcdn.com/onesignal/1DS91wXkIc0VTUJ7/images/dashboard/user-profile-resubscribe.png?fit=max&auto=format&n=1DS91wXkIc0VTUJ7&q=85&s=74c151010beec28d2117897faf21e747" alt="User profile Subscriptions tab with the manual re-subscribe option" width="1740" height="576" data-path="images/dashboard/user-profile-resubscribe.png" />
</Frame>

<Warning>
  在未获得用户同意的情况下重新订阅，违反消息合规规定，可能导致垃圾邮件投诉、运营商过滤或账号暂停。
</Warning>

### 为什么同一个人在测试用户过滤器中出现多次？

每次重新安装应用都会创建一个新的订阅。如果新订阅未通过[外部 ID](./users#external-id) 关联到现有用户，则会显示为独立用户。在安装后使用相同的外部 ID 调用 `OneSignal.login`，可将同一人的所有订阅绑定到同一个用户。

### 可以通过 API 向测试用户发送消息吗？

可以。使用[创建通知](/reference/create-message) API，通过 `include_subscription_ids` 参数传入测试设备的订阅 ID。

***

## 相关页面

<Columns cols={2}>
  <Card title="用户" icon="users" href="./users">
    OneSignal 用户模型、别名以及用户与订阅的关联关系。
  </Card>

  <Card title="订阅" icon="address-book" href="./subscriptions">
    管理订阅并找到特定测试设备。
  </Card>

  <Card title="细分" icon="filter" href="./segmentation">
    创建细分（包括测试用户细分）以限定发送范围。
  </Card>

  <Card title="创建消息 API" icon="code" href="/reference/create-message">
    通过编程方式向特定订阅 ID 发送通知。
  </Card>
</Columns>
