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 Authors
Showing results for 
Search instead for 
Did you mean: 
Post an idea

I would like to see commands like AllOf, AnyOf, AND, OR, etc. work with boolean arrays as inputs.

I would like to show the following problem with the Update Custom Data Type from Cluster tool when updating TestStand container type definition based on LabVIEW cluster.


TestStand creates new container type definition according to the LabVIEW cluster items order. The problem apears after you create the TestStand type definition and then reaorder LabVIEW cluster. After this change in LabVIEW, TestStand will not properlly reorder items in its definition. So for example:

  1. We have LabVIEW cluster { 1My String, 2My Numeric, 3My Boolean },
  2. Then we create TestStand type from it and we have { 1My_String, 2My_Numeric, 3My_Boolean},
  3. Now, we change order in LabVIEW { 3My Boolean, 1My String, 2My Numeric },
  4. TestStand do not see change,
  5. Then we add new item in LabVIEW { 3My Boolean, This is new, 1My String, 2My Numeric },
  6. Update in TestStand will be { This_is_new, 1My_String, 2My_Numeric, 3My_Boolean}.


So at the end we have:

  • in LabVIEW : { 3My Boolean, This is new, 1My String, 2My Numeric },
  • in TestStand : { This_is_new, 1My_String, 2My_Numeric, 3My_Boolean}.


IMO items order can be sometimes (if not always) important part of good style. That's why I would like to suggest to update also items order if you select Force Exact Match.

Microsoft have stated that all future development in .NET will be based on .NET Core, a cross platform development framework.  Therefore the current version of the .NET framework (version 4.8) is the last built on existing .NET technologies, with the next version .NET 5.0 to be built on .NET Core technologies. 


Could an adapter that supports calling .NET Core modules be added into TestStand so that users of TestStand calling .NET modules can migrate to .NET Core?

I'm trying to pull out all parameters from a sequence when it errors and save it as an additional result. This is to help the debugging process in a custom report plugin.


It falls over when enums are used as they can't be pulled out as GetValVariants then converted to strings.


I suggest that the if a variant for enum is called it keeps the number and string text inside of it "[5] Item number 6" for example. This can then be interpretted into a string by Str().


Example expression:

Locals.ConcParams = Locals.ConcParams + "Parameter: " + RunState.Caller.Parameters.GetNthSubProperty("",Locals.X,0).Name + " Value: " + Str(RunState.Caller.Parameters.GetNthSubProperty("",Locals.X,0).GetValVariant("",0))

Obviously it's not a great idea to have loads of nested conditional steps, but for longer sequences even with only a few nested conditions, I find it hard to find the matching END for example when an if-statement. Sure I can count the number of lines, but I think it would be a lot easier if the "scope line" that indicates the scope would stand out more and become bold or blue (like the selected line)


Here's are two mockups (bold line)




An alternative indication could be to highlight the ending line of the scope like below.




Having a keyboard shortcut for jumping between beginning and the ending within a scope would also be very helpful!

In Microsoft Visual Studio there's a keyboard shortcut (CTRL + [ ) which toggles the cursor position between the and and beginning of a scope, and it works with all things that encapsulates a scope or a string or expression. e.g. curly braces in code sections, quoted strings etc.

TestStand's LabVIEW interface could benefit by being able to programmatically get and set LabVIEW Class Objects using the Get Property and the Set Property


After much toil with this subject, I've finally come to the conclusion that I cannot get a LabVIEW Class Object from TestStand using LabVIEW. I've tried both the Get Property and a combination of property and invoke nodes to no avail.



Smart rename should handle renaming variable into and out of container.

Or function like smart move when user can drag variable in/out of container and references in sequence would update.

Hello everybody,
it should be possible to mark a sequence file for a time based autosave during development of the file.


Also possible would be a temp file which is saved automatically, so no data will be lost, if TestStand or the computer crashes during the development of a sequence file.


That would be nice 🙂


When profiling an sequence, it's would be useful if also the version of .NET DLL that was loaded/unloaded could be displayed in the report in a new column next to Item Name. I have not found a way to do do this. I think this would be helpful to be able to compare performance of different versions of DLL:s, and also when troubleshooting sequences (e.g. when adding search directories and wrong version of a DLL is used by mistake).


Currently the only way I found to see version loaded was using tools like Visual Studio or Process Explorer, but that's run time, requiring breakpoints etc - the above approach would provide an better overview of the execution, and is more convenient.



TestStand is in dire need of a way to quickly and effectively find broken steps in long sequences.


I'm working on large sequence files which often call and utilize other long sequences. Needless to say, I often need to address steps which have become broken due to code rework. As of now (TS 2017), there are only two ways for me to know if a step will not run.

  1. Text is red within the Step Settings window.
  2. Sequence Analyzer reports an Error.

I would like to suggest a third option, one that would be more readily available than either of the other two options. If the step itself was highlighted, text reddened, or somehow otherwise flagged as an error, then the operator won't have to hunt through each of the step settings windows or the sequence analyzer results. All the operator would have to do is open the sequence file and notice that a step appears out of place.


It would be nice if sequences could also show if they have broken steps.


Included is an example of how this might look.



Download All

I'm working extensively with LabVIEW VIs and Test Stand, and one of the most helpful features existing is the ability to configure a TestStand type to pass its data to and from a LabVIEW Cluster.


I think a great way to expand upon this would be to allow the developer to override specific variables within the LabVIEW cluster.


For instance, say I have defined a TestStand type with 5 total variables, all of which may pass to a LabVIEW cluster. If my LabVIEW cluster has at least the same number and type of variables, then this cluster passing has no issue.


However, if my LabVIEW cluster has 6 variables, then the TestStand type can only account for its defined five variables, and I am effectively locked out from the sixth variable. I cannot edit the sixth variable, nor can I assign it a default value (see Ex1_broken.PNG)


This wouldn't cause an issue if I could override specific variables within the cluster passing. That is to say, if I were given access to that sixth variable from the example, then I could assign it to a local variable. The other five variables would still be satisfied by the TestStand type, and no errors should be generated by the step. (see Ex1_fixed.PNG for what I envision this to look like)

Download All

In a custom UI I currently need to have two AxSequenceView controls to display sequences:

  1. Connected to the AxSequenceFileViewMgr. This shows the static view of the sequence file and is where you can attach the debug context menu to loop selected steps etc.
  2. Connected to the AxExecutionViewMgr. This shows exactly the same view of the sequence file during execution, with just an additional "Status" column with the result status of each executed step. You can toggle a breakpoint by clicking in the margin but can not select steps or operate a debug context menu here.

Of course I could display both views in the UI but this feels illogical for the user, so I prefer to show only one and switch between them according to context. However this presents problems:

  1. As this post (not one of mine!) says, you have to display the SequenceFileViewMgr view after loading a program because the Execution View would be blank, and then switch to the Execution View when the program is running.
  2. You have to switch back to the Sequence File view when the program ends in order to re-enable the debug context menu. This means that the step statuses disappear before the user has a chance to look at them in detail. It also means that the new view is not aligned to the execution view (i.e. the first visible step is different) - this may be solvable with a lot of programming but I haven't worked out how!.

It feels to me that it would be better for the API to provide a single view of the sequence file that has the debug facilities available, with a status column that is blank (and gets reblanked at the start of every execution). My UI code would be considerably simplified!

Could some distinction be made between a button timeout and a button press, on a Message Popup step? Step.Result.ButtonHit returns the same value regardless. Perhaps return a negative value for a timeout, and a positive one for a button press?




Git would be a valuable addition to be made to the source code control providers that you have already since it is widely used.


Many SW-Tool providers have realized that how comfortable it is for a programmeruser to work with dark backgrounds. Microsoft did it in 2013 for visual studio and now browser companies are doing the same. Unfortunately, I can Change background color of MAX and TestStand. This makes longer working painful for eyes.


An example of such a bakground is attached with the message.


Such a feature will improve ergonomics.


Thank you



Custom TestStand UI suggestion.


I would like the same functionality as with Sequence Editor when double clicking on Sequence Call step (already configured) and it goes into the Subsequence directly and you can view the SubSequence.


I would like to see that functionality in the TestStand Custom UI when double clicking on the Sequence Call step with Sequence View Manager and it goes into the Subsequence so it can it viewed. 


This would come in handy when debugging a subsequence and setting break points in the subsequence and then viewing variables during execution.

If you create a *.tsd file, there is no way of reverting back to older formats of the deployment utility. We should have a Save As feature for converting these build definitions to older versions of TestStand, just like the Save As feature for normal sequence files.



I'm using TS2016. I'd like to suggest adding multiline watch view. I put some serial communication data in a variable, and watch it, but I can only see the top line. Of course, I can mouse over it, and see the entire thing, but it would be nice if I could see it automatically.

Type Files have a feature to combine files from an install: files prefixed with 'Install_' get merged file existing file (explained here).


I am building a ModelPlugin, and I would like it to be enabled and configured in the Result Processing after install (users should intentionally opt out of using the installed plugin instead of opt-in). The settings are saved in ResultProcessing.cfg, and there is no merge feature available. Placing my own ResultProcessing.cfg will remove any previous settings the user had configured (or other plugins). I would like to be able to place a 'Install_ResultProcessing.cfg' that gets merged upon TestStand launch similar to type files.

I think it'd be a good idea to have a simple (checkbox?) option to change graph scaling in TestStand Reports to logarithmic. There doesn't appear to be a simple way to do this right now.