TestStand 2016 Changes

Learn about new features, behavior changes, and other updates in TestStand 2016.

The following list summarizes the new features in TestStand 2016 and other changes since TestStand 2014 SP1.

TestStand Environments

TestStand environments enable two or more TestStand system configurations to exist side-by-side on a single system. You can specify unique application data directories and public folders for each configuration of TestStand, allowing settings, custom components, and variables normally global to the system to be maintained separately within each environment. For example, each TestStand environment can independently maintain its own station globals, type palettes, and customized process models.

Using Enumerations in TestStand

The TestStand enumeration data type provides several advantages over the traditional alternative of using a number to represent an enumerated data type, including range checking, type safety, and the ability to extract the enumerator name as a string. To provide complete backward compatibility, all TestStand adapters provide full support for passing numbers for enumeration parameters. TestStand enumerations attempt to provide an experience that, as closely as possible, mimics the behavior of enumerated data types in common modern programming languages.

Redesigned Property Loader Step

Use the new Property Loader step to dynamically load property and variable values from a property loader source (a file or database containing data for your property objects). The new Property Loader step features more intuitive user interfaces, logs more details in the result list, supports the use of alias names, and allows you to preview your imported data before you finalize the import operation.

The new Property Loader step also features several plugins to support importing and exporting data to and from multiple file formats. You can import and export to and from an Excel workbook (.xlsx) file even on machines that do not have Microsoft Excel installed. TestStand includes source code for the default plugins, as well as plugin templates to help you create custom plugins.

Execution Profiler

The Resource Usage Profiler has been replaced with the Execution Profiler. In addition to profiling resource usage, you can use the Execution Profiler to view and record duration of steps, code modules, and other resources in a multi-threaded TestStand system uses over a period of time. You can review the recorded data in graphs and sortable tables to identify performance bottlenecks and design flaws and to gain insight into the behavior and timing of complex multi-threaded systems. You can also copy the information to external applications, such as Microsoft Word or Excel.

Smart Rename for Variables

The Smart Rename dialog box allows you to rename a variable and then update all references to that variable within the variable’s scope.

For a Local variable or a Parameter, Smart Rename will find and update all references to that variable within the sequence that it belongs to. For a File Global, Smart Rename will find and update all references to that variable within the sequence file that it belongs to.

Dragging and Dropping Sequences to Create Sequence Call Steps

The TestStand Sequence Editor now supports dragging of sequences from the Sequences Pane and dropping them as sequence call steps into the Steps Pane. TestStand will create as many sequence call steps as the number of sequences that were dragged. These steps will be configured to call the sequences that were dropped into the Steps Pane. By default, the steps created will use the Sequence Call step type. You can configure the feature to modify this behavior.

Creating a Subsequence from Selected Steps

You can create a new subsequence from selected steps in a sequence file. TestStand will replace the steps you select in the parent sequence with a Sequence Call step to call the new subsequence. TestStand will also create variables and update expressions for the new subsequence and will delete Local variables that are no longer referenced by the remaining steps in the parent sequence.

Tolerance Equality Comparison for (Multiple) Numeric Limit Test Steps

You can specify upper and lower tolerance limits when performing equality comparisons with the EQT (==+/-) comparison type with the Numeric Limit Test and Multiple Numeric Limit Test step types.

Sequence and Parameter Comments Displayed in Sequence Call Module Tab

When you specify the values to pass to a Sequence Call step in the Sequence Call Module tab, you can now view the comments for the called sequence, along with comments for that sequence's associated parameters and entry points.

LabWindows/CVI In-Process Debugger Attach

The LabWindows/CVI debugger now automatically attaches to a TestStand process when you perform a step into operation on a LabWindows/CVI Adapter step. If the LabWindows/CVI DLL is debuggable and the source code is available, LabWindows/CVI suspends the process in the called DLL function; otherwise, TestStand performs a step over operation. You no longer need to launch the Sequence Editor from LabWindows/CVI to access the debugger or choose to attach the debugger to an existing process.

Refactored TestExec.ini File

In TestStand 2016, the TestExec.ini file has been divided into several smaller files.

64-bit NI Switch Executive Support

64-bit TestStand no longer supports 32-bit NI Switch Executive (NISE) and 32-bit IVI drivers. 64-bit TestStand loads 64-bit NISE in-process, requiring 64-bit IVI drivers. 32-bit TestStand continues to support only 32-bit NISE and IVI drivers.

TestStand Deployment Utility Options

You can now change the Include without Processing Item or Dependencies and Force File to Install deployment utility options for all files within a folder. You can also view the settings that are enabled for all files in the File Settings column.

Opening a Code Module by Double-Clicking a Step

You can now double-click a step to launch the associated code module. This operation is available for steps with LabVIEW, LabWindows/CVI, C/C++, and .NET code modules.

Refactored TestExec.ini File

In TestStand 2016, the TestExec.ini file has been divided into several smaller files, as shown in the following table.

New File File Type Description Corresponding TestExec.ini Section
Adapters.cfg PropertyObject Settings related to the TestStand adapters. _AdapterCfg
SearchDirectories.cfg PropertyObject Specifies TestStand search directories. SearchDirectories
TypePalettes.cfg PropertyObject Specifies locations of type palette. TypePalettes
StartupCfg.ini INI Text Settings needed prior to engine construction. [%StartupCfg]
GeneralEngine.cfg PropertyObject All settings previously stored in TestExec.ini not covered above, including most station options. Various
Note The UseLocalizedDecimalPoint setting from the [%StartupCfg] section of the TestExec.ini file has been moved to the new GeneralEngine.cfg file.

TestExec.ini was a hybrid of a plain INI file and a PropertyObject file stored in INI format. The new scheme moves the few settings that require a pure text format to StartupCfg.ini. StartupCfg.ini is a pure INI file. All of the other files (with the .cfg extension) are proper PropertyObject files. Among other things, this allows you to specify XML, Binary, or INI format for these files via the File Format Options dialog. By default, these files are XML. An additional benefit is that you need to deploy only files containing settings you wish to update via your deployment.

Because the preferred way to access the settings stored in these files is through higher level APIs, these changes should be largely transparent to most applications. For example, search directories can be manipulated via the Engine.SearchDirectories property, while most station options can be accessed via Engine.StationOptions property. The refactoring of the configuration files will not affect Applications using these and similar APIs to work with TestStand Engine settings.

Deployments created with TestStand 2016 must be adjusted for this new file scheme. See the Deploying with Environments topic for more information.

Backward Compatibility—The TestStand 2016 engine continues to offer limited support for TestExec.ini. If TestExec.ini is present in the TestStand configuration directory at startup, the engine automatically migrates the file to the new scheme, converting it into Adapters.cfg, SearchDirectories.cfg, TypePalettes.cfg, GeneralEngine.cfg, and StartupCfg.ini. The TestExec.ini file is renamed to TestExec.ini.old, overwriting the existing TestExec.ini.old if present. The TestStand engine ignores TestExec.ini.old during future startups.

For backward compatibility with existing deployments, when TestExec.ini is present, the TestStand engine deletes any files from the new scheme before migrating TestExec.ini. In this way, any existing deployments that include TestExec.ini will continue to work with TestStand 2016.

Configuration File API—While still supported for backward compatibility, the Engine.ConfigFile property is deprecated in TestStand 2016. The Engine.GetEngineConfigFile method replaces Engine.Config file. Use Engine.GetEngineConfigFile to access configuration files from the new scheme.

Because Engine.ConfigFile returns a single PropertyObject file, the TestStand engine combines all of the new configuration files into a single composite in-memory object using aliases. If you create a property at the top level of the composite PropertyObject file, it will persist in Custom.cfg.

Streaming SIMD Extensions 2

32-bit TestStand 2016 no longer disables Streaming SIMD Extensions 2 (SSE2). Certain floating point mathematical operations may yield slightly different results in 32-bit TestStand 2016 when compared to earlier versions of TestStand. Because 64-bit TestStand has always enabled SSE2, floating point results for 64-bit TestStand 2016 are unaffected.

Legacy Property Loader Step

In TestStand 2016 and later, the Legacy Property Loader step is no longer listed in the default type palettes installed by TestStand. If you open a sequence file with a legacy step, the legacy step type will appear in the insert step menu, and you can still execute sequences that contain the legacy Property Loader steps. The Legacy Import/Export Properties tool in the Tools menu is not installed by default. You can manually add the legacy tool by importing the <TestStand>\Components\StepTypes\Database\LegacyImportExportTool.ini file in the Tools menu.

Numeric Limit Test and Multiple Numeric Limit Test Steps

The Numeric Limit Test and Multiple Numeric Limit Test steps now support the new EQT (==+/-) comparison type. The TestStand default schemas have been updated to allow logging of the limit data for steps that use this new comparison type. The PROP_NUMERICLIMIT statement now requires new columns named THRESHOLD_TYPE, NOMINAL_VALUE, UPPER_THRESHOLD and LOWER_THRESHOLD.

PROP_RESULT and PROP_BINARY Statements

The PROP_RESULT and PROP_BINARY statements in all default TestStand schemas now support logging for enumeration data types. The PROP_RESULT statement now supports logging enumeration numeric values, and the PROP_BINARY statement supports logging an array of enumerations as a numeric array.

New and Obsolete API and UI Controls

TestStand 2016 includes the following new enumeration and constant values, properties and methods, and obsolete properties and methods.
Note This list may not be complete.
Enumeration and Constant Values:
  • FileContentType_AdaptersConfigFile
  • FileContentType_CustomConfigFile
  • FileContentType_GeneralEngineConfigFile
  • FileContentType_SearchDirectoriesConfigFile
  • FileContentType_TypePalettesConfigFile
  • CaptionSource_EngineEnvironment
  • CommandKind_ConfigureEngineEnvironment
  • CommandKind_UnloadStepModule
  • CVIParamCategory_Enumeration
  • CVIParamCategor_EnumArray
  • DllParamCategory_Enumeration
  • DllParamCategory_EnumArray
  • Limits_NominalValueProp
  • Limits_ThresholdTypeProp
  • NumMeasComp_EQTHRESHOLD
  • NumMeasThresholdType_PERCENTAGE
  • NumMeasThresholdType_PPM
  • NumMeasThresholdType_DELTA
  • SearchElement_Enumerators
  • StepType_PropertyLoaderEx
  • TestStandPath_GlobalConfig
  • TestStandPath_GlobalPublic
  • TestStandPath_GlobalCommonAppData
  • TestStandPath_GlobalLocalAppData
Properties:
  • EditTimeMenuItem.CommandArgumentsExpression
  • EnableRTEDDebuggingAndTracing
  • PropOption_CoerceToEnum
  • PropOption_CoerceFromEnum
  • SequenceContext.StationGlobals
  • SequenceFile.ModelPluginDescription
Methods:
  • PropertyObject.Enumerators
  • PropertyObject.EnumIsValid
  • CommonCAdapter.GetEnumerationNames
  • PropertyObject.GetValueDisplayName
  • PropertyObject.UpdateEnumerators
Interfaces:
  • EngineEnvironment
  • EngineInitializationSettings
Note Although some TestStand components, such as the TestStand Sequence Editor, expose .NET assemblies, TestStand does not support the use of undocumented .NET APIs.