NI TestStand Idea Exchange

Community Browser
About NI TestStand Idea Exchange

Do you have a feature idea for how to improve NI TestStand? Submit and vote on ideas now!

  1. Browse by label or search in the TestStand Idea Exchange to see if your idea has previously been submitted. If your idea exists sure to vote for the idea by giving it kudos to indicate your approval!
  2. If your idea has not been submitted click Post New Idea to submit a product idea. Be sure to submit a separate post for each idea. Note: the TestStand Idea Exchange is not the appropriate forum to submit technical support questions.
  3. Watch as the community gives your idea kudos and adds their input.
  4. As NI R&D considers the idea, they will change the idea status.
  5. Give kudos to other ideas that you would like to see implemented!

The TestStand R&D team is committed to reviewing every idea submitted via the TestStand Idea Exchange. However, we cannot guarantee the implementation of any TestStand Idea Exchange submission until further documented.

Top Kudoed Authors
User Kudos Count
Showing results for 
Search instead for 
Did you mean: 
Post an idea

Find yourself placing a Sequence Call step and trying to determine the appropriate value to enter for a numeric parameter called "Direction"?  Tired of creating sequences with numeric parameters named like the following: "Direction_0_Up_1_Down_2_Left_3_Right"?


The solution is to support the creation of variables with enumerated type within TestStand.  Enums could be created as custom variables and then used as wherever a self-documenting variable is required.



Enum type creation:





As seen from a Sequence Call step to a subsequence that uses an Enum as a parameter: 




  • Types

Sometimes it is useful to be able to search for instances of custom data types. Unfortunately, there doesn't appear to be a way to do this in TestStand.  It would be really nice if you could search for instances of types in the Types window or perhaps through the Find/Replace utility:





This idea mostly goes along with this idea.  I use type def all the time in LabVIEW, especially with enums.  TestStand can interact with my VIs with enums, but they are handled as a number.  Furthermore, if the enum gets changed, the wrong value of the enum is often used.  I really like the idea of custom data type of an enum.  The ultimate would be if I only had to alter the enum once (in ctl file) and TestStand would automatically update its data type.  This should be the same for clusters.

It would be helpful to be able to provide a regular expression (like Labview Match Pattern) as a string value test limit.  We often look for a pattern of data within a string rather than a constant.

Maybe also a regular expression function within the built in functions within TestStand expressions would be a help also.  This could provide more flexibility if a user needs it.  For example adding option to gain match position, and match length as well as give the option to search in reverse and ignore case.

Defining a custom step type is an iterative process getting the Post Step VI, Edit VI, Step Type Fields, etc. all matched up and working together.  I often tweak controls and indicators throughout the process.  If I have defined the substeps in TestStand, that means reloading the VI prototype throughout this iteration.


Custom Step Type Properties.png


Reload Proto.PNG


If my controls/indicators are numerics, strings, or arrays of either, the existing parameter values are retained during the reload.  Containers are different, however.  If the cluster input of the VI is unchanged between the exisiting prototype and the reloaded version, the container parameter values are retained.  My complaint is that if one element in the cluster changes, the entire container gets thrown out during the reload.

paramter assignments.PNG


In this particular case, all I did was change a cluster element from an array to an element.  Nothing else (cluster labels, etc.) changed.  Because of this, the entire container gets thrown out during the reload along with 30+ values that I had assigned.


Unfortunately, I find myself doing this multiple times during development so the time it takes to re-type everyhting adds up over the entire dev cycle.


My idea is to have container values retained (similar to non-container values) during a VI prototype reload.




  • Types

In some cases it could be handy, if you were able to convert a container you've constructed in the variable pane into a type directly from the variables pane.


One case could be, if you chose to store some settings in the sequence file, but the settings are dependent upon fx equipment or the product variant. It can be handy to have a variable with the settings, and an array of settings specific to various configurations from which you can choose. But the 'settings' container and the type in the array of settings containers, of course have to align. And this is best achieved by a custom data type.

Often sequences start out for one configuration only, and later on the need for multiple configurations occurs - and that's why I think it could be handy - if you were able to convert a container, already in the variable pane, into a custom data type.

NI has gone through a lot work to get the IVI Components integrated within TestStand as step types. I was wondering why NI has not incorporated the NI-DAQmx technology into TestStand as step types. I realize most TestStand developers would just create TestStand Adapters in the sequence step written in CVI or LV to interface to NI-DAQmx functions. Even the more advanced TestStand Developers would create their own custom step types to interface to NIDAQmx. I have just done that to where I have created a framework of custom DAQmx step types that I use as a small subset from all the NIDAQmx functions used from the NI-DAQmx library. 

I was pretty surprised that this isn't already possible or that there wasn't an idea in the ideas exchange for it. The idea is to allow custom step types to embed their 'edit' dialogue into the configuration tab for the step settings. At the moment you have to click a generic 'edit <step type>' button to launch a dialogue.


Instead of:

Embed Dialogue.PNG



Embed Dialogue 2.png


This would make custom step types much more user friendly and save unnecessary clicks/steps required to custom and bring the experience of configuring steps more in line with the built-in step types.


I appreciate that it might require a little more effort on the developers part (e.g. posting new values on value change instead of on 'ok'/'cancel') but it could also help to avoid some issues like 'hanging' TestStand when the dialogue is closed and the panel close isn't disabled/handled.

The Step Type Messaga Popup .


Usually I use the same text in the Step Name for the Title Expression


default MessagePopup.PNG


and for a long time now I have used NameOf(Step) in the Title Expression so as not to have to duplicate the Step Name.


new Default MessagePopup.PNG


Now that Templates are available I can save a copy this version to use instead of the default step type. But thats only true for my development PC.

This may not be saved on other development PC.


What would be nice if the default value for Title Expression was NameOf(Step) instead of "untitled".



Ray Farmer




It would be nice to have some kind of Custom Step which gets triggered when a step is deleted from a sequence. Something very much similar to "OnNewStep" which is triggered when a Step is dropped into the sequence.

We may have an option, say, "OnStepDeletion" to detect the deletion of a step. This will be very helpful in many of the step usages.


The TestStand Flow Control Steps like "IF" and "FOR" use the "OnNewStep" to create an "END" step along with them when they are dropped. But there is no means to automatically remove the created "End" when the "FOR" or "IF" Steps are deleted from the sequence. The proposed "OnStepDeletion" can be handy in such cases.

I hope you all will support this idea as it will make many of the functionalities more efficient. 



(PS : Forgive me if anyone has posted this idea already. I couldn't find any such posts)

It would be nice to beable to define a variable as constant.This could apply to Locals, FileGlobals, StationGlobals.


Once set mark it so as to be easily identifible as a Const.


The API would also need to include either a Property or Method so that one could determine if a variable is a Constant.



I’m trying to work with the tool Requirement Gateway. I started with some examples which are contained in install packet of this tool. I need to connect Gateway with HTML document and manage coverage with another HTML document. I managed to get from HTML document load the list of requirements to Gateway tool. If I tried to open the particular requirement from Gateway than the HTML document was opened on first page always. I can’t set the Gateway for opening the HTML document on particular place, when is described requirement.


My point of view is make some modification for better connection Gateway tool with internet browser.



When you develop custom step types in LV, you often need to unload all modules in order to modify your LV code (it's faster than going on your step type definition, clic Properties -> substeps -> specify code module -> edit...).

A keyboard shortcut to 'Unload all modules' would be so nice to even speed up the process ! Smiley Tongue

TestStand can support LabVIEW Clusters, but with Object-Oriented LabVIEW development becoming more and more common, and OOP particularly suited to driver development it seems crazy that one NI product does not properly support the other!


One of the biggest benefits I see is that the inheritance property of classes could allow us to create flexible test systems that can have a particular driver changed without having to change the sequence itself.



  • Types

When setting arrays, even multi-dimensional arrays, it is possible to initialize them in single assignment expression. For example, "Locals.Array = {1, 2, 3}" will re-define Locals.Array as a 1D array with elements "1", "2", and "3". This is essentially the same as C-style initialization syntax, which also supports structs.


It would be helpful if containers could be assigned in a similar manner. For example, the illustrated container:




could be assigned completely using "Locals.Container = {True, 1, "foo"}".


Currently, that syntax generates a run-time error, "Expected Container, found Array of Containers".


The only scenario I could think of where assignment gets a little weird is with Object types, but in that case you'll have to be assigning Nothing, the return of a function call, or an existing object from another property - there's no way to define a literal value to assign there, but that's already the inherent nature of Object types.


My use case is often container initialization. There are several kludges around this - keeping an empty copy of the container and assigning it to the working copy to clear the working copy, individually listing out each parameter, and a few others. Another case is when it's useful to assign a constant to module parameter - it's debatable that may be bad form, but would still dramatically improves the ease of skimming parameters if it were implemented. It would be a slight bonus to Sequence adapter in particular, which cannot expand containers in the parameter list, as other adapter types can (go kudos Allow Sequence Adapter to expand containers in the module tab to fix that!).

A customer noticed odd behavior when modifying custom data types in TestStand.  After reproducing the behavior, I think it's a better product suggestion because it looks as if what the customer notices is more of a design choice implemented by our software developers than a feature that is not behaving correctly.


The customer, David, created a custom type called DavidsType which was composed of a container and within this container was a collection of strings:





He then created an instance of this type in his DavidTest.seq file under the file global variables.  He called the instance MyType.




Then he goes back to the Types pane and modifies the structure of the custom data type to include another string with a default value of "C".




However, when he goes back to view the already created instance of his data type (MyType) within the variables pane of DavidTest.seq, he notices that only the structure is updated and not the default value.




New instances of the custom data type, however, do show up with the default value as shown below by MyType_Instance2.




The problem is that the customer has many instances of this type that already exist within his code.  He would currently have to create new instances of each type to load the new default value or he would have to hunt down all of the current instances and enter the default value of the new string manually.  I understand that the structure is updated, but shouldn't we build/provide an option to scan current instances of the custom data type and update default values for the elements that are new to a custom data type's structure?


I understand that it is expected behavior to load the default values of a custom data type only with a new instance of said custom data type, but I think we should provide an option/tool/function to our customers which updates all preexisting instances with the default value as well as the change in structure to the current types.  Currently only the structure is updated with a null string.




  • Types

I have extended the multi-numeric step type to use the string and Boolean comparisons.  We have several tests that require string verification to match the exact string and to verify the string format. Therefore I have added the ability for the multi-numeric step type to use string comparisons, including regular expression for string testing. 




MultiMeasurement 2.JPG


We already have a collection of sequence files which contain a library of common functions that we perform for all tests which amount to hundreds and hundreds of sub-sequences. The sub-sequence from all the sequence perform a variety of functions which include utilities that are commonly reused in our tests.



Rather than re-writing these commonly used sub-sequences again and again in the different sequence files we are trying to re-use the same sub-sequences from all the sequence files in one place. "Code Re-use".


For the step types which also includes our own custom step types, when a post action property is invoked, there is no way we can use these commonly used sub-sequence from a different file.


The work around solution is to call another "Call Sequence" step in the same sequence file which then calls the sub-sequence from another file. Seems kind of cumbersome and awkward.


Don't know if NI has already looked at this or not.


See attachment of the Post Action Property.

  • Types

We found a need to customize the NI version of this step to give more functionality.  Our edits updates to allow multiple response text boxes (up to 10), and we added an option to configure the response to be a list controls rather than simple strings. Just added a Boolean to switch to list box and then the user just gives comma separated list of options with the default item first as the initial response string.

Modified Message Popup

This is a simple change to the step and allows far greater flexibility for the step type (also it was easy to make the step upgradeable from the exiting step version maintainign the functionality if one or no string responses being used).

These features are very useful for collecting all UUT information during PreUUT rather than having to throw up popup after popup or create a custom module with a popup in it.  Would be great if these features could be included in the standard NI step.

  • Types