HeadSpin AI-based Issue Detection Engine
The HeadSpin AI automatically detects and provides actionable insight into the root causes of issues due to network, device, and app architecture performance.
Note that some issue analyses require permissions to run. If you have any questions about whether your org has the necessary permissions for certain issues, please contact your HeadSpin administrator for assistance.
Impact Time
Impact Time is HeadSpin's proprietary performance metric. It measures the amount of time a session is affected by an issue, taking into account our benchmark for app performance. Typically, the total Impact Time is the time added to the length of the session. If addressed, users can accomplish the session's tasks or User Flow in that much less time. Resolving high Impact Time issues will typically yield the biggest performance boosts.
Impact Time is measured relative to a benchmark. The benchmark for an issue is the expected amount of time for an optimized app to accomplish the same tasks. If a task is accomplished during a session in less time than the benchmark, the app is considered to have performed satisfactorily with respect to that issue. On the other hand, an Impact Time above 0 signifies poor performance relative to the benchmark, and represents an opportunity for performance improvement. HeadSpin will flag all such issues in the Waterfall and the Issue UI.
The Union Impact Time of a session provides an estimate of how much the session's specific User Flow can be improved. It is an aggregation of the Impact Time from all issues, merging any overlapping Impact Time regions regardless of how many issues affect them. The Union Impact Time is bounded by 0 and the duration of the session.
Types of Issues
HeadSpin distinguishes between four types of issues: user experience issues, root cause issues, warnings, and testing pitfalls.
User experience issues are issues as perceived from an end user's perspective. They describe the experience of the user when using the app. These issues do not provide immediate insights into the underlying cause or how to fix them. However, they suggest high visibility issues to investigate in order to improve the quality of the user experience.
Issue Name |
Requires Permissions |
Description |
Low Page Content |
No |
Your application had little user-visible content on screen for more than 1 second in the impacted regions of the video. |
Loading Animation |
Yes |
Your application had a loading animation on the screen for more than 1 second in the impacted regions of the video. |
Screen Freezing |
No |
The screen appears to have frozen intermittently in these regions. The analysis: ScreenFreezing tag must be applied to a session for this issue to be analyzed. |
Poor Video Quality |
Yes |
The rich media content displayed on the screen has exhibited poor video quality characteristics for more than 5 seconds. |
Slow App Launch |
Yes |
Your app took more than 5 seconds to fully load. |
Slow Webpage Load |
Yes |
Your webpage took more than 3 seconds to fully load. |
Audio Too Loud |
No |
The audio volume is higher than the recommended upper limit in ITU-R BS.1770-4. |
Audio Too Quiet |
No |
The audio volume is lower than the recommended lower limit in ITU-R BS.1770-4. |
Rage Tapping |
Yes |
User tapped same location with a frequency of 2 taps per second or higher. |
Root cause issues are discovered through the monitoring of device and network status. These issues tell you exactly what went wrong in the session, and how to fix it.
Fixing root cause issues may also improve, though not necessary eliminate, the Impact Time for user experience issues.
Issue Name |
Requires Permissions |
Description |
Connection Reuse: Externally Powered Device |
No |
Your application created new TCP connections instead of reusing existing ones, incurring additional network traffic and app load time. |
Connection Reuse: Battery Powered Device |
No |
Your application created new TCP connections in quick succession instead of reusing existing ones, incurring additional network traffic, app load time, and battery usage. |
DNS Error: Format Error |
No |
The DNS query was improperly formatted. |
DNS Error: Server Failure |
No |
A name server was unable to respond to the DNS query. |
DNS Error: Non-Existent Domain |
No |
The domain name in the DNS query does not exist. |
DNS Error: Not Implemented |
No |
The name server does not support the specified query. |
DNS Error: Query Refused |
No |
The name server refused to perform the action specified in the query. |
Domain Sharding |
No |
Your application used multiple subdomains to serve resources in parallel.
Domain sharding is a technique popular for the web, but can cause performance issues on mobile devices which have different connection pool limits. Each additional connection on a subdomain requires a DNS lookup and new TCP/TLS handshakes for each connection, causing significant overhead. |
Duplicate Messages |
No |
Your app received identical copies of these resources.
It's rare for an app to really need to download the same resource multiple times. |
Unoptimized Resource: image/png |
No |
Your app downloaded an image in the lossless PNG format, which is not optimal for performance. |
Unoptimized Resource: image/tiff |
No |
Your app downloaded an image in the TIFF format, which is not optimal for performance. |
Unoptimized Resource: image/gif |
No |
Your app downloaded an image in the GIF format, which is not optimal for performance. |
Unoptimized Resource: text |
No |
Your app downloaded resources as uncompressed plain text, which is not optimal for performance. |
Unoptimized DNS: High Latency Host |
Yes |
A DNS response provided a host so distant from the client that latency will have a detrimental impact on user experience. |
Unoptimized DNS: Poor Host Prioritization |
Yes |
A DNS response prioritized a distant host instead of a host closer to the client. |
HTTP Client Errors |
No |
These HTTP responses are client errors (4xx). |
HTTP Server Errors |
No |
These HTTP responses are server errors (5xx). |
HTTP Redirects |
No |
These HTTP responses are redirects.
HTTP redirects can be costly, especially if they redirect to a new host, which can incur additional DNS, TCP, TLS, and request-response roundtrips and thus add unnecessary delay. |
Hung CPU Method |
Yes |
Application methods that take longer than 32 ms of CPU time to execute can render the app unresponsive and are suggested to be optimized. |
Hung Real Method |
Yes |
Application methods that take longer than 32 ms of wall time to execute may render the app unresponsive and are suggested to be optimized. This issue analysis is only triggered when CPU time profiling is unavailable (typically for iOS apps). |
Low Frame Rate |
No |
The device frame rate dropped below 24 frames per second for more than 1 second in these regions of the session. This issue is only raised for devices in the landscape orientation by default. |
Slow DNS Query |
No |
The DNS querying took longer than 150 ms to resolve. |
Duplicate DNS Query |
No |
The client performed multiple queries for the same domain within the session. |
Slow Downloads |
No |
These HTTP responses took longer than 500 ms to download. |
Slow Server |
No |
Your application waited longer than 500 ms to receive the first byte in HTTP responses from these hosts. |
Slow TLS |
No |
Your application waited longer than 300 ms to complete TLS handshakes with these hosts. |
Warnings are issues that do not incur any Impact Time but can still be improved. Warnings include security risks or tips on how to maximize the insights gained from the HeadSpin platform.
Warnings can be viewed in the Waterfall UI and Issue UI associated with a session.
Issue Name |
Requires Permissions |
Description |
Unencrypted Traffic |
No |
Your application is making use of unencrypted HTTP requests instead of secure, encrypted HTTPS requests. |
Java Language Reflection |
Yes |
Your Android application is calling Java reflection methods that can generally be replaced to reduce unnecessary overhead time. |
Log Exceptions |
Yes |
An app logged an error while it was in the foreground. |
Log Warnings |
No |
An app logged a warning while it was in the foreground. |
High Battery Drain |
Yes |
The device battery was draining at either an exceptionally high rate (e.g., draining 45% of battery per hour over one second) or at a high rate for a prolonged period of time (e.g., draining 15% of battery per hour over one minute). |
Audio Not Detected |
No |
The audio source is either not present or too low to be detected. |
Unsafe Header Value: Referrer-Policy |
No |
Your application has the header value for 'Referrer-Policy' set to 'unsafe-url'. |
Obsolete Header Value: X-Frame-Options |
No |
Your application uses the ALLOW FROM directive for the 'X-Frame-Options' header. |
Missing Security Header: Strict-Transport-Security |
No |
Your application is missing the Strict-Transport-Security header. |
Missing Security Header: X-Content-Type-Options |
No |
Your application is missing the X-Content-Type-Options header. |
Missing Security Header: Content-Security-Policy |
No |
Your application is missing the Content-Security-Policy header. |
User-Defined Log Issues |
Yes |
A log entry matched a search pattern specified for user-defined log issues. |
Pitfall issues are issues that do not affect real end users and are attributable to some suboptimal usage or configuration at the interface between your application and the HeadSpin Platform. These issues may adversely affect or prohibit the capture of certain data or require some action or trade-off to maximize the value of the data captured.
Issue Name |
Requires Permissions |
Description |
TLS Exception |
No |
Hosts with pinned TLS certificates may fail to establish secure connections with our man-in-the-middle (MitM) network capture setup. See recommendations in the Session API documentation. |
Slow Find Element Command |
No |
Your Appium or Selenium "Find Element" command took longer than 500 ms. Bad selector paths are one of the largest causes of slow scripts. |