HeadSpin Documentation
Documentation
Changes
Getting Started
Integrations
HeadSpin Platform
API Reference
Mini Remote
Automation
Audio
Biometrics SDK
Performance Analysis
Performance Monitoring
Grafana
On-Premise Deployments
Deprecated Documentation
Legal Matters

Waterfall UI

HeadSpin Session UI

Overview

HS visualization platform

The HeadSpin Session UI is the visualization platform that lets you explore and understand your app’s network characteristics. The interface has six main sections: the Information Palette, the Metrics Graphs, the Video Capture Palette, The Issues Palette, The Timeline and the Details Palette.

QUICK START

1
After you connect to a GEO with our mobile app, you'll receive an e-mail with a link to view your session in the Session UI.
Open HeadSpin Session Data
2
While your session data loads, you'll see a card with info about the GEO for this session.
3
When the data finishes loading, the info card relocates to the upper left. Try clicking on the pencil icon to add a meaningful name and description to your session. You can also download an archive of your session data from here.
Info palette
4
In the timeline, all your network traffic is rendered as colored blocks, grouped into connections. Connections are organized by hostname.
Timeline showing all traffic data
5
Now have a look at the issues panel. Issues indicate network messages and connections that could be slowing down your app.
The issue palette
6

Click on the Slow Downloads issue, and scroll down the timeline, noticing the highlighted blue blocks. Blue blocks represent time spent receiving data from a server. The Slow Downloads issue highlights messages that took longer than 500ms to fully arrive.

Not all highlighted messages are responsible for a poor user experience in your app--they're just candidates.

slow downloads issue
7

We'll use the time track and video panel to determine if a message is really a problem or not.

Choose a reponse to investigate, and click on the time track above the timeline to scrub the video to around when this response was received.

time track and video panel to determine if a message is really a problem or not
8

Now press the video play button to see what was happening in your app.

If the response block doesn't correspond to a user interaction, this is a low-priority issue; move on to another highlighted block.

If the message does correspond to a user interaction, this is a high-priority issue! Maybe the message took a long time to download because it’s very large, or maybe it was served from a distant location.

video showinng what was happening in your app
9

Take a look at the timeseries plot. It tracks measurements about your session over time.

The minimum value of all time series is 0, and the maximum value is indicated by a colored horizontal line, and a number in the upper right.

Select the Download Speed timeseries from the dropdown menu; it tracks the rate at which your app downloads data throughout the session.

tracks measurements about your session over time
10

Hold shift and click and drag on the timeline to zoom into a region around the problematic response block.

If the Download Speed timeseries increases noticeably for this response block, it was probably transfering a lot of bytes.

zoom into a region around the problematic response block
11

Click on the response block to open it in the details palette. Some things to pay attention to:

  • What kind of content was transferred in this response?
  • How big was the response in bytes? Is this what you expect?
  • If the response was an image, try copying the URL and opening it in your browser. Is the image higher resolution than it needs to be?
response block
12

Click on the Fit to Screen button to zoom back out again and repeat this investigation for other blue blocks highlighted by the Slow Downloads issue.

zoom back out again and repeat the investigation

METRICS

Metrics are sums and averages of different types of network data captured during a session (e.g. total number of HTTP requests, average download speed, etc.).

Metrics

<p class="highlight-box">Metrics are a great way to start narrowing in on where your bottlenecks might be. Try selecting different domains in the Domain Metrics group, and see if you notice anything surprising in the Timings or Connection Usage pies.</p>

We calculate the same metrics for four different groups of requests:

<p class="highlight-box-grey">SESSION-WIDE METRICS</p>

Every network message in a session.

<p class="highlight-box-grey">DOMAIN METRICS</p>

Every message sent to or received from a particular domain.

<p class="highlight-box-grey">HOST METRICS</p>

Every message sent to or received from a particular host.

<p class="highlight-box-grey">BURST METRICS</p>

Every message in a special region of a session called a Burst.

Network Data Summaries

These lists summarize the network activity at your cell PoP:

Avg. Wait: Average time spent waiting for a response from a server.

Traffic: Total amount of data transfered between server and cell PoP.

Download Speed: Average rate of data transfer from cell network to cell PoP.

Requests: Total number of requests.

Throughput: Average rate of data transfer between cell PoP and server over a specified period of time.

Traffic Content

The traffic content pie shows you in what proportion your application receives different types of data (image, JSON, etc.).

<p class="highlight-box">Take a look at the traffic content pie in the session-wide metrics. Is your app receiving any unexpected content? Try narrowing in on this data in the host or domain metrics. Examine where in particular these different content types are coming from.</p>

Domain/Host Traffic

The domain and host traffic pies show you how much your app communicates with different domains and hosts.

Status Codes

The status codes pie tells you what proportion of your HTTP requests succeed or fail.

Connection Usage

The connection usage pie gives you a sense of how efficiently your application uses its TCP connections.

<p class="highlight-box">Every time an HTTP request re-uses an existing TCP connection, it saves time by skipping one or more round-trips with the server that are required when initializing a new connection.</p>

<p class="highlight-box" style="margin-top: 0; margin-bottom: 0; background-color: #eff3ff;">New</p>
<p class="highlight-box-grey" style="margin-top: 0; margin-bottom: 0;">Number of HTTP requests that create new TCP connections.</p>
<p class="highlight-box" style="margin-top: 0; margin-bottom: 0; background-color: #bdd7e7;">Re-Use</p>
<p class="highlight-box-grey" style="margin-top: 0; margin-bottom: 20px;">Number of HTTP requests that re-use exisiting TCP connections.</p>

Timings

The timings pie gives you a breakdown of how your application spends time sending and receiving HTTP requests and responses.

<p class="highlight-box" style="background-color: #e96d31; color:white;">Connect</p>

<p class="highlight-box-grey">Time spent opening new TCP connections.</p>

<p class="highlight-box" style="background-color: #7e3f99; color:white;">Encrypt</p>

<p class="highlight-box-grey">Time spent performing TLS handshakes (i.e. preparing to communicate securely over HTTPS).</p>

<p class="highlight-box" style="background-color: #219C71; color:white;">Wait</p>

<p class="highlight-box-grey">Time between sending a request and receiving the first byte of a response.</p>

<p class="highlight-box" style="background-color: #45B2FF; color:white;">Receive</p>

<p class="highlight-box-grey">Time spent receiving a server's response.</p>

ISSUES

The HeadSpin platform analyzes the session traffic and identifies potential performance issues. Each issue can be viewed in relation to specific points in the data, and it can be downloaded in various formats.

Issues Palette

Timeline Highlights

Clicking an issue highlights the items in the timeline view that pertain to that issue. For example, the Large Messages issue will highlight all the large receive sections within request/response blocks.

<p class="highlight-box">Note: The issue highlight mode can be exited by clicking X in the issue card or in the top-right of the timeline panel.</p>

Duplicate Requests

When opening the Duplicate Requests issue, messages in the timeline are highlighted with colored dots. Messages marked with the same color are part of the same duplicates group. Hovering over a dot will further highlight all the messages in that group.

Table View

When clicking on an issue, two buttons become available: "View Table" and "Download .csv". "View Table" will open the raw data table for that issue. The "Download .csv" button is a top-level shortcut for one of several download options available within the table view.

TIMELINE

Timeline

The timeline visualizes all network traffic captured during a session. TCP connections and HTTP messages are rendered as colored blocks (see below). Click on a connection or request/response block to see its details.

A vertical orange cursor is synchronized with a video of your session in the upper-right. The position of the cursor indicates the network activity that corresponds to the current frame of the video.

Scroll, double-click, and use the zoom and fit buttons to navigate around the timeline. By default, TCP connections are grouped by host.

<p class="highlight-box">TIP: while holding shift, click and drag to zoom to a region.</p>

Time Series

At the top of the timeline view, there is a panel showing time series data that correlates to the session timeline: the x-axis is time. Several time series datasets are available and can be toggled using the pulldown in the top-left of the timeline.

Hovering the mouse over the time series will show the value in the dataset at that point in time. A horizontal line indicates the maximum value for the dataset and the max value is permanently displayed in the top-right of the time series panel.

All time series data is currently rendered on a linear scale.

Page Content

The amount of information displayed on the page. At any point in time, it is the average information entropy of the image intensity in a video frame in bytes. For a single video frame, we define information entropy as the sum of the -(probability of pixel i) * log256(probability of pixel i) for all pixels with nonzero probabilities of occurring.

Downsampling Index

Reference-free measure of downsampling in video frames. This metric measures the fraction of pixels used to convey information on small scales. Video that has been degraded (e.g., due to downsampling) will in general have a higher Downsampling Index. High fidelity video will have a low Downsampling Index since a large fraction of the pixels are used to convey small scale information. The Downsampling Index is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin Platform API.

Frame Rate

The frame rate as measured from the device.

  • Android: the frame rate value is calculated by measuring the number of frames produced in the previous 1 second interval at the moment that the frame rate is polled. If there were 0 frames produced in the previous second, the frame rate will be 0. This measurement is done by timestamping the frames as they are produced by the SurfaceFlinger and keeping track of these timestamps. Note that the rate at which the frame rate is polled is not always constant. It is polled at the same rate that the frames are produced at, but capped to a period of 200ms (5 per second). So the polling rate will usually be 5 per second unless the frame rate itself drops below 5 frames per second.
  • iOS: Not available as of iOS 13+
  • Browsers: Not available

Screen Change

A metric describing the amount of visual change in between video frames. This metric is calculated as the mean of the pairwise differences in intensity between pixels in adjacent frames.

Impact Count

The number of active HeadSpin Issue cards affecting a given time.

Impact Time

The estimated performance impact of active Issue cards affecting a given time.

Blockiness

Reference-free measure of blockiness in the video frames. This metric measures the intensity of the periodic appearance of block structure in an image. Blockiness is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin Platform API.

Blurriness

Reference-free measure of blurriness in the video frames. Since blurring artifacts manifest as the attenuation of the high spatial frequencies, this metric measures the spread of the edges in an image to give a blurriness score. Blurriness is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin Platform API.

Colorfulness

Reference-free measure of colorfulness or "chroma" in the video frames. This metric measures the amount of color usage in the frame. Colorfulness can vary with stylistic choices of the video content creator or application developer. High levels of colorfulness indicate more usage of the fully saturated colors in the biconic HSV color space. Video content that appears to be oversaturated or undersaturated can affect user perception of the quality of the stream and may indicate the presence of issues related to graphics settings or video compression. Colorfulness is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin Platform API.

Contrast

Reference-free measure of contrast in the video frames. This metric measures the perceptual level of contrast of the frame. Variation in the level of contrast can indicate issues in the original video recording. Overly high or low contrast levels can be make it difficult to view video content. In some cases, such as viewing text on a screen, high contrast is beneficial. Contrast is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin Platform API.

Brightness

Reference-free measure of brightness in the video frames. This metric measures the perceptual level of brightness of the frame. Low levels of brightness, particularly when coupled with low levels of contrast, can affect the perception of the video quality. Brightness is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin Platform API.

HeadSpin MOS

Reference-free measure of the instantaneous mean opinion score (MOS). This metric provides the human-perceived measure of the quality of the video frames within a sliding analysis window. These scores are based on a Likert scale consisting of the following values: 1 (Very Poor), 2 (Poor), 3 (Fair), 4 (Good), and 5 (Excellent). HeadSpin MOS values less than 3 indicate regions of video that may contribute to poor quality of user experience. Many factors including source video characteristics, video compression, and network conditions can contribute to the quality of video displayed on a device.

Netflix VMAF

The Video Multi-Method Assessment Fusion reference-based measure of the instaneous perception video quality as developed by Netflix. This metric provides perceptual video quality scores on a scale of 0 (worst quality) to 100 (best quality) of the distorted video as compared to the reference video. The metric is unbounded on the upper end and the metric may exceed values of 100 depending on the quality of the provided reference and comparison videos.

Detail Loss Metric

Included in the set of time series generated from the VMAF analysis, the Detail Loss Metric (DLM/ADM/ADM2) measures loss of detail and impairments in the distorted video as compared to the reference video which distract viewer attention. The Detail Loss Metric provides information regarding the level of detail loss that affects content visibility on a scale of 0 (low amount of preserved detail) to 1 (high amount of preserved detail).

Structural Similarity Index Metric

Included in the set of time series generated from the VMAF analysis, the Structural Similarity Index Metric (SSIM) is a localized measure of various statistical properties of the reference and distorted videos. This metric computes a weighted average of statistical values including mean, variance, covariance, and dynamic range of the two videos on a fixed window size. The SSIM provides information regarding the structural similarity on a scale of 0 (low amount of structural similarity) to 1 (high amount of structural similarity).

Multi-Scale Structural Similarity Index Metric

Included in the set of time series generated from the VMAF analysis, the Multi-Scale Structural Similarity Index Metric (MS-SSIM) is similar to the SSIM but operated on multiple windows as opposed to a fixed window. This metric provides information regarding the structural similarity on a scale of 0 (low amount of multi-scale structural similarity) to 1 (high amount of multi-scale structural similarity).

Peak Signal To Noise Ratio

Included in the set of time series generated from the VMAF analysis, the Peak Signal To Noise Ratio (PSNR) is a metric that measures the amount of noise present in a distorted video stream as compared to the reference video (i.e. the "signal"). The metric is the relative power of the signal to the noise in units of decibels. Higher values for PSNR indicate that the distorted video has a low amount of noise when compared to the reference while lower values for PSNR indicate that the distorted video has a high amount of noise. Acceptable values for PSNR vary with bit-depth of the video. Users may expect videos with acceptable levels of noise to have an average PSNR in the range of 30 dB to 80 dB.

Visual Information Fidelity

Included in the set of time series generated from the VMAF analysis, the Visual Information Fidelity (VIF) is measured at 4 different scales: 0, 1, 2, and 3. This metric provides an assessment of video quality based on natural scene statistics with a focus on extracting information based on the human visual system. The VIF algorithm typically pools the metric over the four scales specified while the Netflix VMAF analysis uses a modified form of the VIF that makes use of each of the VIF scales independently. These metrics are provided on a scale of 0 (low amount of visual fidelity) to 1 (high amount of visual fidelity). Videos with higher values of visual fidelity are representative of of videos that tend to score higher with human judgment of visual quality.

Screen Rotation

The orientation of the screen. At any point in time, it is 0 degrees if the screen is in portrait mode, and 90 degrees if the screen is in landscape mode.

Audio Volume (Mono)

Root-mean-square energy of the audio signal as a measure of volume. Applicable only if the session video contains one audio channel (mono).

Audio Volume (Left)

Root-mean-square energy of the audio signal in the left channel as a measure of volume. Applicable only if the session video contains two audio channels (stereo).

Audio Volume (Right)

Root-mean-square energy of the audio signal in the right channel as a measure of volume. Applicable only if the session video contains two audio channels (stereo).

Audio Momentary LUFS

Perceptual loudness of the audio signal as defined in ITU VS.1770-4. Applicable only if the session video contains audio (mono or stereo). While Integrated Loudness (in LUFS) provides a single measurement that represents the overall audio loudness of the entire session video, Momentary Loudness (in LUFS) provides a loudness measurement for every sliding window of 400 ms (with an overlap of 300 ms between the windows). The minimum value of Momentary Loudness is capped at -70 LUFS, whereas the theoretical maximum values are 3.4 and 6.4 LUFS for mono and stereo audio, respectively. In practice, however, the loudness values tend to lie between -4 to -50 LUFS, with the actual range depending on the audio application as well as the volume setting on the device when the session video is captured. For context, -15 LUFS is the maximum Momentary Loudness value allowed for advertisement / broadcasting in most countries.

Concurrency

The number of simultaneous request/response blocks.

Connections

The number of open TCP connections.

Download Rate

The total rate of data transfer from the cell network to the cell PoP. At any point in time, it's calculated by summing the download speeds of receive sections in concurrent request/response blocks. For a single request/response block, we define download speed as (response size) / (receive time).

HTTP Throughput

The total rate of data transfer to and from the cell PoP. At any point in time, it's calculated by summing the throughputs of all concurrent request/response blocks. For a single request/response block, we define throughput as (request size + response size) / (wait time + receive time).

Network In Bytes

The number of bytes received from the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Network Out Bytes

The number of bytes sent out on the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Network In Packets

The number of packets received from the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Network Out Packets

The number of packets sent out on the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Network In Total Bytes

Cumulative number of bytes received from the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Network Out Total Bytes

Cumulative number of bytes sent out on the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Application CPU Usage

The CPU utilization as a percentage corresponding to the application under test on the host device.
The value is normalized by the number of CPU threads that can run program on the host device. 100% indicates the application processes occupy all CPU resources for the application and its children processes.

  • Android: Not available
  • iOS: Not available
  • Browsers: Available

Application Memory Used

The memory used by processes corresponding to the application under test on the host device.

  • Android: Not available
  • iOS: Not available
  • Browsers: Available
    On macOS host machine, the value is Real Mem in the activity monitor.
    On Windows host machine, the value is an alias for wset field and it matches Mem Usage column of <code class="dcode">taskmgr.exe</code>.

Application Memory Used Percent

The percentage of Application Memory Used.
The value is normalized. 100% means the application processes use all available memory on the device.

  • Android: Not available
  • iOS: Not available
  • Browsers: Available

Net CPU Usage

The net CPU usage on the device.
This value is system-wide CPU utilization as a percentage.
It is calculated as follows.

  • Android: (user time) / (total time)
  • iOS: (total time - idle time) / (total time)
  • Browsers: (total time - idle - iowait) / (total time)

The operating systems provide counters of how many units of time (ticks) each core, and all cores together have spent in various states: running code of the apps ("user"), running OS code ("system"), idling ("idle") and a few others.
HeadSpin platform reads the CPU counters many times per second. It calculates how much time was spent in each state since the previous reading and runs the above formula. For the NET CPU load calculation, the counters from all (active) CPU cores are used.
Different formulas are used because on Android, using the same formula as for iOS consistently gives 100% utilization which is not a useful result. For browsers-based sessions, we use psutil Python package which uses its own formula.

Single Thread CPU

The usage of a single thread on the device.
The value is the CPU utilization of the thread which has the highest utilization at that time, according to the function described in the "Net CPU" section above.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

Net CPU Frequency

The net CPU frequency in MHz on the device.

  • Android: Available
  • iOS: Not available
  • Browsers: Available

Single Thread CPU Frequency

The CPU frequency of a single thread in MHz on the device.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

Memory Used

The amount of memory used on the device.

Memory Used Percent

The percentage of memory used on the device.

I/O Read Syscalls

The number of read I/O operations, such as syscalls like read() and pread().

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

I/O Bytes Read

The number of bytes fetched from the storage layer.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

I/O Write Syscalls

The number of write I/O operations, such as syscalls like write() and pwrite().

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

I/O Bytes Written

The number of bytes sent to the storage layer.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

Battery Temperature

The temperature of the device battery in degrees Celsius.

  • Android: Available on most devices
  • iOS: Not available
  • Browsers: Not available

Battery Voltage

The voltage of the device battery in Volts (V).

  • Android: Available on most devices
  • iOS: Not available
  • Browsers: Not available

Battery Current

The electrical current discharging from the device battery in milliamperes (mA). This is calculated from the overall electric power over a given timestep, which can be defined as: current = electric power / timestep.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Battery Energy Drain

The battery energy drain in millijoules (mJ) since capture start. This is calculated from the overall electric power and voltage, which can be defined as: energy drain = electric power * voltage.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Battery Energy Drain Percent

The percentage of battery energy drain used on the device since capture start.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Janky Frame Count

The number of dropped or delayed frames.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

High Input Latency

The number of input events that took more than 24 ms.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

Slow UI Thread

The number of times the UI thread took more than 8 ms to complete.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

Frame Deadline Missed

The number of frames that missed the 16 ms deadline.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

Total Views

The number of Views for the layout.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

Frame Render Time p50

Median frame render time (ms).

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

Frame Render Time p90

90th percentile frame render time (ms).

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

Frame Render Time p95

95th percentile frame render time (ms).

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

Frame Render Time p99

99th percentile frame render time (ms).

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

GSM RSSI

The GSM (Global System for Mobile) received signal strength indication, rescaled to the range 0 to 1. This corresponds to a power level of −113 dBm and −51 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

GSM Bit Error Rate

The bits that have errors, as a percentage of the total number of bits received. This quantity is reported by the device at 8 discrete levels, the lowest being 0.14% and the highest being 18.1%.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

CDMA RSSI

The CDMA (Code-Division Multiple Access) received signal strength indication, rescaled to the range 0 to 1. This corresponds to a power level of −120 dBm and 0 dBm, respectively. A higher value means stronger signal.

In Android 9 and earlier, this is reported in the range −100 dBm to 0 dBm.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

CDMA EC/IO

The quality and cleanliness of the CDMA signal, rescaled to the range 0 to 1. This corresponds to −16 dB and 0 dB, respectively. A higher value means higher quality.

In Android 9 and earlier, this is reported in the range −15 dB to 0 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

EVDO RSSI

The EVDO (Evolution-Data Optimized) received signal strength indication, rescaled to the range 0 to 1. This corresponds to a power level of −120 dBm and 0 dBm, respectively. A higher value means stronger signal.

In Android 9 and earlier, this is reported in the range −105 dBm to −1 dBm.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

EVDO EC/IO

The quality and cleanliness of the EVDO signal, rescaled to the range 0 to 1. This corresponds to −16 dB and 0 dB, respectively. A higher value means higher quality.

In Android 9 and earlier, this is reported in the range −20 db to 0 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

EVDO SNR

The EVDO signal-to-noise ratio, rescaled to the range 0 to 1. This corresponds to the values reported by the device of 0 and 8, respectively. A higher value means higher signal-to-noise, and a value of 1 corresponds to the highest signal-to-noise the device can report.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

LTE RSSI

The LTE (Long-Term Evolution) received signal strength indication, rescaled to the range 0 to 1. This corresponds to a power level of −113 dBm and −51 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

LTE RSRP

The LTE reference signal received power, rescaled to the range 0 to 1. This corresponds to −140 dBm and −43 dBm, respectively. A higher value means stronger signal. This metric is a type of measurement specific to LTE networks, and will typically be used in place of RSSI.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

LTE RSRQ

The LTE reference signal received quality, rescaled to the range 0 to 1. This corresponds to −34 dB and 3 dB, respectively. A higher value means higher quality.

In Android 10 and earlier, this is reported in the range −20 dB to −3 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

LTE RSSNR

The LTE reference signal signal-to-noise ratio, rescaled to the range 0 to 1. This corresponds to −20 dB and 30 dB, respectively. A higher value means higher signal-to-noise, and a value of 1 corresponds to the highest signal-to-noise the device can report.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

LTE CQI

The current LTE channel quality indicator, rescaled to the range 0 to 1. This corresponds to indicator values of 0 and 15, respectively. A higher value means higher quality.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

WCDMA Signal Strength

The WCDMA received signal strength indication, rescaled to the range 0 to 1. This corresponds to a powel level of −113 dBm and −51 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

5G NR CSI-RSRP

The 5G NR channel state information-reference signal received power, rescaled to the range 0 to 1. This corresponds to a power level of −140 dBm and −44 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

5G NR CSI-RSRQ

The 5G NR channel state information-reference signal received quality, rescaled to the range 0 to 1. This corresponds to −20 dB and −3 dB, respectively. A higher value means higher quality.

In Android 10 and earlier, this is reported in the range −20 dB to −3 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

5G NR CSI-SINR

The 5G NR channel state information-signal to interference noise ratio, rescaled to the range 0 to 1. This corresponds to −23 dB and 23 dB, respectively. A higher value means higher signal-to-noise.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

5G NR SS-RSRP

The 5G NR synchronization signal-reference signal received power, rescaled to the range 0 to 1. This corresponds to a power level of −140 dBm and −44 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

5G NR SS-RSRQ

The 5G NR synchronization signal-reference signal received quality, rescaled to the range 0 to 1. This corresponds to −43 dB and 20 dB, respectively. A higher value means higher quality.

In Android 10, this is reported in the range −20 dB to −3 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

5G NR SS-SINR

The 5G NR synchronization signal-signal to interference noise ratio, rescaled to the range 0 to 1. This corresponds to −23 dB and 40 dB, respectively. A higher value means higher signal-to-noise ratio.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

WiFi Signal Strength

The WiFi received signal strength indication of the device, rescaled to the range 0 to 1. This corresponds to a power level of −100 dBm and 0 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Latitude

The device latitude location in degrees.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

Longitude

The device longitude location in degrees.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

Session Labels

Just below the time series panel is the session labels panel. Labels are annotations that provide information and insight for events during a session.

Labels can come in two forms, instantaneous and continuous. Instantaneous labels are events that occurred during a specific moment, and are represented by a dot. Continuous labels are events that lasted over a period of time, and are represented by a horizontal bar.

Clicking on a label in the timeline will open up the details card of the label located in the details panel on the right side of the screen.

Labels can either be manually created by a user or automatically generated by the HeadSpin AI system.

User-Created Labels

Labels can be manually created to give users the freedom and flexibility of adding specific insight, and marking important events during a session.

To create a label, simply click and drag the cursor horizontally across the timeline. This will prompt a "Create Label" dialogue box where details of the label can be added. Once the necessary details have been filled out, click the "Submit" button, and the label will be added to the panel. This feature is also available via the HeadSpin Platform API.

User-created labels can be pinned to the details panel, and also deleted by clicking the gear icon located in the top right corner of each details card.

Below are the different types of user-created labels.

User Labels

User labels can be manually created, and are used for custom annotations in the timeline to add additional information for certain events during a session.

Feedback Labels (Suggestion, Needs Improvement, Report an Error)

Feedback labels are used to to provide suggestions, areas for improvement, and errors that surfaced during a session. These annotations provide valuable information to help further improve the HeadSpin AI. To see more information regarding feedback labels, please refer to the Providing Feedback on HeadSpin Performance Sessions documentation.

Capture Labels

Capture labels are automatically generated by the HeadSpin AI during a capture session to provide a deeper insight on an application's overall performance.

Capture labels can be pinned to the details panel by clicking the gear icon located in the top right corner of each details card, but cannot be deleted.

Below are the different types of capture labels.

Foreground Application Labels

Foreground application labels show the top-most, visible application during a capture session. For Android, the label name will be the application package name, and for iOS, it will be the bundle ID.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Foreground Activity Labels

Foreground activity labels show the top-most activity that is being rendered by the foreground application during a capture session.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

App Startup Time Labels (Time to Initial Display, Time to Full Display)

App startup time labels show the time taken by cold and warm application startup. The time to initial display metric measures the time lapsed from app launch until the first drawing activity completes. The time to full display metric measures the time lapsed from app launch until a specific Android API call is made.

Reference: see App startup time in Android Documentation.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

Log Exception Labels

Log exception labels provide insight for errors and exceptions found in the device log. The exception body can be found in the details card. Labels that are colored dark red are exceptions associated with the foreground application running at the time.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Appium Event Labels

Appium event labels provide insight for appium commands executed during a session. The name of the label is associated with the command that was sent, and details of the request and response can be found in the details card. The duration of the label is the total time it took to execute a specific command from start to finish.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Selenium Event Labels

Selenium event labels provide insight for selenium commands executed during a session. The name of the label is associated with the command that was sent, and details of the request and response can be found in the details card. The duration of the label is the total time it took to execute a specific command from start to finish.

  • Android: Not available
  • iOS: Not available
  • Browsers: Available

Function Call Timeline

The Function Call Timeline provides real-time stack trace information, showing threads and individual functions.

Each light gray row in the Function Call Timeline is running thread. The bar shows the thread ID, thread name, start time and end time.

The top row is the main thread of the active process, denoted as main - {process name}. There is only one active process at a time. The threads directly below each main thread belong to the corresponding process.

Each thread in the Timeline can be expanded by clicking on it to display the call stack in real time. Hover your mouse on a function to see more details about it.

  • Android: Available
  • iOS: Available. Note: Function call data will only be available for at most the first two minutes of a capture session.
  • Browsers: Not available

Connection Block

A connection block represents a single TCP connection used to transmit one or more HTTP requests/responses.

<p class="highlight-box" style="background-color: #e96d31; color:white;">TCP</p>

<p class="highlight-box-grey">Time spent opening the TCP connection.</p>

<p class="highlight-box" style="background-color: #7e3f99; color:white;">TLS</p>

<p class="highlight-box-grey">Time spent performing the TLS handshake.</p>

<p class="highlight-box" style="background-color: #219C71; color:white;">Request Blocks</p>

<p class="highlight-box-grey">One or more HTTP requests sent over this connection. See Request Block.</p>

<p class="highlight-box" style="background-color: #45B2FF; color:white;">Response Block</p>

<p class="highlight-box-grey">One or more HTTP responses sent over this connection. See Response Block.</p>

Request/Response Block

A request/response block represents a pair of HTTP request/response messages.

<p class="highlight-box">If you see several green and blue request/response blocks sitting within a single white connection block, you are witnessing connection re-use, where a single TCP connection is used to deliver several HTTP requests.</p>

<p class="highlight-box" style="background-color: #59585d; color:white;">Request</p>

<p class="highlight-box-grey">An HTTP request is sent.</p>

<p class="highlight-box" style="background-color: #219C71; color:white;">Wait</p>

<p class="highlight-box-grey">Time spent waiting for the server's response.</p>

<p class="highlight-box" style="background-color: #45B2FF; color:white;">Receive</p>

<p class="highlight-box-grey">Time spent downloading the server's response from the network.</p>

DETAILS

Clicking on a connection or request/response block will open up a panel of details in the sidebar.

Details Palette

Connection details list the destination IP address, timestamp of creation, and duration of the connection. Below the details is a small diagram indicating when HTTP requests were sent on the connection.

Message details list the URL, size, and timing info for an HTTP request, as well as the status code, content type, and more timing info for the response. The headers for request and response messages are hidden by default and can be expanded.