why Eggplant is not popular among UI automation?
It sounds like Eggplant is very promising. However there are not that many companies using it as the UI test automation tool. Why is that? Any limitations on Eggplant?
Purely image recognization approach of the objects are not working well sometimes. E.g. test on dynamic objects such as advertisments or movies promotions. Or test on Intl version of the web application. How does Eggplant handles that?
Re: why Eggplant is not popular among UI automatio
Actually, there are quite a lot of companies using Eggplant (you can see a sampling of some of their names here). To address your question though about why more people don't use it, I think there are a couple of things that have held many people back from using Eggplant in the past.
The first issue is that -- up until this year -- Eggplant only ran on a Mac. Although it can test software running on any platform, the need to run it on a Mac was a stumbling block for many people. The introduction earlier this year of a version that runs on Linux, and a version for Windows coming later this year should remove that barrier to people using Eggplant in the future.
The other thing that I think slows many people down is simply the fact that Eggplant is different. Nearly all of the other test automation tools on the market for the past decade or two have been object based, so naturally that's what testers are used to. Eggplant's image-based approach offers many advantages, but it requires a somewhat different way of thinking about automation. The Eggplant approach is actually simpler and easier for people new to automation to learn, because it interacts with the system under test the same way a user does. But image based testing is unfamiliar and regarded with some suspicion, I think, by many experienced testers. They don't quite understand it, or believe that it will really work.
Eggplant works very well across a wide range of scenarios. Its inherent simplicity makes it easy to learn and use, and offers a number of significant advantages. Eggplant ...
• Interacts with the system exactly the same way a user does. Your tests accurately reflect a user's interaction with the system.
• Automates the system, rather than the application. Test scripts can drive end-to-end processes encompassing all parts of the system.
• Tests multiple platforms. A single copy of Eggplant can automate tests on Windows, Mac, Linux, Symbian, Solaris, and more. Test multiple systems with a single script.
• Provides a single, consistent approach to automation across all applications and operating systems.
• Is non-invasive, providing a truer test of real-world performance.
• Performs true user-experience testing that accurately reflects the behavior of the system as it will be experienced by a user.
• Offers a simple, easy-to-learn paradigm. There is no interaction with object maps or other system internals that a tester must learn and understand.
• Works with every technology and every operating system right out of the box. No plugins required. No waiting for an update to the tool to support a newly released OS or development language.
So, with all that going for it, does Eggplant have any limitations? Naturally it's not equally strong in every area. Let's take your example of a movie or advertisement. Images that are changing dynamically do present a challenge for Eggplant. But there are almost always ways to achieve the testing objective. For example, if the need is to click on a banner ad to verify that it links to the correct page, the click can be performed relative to another image near the ad.
If the test needs to verify that a movie is playing, or stops and resumes in response to specific user actions, Eggplant's visual approach may actually provide a more accurate test than object based tools. Given a suitable "test data" movie, like a slide show that displays a new image once a second, an Eggplant script could easily validate whether the movie is paused or playing, and do it by observing the actual display rather than by querying an object for its internal property state such as a frame number. There are a number of possible situations in which a movie player object may think it is displaying a particular frame but the image doesn't actually appear on the screen. Eggplant would catch such failures, while an object based tool that communicates directly with the movie player object would mistakenly treat the test as a success.
You also asked about testing an international version of an application. For situations involving dynamic text, including labels localized in different languages, or other dynamic text (such as dates, or transaction numbers that are different for each test run) Eggplant provides a Text Image Generator feature that solves the problem while still retaining the benefits of an image based system as outlined above.
Doug Simons, Principal Developer
TestPlant, makers of eggPlant, the Cross-Platform GUI Testing Tool