Time to time, I see some questions about integration test automation script to performance testing tool on Stackoverflow. There is a confusion about performance testing and test automation for whom newly started performance testing after doing some test automation. It is demanded that they have some automation code and want to use these scripts for performance testing to simulate user behaviour. Theoretically it seems a very good idea that tons of users are performing some cases and you are capturing the response time and finding bottle neck in terms of client side. However this is not applicable in practice because there are lots of obstacle to handle. The followings outline the obstacles and misunderstandings you will face, for the idea.
I can open some browsers and simulate real user behaviour
Automation scripts run over a browser, for web project. Most of the application are becoming as web app. For GUI based application what the hack test automation will have a role on performance testing. Crazy thing I have ever heard. If you want to test the client side performance problem, it is another case. For web application you need to test the services first, and if every thing is performing well enough then you can check the GUI related problems as in testing the mobile application too. Therefore you have to create an instance of browser for each users so you have a limit for number of browsers, let's say it is no more than a 2K. See that each Chromedriver consumes %0,2 memory of total physical RAM on idle, which means I can open, but not to send some commands, only 500 Chromedrivers.No Need Browsers for Headless Testing
Headless testing doesn't open a browser so it is cheap for testing. Idea behind the headless browser is reducing the time for loading of user interface related things like photos, tables, JavaScript etc. and making light weighted version of a browser. With this way you can make your automation test faster but you have stick what it requires. Even it is somehow faster than a real browser, and it also cheaper in terms of consuming ram and processor, there is a limit for the number of headless browsers.
Problem of Handling Browsers
Every browser needs to have a valid driver to drive the automation code throughout the connection protocol. This is needed to send commands to browser to interact with the web objects. To run many cases parallel, you need to have a configuration for
- Dom should be ready to be able to handle the commands
- Handling waiting time is another problem since the time is the major concern for performance testing
- Physical needs for sending, rendering and handling commands
- The performance indicators, how to see that problematic parts of the test
- Managing test environments
Why This is Becoming a Request
The idea Selenium can be used for performance testing is inspired by a feature that Jmeter has a Webdriver plug-in to run Selenium script in terms of testing client side performance. With this plug-in, you run some Selenium scripts to get time consuming for completing the Selenium script. Another meaning of this, it calculates the overall time that a client most probably face for the case under predefined amount of loads. This does not mean that you are running the Selenium to create loads. As the following is a part of the guideline of the plug-in:
for the Web Driver use case, the reader should be prudent in the number of threadsthey will create as each thread will have a single browser instance associated with it. Each browser consumes a significant amount of resources, and a limit should be placed on how many browsers the reader should create.