Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Think how to Save Events in test #253

Open
jvJUCA opened this issue Nov 24, 2023 · 3 comments
Open

Think how to Save Events in test #253

jvJUCA opened this issue Nov 24, 2023 · 3 comments
Labels
discussion Open discussion about a topic doing This issue is being done by somebody

Comments

@jvJUCA
Copy link
Member

jvJUCA commented Nov 24, 2023

Think the best way to save events like: enter the site, clicks, scroll, movements, etc.

Research as well how to display those data, here's an example of an application that displays events along a timeline
imagem

@jvJUCA jvJUCA added the Question Further information is requested label Nov 24, 2023
@jvJUCA jvJUCA added this to the User Test Refactor milestone Nov 24, 2023
@vGerJ02
Copy link

vGerJ02 commented Mar 12, 2024

Hey I have been doing some research about this topic on how to save the user interactions on a web.

I made this list classified according to whether they are already implemented on the web, or whether the client needs to install or modify anything. Each method is presented in order of preference (within its specific section), prioritizing greater control over web data and user actions.

Feel free to comment and suggest more options if you want:

No client side installation

These are the methods that do not require any additional steps for the user to complete the test, everything is done within the lab website.
However, implementing these methods can be complex. Web functionalities could be obstructed, potentially impeding the smooth execution of tests. There's also a risk of violating the terms of service of external websites, so careful consideration and strategic implementation is required to effectively overcome potential challenges.

Proxy Server

Set up a proxy server that fetches the external website's content server-side, modifies it to include tracking scripts, and serves it to the user through the lab website (opening a new tab/window with the web to analyze).

  • Pros:
    • Full control: Can obtain any data from the user interactions and the external web.
    • Integration Possibilities: Can integrate additional features before serving it to users.
  • Cons:
    • Potentially non navigable: Can be complex to dynamically replicate any web. For example if the web has resources that can only be viewed with a logged in user, it can be difficult to accurately replicate the user session and permissions through the proxy server. It will have to handle the authentication process and the user may not trust that process.
    • Legal and Ethical Concerns: could potentially violate the terms of service of the external website.
    • Performance issues: can affect performance adding latency in user interactions (add a warning that things may be slower)
    • Potential for Detection and Blocking: Some websites may employ measures to detect and block proxy server access, which could render the tracking efforts ineffective.

Embedded

Embed a site inside the lab with the provided link from the user. (<iframe>)

  • Pros:
    • Fast and easy: The user can accomplish the task more efficiently by embedding the site directly within the lab interface, eliminating the need to manually navigate to the test site.
  • Cons:
    • Not always allowed: Most of webs automatically disable this option for security reasons.
    • Same-origin policy The same-origin policy restricts JavaScript running in one origin (domain, protocol, and port) from accessing content from another origin, including iframes. However, there are some indirect ways to track user interactions inside it.
    • Responsive Design Challenges: Ensuring that the embedded site remains responsive and functional within the confines of the iframe can be challenging, especially when dealing with diverse layouts and screen sizes.
    • Accessibility Issues: Content within iframes may not be accessible to users with disabilities, as screen readers may not be able to navigate or interpret the content within the iframe effectively.

Screen record

Record the screen of the user while is performing the test.

  • Pros:
    • Simple: Almost no additional implementation for collection the data.
  • Cons:
    • Limited Visibility: Screen recordings may not capture all relevant data or interactions, such as keyboard inputs or mouse clicks that doesn't affect the web.
    • Less data: There is some data that can be difficult to obtain like in which specific subdomain the user is in a specific moment.
    • High load: Large test where there are multiple complex tasks can generate a lot of data to process and store.

Client side installation needed

The introduction of client-side installation requirements can complicate the user experience and potentially be a barrier to its use. For this reason, I think it is helpful to explore other options before resorting to methods that require additional user action. That said, it's important to note that most of these methods can make data collection easier and provide better results for analysis.

Browser Extension

Create browser extension (or add-on) that extends the functionality of the web browser to perform the data collection.

  • Pros
    • Handle events: They can listen for and respond to various events within the browser, such as page loads, clicks, or keyboard shortcuts.
    • Easy install: On most web browsers an extension can be installed just clicking one button without leaving the current page.
    • Low restrictions: Extensions are rarely blocked and not easy to detect for the web.
    • Fast development extensions are quicker and easier to develop.
  • Cons
    • Intrusive: Extensions can intrude on the user's browsing experience, potentially leading to discomfort or reluctance to install, even more if for completing a task needs to insert credentials.
    • Requirement for user configuration: Users may need to manually configure parameters such as IP address and port settings to facilitate data transmission, adding complexity and potential points of failure.
    • Maintenance needs: extensions need to be updated and compatible across browsers.

External app

Create a desktop app from which the user will do the test. This app will capture the user events.

  • Pros
    • Extensive control of data: Typically no restrictions on the type of data that can be collected.
    • Multi-platform: Implementation can be expanded to support multiple operating systems, allowing for broader compatibility and the ability to conduct tests with various desktop applications.
  • Cons:
    • Compatibility: Developing for different operating systems requires separate implementations, leading to increased complexity and maintenance efforts. This loses one of the main benefits of cloud.
    • Requirement for user configuration: Users will need to manually configure parameters such as IP address and port settings to facilitate data transfer, adding complexity and potential points of failure. Additionally, synchronizing the application with web browsers for combined testing may present challenges.

Collaboration with the external website to test

When collaborating with an external website for testing purposes, users typically need to integrate specific lines of code, often involving the importation of libraries or frameworks.

  • Pros:
    • Can collect all necessary data: Collaboration with the external website allows for comprehensive data collection, providing access to all relevant information needed.
    • Enhanced accuracy: Working directly with the website's implementation ensures that the testing environment closely mirrors real-world conditions, potentially leading to more accurate results and insights.
  • Cons:
    • Dependency on web implementation: The testing process becomes reliant on the external website's implementation, which may introduce variables and limitations beyond our control, potentially affecting the reliability of our tests.
    • Requirement for access: Collaboration necessitates access to the web implementation, which may pose challenges if the client or relevant stakeholders do not have authorization or are unable to provide access.
    • Limited applicability: Testing can only be conducted on websites owned or managed by the client, restricting our ability to assess third-party platforms or services that the client does not control. This limitation may hinder our ability to gain comprehensive insights across all relevant digital channels.

@JulioManoel
Copy link
Member

JulioManoel commented Mar 13, 2024

Proxy Serve

  • Most servers block requests from unknown sources, this for any system that needs to make requests to the back-end

Embedded

  • The problem of responsiveness would be more a matter for the site and not for us, where they would have to deal with it.

Screen Record

  • It would be a prediction and not something concrete, not to mention that many events would be lost.

Browser Extension

  • Browsers don't have backward compatibility between them, so it would be necessary to develop an extension for each different browser.
  • From my point of view, it wouldn't be necessary to configure IPs and ports to facilitate data transfer.

External App

  • It would be interesting to run this application in the background, so as well as being able to collect data relating to the website, it would be possible to obtain data relating to desktop applications as well, depending on how it is implemented.
  • As far as compatibility is concerned, if it's developed in some kind of framework or language that supports multiplatform this wouldn't be a problem, for example Electron
  • From my point of view, it wouldn't be necessary to configure IPs and ports to facilitate data transfer.
  • You could emulate, for example, a browser using Electron, which uses the same technology as Chrome, thus enabling a user-friendly interface and, because it is multiplatform, there would be no compatibility problems.

VM

I'd like to leave you with an idea, what would be your opinion on placing a VM to run with an external application so that the user would have no problem installing and configuring it, to access which we would provide an access URL such as "Geforce Now" or "XBOX Cloud". Using for example socket or TCP Tunneling

@KarinePistili
Copy link
Member

Hello, for me the option that feels more scalable and easy to integrate with the most quantity of users are either the solutions that don't require any installation, or the one with the desktop app. As mentioned by @JulioManoel , Electron is cool for multiplatform, so it would attend most users.

In the case of the extension, I don't how complicated it would be to maintain multiple extensions (as there are a few famous browsers people like). I don't have experience with developing these extensions, and I'm not aware if they are all similar or different depending on the browser.

@vGerJ02 I will share with you the work of another contributor, that made a POC with a chrome extension so you can take a look at it as well to give some insight. I will send a direct invitation to you.

@KarinePistili KarinePistili added doing This issue is being done by somebody discussion Open discussion about a topic and removed Question Further information is requested labels Apr 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Open discussion about a topic doing This issue is being done by somebody
Projects
None yet
Development

No branches or pull requests

4 participants