This appears to be closely related to Is there any way to automate windows forms testing?, which has many good suggestions that can be used with non-WinForms applications.
In addition to GUI Testing, also check best practices for UI testing
I have had a fair bit of experience with 'Automated GUI Testing' of Java Swing Apps running on windows, I don't know of any language independent tools .. but I have never looked for any!
My advice though ... do not take on this form of testing lightly, it is very time consuming. And if you are going to do it only do so once you have a stable product, and use it for regression purposes. If you try to apply to an unstable product, you WILL spend HUGE amounts of time tweaking your test scripts as you develop/bug-fix. I realise this goes against the TDD school of thought, but they are just too tedious to maintain.
QuickTest Professional (from HP) supports a wide variety of technologies from the common Win32, Web, Java, .NET and WPF to more obscure Delphi, SAP and Terminal Emulators. There are technologies that are not supported (such as Flash) but the portfolio is rather inclusive.
It's not cheap though...
I highly recommend AutoIt. I have already used it. There is plenty of examples in the documentation.
Search for jmeter. I once started using it and was quite fond of it. The test quickly got stale though and we never got around to update them.
We've used Silktest which has been very sucessfull. Also comes in handy when you want to run a demo to demonstrate a new feature prototype when the code isn't too mature (i.e. still bugridden) but you have a known set of working commands; It's amazing how many people (often managers) will decide that new features aren't a good idea purely because they see a crash from some prototype code ;-)
I have not used it myself but I have heard that autoit[1] is very good for this sort of thing. We use a short script at work all the time that clicks ok for us when we get a box of 50 or so popups asking for parameters when running reports. Its very handy to have it just clikc "use default" for all of them. And it does it quite quickly as well. You should check it out. I think you will find it usefull.
I use AutoIt and AutoHotKey to automate GUI tasks, both are excellent products to automate GUIs (press buttons, complete form entries, stuff keys, etc). Both are very well documented and are easy to use.
We use a product called Eggplant at work. It's a Mac OS X application that requires an XServe server but it can test Windows applications and seems to be very capable. From what I've seen of it, I would say it's one of the better UI testing applications available.
Take a look at this (If you are wanting free): http://nunitforms.sourceforge.net/
Automated tools will add great value to your testing efforts no matter what stage of testing you are at. You need to find right person who can make best use of it though. Try some of these open source tools listed on this site- http://www.opensourcetesting.org/functional.php
Free (as beer) Phantom Command Line Interpreter, I use it a lot.
With its scripting support I converted a lot of manual tests to automatic ones.
Also it enabled me to 100% reproduce some very elusive bugs tied to timing.
A little hint - use wildcards for ATL classes with generated names, recheck tags and assign meaningful names in .dec file produced by WinDR utility. It has to be done just once.
Then you can write something like this and invoke from nightly automatic tests
System("some path\some application.exe");
for (int i=0; i<10; ++i)
{
Start.New.Click();
window control = Main.Client.Splitter.Splitter.View.AtlAxWin;
control.MouseClick(0,1,1,0);
Connect.tbHost.SetText("some host");
Connect.Connect.Click();
WaitForWindow(Login,10); // waiting for Login dialog to appear
// but no longer than 10 sec
Login.tbLogin.SetText("some password");
Login.Login.Click();
Main.Close();
while (WaitForWindow(Main,1)) {}
}
Start.Close();
if something goes wrong, say, login dialog won't appear, script fails breaking the test.
Or you may add assertions of its own into the script and write logs.
Or you can prepare unassisted install and initial configuration for applications which don't provide that themselves.
The major drawback is that it is proprietary. I am yet to find an open-source substitute.
This might be of your interest www.codeplex.com/white. For Web application Watir, Selenium (infact Selenium is language-independent) are best tools
if you are not necessarily looking for a free tool, you might have a try on http://www-01.ibm.com/software/awdtools/tester/functional/index.html I'm using it with success and you can go beyond supported application domain if couple it with AutoIt or AutoHotKey, I saw a couple of automation tools and none of them seems to be more complete and powerful.
If you're doing GUI apps using Java/Swing, then you can try to use Cucumber and Swinger for writing functional acceptance tests in plain english for Swing GUI applications. Swinger uses Netbeans' Jemmy library under the hood to drive the app.
Cucumber allows you to write tests like this:
Scenario: Dialog manipulation
Given the frame "SwingSet" is visible
And the frame "SwingSet" is the container
When I click the menu "File/About"
Then I should see the dialog "About Swing!"
Given the dialog "About Swing!" is the container
When I click the button "OK"
Then I should not see the dialog "About Swing!"
Take a look at this Swinger video demo to see it in action.
Have a look at Project SIKULI, a new innovative player in this area (can also be used for verification).
Testing Anywhere is the only software to offer four GUI testing technologies under one umbrella. It includes Windows/Web Recorder, GUI Object automation, image based automation and windows integrator and OCR.
Other than Automated GUI Testing, Testing Anywhere is a testing tool to automate any type of testing.
Testing Anywhere is the only software to offer four GUI testing technologies under one umbrella. It includes Windows/Web Recorder, GUI Object automation, image based automation and windows integrator and OCR.
Other than Automated GUI Testing, Testing Anywhere is a testing tool to automate any type of testing.