Is Appium server single thread? - appium

I want ...
Using Server(including appium server), making many clients do auto testing.
I got a one question.
If many clients do auto test through server(in aws, has appium server), Can appium server do multithreading? (I already knew about tomcat can multithreading due to it's thread pool)
or It is possible that make many appium server(when a client start auto test) and do auto test through each and then stop it(when the auto test is done) so that many clients can do auto test at the same time?
In conclusion,
I want to make a server that can do auto test for many clients at the same time and that server has appium server(clients do not know about appium server). All things about auto test setting is in Server(in aws, used by clients). All clients don't know at all about auto test setting.

Yes, Appium it's a single server, but you can create Appium Grid and use multiple serves to run tests
Appium Grid example
Selenium Grid here

Related

Scheduled Job equivalent functionality in MVC

I have a requirement in my MVC app.
I had an export to excel functionality that is taking 3 mins of time (user clicks on a export button and waits on).
This export downloads an excel that has multiple worksheets after applying certain rules on the data.
These rules are datamanipulations plus applying colors on the cells belonging to certain columns.
Inorder to avoid the wait time, I was asked to develop a code with in the MVC app that can run like a scheduled job.
This job has to export the excel to a dedicated folder with in the network on the scheduled time (daily once).
Also i was asked to develop a web page within the app which has links to download these excels.
Quesions here (Any help would be appreciated) :
I have chosen Quartz.NET to implement this requirement. This is an open source (to my little knowledge) that can
provide the facility to schedule a job (class developed in .NET). Is it the right choice or would there be any implications in future?
Is it really needed to develop a job like code or any other way of coding can address this?
I'm not very familiar with Quartz.net, but I do know that trying to run background/scheduled tasks from within the same process as the MVC application can be problematic.
Ref 1: http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/
Ref 2: http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx
Essentially, you can't guarantee that the process will complete correctly when running it due to how IIS handles app pools (which is where you MVC process runs: assuming hosting on IIS anyway).
You mention running a scheduled task within your MVC app. Again, this is incorrect. Why can't you just slap a console app project into the solution and drive the code from there, then put it on the server and use the Windows Task Scheduler?
In terms of background tasks, the "correct" way to do this is to send a command from your MVC app to some sort of message queue, which can then ensure that the command doesn't get dropped. I've used RabbitMQ in the past (a middleware message broker). Perhaps this is the aim of Quartz.net.
This setup typically involves another app (for me, usually a console app run on the server) that receives the command message from the message queue and runs in it's own process, entirely separate from MVC and thus the issues inherent with IIS AppPools and background tasks.
A lot of work, really... one would think it'd be easier, but that's the surefire way to do it and maintain the integrity of the task to be run.

Is it possible to super scale a dockerised selenium grid?

I am currently developing a dockerised selenium grid to run around 800 functional tests ( see my post ) and I was hoping I could launch up to 800 nodes with one hub in a single grid [inside a BIG aws instance]. The idea would be to run all my tests at the same time and finish in [let's say] 10 minutes.
As I understand from this post that is not possible.
I launched 20 nodes and my tests are only populating the 10. That is only 10 firefox instances.
Are there restrictions built in the selenium server or the hub's docker image?
I was hoping that the ease of scaling dockerised services would take the selenium grid capabilities to a whole new level...
Is the dockerised implementation of selenium grid 'stuck' to 10 nodes ?
You should be able to run as many concurrent tests as the system can maintain. Without knowing anything about your current platform I have no idea what is limiting to just 10 nodes. In my current stack my test runner has a max fork property that limits the number of concurrent tests. You might want to look into what your test runner has set as the max number of concurrent tests. I know of no limit for selenium grid for tests it would be silly to limit it at 10.

How to Debug the asp.net web application without disturbing the release build?

I'm working asp.net web based application, I have deployed this application on server, Its getting response on port 80 from a outside client.
I want the to fix the bugs so I want to run this application in Debug mode so that I can attach the worker process with the application and this is making the Performance down and its disturbing the QA team.
So can I have two application one can run in release mode so that QA activity does not get disturbed and parallelly I can debug the build and fix the bugs or can do further development.
I'm facing the same problem during the development activity, If multiple developers are working paralley , only one is able to debug the application other one has to wait.
So please suggest me, If I can get rid of this situation.
I have only one server on which I can test this application.
This is a way too long discussion, but I will try to offer you a few ideas:
Each developer should develop on his own machine (sources and database should be local).
In order to sync your work you should use:
a. a source control solution like TFS or SVN (this is free) for your sources.
b. database changes can easily be synced by generating update scripts using SQL Schema Compare directly from Visual Studio (you will need SQL Server Data Tools for this), Redgate SQL Compare or another application that can compare the database strucure (there are many available online, some of them free).
You should have a separate server (DB and app) to testing.
You should have a separate server (DB anb app) for production.
You say you have one server to test the application. But I suppose each developer has his own computer, right? In this case you need to skip #3 and use the same server for testing and production, but with different databases and applications.
I suggest you check this website for similar answers (see Best practice for test and production environments for example) to find the best solution that applies in your case.

iOS UI testing driven from environment other than OS X

I am looking for a tool to test iPhone app UIs and would prefer to have a test driver executes tests from a Windows or Linux environment, by sending commands to the test server on the phone via HTTP. Is there anything out there like that?
I have been unable to find anything that allows me to test the GUI automatically on a non-OSX environment.
There are alternatives to the Automation part of Instruments.
You might for example use FoneMonkey http://www.drdobbs.com/open-source/231901614
You write that you want to use HTTP to send commands to some sort of magic TestServer running on the devices. I think that this will be very much impossible on a non-rooted phone, and you would at the same time be unable to get the test results automatically, ( asking via. HTTP whether a button is on the screen seems... Wrong ).
What are your reasons for this setup?
Anyway, long story short, my answer is going to be no, there is nothing like what you request out there, and I suggest you look into Apples Automation Instruments which allow you to do quite a lot of nifty stuff
Good luck!

watir webdriver on linux

We are using a combination of watir webdriver, firefox and jenkins on as5 servers to test our frontend. I currently have 15+ various transactional tests that run every couple of minutes. I'm frequently having issues with watir failing to open a firefox browser due to the locking port not getting released in a reasonable amount of time. I've put in random sleep delays and additional launches (if the first failed) to help allieve these issues but it's still a big problem.
Is there anyway to just leave firefox running and have the tests simply open a new tab, run their steps and close the tab when done? On a loaded server, it is taking up to 20 seconds to simply launch a browser.
If not, are there better ways to launch firefox so it isn't so heavy?
I get that we aren't using watir in a way that it was intended, but our hopes are to make it a feasible alternative to commercial solutions which can be prohibitively expensive.
Thanks for any input you can provide.

Resources