Produkt prisen 2009
- Winner in the IT category

0.53

Released June 4., 2009

Yet again we have a release which has expanded what SeqZap is capable of, both with new methods for existing tools and with completely new tools.

During this rapid expansion of our tool boxes we have, of course, made it much easier to write new tools. For each SeqZap release it becomes easier and easier to create new tools, in the next release we even expect to be able to integrate SeqZap with Visual Studio to make it even faster and easier to create new tools.

Enhanced user input step

Example of a user input dialog being displayed at runtime

For some time we have had support for simple yes/no questions during semi-automatic tests, these help with making assertions about things which are hard to automate, for example a graphical display on a device.

General setup page of a user input step

But in release 0.53 we have added support for completely customising the buttons presented to the user. We hope this will increase the usefulness of the user input dialog and give developers even more reason to try and automate even the semi-automatic tests which might seem impossible to automate.

Options setup page of a user input step

Expression functions for manipulating arrays

Since we added support for arrays in release 0.52 we have added many new expression functions to make handling arrays easier in SeqZap.

The new methods are the following:

Split
Split a string into an array of strings based on a delimiter.
Join
Join an array of strings into a string based on a delimiter.
Length
Return the length of an array
Integer
Convert an array of any kind of values to an array of integers
Double
Convert an array of any kind of values to an array of doubles
Bool
Convert an array of any kind of values to an array of booleans
The last ones are especially useful when reading data from a database, CSV file or some other data source for use in SeqZap.

Switch Matrix tool

A running switch matrix session with a connect step selected (click to enlarge)
One of the things that SeqZap is very good at is combining a graphical interface with your test scripts, and one of the new tools that take full advantage of that is the switch matrix tool.

The switch matrix contains a panel which show the current view of the matrix, the currently connected relays are marked with a green dot. But furthermore it also lets you select which relays to connect or disconnect by clicking in the view of the matrix. This gives you a much better view of what your current matrix configuration is and which relays should be connected to connect e.g. an instrument with an output channel.

When a switch matrix tool method is selected the relay which would be affected by the connect/disconnect is also visualized in the view with a purple dot.

Read until silent method for stream tools

When our customers use SeqZap they frequently get ideas about new and great things to add, and this method is one of them. It is simply a new method to read from a stream (serial port, tcp connection, etc.) until no new data has been received for a specified timespan.

In normal programming such a method would not be that useful, but in test it is right in the bulls-eye, either for reading a block of unknown size, or to just check that the DUT does not send any additional data.

XML Tool

A procdure utlizing both XML element tool instances and the Read XML stream method

There is no denying that XML has taken the software world by storm, and with good reason, XML is easy for computers to parse and relatively easy for humans as well.

Therefore it should come as no surprise that SeqZap now supports XML, our new XML tool even extends the Stream tools with a Read XML method, which will read from a stream until a complete XML element has been read.

In the future we are ready to add schema validation, XPath support and many other things, but as always we are driven mostly by the wishes of our customers.

Tool properties

A TCP stream showing its methods and properties (click to enlarge)

In SeqZap 0.53 we have made it much easier to expose simple values from your tools to SeqZap. Now you can simply implement a normal .net property, apply the Sequanto.Public attribute to it and it will be instantly accessible to SeqZap.

        [Public]
        public bool IsOpen { get { return m_Opened; } }
      

ModBus tool enhancements

New Coils and Discrete Input panels (click to enlarge)

Thanks to user input we have now introduced support for almost all of the Modbus standard.

Because we recently introduced support for arrays in SeqZap we can now start to support writing multiple registers/coils/discrete inputs/etc.

We have also added panels to poll the value of discrete inputs and coils.

We are now running on a new version of NModbus which allows you to add custom modbus messages, even when using the binary RTU serial protocol. Thanks to the NModbus team for listening to our suggestions and reacting so quickly.

Output parameters logging

In this version we have focused on creating the best execution log files that you will find, as part of this we have started logging the values used and the values returned when calling procedures and tools. This gives a very nice overview of what happened in your script, and saves the tool implementors the work of always having to log the values manually.

Data Tool

A SeqZap session using the Data tool (click to enlarge)

One thing we have been missing in SeqZap up until now, is a way to retrieve data in a more standardised way, either from databases or from CSV files.

With SeqZap 0.53 we now have support for accessing databases, all databases with an ADO.Net driver is supported (which pretty much every database has).

We have support for querying the database and retrieving the results as arrays, and because SeqZap is an interactive environment you do not need to leave the comfort of SeqZap to do a few "cowboy queries", you can simple open up the query panel and start writing.

Because databases are overkill for some jobs, and most people prefer using a spreadsheet application for the simple stuff anyway, we have added support for loading/saving CSV files as well.

The data tool even extends the sample array tool with the ability to load/save sample arrays from CSV files.

Double clicking

To make navigating your script files even easier in SeqZap we have started to support double-clicking in various locations in the script file editor. You can now double-click on a procedure call to jump to the target procedure, or double-click a test case in a test suite to jump to that test case.

Double clicking procedures/test cases and test suites to run them are also supported now, saving you many trips to the Ctrl+F5 keyboard shortcut.

Bugfixes/improvements

#195 ConfigurationUsageListControl - Variabl Type - Combo is not implemented
#273Disposing ZapTool does not dispose the panels
#507 Re-design ZapTool instance "states"
#512Make ZapTools extendable with methods and panels from plugins
#679 When creating a tool instance you can specify a name with several words. Afterwards you get an error that "Identifier must be one word".
#699Change ZapToolMethodInvocationSetupPageDictionary to be a general setup page for any type of InvocationData.
#703String escaping of escaped characters does not work on Log Comment (possible elsewhere also)
#704 Array equality comparison should work
#705ReadUntil doesn't wait properly, it draws 100% CPU time
#708When a tool has been successfully setup it should force a re-parse
#712Make ZapToolMethodInvocationSetupPageDictionary usable for all IInvocationData
#713 Using local variables after cleanup label not possible
#714Dispose step should not fail if reference is already null.
#717Adding a new script file to a project does not mark the project file as changed
#723 Parameter setup dialog has a very small variable type combobox
#728 Virtual IO Device tool needs an Icon
#729"Execute" menu item on Procedure context menu
#730Nothing is logged when Setup or simple commands are run on workbench instances.
#736Digital IO Virtual Device Setup page needs icons for add/remove/edit/etc. toolbar buttons.
#738 Get tool property step must be resistant againts properties which are removed and tools that are removed.
#743Make system for administrating sub-states for ZapTool instances
#744Using decimal configuration properties