QEngine/Jython vs Eggplant/SenseTalk

This is a very lightweight and simple comparison to the methods and ideas in a document called “Simplifying Script Maintenance” written by the purveyors of an QA Automation tool called QEngine. QEngine uses a process of recording and playback, leveraging established and tried language technologies like Jython, Java Extension to Python.

Many of the examples for comparative purposes have been written (below) as SenseTalk examples. If you are assessing scripting alternatives and options you may want to take a close look at how SenseTalk works, and how the calling mechanisms work in Jython and QEngine deciding for yourself which is simpler and more maintainable.

You can find all the pdfs related to QEngine and leveraging it with best practices and methodologies at


as well as the Qengine at


You will likely find information about SenseTalk at


SenseTalk is virtually used exclusively in a low end and entry level enterprise automation toolset called Eggplant (EP). The line of products includes EP Starter, EP Functional Tester, EP Load Tester and RiTA from Redstone Software. Eggplant is also used for even complex unique situations where introspective tools do not provide end user experience with a guaranteed delivery of product unaltered by traditional code injection testing models. As security, contract and delivery pressures mount in the software life cycle, guaranteed tested deliverables are becoming the norm and expected. Depending on where you are in the maturation model, you may be out of luck unless you can either manually test or automate test the actual product that is going to your customers.

Now here are some SenseTalk examples, you can get the Jython scripts from the aforementioned QEngine paper.

Instead of dealing with Java or Jython for writing to files…

set filePath to "/tmp/JackoV.txt"  -- convenience variable
try to delete file filePath  -- trap errors without handling if a file filePath is not around.
put "One Two Three, You and Me, ABC, 123" after file filePath

Here you have a simple one liner, instead of some really convoluted way of solving a problem it is very straight forward. If you want to append, prepends, insert or remove elements in files (configuration or otherwise), its as simple as treating the file as if it were a memory/variable container. For instance…

put "Jacko likes monkeys and little toys" before file filePath
put word 12 of file "/tmp/JackoV.txt"  -->  ABC,

Now for the equivalent application launch, navigate to a field, enter data in the field.

Launch  IE6  -- could be just about any application/tool
Set  URLField, "http://www.Google.com", return  -- use field image collections as reference
Set  SearchField, "Web Functional Testing", return  -- most browsers accept return for url field changes

There is also plenty coverage of collections, list in particular, which are sorted with some fairly simple bubble sorting routines. SenseTalk insulates you the user from these details and maps the language to internal routine that do all the work for you. Sorting ascending and descending by item, word, line, or char type is as simple as…

get  "abcdefghijklmnopqrstuvwxyz0123456789"
put it
sort the chars of it descending
put it
get each char of it  -- split it by chars
put it
sort the items of it  -- ascending by default
put it
join it with return  -- make each char a line
put it
sort the lines of it descending
put it  -- z thru 0
split it by return
join it with ""
sort the chars of it
put it  -- now in proper order :)

Within SenseTalk, and thus the Eggplant host application there is the concept of XModules which open a developer mind’s eye to possibilities and opportunities to connect the EP/ST system to any other customer or standard/open source project and tools. Your imagination is the only thing that need be applied :slight_smile: