3

我有一个触发omniture事件的iOS和android应用程序。我正在通过 Charles Proxy 捕获这些事件并手动验证这些事件。手动验证将花费大量时间。有没有办法自动验证omniture事件?它可能会帮助我节省大量时间。

提前致谢

4

3 回答 3

0

之前将 Omniture 集成到 Android 应用程序中,我感受到了您的痛苦。

Adobe 有一个您可以使用的名为 Bloodhound 的工具,它充当假的 Omniture 服务器。

虽然它对自动化没有帮助,但它有助于调试,因为它会为您分解评估、变量和事件。

于 2014-05-07T12:38:31.537 回答
0

如果您在 ADMS_Measurement 和您的应用程序之间添加一些对象作为抽象层,它可用于验证您希望在测试中发送的所有事件(您需要对此解决方案进行测试)。或者,您可以尝试模拟 ADMS_Measurement 对象,但我从未尝试过这种方法。鉴于对象的结构如下

@implementation OmnitureWrapper ()

@property (nonatomic, strong) ADMS_Measurement *admsMeasurement;

- (void)track:(NSDictionary *)trackingVars {
    [self setupVariables:trackingVars];
    [self.admsMeasurement track];
}

@end

在测试中,您可以创建 OmnitureLayer 的模拟并使其期望调用 -(void)track:(NSDictionary *)trackingVars 并验证参数是否符合预期。例如使用 OCMock:

- (void)testActionXShouldSendOmnitureEventsY {
    id omnitureMock = [OCMockObject mockForClass:[OmnitureWrapper class]];
    [omnitureMock expect] track:[OCMArg checkWithBlock:^BOOL(id obj) {
        NSDictionary *trackingVars = (NSDictionary *)obj;
        //TODO check if all vars are as expected
    }];

    //TODO actual test code

    [omnitureMock verify];
}

您需要为每个将导致 Omniture 跟踪的事件编写测试,然后验证它是否被正确调用,但如果这对您很重要,从长远来看它可能会有所回报。

于 2014-05-07T15:39:21.407 回答
0

我发现的唯一可靠方法是在测试运行期间将事件数据发送到设备/模拟器上的临时目录中的文件请求之前,从 Adob​​e SDK 转换事件数据。然后你的测试可以访问这个文件并在你的测试脚本中断言它的数据。

于 2018-09-14T00:41:12.460 回答