One of the tasks a test system developer will need to accomplish when creating a modular test system is to deploy this test management software to the production floor. Whether you choose to build an installer, use a network server to distribute your test software, or leverage a source code control package, you will want to use care to ensure the integrity of the test stations while at the same time working quickly to have the upgrade process be as seamless as possible. Therefore, an appropriate software deployment strategy will be needed. Software deployment is the process of managing and automating the packaging, testing, distribution and installation of software files and/or applications to test systems across an enterprise network or production floor.
Before you can consider what method you will use to deploy your test system, you must replicate the system by gather all the required files and creating a deployable image. Once the files that make up your test system have been determined you can deploy your system one of three different methods. By using the file copy method, you can copy the files manually to each test station. You can also leverage a source code control system to determine which version will be pushed to the system. Finally, you can also create an easy to use installer and not include all the necessary files, but also include any drivers you need to be installed.
A test system can rely on a wide variety of files and components. When it comes time to deploying your test software, all of these components must be identified, collected, in order to replicate the development system in the target computer. A deployment image is created that contains a directory of files that will be installed to the target computer. The two different methods for creating this deployment image are to so manually or to use a utility to collect all the files in your development system automatically.
Manually gathering all files needed for distribution is a tedious job, but provides the developer full user control over what files are deployed to the target computer. One of the most common problems developers experience when deploying test software is missing or incorrect versions of file dependencies. A file dependency is a secondary file that a file requires to compile, load, or run correctly. Normally dependencies come in the form of DLLs, .NET assemblies or subVIs. It is extremely important that you identify exactly what dependencies your test software requires, as well as their versions.
A second method of replicating your system is to use a utility to track all the files in your application and created a deployable image. In order to track the files in your test system, you will need to define the files in your test system by using a workspace or project file. In the ideal case, the development environment will both have some kind of workspace functionality as well as a utility to create a deployable image. TestStand includes a utility called the TestStand Deployment Utility which, leveraging the TestStand Workspace, can generate a deployable image of your test system automatically. Due to TestStand’s tight integration with LabVIEW, it can also determine any dependencies between VIs and include them in the image.
Now that the deployment image has been created, the next step is to actually deploy this image onto your test machines using one of three possible methods. You can deploy your test system using the File Copy Method which consists of copying all the files directly from one computer to the other. The Source Code Control (SCC) Method consists of using SCC software to push different versions of the software to production machines. Finally, using the Installer Method, an easy to use installer can be generated with all the necessary files and drivers and install the system on the production floor.
The File Copy method consists of copying and pasting the deployment image either directly to a test station’s local drive or to a network drive. Copying the deployment image to a local drive allows the test station to become “self-sufficient” and thus only reliant upon itself. However, the downside to using this option is the fact that distributing updates to all the separate test stations will be time consuming. Copying the deployment image to a network drive reduces distribution time and greatly assists in providing updates to the test software. Since this method is solely network based, common network problems such as network status (up, down), speed of accessing network components, and accessing files already in use must be factored in. Another difficulty when deploying to a network drive would be determining if the test system fails because of new network update or actually test failure. When test software developers send updates to the network, normally notices do not get sent out. Thus it will be difficult to narrow down the test failure.
Using a source code control (SCC) system to assist in distributing your deployment image can be very beneficial. In this case, the source code control server will maintain a centralized master copy of the deployment image and allow clients (test stations) to sync up and use the test software. Even though in this case the SCC software is networked based, local copies of the deployment image will be downloaded to each client machine which addresses the possible event of network failure. In order to use SCC software, one does require some background knowledge and experience with SCC. Similarly to the copy and paste method, this method will also require the installation of software/hardware drivers been done separately.
The deployment methods mentioned earlier centralize around a more user-controlled deployment approach where the developer performs most of the labor. However, as software applications continue to grow in complexity, a more automated approach to deployment might be a feasible option. Installers allow one to integrate installer technology with the deployment image to create one easy to use installer package that is distributed using any convenient means. Installers provide the additional benefit of bundling together supporting software such as hardware drivers, documentation, licenses, and configuration files with your software application into a single package. Aside from including the supporting software, installers also work directly with the Windows operating system to register user created files, and use the modify/repair/uninstall features of windows installers.
Installers do provide multiple benefits but also bring along some challenges such as distributing minor updates and usability. It is difficult to simply deploy minor changes to a target system as a whole new installation package must be rebuilt. One must also consider the usability difficulties that come along with using common installer packages. Most installer applications are not user-friendly.
The TestStand Deployment Utility reduces the common difficulties associated with normal installers. The easy-to-use graphical user interface for creating installers is extremely simple to use and provides a flexible and customizable environment to include various components. You need no previous installer knowledge to create a TestStand installer. Including National Instruments drivers and 3rd party drivers is easily done with the deployment utility.
For more information, view the Software Deployment document.