Table of Contents
Rather than focus on new test platforms that can lower the cost of test, you can improve test system performance without investing more capital into your equipment.
Most tips and techniques to improve test throughput focus on new products and equipment that require you to make initial capital investments to achieve your desired results. However, this article summarizes eight cost-free software optimization techniques tested, implemented, and provided by test developers. While some tips specify the software used, all are generic enough to span any automated test system software.
Quick Tips before Getting Started
Before making any software changes, begin by benchmarking your system to pinpoint potential obstacles and time-intensive tests. Benchmarking helps identify areas to improve test throughput. Also, at some point, test developers need to make trade-offs between execution speed and modularity. Understand your top-level objectives before you get started so you can make the right decisions when faced with a trade-off.
To minimize anxiety due to the potential size and complexity of test software applications, scope your efforts by looking at your application from an architectural perspective. Figure 1 shows a simplified view of a common software architecture – test management, application development, and driver-level software – used as a foundation in this article.
Figure 1. Three layers to focus on for test software optimization include test management, application development, and driver-level software.
Test Management Software
1. Maximize Hardware Efficiency – You can reduce test time and increase throughput by profiling instrument usage and uptime. Resource profiling helps identify the critical test system path, which requires the most time and instrument resources to execute. After profiling the system, determine the percentage of the total test time and instrument usage consumed by individual tests. With this information, you can make informed decisions such as adding instruments or considering parallel test techniques with shared instruments. NI TestStand test management software includes a Resource Usage Profiler to address this need.1 The Resource Usage Profiler displays the use of instruments and other resources in real time, as shown in Figure 2. If you do not use NI TestStand, you can timestamp the execution of your test code and then perform the necessary calculations.
Figure 2. Profiling test system resources increases throughput by helping you understand instrument usage and potential obstacles.
2. Decrease UUT Test Time with Parallelism – Even when testing a single unit under test (UUT), you may be able to test multiple portions of the unit in parallel to reduce test time. First, to test a single UUT in parallel, you need to identify independent UUT components and profile your instrument usage. Then you can develop subsequences within your test management software to test the independent components. To truly operate in parallel, each test sequence must run in a new thread or execution.2
Application Development Software
3. Maximize Code Module Run Time – Identify ways to add parallel processing in your test code. For instance, separate higher-priority tasks such as test logic and I/O from lower-priority tasks such as logging and user interface updates. Use parallel design techniques including pipelining, task parallelism, and data parallelism to maximize performance, as shown in Figure 3.3 Multicore processors significantly improve parallel test performance. If you use as your application development environment (ADE), LabVIEW automatically identifies parallelism in the code and distributes execution across multiple cores without changes to the code.
4. Improve Execution Speed with Optimized Compilers – Many ADEs provide multiple options for compilation. For instance, using optimized compilers from Intel, Microsoft, and Borland regardless of the development tool, you can create speed- and size-optimized release executables and DLLs. NI LabWindows™/CVI software offers this compiler flexibility to improve execution speed and throughput.4
5. Do More in Less Time by Disabling Debug – Debugging is a vital aspect to test system development, but it substantially slows down test execution in production environments. For instance, disabling subsequence tracing in test executive software improves execution performance. While this option removes real-time step tracing, it improves test throughput.2 And, be sure to remove breakpoints from your deployed application.
6. Reduce Code Analysis Time with Automated Tools – Automated test applications can result in large software projects that take countless hours to review for performance improvement. Take advantage of tools that can help you by automatically analyzing code for design flaws and limitations. Spending a little time up front to learn about software engineering tools can save you many frustrating hours in the long run.5
7. Upgrade System Performance with New Drivers – Vendors periodically release new device driver versions to provide bug fixes, support technologies such as 64-bit operating systems and multithreading, and add support for new hardware. Updating your drivers, regardless of the age of your hardware, adds compatibility with technologies that upgrade system performance. When updating, try the new drivers with your code on a development machine to confirm compatibility.6
8. Reduce Bus Limitations with Instrument Drivers – In addition to simplifying communication with traditional instruments, interchangeable virtual instrument (IVI) drivers offer advanced functionality to improve performance including state caching, multithreading, instrument simulation, and automatic range checking. State caching implements an engine that monitors the current state of the instrument to minimize the number of commands sent across the bus. Reducing unnecessary data transmissions can help improve test throughput.7
Figure 3. Designing parallel tests with parallel loops and pipelined tasks improves system throughput by increasing execution speed.
Make Forward-Looking Investments
Each test system is unique, so be innovative as you look to improve your particular system. If software optimization is not an option, take the time to learn about new testing techniques that can improve future test development such as software-defined instrumentation, parallel processing, and wireless and protocol aware test.8 It is never too late to learn something new, and it is never too early to prepare for the future.
Jared Aho is the test software group manager at National Instruments. He holds a bachelor’s degree in electrical engineering from the University of Michigan, Ann Arbor.
Murali Ravindran is the instrument control product manager at National Instruments. He holds a master’s degree in electrical engineering and an MBA in entrepreneurship from The University of Oklahoma.
Read more in-depth articles about these techniques and view the references online.
1“ NI TestStand 4.1 – Accelerating Parallel Test.” 2“Best Practices for Improving NI TestStand System Performance.” 3“Optimizing Automated Test Applications for Multicore Processors with NI LabVIEW.” 4“Creating Optimized Code.” 5“Software Engineering with LabVIEW.” 6“Upgrading to the Latest Version of LabVIEW.” 7“Improving Test Performance through Instrument Driver State Management.” 8“Innovation Drives Test Trends.”
The mark LabWindows is used under a license from Microsoft Corporation. Windows is a registered trademark of Microsoft Corporation in the United States and other countries.
This article first appeared in the Q2 2009 issue of Instrumentation Newlsetter.
Reader Comments | Submit a comment »
This material is protected under the copyright laws of the U.S. and other countries and any uses not in conformity with the copyright laws are prohibited, including but not limited to reproduction, DOWNLOADING, duplication, adaptation and transmission or broadcast by any media, devices or processes.