Deciding on the right testing tool for a desktop app might be a difficult task. Let’s dive into the pros and cons of some of the popular open source tools for testing desktop apps.
Pros and Cons of Top 9 Open Source Test Automation Tools for Desktop Applications
WinAppDriver
WinAppDriver (short for Windows Application Driver) is a free test automation tool for Windows desktop apps developed by Microsoft. It can run as a standalone as well as a plugin for Appium. Thus, if you are already running Appium’s server, then a request for Win10 app automation will launch WinAppDriver.exe.
Pros
- It’s developed by Microsoft (which in itself is awesome!), and it makes perfect sense to test Windows desktop apps using a tool from the same company.
- It uses WebDriver protocol which means that if you’re from the web/mobile automation world and you already know how to develop using the WebDriver environment, then the transition to WinAppDriver will be easy, quick and clear for you.
Cons
- WinAppDriver is a free tool, yet currently its code is not open source. Samples, tests and related tools are open source, and it’s mentioned that they are considering the option to open source the WinAppDrive code.
Bottom Line: A fast-growing tool that will provide you with better support for using Appium to test Windows apps.
AutoIT
AutoIT is a standalone (doesn’t require any configuration) and small footprint tool, that simulates mouse and keyboard clicks . It activates the binary files of the tested app using a Reflection.
The AutoIT comes with dedicated IDE, and is compatible with recordings and coding in its own scripting language (very similar to BASIC syntax).
Pros
- Allows exporting an Executable file which we can activate independently outside the project (might be very convenient in case of 3rd party tools integration and CI).
- Supports Regular Expression.
- The possibility to develop dedicated addons for dedicated needs (with a version called– ‘AutoItX’).
Cons
- Based on a unique coding language (that requires learning).
Bottom line: No wonder AutoIT is one of the most popular tools in its field.
Winium
Winium is a new open source framework, that’s based on Selenium and consists of 3 parts:
- Supports test automation on Windows applications.
- Supports test automation on Windows Phone operating system context (home button, notifications bar, toggles etc.)
- Supports test automation on Windows Phone applications.
Pros
- In case you are already using Selenium WebDriver and familiar with its API, using Winium is straightforward.
Cons
- As a result of it’s being a new project, few struggles come in the way. Its API still isn’t complete and not on the same maturity level as other tools in this category.
Bottom line: In case you are considering Winium, my advice is to wait until it’s more baked.
TestStack.White
White is a library for automation of desktop apps. It started as a small open source project and then became a part of TestStack which consists of a variety of open source code projects for automated and manual testing.
White supports a variety of automation technologies: Silverlight, WPF, WinForms, Win32 and SWT in Java. It’s possible to write White tests in any language supported by .NET.
Pros
- Allows Automation on a variety of technologies.
- Supports all .NET programming languages.
Cons
- Requires installation of UI Automation Verify library.
- It is deprecated – no longer actively maintained.
Bottom Line: One strength among many is the impressive API that is highly extensive and simple to use.
LDTP (Linux Desktop Testing Project)
Although the project started for Linux, nowadays it supports MAC (PyATOM version) and also Windows OS (Cobra version). The LDTP comes along with an Editor of its own and among other activities it also supports recordings.
Pros
- Its library is very rich and is compatible with a wide range of environments/ languages compared to other tools in this list. LDTP allows performance monitoring (Memory and CPU) while executing tests on an application.
Cons
- There isn’t enough documentation, many pages are broken, which makes learning API much more difficult.
Bottom line: An amazingly capable tool, but has disadvantages that lower its rank because it is immensely hard to learn.
Sikuli
What makes Sikuli exceptional is the object recognition by images, while other tools in the list recognize the objects by objects properties. Clearly, there are advantages and disadvantages for both methods. The image recognition is performed by an background engine that is capable of comparing a pixel to a pixel at BitMap level.
When working with Sikuli, initially we’ll form a Repository of pictures (screenshots from the application) which will become the inspiration (Expected Result) for determining points and rectification which will be activated while running the program (Actual Result).
The tool comes with an IDE of its own, which includes a unique scripting language and an API to which it’s possible to connect in Java and C#. Additionally, Sikuli offers visualization and functional tests.
Pros
- Since the technique of comparing pictures doesn’t rely on object properties, Sikuli can interpret everything we’ll create – while executing one test, it is possible to check a DB table, a Windows window, also a mobile application and a response from the server without dedication any efforts or special configurations.
Cons
- Constant maintenance of the existing pictures stock for each product change.
Bottom line: The recommendation is to implement this tool in specific occasions only.
Pywinauto
The PyWinAuto is a Python library that provides a collection of functions that make operations on Windows (controls and windows dialogs). The library presents a wide set of operations, is clear and user friendly.
Pros
- Pywinauto is library, meaning it doesn’t require installations of any external tools.
- Familiarity with Python, simplifies the implementation of this library.
Cons
- Those who don’t already use Python, will need to open a new Python project.
Bottom line: A library with a variety of capabilities which is highly recommended especially for Python experienced professionals.
Robot Class / Win.form Class
These tools are distinctively different than the rest, in the way that they aren’t directly destined as test automation tools for desktop applications, but act as classes to simulate activities of the keyboard and mouse. Whereas, the Robot Class could be used with Java and Win.form is for .Net.
Pros
- Solely a class.
Cons
- Solely a class.
Bottom line: We’ll use the class for uncomplicated scenarios only ( for instance, choosing an image from the File System), no QA is needed.
Jubula
Jubula is an open-source automated functional GUI testing tool for Java desktop apps. Jubula is part of the Eclipse package and it mostly used for functional testing.
Pros
- Does not require coding effort.
- Supports SWT/RCP/GEF/Swing and HTML apps and works on operation systems Windows, Linux/Unix and Mac.
- Heuristic object recognition.
- Continuous integration by command-line clients.
- The version control is via export/import.
Cons
- Supports only Java.
- A relatively small community that makes it difficult to find documentation or reach out for help.
Bottom line: If you don’t have coding skills or you are not a technical tester and looking for a free tool to create automated scripts for functional testing.
Nice post.
can you please let me know, is winium is best tool to automate the windows desktop applications? or still it is not stabilized?
Hi Srini,
When I tested it, it was still not very stabilized. it seems this platform has a great potential , but unfortunately it doesn’t have a strong community (yet) like Selenium & Appium do to push it further
Thanks for the reply,
We have hybrid framework implemented using the Selenium, testNG, Protractor and Core Java for automatins the web and mobile.
is it possible to integrate AutoIT with my framework which is implemented using Core Java??
But Autoit now supports C# bindings for the basic Window element operations through an assembly. ( A fresh NuGet from December last year available that works , https://www.nuget.org/packages/AutoItX.Dotnet ) So, from this, you can derive and develop a framework to suite your needs in C#.
No need to use the VB look-alike Autoit Language (if you are willing to do some coding)
/M
Hi,
Yes, AutoIt supports converting a scenario into an EXE file, you can invoke this file via java command.
Hey
Just wanted to mention FlaUI (https://github.com/Roemer/FlaUI). I created FlaUI when I started maintaining TestStack.White and found that White’s codebase is horrible. Release 1.0.0 is coming in about 2 weeks and it contains already more features than TestStack.White. Would be great if you could add it to your list.
Hi,
Can someone suggest me on which BDD test framework I can use for Windows desktop application developed in java spring?Need a BDD f/w which supports Java and which scripting language is supported?
Hi preeti,
You can use Cucumber & Winium at the same project (Java Project)
I’d be glad to be wrong but AFAIK AutoIt isn’t open source. Is it? Where is its source code available? Does it comply OSI’s conditions to be considered open source? Or FSF’s ones to be considered free software?
I answer myself: According to https://en.wikipedia.org/wiki/AutoIt: “The developers of AutoIt originally released the source code under the GNU General Public License (GPL), but the practice was discontinued beginning with version 3.2.0 in August 2006. Following the terms of the GPL, some of the code from version 3.1 was used to create a fork by the AutoHotkey project,[https://en.wikipedia.org/wiki/AutoHotkey] where the community is continuing to develop and release the code under the GPL.”
I’d welcome other insights.
Here’s a blog post that shows in detail how to use PyWinAuto for Windows Desktop automation – http://www.qapage.com/post/158636357749/windows-desktop-application-testing
Unfortunately, this link is not available anymore – dbhaskaran.
This is really helpful….thnx alot…
How does FoxTrot fare in this list.. Any thoughts please?
That’s pretty old framework, I didn’t know people are still using it.
Any java based tool to automate the mac desktop application.
There are two of commercial tools I know to automate mac desktop application: Squish and UFT / QTP
Hi
I am using white framework for outlook addin automation,In one of the scenario,i click on my addin and i have to perfom actions on browser(Note: its Outlook embedded browser) like login and few clicks,white automation does’t support clicking or identifying elements of embedded outlook browser.
kindly suggest me a solution how can i handle this window.
Looking foreword for suggestions
Regards,
Praveen
I have OpenGL app that i need to automate , the problem is that most of this tools cant see the app elements .
What is the best tool to automate functionality test and UI test for OpenGL app ?
Hi Autotester,
In case of using Graphic Elements I advise you to use SikuliX (free) or EggPlant (Commercial)
Hi, can we handle desktop notifications using any of these tools?
The thing about notification is more of a timing issue than a technology one.
As a QA tester you need to know the expected, when testing notifications the expected output includes the timing of the notifications, which is harder to automate (but still doable).
As for your questions, yes, you can automate Windows notifications with the followings: SikuliX, Winium, White and maybe AutoIT (never tested)
Hi, I’m working with a desktop application on windows and I want to start doing automated tests. What tool do you suggest ?. It is worth noting that jira use for the treatment of incidents. Do you agree that you can use Winium?
Can someone suggest me how to implement BDD test framework using Test Complete 14 used for automating the Windows WPF desktop application developed in C#?
Which tool is the best to test the window based games?
Hi,
Would any of them work with SAP GUI?
Thanks,
Ari
Hi ,
Please suggest me best automation tool for windows desktop based application,application is created in WPF and using various dev express control.
TIA
Vineeta
Please give FlaUI (https://github.com/Roemer/FlaUI) a try as it works perfectly for WPF and DevExpress Controls. Also a new version with .NET Standard will be released in the next two weeks.