# Best practices

When working with Virtuoso, it is important to have an understanding of Virtuoso's architecture and how it works in the background. In this section we briefly describe Virtuoso's internal concepts and provide details on how this might affect you or your application.

# Virtuoso's internals

Virtuoso has a distributed multi-tenant architecture to enable horizontal scaling in the cloud. An essential part of this distributed network is Virtuoso's bot cluster. Bots enable Virtuoso to quickly (in parallel) explore applications and execute tests.

Make sure your application can handle parallel requests

When your application is being explored, many bots may start browsing your web application in parallel.

Although for most applications we've tested this is not a problem, it is your responsibility to make sure your webserver can handle a large number of parallel requests.

Firewall configuration

It is typical of firewalls and rate-limiters to consider many parallel requests from same/similar sources to be a potential Denial-of-Service(DoS) attack.

Virtuoso is cloud-based and performs smart dynamic scaling in the background to match resources and demand. Given that this process is done using intelligent adaptive algorithms, explorations/executions may be processed with different capacities at different times of day, and so, the processing duration may vary as we dynamically scale our cloud.

For example, if an organization starts multiple further explorations on different projects at the same time, these projects will use the existing resources available to that organization, and can significantly impact not only those explorations but also smaller executions.

# Application considerations

In software engineering, Software testability plays a significant role in the effectiveness and efficiency of software testing efforts. This is the case for Virtuoso as well. If your application relies on many non-standard features and does not follow best practices in web development, this may also affect the quality of testing with Virtuoso.

Scroll jacking, sticky/fixed elements

Non-standard behaviour such as overriding browsers' native scrolling behaviour or placing fixed elements on the browser viewport can negatively influence Virtuoso's exploration.

# Whole-application explorations

One option available to Virtuoso users is to fully explore your application under test. This means that Virtuoso will recursively explore all pages of your application until no more pages are left to be explored. While this may be useful, it comes at a significant cost, and may take a long time to complete.

Beware of whole-application explorations

Exploring an application fully requires exploring every possible journey on the application. This can involve thousands of page, and incurs a significant costs.

Last Updated: 6/10/2019, 1:22:14 PM