3.6 客户端结合 Server 端的试验

客户端结合 Server 端的试验

一般情况下,我们所说的 Web、iOS 和 Android 端的试验是在客户端集成相关的 SDK 并进行试验的,在编程模式下,不同版本的代码逻辑都是在客户端实现的。如果试验涉及到 Server 端的逻辑优化(例如推荐算法的测试等),应该怎么做呢?

如果 Server 端的试验是跨平台的,例如,包括 Web, iOS 和 Android 等各个终端的统一服务的测试,建议试验在 Server 端进行,详情可参考文档Server端编程式试验。

如果 Server 端的试验不是跨平台的,例如,只针对 Android 端的用户进行测试,建议以客户端(Android)为主,进行客户端的测试,在需要的时候结合 Server 端的测试。本篇文档主要描述的就是这种情况。

在客户端结合 Server 端进行试验有三种方式。

第一种方式:完全在客户端测试 Server 端的逻辑

这种方式下试验变量的集成和优化指标数据的上报都在客户端完成,Server 端要做的工作就是在接口中增加试验变量相关的参数,参数的不同值代表不同的 Server 端逻辑或内容,客户端通过使用不同的接口参数值来执行不同的 Server 端逻辑。

例如,我们要进行推荐算法 A 和 B 的测试。

首先,修改或者增加一个 Server 端获取推荐内容的接口 get_recommended_content(sf),sf 参数为 'A' 表示返回算法 A 得到的推荐内容,值为 'B' 返回算法 B 得到的推荐内容。
接着,在后台定义试验变量 suanfa,值为 'A' 表示采用算法 A,值为 'B' 表示采用算法 B。
然后,在客户端代码中通过 getExperimentFlags 接口获取到 flags,从 flags 取出 suanfa 这个试验变量的值,调用 get_recommended_content(suanfa) 这个接口获取推荐内容并显示,参数值使用 suanfa 试验变量的值。

这种方式的优点是试验相关逻辑都在客户端,试验的调试和执行都比较简单,Server 端没有试验逻辑,代码简洁便于维护。缺点是客户端需要添加 Server 端的逻辑判断,增加了代码的复杂度;另外 Server 端的一些特殊逻辑测试在客户端测试会比较困难,而且可能不太便于 Server 端的优化。

所以这种方式的 Server 端试验比较适合测试哪些和客户端结合比较紧密的或者比较简单的逻辑。

第二种方式:试验在客户端进行,部分指标在Server端上报

这种方式下试验变量的集成和优化指标数据的上报在客户端完成,Server 端上报一些不适合在客户端上报的指标数据。

客户端的集成和纯客户端测试的集成方式相同,试验逻辑都在客户端。

Server 端通过 REST API 中的 Tracking API 上报指标数据,请求中 app_key 使用和客户端集成相同的 app_key,client_id 应使用和客户端一致的用户 id。

第三种方式:试验在Server端进行,部分指标在客户端上报

这种方式下试验变量的集成和优化指标数据的上报在 Server 端完成,客户端上报一些不适合在 Server 端上报的指标数据。

Server 端通过 REST API 中的 Experiment API 获取试验变量值,请求中 app_key 使用和客户端集成相同的 app_key,client_id 应使用和客户端一致的用户 id。Server 端根据变量值决定执行相应的逻辑。

Server 端通过 REST API 中的 Tracking API 上报指标数据,请求中 app_key 使用和客户端集成相同的 app_key,client_id 应使用和客户端一致的用户 id。

客户端不需要集成 SDK,只需通过 REST API 中的 Tracking API 上报指标数据,请求中 app_key 使用和 Server 端集成相同的 app_key,client_id 应使用和 Server 端一致的用户 id。

这种方式和试验完全在 Server 端进行的情况是类似的,详情可参考Server端编程式试验。
已邀请:

要回复问题请先登录注册