Proxy Testing 101: Proxy Manager Testing Cheat Sheet

Konstantin Sakhchinskiy
7 min readMay 16, 2024

--

Let’s start with a specific example and then we can expand our testing approach to more general situations. Imagine, we have a piece of software — a proxy manager, it can be a standalone program integrated with other software that handles proxies for many connections, or it can be a module or multiple modules within a system, such as an anti-detect browser or web scraper.

What does this proxy management feature? — You have several browsers on your PC/laptop that are used manually or with some sort of automation. You want to have particular digital fingerprints for each browser (IP, location, language, timezone, etc.) using proxies to achieve this. When you start a browser, the proxy is assigned to it, the internet connection is checked, all necessary information is received from the proxy (if not, there is some retrying logic in place), the connection is established (or not, then you get an error message with details and you can’t use the browser) and you can use the browser to navigate the internet via a particular proxy.

Obviously, when your software checks and establishes connections there might be a lot of issues, e.g. with your network and with proxies, there might be and should be some timeouts, errors on the app and proxy sides, etc, and all these cases should be tested and properly handled by the app logic. This software should be able to work with different proxies and support their features and intricacies.

Now let’s stop here for a while with this example.

You can fairly notice that this software is quite rare, so most testers may not need to learn how to test it; there are many other things to learn that may be more useful in general. Partly, you would be right in saying that. However, there might be more cases and situations when software uses proxies or users using them. Some proxy checks might be quite relevant for any network connections and of course, you all heard about VPNs. Now, my example sounds a bit more applicable to different real-world cases and applications.

Proxies and VPNs

To keep moving forward with our testing plan for this example of proxy management software, I’d like to quickly talk about proxies and VPNs — what they are, why people use them, and some of their key characteristics. This will give us a better understanding of what we’re working with.

  • Proxies are “located” between users and the internet, they intersect and forward requests from the user’s device/software to online resources (websites/web services). They mask the user’s IP address, enhance privacy, and may give access to restricted content.
  • VPNs establish a secure, encrypted connection over the internet, creating a private network even within public networks, such as WiFis. Because they encrypt all transmitted data, VPNs ensure privacy, security, and anonymity, and protect user data from potential stealing.

Proxies may support different protocols: HTTP(S), SOCKS, SSH; they may support (or not) UDP.

SSL (Secure Sockets Layer) and TLS (Transport Layer Security) — these protocols are often used to secure communication between users’ software and proxy servers. SSL and TLS encryption ensures the security and integrity of data transmitted through proxies, reducing the risk of interception or tampering with user traffic.

VPNs use encryption and tunneling protocols: OpenVPN, IPSec, L2TP/IPSec.

There are residential and data center proxies, proxies with static and dynamic IPs, and proxies that support IPv4 and/or IPv6.

Proxies may have an auth feature, which means you need to provide login and password, or they might be without login/password. They may have a feature for changing IP addresses by user request at any time. There might be proxies that support different protocols but they have the same IP address and port or proxies that support different protocols on different ports. Proxy providers may provide their users with an IP address or a URL.

The practical significance of proxies and VPNs:

  • Access to social networks or news websites may be blocked by the government. By using a proxy or VPN, the user can access the content securely and anonymously.
  • When you connect to public Wi-Fi in cafes or airports, you expose your data and devices to potential security risks, such as eavesdropping and/or data interception. You can use VPNs to avoid such risks
  • You want to hide your digital identity (there might be different reasons for this). Proxy is an easy way to do this (in combination with other anti-detect and fingerprint spoofing tech you can completely hide your digital trace and blend with other legit users)

You can read about the mentioned aspects in detail in my article: https://hackernoon.com/proxies-vpns-your-online-privacy-anonymity-and-more

Testing Scenarios

Let’s discuss the potential testing approaches, test cases, and required test data. The table below outlines the cases that need to be tested and the corresponding test data. It’s obvious that some cases are specific to proxies, while others are more general and applicable to any network conditions or VPNs. Specific cases may vary depending on the features and use cases of the product.

I can’t say that this checklist covers all possible situations. Some checks and data may not be clear to those without experience in this area. This checklist represents my approach to testing based on my experience and statistics. I’ve excluded some uncommon cases and combined some checks to avoid unnecessary overhead. However, I have also included specific scenarios that have caused issues in the past. This table still contains many cases because I intentionally did not create a proper test design, partly due to the general black-box style of testing I’m using for this example for learning purposes. I have some assumptions about the app, but I do not know all the details of its business requirements. For example, testing all protocols may not be necessary to show the idea of the approach to testing strategy.

Other Things To Test and Keep in Mind

Consider comparing the results of checking all aforementioned test proxies by the most popular proxy checkers or similar to your product software (e.g. competitors). Use software and services that are popular among your users (you will need some statistics) because this is what they will compare your software with and check their proxies if they fail in your software. This is crucial to have such statistics and compare your product checker with other checkers.

Check several different proxies simultaneously along with many other operations on the app and/or your device using other software that consumes lots of resources such as CPU and RAM (to create some sort of load). It will show if there are any issues related to high load and low physical resources.

Depending on the particular implementation, your software may check and establish connections with proxies using some sub-process in your OS. In these cases, it is important to check:

  • How many subprocesses remain active when running multiple profiles with different proxies?
  • Do the processes terminate immediately after stopping the use of proxy connections, or do they continue running for a while to enhance the speed of checking proxies and establishing connections?
  • Is there a separate process for each proxy, or is the same process used for the same proxy in multiple browsers?
  • How much RAM and CPU resources does each process require, and are there any resource leaks over an extended period of time?
  • Do the sub processes terminate when the main software process is terminated? It would be useful to try different methods of closing the application and manually terminating processes to understand how the software handles these exceptions.
  • Check that there are now sub-processes that are running and have a live connection with your proxies when you don’t run your software — these subprocesses have to be terminated according to the implemented logic. If not, it may cause thousands of running processes that use resources and might be killed only manually or by rebooting the OS they are running on.

In conclusion

Testing proxies and/or proxy management software requires a comprehensive and complex approach to ensure reliability and functionality under various conditions. While it may seem niche, understanding proxies and VPNs is relevant for modern applications and network solutions. By examining different proxy types, protocols, and potential issues, we can create comprehensive test cases that cover a wide range of real-world use cases. Learn and understand the foundation for such testing, concentrating on the need for thorough testing of different proxy and network conditions. My general testing advice — always try to understand how things work, how users may use your software, and the different tech that your product uses and works with. Some things may seem niche, but when you understand them, you can gain valuable insights and approaches that might be used in completely different contexts.

--

--

Konstantin Sakhchinskiy

I'm a product-minded Software QA Team Lead, Engineer, and Analyst with a Master's Degree in Math (IT) and 10+ years of experience with all sorts of web apps