Skip to main content
Version: v3

常规封闭式测试(限量测试)

常规封闭式测试适用于绝大多数的限量测试需求,已覆盖 Android、iOS 平台,最多支持 10 万人参与测试。 阅读本文档将有利于您详细了解封闭式测试的玩法。

创建一个封闭式测试计划

在您使用以下所有功能前,均需要创建一个封闭式测试计划。

您可以将一个封闭式测试计划对应一轮测试,当一轮测试结束后,您可结束或关闭当前封闭式测试计划。当您需开启新一轮测试时,创建一个新的封闭式测试计划即可。

创建一个封闭式测试计划,请前往商店 >> 版本发布 >> 测试 >> 创建封闭式测试计划。保存后无需审核,直接生效。但请放心,您刚刚创建完封闭式测试计划时,没有用户拥有测试资格,所以也不会有用户看到您所创建的测试计划。 每个游戏可创建最多 10 个封闭式测试计划。

tip

创建测试计划时请注意:

  • 测试计划名称请不要含任何标点符号,如「」、《》,也不要含游戏名。
  • 测试开始时间请填写用户能够登录游戏的时间,此信息仅已获得测试资格的用户可见。测试开始时间过去后无法修改。所以,如果您未确定测试开始时间可不填写,已获得测试的用户将会看到“暂未公布”测试时间。
  • 测试结束时间非必填,如果您还未确定测试结束时间可不填写,已获得测试的用户将会看到“暂未公布”测试结束时间。
  • 测试开始后,用户可下载游戏;测试结束后,用户无法下载游戏。
  • 假如您的游戏同时开放 iOS 测试,请开启“本次测试发放 TestFlight 测试资格”并填写 TestFlight 公开链接。别担心,此时不填写 TestFlight 公开链接后续依旧可补充。
  • 限量人数用户不可见,但会校验您后续发放测试资格时的表单,所以请如实填写。

如何招募用户并发放测试资格

您可发放测试报名问卷,或提前招募测试用户。

  1. 展开已创建的封闭式测试计划 >> 选择开启测试招募 >> 设置招募时间和招募方式,招募时间需要早于测试开始时间。
  2. 当前支持报名招募和问卷招募两种方式。问卷招募暂时仅支持第三方。
  1. 未到达招募开始时间时,招募信息对用户不可见;到达招募开始时间后,用户可在您的游戏页见到招募信息并参与招募;招募结束后,招募信息对用户不可见。

  1. 参与招募的用户,您可以查看他的设备、游戏时长、游戏喜好、省份信息等,请在对应的封闭式测试计划 >> 报名用户 >> 查看明细。
  2. 在您挑选测试用户后,可对其发送测试资格,请在添加测试用户 >> 粘贴用户 ID 或导入用户表格 >> 定时设置发放资格时间 >> 保存。到达发放资格时间时,用户将收到 TapTap 的站内信通知。为了保证您的测试用户激活率,建议您将发放时间定时在开放下载前半小时。
tip

发放测试资格请注意:

  • 发放测试资格前,建议填写封闭式测试计划开始时间,否则用户将无法在站内信中获取该信息。
  • 本轮测试如需开启预下载,也请在发放测试资格前填写预下载时间。预下载功能说明请看文档《如何开启测试预下载》。
  • 本轮测试如需发放激活码,请在发放资格前勾选“发放激活码”。激活码功能说明请查看文档《如何发放游戏激活码》。
  • 如需发放 iOS 测试资格,请提前填写 TestFlight 公开链接
  • 您可多批次发放测试资格。
  • 开始发放测试资格后,需要一定发放时间,如果看到状态变为“已发放”但实际发放人数为 0 ,请等待 1 分钟左右后刷新页面。

如何分享测试资格领取链接 / 海报

您可以将测试资格链接发送至玩家群,或者合作的游戏主播,以便玩家领取测试资格。

  1. 展开已创建的封闭式测试计划 >> 添加测试用户 >> 生成短链 >> 设置本批次发放时间和人数上限 >> 保存 >> 复制链接。发放时间需早于测试结束时间,即您在测试开始前或测试期间均可通过此方式发放资格。
  1. 访问链接的用户可点击领取测试资格。

tip

生成短链请注意:

  • 生成后的短链是唯一且不会变化,用户点击链接即可领取测试资格。
  • 您可生成多个批次的不同链接,发放至不同的社交媒体或社群。
  • 如果您需要生成海报,可使用短链转为二维码并放置到海报中。

如何开放测试资格至 TapTap 用户自由领取

您可限时、限量开放测试资格至 TapTap 用户主动领取。

  1. 展开已创建的封闭式测试计划 >> 添加测试用户 >> 先到先得 >> 设置本批次发放时间和人数上限 >> 保存。您只能在测试开始或开启预下载后开放测试资格。
  1. 未到达先到先得时间时,测试信息对用户不可见;到达先到先得时间时,用户可“参与测试”领取资格并下载;先到先得时间已结束,新用户无法“参与测试”,而已获得资格的用户可持续“参与测试”直至本次测试结束。
  2. 建议您分批次发放测试资格,即创建多个先到先得的发放计划,举例:10日上午10点-11点开放500个名额,10日下午14点-15点开放500个名额...以此类推。

  1. 如果您的测试需要用户进入游戏抢注测试账号或完成创角后才可获得测试资格,您可在设置先到先得时勾选“用户抢注游戏账号后获取测试资格”。此时,用户参与测试时将收到通知,提示其尽快抢注游戏账号。

如何快速实现限量测试期间内的玩家裂变测试

当您需要在封闭式测试阶段实现裂变能力时,可尝试此玩法。玩法举例:在游戏内举办老带新、人拉人活动,让参与测试的老玩家分享 1 个限量测试资格至 TA 的朋友领取。

此功能需要游戏内做一定的开发改动,如需使用此功能,请按照下方使用说明接入。

接入流程概述

接入前准备

请提前创建封闭式测试计划,并创建玩家分享资格的发放方式。

tip

创建玩家分享的发放方式请注意:

  • 一个测试计划只能够创建 1 个玩家分享资格的发放计划。
  • 如果您创建了 1 个玩家分享资格的发放计划用于 Debug ,也请直接将此发放方式用户正式上线使用。

接口使用说明

该接口用于生成邀请链接,通过该链接可以邀请新用户加入。

接口需要 client id 对应的游戏存在开启的测试计划,且测试计划中存在玩家分享资格类型的发放计划,需要注意一个测试计划中仅能有一个玩家分享资格类型的发放计划生效。

生成链接的数量是没有限制的,但单个链接的邀请上限和所有链接的邀请上线受到对应发放计划的限制,当超过限制时,访问生成的链接会提示名额已满。

请务必在服务端进行接口调用,避免 Server Secret 泄漏。

接口信息

接口地址: https://partner.taptapdada.com/test/v1/invite-link

请求方式: POST,使用 query params 传递参数

请求参数:

参数名类型必选说明
client_idString游戏对应的 client_id
uidString用户唯一标识,由调用方决定,最多 100 位
timeInteger时间戳
nonceString随机字符串,建议 5 位
signString签名

请求示例:

curl --location --request POST 'https://partner.taptapdada.com/test/v1/invite-link?client_id=abcdefg&uid=12345&time=1690000000&nonce=abcde&sign=sign'

签名算法:

  1. 把除 sign 外所有参数按 key 的字母顺序排序

  2. & 符号把 key=value 参数对链接

    • keyvalue 不用 urlencode
  3. 在字符串最后拼接上应用密钥 secret,请使用 游戏服务 - 应用配置 - 基本信息 下的 Server Secret

  4. 步骤 3 中得到的字符串做 md5 hash

返回参数:

参数名类型 说明
link

String

邀请链接

invited

Integer

link 链接已使用的邀请次数

limit

link 链接邀请次数上限


link 链接的邀请次数(对应「开发者中心」 -> 「商店」-> 「版本发布」-> 「测试」 -> 「封闭式测试」 -> 「添加测试用户」 -> 「玩家分享资格」 -> 「单次分享资格可使用人」配置的值)


当生成了一个链接(称为 A 链接)并邀请了用户 A 时,系统返回的信息为:{"link":"A 链接","limit":50,"invited":1}。这表示用户 A 已被成功邀请,并且该链接的邀请次数上限是 50 次。

假设在此之后,生成了另一个链接(称为 B 链接)并再次邀请用户 A 。由于用户 A 已经被邀请过,因此 B 链接的返回仍然是:{"link":"B 链接","limit":50,"invited":0}。这表明虽然邀请了用户 A ,但实际上用户 A 已经在之前的邀请中被纳入统计,因此 B 链接的邀请数为 0 。

返回示例:

{
"data": {
"invited": 0,
"limit": 10,
"link": "https://example.com/invite?code=1234"
},
"now": 1692101733,
"success": true
}
Python3 请求示例

import requests
import random
import string
import hashlib
import urllib
from datetime import datetime


if __name__ == '__main__':
# request the secret from your partner
secret = "your Server Secret"
params = {
'client_id': "your client ID",
"uid": "uid",
}
# sign param
randomStr = ''.join(random.choices(string.ascii_uppercase + string.digits, k=5))
params['nonce'] = randomStr
params['time'] = int(datetime.now().timestamp())
payload = ""
for i in sorted(params):
payload += '%s=%s&' % (i, params[i])
payload = payload.strip("&") + secret
sign = hashlib.md5(payload.encode('utf-8')).hexdigest()
params['sign'] = sign
url = "https://partner.taptapdada.com/test/v1/invite-link?" + urllib.parse.urlencode(params)
print(url)
response = requests.post(url)
print(response.text)

如何接入 TapTap 登录增强测试保密性

如果您担心下载的 APK 被转发或 TestFlight 公开链接被复制,最终导致游戏包体泄露、测试内容不保密,那么推荐您使用 TapTap 登录 SDK 验证测试资格。接入后,仅已获得测试资格的用户在测试开始期间可登录游戏,不在测试时间或未获得测试资格的用户无法登录游戏。

使用方法如下:

  1. 在游戏内接入 TapTap 登录 SDK
  2. 将封闭式测试 >> 游戏测试设置 >> 仅有测试资格可登录游戏开启。
  3. 使用上述发放方式,如招募用户并发放测试资格、分享测试资格领取链接、开放测试资格至 TapTap 用户自由领取等方式发放测试资格,拥有测试资格的用户可下载并登录游戏。
tip

接入 TapTap 登录请注意:

  • 您只需要接入 TapTap 登录 SDK 即可,如果曾接入旧版的测试资格校验 API ,现可移除相关代码。
  • 如果您的内部团队无法登录游戏,可使用内部测试功能登录游戏。内部测试功能说明请看文档《内部测试》。
  • 关闭仅有测试资格可登录游戏后,所有人均可登录游戏,请谨慎操作。
  • 因测试资格验证是在用户登录游戏的环节,所以已经登录游戏的用户并不会触发拦截。为保证您的测试内容保密,请尽早开启仅有测试资格可登录游戏开关。

如何发放游戏激活码

TapTap 不提供生成激活码功能,但如果您的游戏已经可以通过激活码验证测试资格,TapTap 可以帮助您在发放测试资格的同时发放激活码。

  1. 在通过任一方式发放测试资格时,您都可勾选“发放激活码”。
  2. 如果您在发放资格时,未勾选“发放激活码”,后续也可以操作补发。
  3. 激活码需要选择可用的平台,此平台和测试资格的平台一一对应,即:Android 可用的激活码仅可以和 Android 测试资格一同发放。
  4. 已领取激活码的用户,在 TapTap 站内信和您的游戏页均可复制激活码。

如何获得更加精准的人群

当您的游戏在站内招募或者开放测试资格至 TapTap 用户自由领取时,您可使用“定向曝光”功能来圈选更精确的人群。

请在封闭式测试计划 >> 定向人群曝光游戏 >> 创建并选择定向人群。您可根据游戏类型,选择偏好某一类游戏的人群,最多可选择 5 个分类。

选择定向人群后,TapTap 的推荐算法会尽可能将游戏曝光至该人群。请注意,如果您的人群选择并不是很贴合游戏,那么转化效率可能将不达预期。如需“破圈”,可尝试通过 TapTap 站内投放扩大人群。

如何开启测试预下载

如果您的游戏开服时间晚于开放测试包下载时间,您可使用测试预下载功能。

请在封闭式测试计划 >> 编辑 >> 提前开放预下载 >> 填写测试开始时间和预下载时间即可。预下载开启后,获得测试资格的用户可下载游戏。

tip

开放预下载请注意:

  • iOS 也能够开放预下载,但是请提前维护 TestFlight 公开链接。

如何移除测试用户

和内部测试相同,您也可以直接移除某个用户的测试资格。

在商店 >> 版本发布 >> 测试 >> 封闭式测试中找到您想操作的封闭式测试计划,点击测试资格明细,输入想要移除的测试用户的 TapTap ID 搜索后移除。

以下为内部测试的操作示例,您也可以在封闭式测试采用相同的操作。

如何使用测试服进行封闭式测试

当您希望您的测试用户完全和其他用户隔离开来时,您可使用测试服功能进行测试。

  1. 在您的游戏的预约页(即正式服页面)进入开发者中心 >> 版本发布 >> 测试 >> 封闭式测试 >> 使用测试服功能。
  2. 根据页面引导,创建测试服并提交审核即可。第一次创建的测试服将直接复制正式服的素材,但不会复制 APK。
  1. 测试服创建完成后,测试服的封闭式测试的服务均可用,您只需按照上方的帮助文档进行操作即可。
tip

使用测试服测试请注意:

  • 测试服审核中时,也可提前创建测试计划。
  • 为保证 TapTap 的用户体验,测试服审核中/定时上线/已上线时,正式服的测试服务(内部测试除外)将停用,如果您的正式服有正在进行中测试计划将直接失效。
  • 新建的测试服审核通过后将正常上架 TapTap,如果您不希望提前上架,可通过定时上线功能或后续再提交审核。
  • 如果您需要在创建测试服时一并提交 APK 审核,请在测试服页面选择商店资料的对应版本后更新即可。
  • 测试服仅用于游戏测试,部分功能将受限制不可用,含:开放测试服预约/云玩/TapPlay、游戏故障评价处理、签到活动、新版本活动。

常见问题

封闭式测试可以申请上资源位吗?

封闭式测试功能并不影响分发,能够在常见的资源位上展示,您可查看对应文档申请。有一些资源位为系统自动创建的资源位,无需申请。为了能够达到曝光最大化,您可提前一天创建招募、先到先得等发放资格的方式。

我可以即使用招募,又使用先到先得吗?

可以。封闭式测试的玩法,均可搭配随意使用,举例:您可先招募测试用户并发送资格,同时在核心玩家群分享测试资格链接,在您测试开启后发觉参与测试的人数不足,还可公开限量测试资格以供 TapTap 玩家自由领取。

如果我的测试出状况,需要紧急关闭应该怎么操作?

如果当前状况还在可控范围内,您可关闭新用户继续领取测试资格通道,即终止发放中的先到先得、生成短链等。如果当前状况不可控,您可操作关闭测试让所有用户都无法继续参与测试,直到您的问题已解决时,可操作重新开启。

封闭式测试情况下,我的游戏状态应该怎么修改?

仅需要保持原游戏状态即可,即:如果您在预约页上测试,请保持游戏状态为预约;如果在测试服上测试,请保持游戏状态为敬请期待。

如果测试开始后,我的游戏还没有包体可下载,会如何?

您的游戏测试将不会生效,用户无法参与测试下载包体。

测试服无法修改为“试玩”了怎么办?

TapTap 的游戏测试功能进行了升级,如果您的测试服需开放测试,请使用版本发布 >> 测试功能进行操作。

测试账号无法登录游戏怎么办?

封闭式测试的评分如何计算?

如果您在预约页上开放测试,封闭式测试的评价将不计入总分,且封闭式测试结束后评价不显示。如果您在测试服上开放测试,所有评价将计入测试服评分。