NI TestStand Idea Exchange

Community Browser
Top Authors
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

The TestStand API doesn't provide a simple, robust mechanism allowing developers to programatically run sequences outside of the ActiveX UIs.

 

On many an occasion I've wanted to wrap the following basic functionality:

  • Run a specific sequence file (with or without a [typically custom] process model)
  • Wait for it to complete.
  • Retrieve the result.

It's something I've needed to do in all of the following situations:

  • Integrating into a customer's existing framework
  • Integrating into my own automated test framework
  • Providing a simple API to a customer
  • Creating customized UIs that rely on UI messages and events rather than the ActiveX Controls

The solution I've ended up defaulting to in the past has been some variation on:

  • Start with the full-featured C# UI.
  • Scrape out all visible ActiveX Controls, and hide the window so that it's running in the background.
  • Integrate a TCP/IP (or equivalent) client into the application that has the ability to listen for requests and then implement them through the AxApplicationMgr.
  • Build a TCP/IP server assembly that launches the client application and exposes the necessary API for simple interactions.

The approach above is time-consuming, error-prone, and feels like a hack -- but given that TestStand does not expose any easy mechanism for simply running a sequence, this is what I've ended up having to resort to.

Static enumeration value in a sequence call must be stated as <Enum(String enumType, [String/Number value])>. Please make it possible to select the enumeration directly.

 

 
 

- Disabling the editing of text in the response text box of a message popup step.

- Ability to include various fonts in the message popup rather than one overall font for everything...

When TestStand has a problem with a module, it provides a Red Exclamation mark to show detail on the problem. 

When you hove over the Red Exclamation mark, you get the details, sometimes with a file path to the detailed error log. 

 

Need a way to copy/paste the data from the details bubble. Better would be a hyperlink to the file location. 

 

Right now my workaround is: 

 - Screen capture while hovering over the red exclamation mark

 - Paste the screen capture in MS Paint

 - Re arrange the windows to show MS Paint & MS Explorer 

  - Navigate down file path to find the log file. 

 

 

mwatkins_0-1594408509848.png

 

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

Hi,
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.

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))

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

 

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 Value.vi and a combination of property and invoke nodes to no avail.

 

Capture.PNG

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 🙂

Regards

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.

 

 profiling.png

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.

 

TS_errors_are_highlighted.png

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?

 

Thanks 

Bruce

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.

Hi,

 

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.