Digital Measurement Testing: Difference between revisions

From Engineering Client Portal

(Created page with "{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR & DTVR}} {{CurrentBreadcrumb}} Category:Digital == Monitoring Tools == HTTP traffic-monitoring tool, such as Char...")
 
No edit summary
 
(12 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR & DTVR}}  {{CurrentBreadcrumb}}
{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|US DCR & DTVR}}  {{CurrentBreadcrumb}}
[[Category:Digital]]
[[Category:Digital]]
<blockquote>'''Note:''' Due to the variable and unique nature of each application,  there may be additional testing required by Nielsen that is not listed here.  These tests are completed to ensure the quality of data collected.  Please speak with your account manager if you have any questions.</blockquote>


== Monitoring Tools ==
== Monitoring Tools ==
Line 7: Line 9:
*'''Fiddler:''' http://www.telerik.com/fiddler
*'''Fiddler:''' http://www.telerik.com/fiddler


== Testing the App Implementation ==
== Step 1: Filter traffic ==
The steps to test the app implementation are given below.
== Step 1 ==
Filter HTTP traffic with the string "imr" to capture traffic from the SDK as shown in the below figure. This will capture traffic going to Nielsen servers. Now set up the device to proxy to this traffic analyzer.
Filter HTTP traffic with the string "imr" to capture traffic from the SDK as shown in the below figure. This will capture traffic going to Nielsen servers. Now set up the device to proxy to this traffic analyzer.
<blockquote>'''Note:''' Instructions may vary from device to device and are available online.</blockquote>
<blockquote>'''Note:''' Instructions may vary from device to device and are available online.</blockquote>
[[File:fiddler-web-debugger.png|link=]]
[[File:fiddler-web-debugger.png|link=]]


== Step 2 ==
== Step 2: Verify User Agent ==
Verify that your user agent is not being flagged as bot traffic. <br />
 
'''Device Atlas User Agent Tester'''<br />
Copy your application's user agent string to your clipboard and input it into the [https://deviceatlas.com/device-data/user-agent-tester Device Atlas User Agent Tester]. If your user agent is designated as a bot, you will see a value of '''"''true''"''' associated with the '''''Is Robot''''' property in the user agent search results.
 
'''Configuring User Agent '''<br />
You will need to override the default value set in the user agent header request field if it's flagged as a bot. Request traffic originating from some third party HTTP clients is designated as bot traffic. To change the user agent, change the value of the User Agent Request header as indicated below:
<syntaxhighlight lang="java">    Request request = new Request.Builder()
    .url("[api endpoint request url string]")
    .header("User-Agent", "Custom User Agent")
    .build();</syntaxhighlight>
 
== Step 3: Check Opt-Out ==
If the opt-out function or app disable feature is previously tested, it has to be ensured that an opt-in is completed on the device before continuing. Terminate the app completely before starting.
If the opt-out function or app disable feature is previously tested, it has to be ensured that an opt-in is completed on the device before continuing. Terminate the app completely before starting.


== Step 3 ==
== Step 4: Hello Ping ==
The first HTTPS traffic that should be seen is the SDK request for configuration information, called a '''hello ping'''. In order to see this ping, Charles / Fiddler has to be configured to capture HTTPS traffic.
The first HTTPS traffic that should be seen is the SDK request for configuration information, called a '''hello ping'''. In order to see this ping, Charles / Fiddler has to be configured to capture HTTPS traffic.


Line 25: Line 38:
<blockquote>'''Note:''' If this ping fails to fire, it is likely that the instance of the SDK failed to initialize. Please see Initialization ([[iOS SDK API Reference#Initialization|iOS SDK API Reference - Initialization]] and [[Android SDK API Reference#Initialization|Android SDK API Reference - Initialization]]) to see how to initialize the SDK.</blockquote>
<blockquote>'''Note:''' If this ping fails to fire, it is likely that the instance of the SDK failed to initialize. Please see Initialization ([[iOS SDK API Reference#Initialization|iOS SDK API Reference - Initialization]] and [[Android SDK API Reference#Initialization|Android SDK API Reference - Initialization]]) to see how to initialize the SDK.</blockquote>


== Step 4 ==
== Step 5: The L Ping ==
When the app is started after installing for the first time, and app is measuring '''DCR Static''' content only, a DCR static app launch known as '''L''' ping firing to secure-dcr.imrworldwide.com server in the traffic-monitor should be seen. However, the '''L''' ping will be observed again if app goes into background and resumes back after 5 minutes.
When the app is started after installing for the first time, and app is measuring '''DCR Static''' content only, a DCR static app launch known as '''L''' ping firing to secure-dcr.imrworldwide.com server in the traffic-monitor should be seen. However, the '''L''' ping will be observed again if app goes into background and resumes back after 5 minutes.


Line 32: Line 45:
If the app is measuring '''DCR Video Content''' only, then the '''hello ping''' will fire but the '''L''' ping will not be observed upon app launch.
If the app is measuring '''DCR Video Content''' only, then the '''hello ping''' will fire but the '''L''' ping will not be observed upon app launch.


== Step 5 ==
== Step 6: Static View Ping ==
For any sections that are tagged for static content, a '''DCR Static – view''' ping should be received. The first landing page should always be tagged. An example of this ping is:
For any sections that are tagged for static content, a '''DCR Static – view''' ping should be received. The first landing page should always be tagged. An example of this ping is:


Line 40: Line 53:
! Parameter !! Description !! Example
! Parameter !! Description !! Example
|-
|-
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || APRP7
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || us-123456
|-
|-
| asn || Asset Name – this value should represent the asset’s name assigned in the metadata. || Page-Asset
| asn || Section/Asset Name – this value should represent the asset’s name assigned in the metadata. || Page-Asset
|-
|-
| at || Action Type || Start
| at || Action Type || Start
Line 57: Line 70:
|}
|}


== Step 6 ==
== Step 7: Video View Ping ==
Approximately 60 seconds into viewing of the stream, a '''DCR Video – view''' ping fire to secure-dcr.imrworldwide.com server indicated by the '''cr''' value containing a '''V''' in the format of 4_00_99_'''V'''1_00000 should be seen.
Approximately 60 seconds into viewing of the stream, a '''DCR Video – view''' ping fire to secure-dcr.imrworldwide.com server indicated by the '''cr''' value containing a '''V''' in the format of 4_00_99_'''V'''1_00000 should be seen.


Line 64: Line 77:
! Parameter !! Description !! Example
! Parameter !! Description !! Example
|-
|-
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || APRP7
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || us-123456
|-
|-
| asn || Asset Name – this value should represent asset’s name assigned in the metadata. || Video-Asset
| asn || Asset Name – this value should represent asset’s name assigned in the metadata. || Video-Asset
Line 72: Line 85:
| c13 || This value should contain the appid of the application. || asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
| c13 || This value should contain the appid of the application. || asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|-
|-
| cr || Crediting Ping Identifier || 1_00_99_V1_00000
| cr || Crediting Ping Identifier || 4_00_99_V1_00000
|-
|-
| rt || This Value should be “video” and indicates that this is a DCR tag for video content. || video
| rt || This Value should be “video” and indicates that this is a DCR tag for video content. || video
Line 80: Line 93:
<blockquote>'''Note:''' If this ping fails to fire, a common cause is improper metadata being passed to the SDK. Examples of the proper metadata to be passed in the </code>loadMetadata</code></blockquote>
<blockquote>'''Note:''' If this ping fails to fire, a common cause is improper metadata being passed to the SDK. Examples of the proper metadata to be passed in the </code>loadMetadata</code></blockquote>


== Step 7 ==
== Step 8: Video Duration Ping ==
The first duration ping is fired after 5 minutes of content is viewed. A '''DCR Video''' – duration ping fire to secure-dcr.imrworldwide.com indicated by the '''cr''' value containing a '''D''' in the format of 4_00_99_'''D'''1_11111 should be seen. This D ping should fire approximately every 5 minutes after the initial duration ping has fired or when the content switches to an advertisement. The ad length (c51) is the total ad duration viewed in the previous session, and the ad count (c52) is the number of ads viewed in previous segment.
The first duration ping is fired after 5 minutes of content is viewed. A '''DCR Video''' – duration ping fire to secure-dcr.imrworldwide.com indicated by the '''cr''' value containing a '''D''' in the format of 4_00_99_'''D'''1_11111 should be seen. This D ping should fire approximately every 5 minutes after the initial duration ping has fired or when the content switches to an advertisement. The ad length (c51) is the total ad duration viewed in the previous session, and the ad count (c52) is the number of ads viewed in previous segment.
{| class="wikitable"
{| class="wikitable"
Line 86: Line 99:
! Parameter !! Description !! Example
! Parameter !! Description !! Example
|-
|-
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || APRP7
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || us-123456
|-
|-
| asn || Asset Name – this value should represent asset’s name assigned in the metadata. || Video-Asset
| asn || Asset Name – this value should represent asset’s name assigned in the metadata. || Video-Asset
Line 92: Line 105:
| tl || Episode Title || Episode Name – S2 – E1 – LF
| tl || Episode Title || Episode Name – S2 – E1 – LF
|-
|-
| cr || Crediting Ping Identifier || 1_00_99_D1_11111
| cr || Crediting Ping Identifier || 4_00_99_V1_00000
|-
|-
| rt || This Value should be “video” and indicates that this is a DCR tag for video content. || video
| rt || This Value should be “video” and indicates that this is a DCR tag for video content. || video
Line 106: Line 119:
<blockquote>'''Note:''' If this ping fails to fire, it may be caused by not passing the setPlayheadPosition API call as expected. The instruction as well as examples can be found in the Developer’s Guide.</code></blockquote>
<blockquote>'''Note:''' If this ping fails to fire, it may be caused by not passing the setPlayheadPosition API call as expected. The instruction as well as examples can be found in the Developer’s Guide.</code></blockquote>


== Step 8 ==
== Step 9: 5min Duration Ping ==
View all channels for 5 minutes to ensure all channels fire a '''duration''' ping.
View all channels for 5 minutes to ensure all channels fire a '''duration''' ping.


== Step 9 ==
== Step 10: Pending Duration Ping ==
Play a stream and move the app to the background. A pending '''duration''' ping should fire; crediting the appropriate number of minutes viewed from last ping (i.e. 4_00_99_D1_'''111'''00). No other pings should fire after it has been moved to the background. In case SDK does not get a chance to send out the ping while going to background, SDK will send the pending ping on next re-launch.
Play a stream and move the app to the background. A pending '''duration''' ping should fire; crediting the appropriate number of minutes viewed from last ping (i.e. 4_00_99_D1_'''111'''00). No other pings should fire after it has been moved to the background. In case SDK does not get a chance to send out the ping while going to background, SDK will send the pending ping on next re-launch.


== Step 10 ==
== Step 11: Pending Duration Pings cont. ==
The same action will occur with any interruption to the stream’s playback (e.g., alarm, incoming call, etc.).
The same action will occur with any interruption to the stream’s playback (e.g., alarm, incoming call, etc.).


== Step 11 ==
== Step 12: Opt-Out Implementation ==
Test the Opt-Out implementation in four steps.
Test the Opt-Out implementation in four steps.
*Complete an opt-out in the app through the Nielsen opt-out webview.
*Complete an opt-out in the app through the Nielsen opt-out webview.

Latest revision as of 00:56, 10 September 2020

Engineering Portal / Digital / US DCR & DTVR / Digital Measurement Testing

Note: Due to the variable and unique nature of each application, there may be additional testing required by Nielsen that is not listed here. These tests are completed to ensure the quality of data collected. Please speak with your account manager if you have any questions.

Monitoring Tools

HTTP traffic-monitoring tool, such as Charles or Fiddler are required.

Step 1: Filter traffic

Filter HTTP traffic with the string "imr" to capture traffic from the SDK as shown in the below figure. This will capture traffic going to Nielsen servers. Now set up the device to proxy to this traffic analyzer.

Note: Instructions may vary from device to device and are available online.

fiddler-web-debugger.png

Step 2: Verify User Agent

Verify that your user agent is not being flagged as bot traffic.

Device Atlas User Agent Tester
Copy your application's user agent string to your clipboard and input it into the Device Atlas User Agent Tester. If your user agent is designated as a bot, you will see a value of "true" associated with the Is Robot property in the user agent search results.

Configuring User Agent
You will need to override the default value set in the user agent header request field if it's flagged as a bot. Request traffic originating from some third party HTTP clients is designated as bot traffic. To change the user agent, change the value of the User Agent Request header as indicated below:

    Request request = new Request.Builder()
    .url("[api endpoint request url string]")
    .header("User-Agent", "Custom User Agent")
    .build();

Step 3: Check Opt-Out

If the opt-out function or app disable feature is previously tested, it has to be ensured that an opt-in is completed on the device before continuing. Terminate the app completely before starting.

Step 4: Hello Ping

The first HTTPS traffic that should be seen is the SDK request for configuration information, called a hello ping. In order to see this ping, Charles / Fiddler has to be configured to capture HTTPS traffic.

https://secure-dcr.imrworldwide.com/cgi-bin/cfg?cfgv=100&longitude=-82.66&latitude=28.05&apid=&apv=3.84.043&apn=com.video.videop layer&sdkv=aa .1.2.3&nuid=7B341CD-5109-B88-B77D-8ADE904717A7&osver=ANDROID.4.2.2&devtypid=LGE-Nexus-4&devid=FFA503E7- 7749-4448-9922-132492ED4E12&fmt=json&adf=&uoo=&sfcode=dcr&ccode=1&dma=&rnd=1527112029

Note: If this ping fails to fire, it is likely that the instance of the SDK failed to initialize. Please see Initialization (iOS SDK API Reference - Initialization and Android SDK API Reference - Initialization) to see how to initialize the SDK.

Step 5: The L Ping

When the app is started after installing for the first time, and app is measuring DCR Static content only, a DCR static app launch known as L ping firing to secure-dcr.imrworldwide.com server in the traffic-monitor should be seen. However, the L ping will be observed again if app goes into background and resumes back after 5 minutes.

http://secure-dcr.imrworldwide.com/cgi-bin/gn?prd=dcr&ci=APRP7&ch=APRP7_NA_defChnAsset&asn=defChnAsset&tl=&c6=vc,NA&c13=asid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&c32=segA,&c33=segB,&c34=segC,&c15=apn,MTVR-APT-QA&sup=0&segment2=539&segment1=usa&forward=1&ad=1&cr=L&c9=devid,a69983bc65ad94f9e57109fec68cc847bf59575ee03cadb76b187f4c24eaf793&enc=true&c1=nuid,142a40706f9c03bfea020f7297828534a1f14895d7a8c5303d9b8a19b3337c13&r=&at=launch&rt=text&c16=sdkv ,aa.4.0.0&c27=cln,473&crs=0&si=&lat=28.09&lon=-82.76&c29=plid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&c30=bldv,aa.4.0.0.3&st=dcr&c7=osgrp,DROID&c8=devgrp,TAB&c10=plt,MBL&c40=adbid,&c14=osver,ANDROID.4.4.4&c26=1&c35=&c36=cref1,&c37=cref2,&c11=agg,1&c12=apv,apt.4.0.0.3&h33=2&c51=adl,0&c52=noad,0&devtypid=asus-Nexus-7&rnd=1432529128693

If the app is measuring DCR Video Content only, then the hello ping will fire but the L ping will not be observed upon app launch.

Step 6: Static View Ping

For any sections that are tagged for static content, a DCR Static – view ping should be received. The first landing page should always be tagged. An example of this ping is:

http://secure-dcr.imrworldwide.com/cgi-bin/gn?prd=dcr&ci=APRP7&ch=APRP7_NA_defChnAsset&asn=defChnAsset&tl=&c6=vc,NA&c13=asid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&c32=segA,&c33=segB,&c34=segC,&c15=apn,MTVR-APT-QA&sup=0&segment2=539&segment1=usa&forward=1&ad=1&cr=V&c9=devid,a69983bc65ad94f9e57109fec68cc847bf59575ee03cadb76b187f4c24eaf793&enc=true&c1=nuid,142a40706f9c03bfea020f7297828534a1f14895d7a8c5303d9b8a19b3337c13&r=&at=view&rt=text&c16=sdkv,a a.4.0.0&c27=cln,0&crs=0&si=&lat=&lon=&c29=plid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&c30=bldv,aa.4.0.0.1&st=dcr&c7=osgrp,DROID&c8=devgrp,TAB&c10=plt,MBL&c40=adbid,&c14=osver,ANDROID.4.4.4&c26=1&c35=&c36=cref1,&c37=cref2,&c11=agg,1&c12=apv,apt.4.0.0.2&h33=2&c51=adl,0&c52=noad,0&devtypid=asus-Nexus-7&rnd=1432068181560

Parameter Description Example
ci Client ID – this value should be consistent throughout all of the pings that fire for the implementation. us-123456
asn Section/Asset Name – this value should represent the asset’s name assigned in the metadata. Page-Asset
at Action Type Start
rt This value should be “text” and indicates that this is a DCR tag for static content. text
c13 This value should contain the appid of the application. asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
c32 Segment A – Client customized metadata CustomSegmentValueA
c33 Segment B – Client customized metadata CustomSegmentValueB
c34 Segment C – Client customized metadata CustomSegmentValueC

Step 7: Video View Ping

Approximately 60 seconds into viewing of the stream, a DCR Video – view ping fire to secure-dcr.imrworldwide.com server indicated by the cr value containing a V in the format of 4_00_99_V1_00000 should be seen.

Parameter Description Example
ci Client ID – this value should be consistent throughout all of the pings that fire for the implementation. us-123456
asn Asset Name – this value should represent asset’s name assigned in the metadata. Video-Asset
tl Episode Title Episode Name – S2 – E1 – LF
c13 This value should contain the appid of the application. asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
cr Crediting Ping Identifier 4_00_99_V1_00000
rt This Value should be “video” and indicates that this is a DCR tag for video content. video
c10 Platform Indicator plt,DSK or plt,MBL

Note: If this ping fails to fire, a common cause is improper metadata being passed to the SDK. Examples of the proper metadata to be passed in the loadMetadata

Step 8: Video Duration Ping

The first duration ping is fired after 5 minutes of content is viewed. A DCR Video – duration ping fire to secure-dcr.imrworldwide.com indicated by the cr value containing a D in the format of 4_00_99_D1_11111 should be seen. This D ping should fire approximately every 5 minutes after the initial duration ping has fired or when the content switches to an advertisement. The ad length (c51) is the total ad duration viewed in the previous session, and the ad count (c52) is the number of ads viewed in previous segment.

Parameter Description Example
ci Client ID – this value should be consistent throughout all of the pings that fire for the implementation. us-123456
asn Asset Name – this value should represent asset’s name assigned in the metadata. Video-Asset
tl Episode Title Episode Name – S2 – E1 – LF
cr Crediting Ping Identifier 4_00_99_V1_00000
rt This Value should be “video” and indicates that this is a DCR tag for video content. video
c10 Platform Indicator plt,DSK or plt,MBL
c13 This value should contain the appid of the application. asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
c51 Ad Duration adl,88
c52 Ad Count noad,1

Note: If this ping fails to fire, it may be caused by not passing the setPlayheadPosition API call as expected. The instruction as well as examples can be found in the Developer’s Guide.

Step 9: 5min Duration Ping

View all channels for 5 minutes to ensure all channels fire a duration ping.

Step 10: Pending Duration Ping

Play a stream and move the app to the background. A pending duration ping should fire; crediting the appropriate number of minutes viewed from last ping (i.e. 4_00_99_D1_11100). No other pings should fire after it has been moved to the background. In case SDK does not get a chance to send out the ping while going to background, SDK will send the pending ping on next re-launch.

Step 11: Pending Duration Pings cont.

The same action will occur with any interruption to the stream’s playback (e.g., alarm, incoming call, etc.).

Step 12: Opt-Out Implementation

Test the Opt-Out implementation in four steps.

  • Complete an opt-out in the app through the Nielsen opt-out webview.
  • User opt-out, a goodbye ping is fired off to the Nielsen server. Example Goodbye Ping:

http://secure-dcr.imrworldwide.com/cgi-bin/cfg?cfgv=200&longitude=&latitude=&apid=&apv=01.00.00&apn=Nielsen%2520sample&sdkv=aa.4.0.0&bldv=aa.4.0.0.4&nuid=00b5926fea1807638ebfe6f04af6a455c5d9b2a1ed3e39f550f44daa39d0886d&osver=ANDROID.4.4.4&devtypid=samsung-SAMSUNG-SM-N910A&devid=42ec6a26b000ccd34015ba8625ee29cd283190a8c00f1622f356e900bb5b2a23&enc=true&tz=-14400&fmt=json&adf=&uoo=true&sfcode=dcr&ccode=&dma=539&rnd=1434632964945

  • Watch any content (static or video) for at least three minutes. No pings will be rendered.
  • Opt back in, a hello ping is fired off to the Nielsen server. Example Hello Ping:

http://secure-dcr.imrworldwide.com/cgi-bin/cfg?cfgv=200&longitude=-82.65&latitude=28.05&apid=&apv=01.00.00&apn=Nielsen%2520sample&sdkv=aa.4.0.0&bldv=aa.4.0.0.4&nuid=00b5926fea1807638ebfe6f04af6a455c5d9b2a1ed3e39f550f44daa39d0886d&osver=ANDROID.4.4.4&devtypid=samsung-SAMSUNG-SM-N910A&devid=42ec6a26b000ccd34015ba8625ee29cd283190a8c00f1622f356e900bb5b2a23&enc=true&tz=-14400&fmt=json&adf=&uoo=false&sfcode=dcr&ccode=&dma=539&rnd=1434633027479

  • Watch any video content for at least three minutes and V/D pings – view and duration pings will be visible.