Overview of a Plug-in
A plug-in is a software component that resides in a software application (known as the parent application) and allows users to perform specific, customized activities within the application. Most software applications support plug-ins for many reasons. Some of the main reasons include:
- to enable third-party developers to create capabilities which extend an application
- to support easily adding new features
- to reduce the size of an application
- allow for a large number of people to contribute to and share stored data
- control access to data, based on user roles. User roles define what information each user can view and edit
- aid in easy storage and retrieval of data
This blog is intended to highlight some usability guidelines which can be followed to overcome some of the common challenges associated with plug-ins and also make the plug-in usage a more user friendly experience.
Installation is the first step towards using any desktop plug-in. A plug-in should generally allow the users to configure it during the initial installation. To achieve this, the installer should be self explanatory and guide the users through the various screens to configure the settings and complete the process.
The areas to be focused on during installation testing are:
- User interface: Should be self-explanatory and kept short
- Installation steps: Should be self-explanatory and kept short
- Pre-requisites: Many desktop plug-ins need a set of supporting software to be pre-installed in order to integrate with the application and run the plug-in successfully. If such software is not installed on the target machine, then the installer should ideally download and install the necessary pre-requisites automatically, or prompt the user to install them, or navigate the user to the website from where he can download and install the pre-requisites manually. For example, desktop plug-ins designed in VSTO need .NET Framework 2.0 and Visual Studio for Office Runtime Second Edition to function properly. This aspect should be checked by the plug-in and it should perform the steps mentioned above.
- Graceful rollback: The user can cancel the installation at any step during the installation process. Cancelling the installation should clean up all residual entries from the installation folder, registry etc. in a graceful manner. The user should be informed about the un-installation sequence.
- Versioning: The user should be able to install a newer version of the plug-in without manually uninstalling the older version, meaning, the installer should automatically take care of deleting and removing the older files and entries before coping the newer ones.
- Availability for Admin users and standard users: After Microsoft created the Big Divide between the Standard and Admin users from Windows Vista onwards, the installers need to be intelligent to detect the current user type and install the plug-in for the relevant user.
- Respect the UAC (User Access Control): The installer should be compatible with the O/S’s UAC settings and should be intelligent to adjust the installation process accordingly.
Creating exhaustive log files: This can save a lot of debug time and become your life saver. The installation log files should be generated at a location where both the admin and standard users have access.
The desktop plug-in user base is generally very wide with different flavours of OSes and application versions, and so compatibility testing is one of the critical and most important tasks while testing desktop plug-ins. It may happen that a button-click on a plug-in in one environment can generate an error or no response in another environment.
Planning this activity is critical to the success of the plug-in. The first task is to identify the target environments depending upon the user base and the various O/S combinations.
Setting up a QA lab of virtual machines using tools like VMware greatly eases the task. Using this, you can set up different environments with various combinations of OSes and application versions. Although this cannot be termed as an exhaustive testbed but atleast it gives an assurance to the customers that the plug-in will work on the majority (if not all) of the target machines when released worldwide.
The primary areas that need to be focused on can be summarized as:
- Identifying the environments.
- Operating Systems: Windows XP (32 bit and 64 bit) with SP1, SP2 and SP3 packs, Windows Vista (32 bit and 64 bit) and Windows 7 (32 bit and 64 bit).
- Application versions: The application for which the plug-in is installed. For example, if the plug-in is designed for Microsoft Office products, then it needs to be tested with Office 2003, Office 2007 and Office 2010.
- Different screen resolutions: It is very important that the user experience remains the same irrespective of the OS or application versions or varied screen resolutions.
- Different font sizes: The font size should not change or affect the functionality of the plug-in.
Functional and UI Testing
Functional testing of any software or application includes testing carried out to meet the business requirements as per the application’s specification document. In this case, the functional testing is very specific to the plug-in and needs to be planned according to its requirement documents. The features provided in the plug-in should leverage the features of the parent application and the user Interface should resemble the parent application.
In performance testing, some technical parameters of the plug-in are tested against defined benchmarks. A few of these parameters are listed below:
- When a plug-in is opened in multiple instances of the same application.
- Keeping the application running for long periods of time with the plug-in loaded.
- The plug-in’s initial load time and functionality validated on various OSes for latency.
- Evaluating the performance of a similar plug-in from another vendor installed on the user’s environment.
The above factors coupled with a properly planned functional and performance testing process will ensure smooth operation of the plug-in on all the environments and make the plug-in usage much more user-friendly.