Manufacturers and distributors of software periodically provide software upgrades for a number of reasons. The need for upgrades has been especially acute because of hacker attacks on software with security flaws. Many manufacturers are constantly upgrading existing versions of their software to patch security flaws. Another reason to upgrade is to include new features in the software to maintain a competitive edge or to respond to customer requests for new or improved features.
However, customers are wary of upgrades for a number of reasons. Many small businesses rely on current versions of software that are crucial to servicing customers and running the business. Thus, even if the new features offered in an upgrade would be useful to the business, there is a reluctance to install an upgrade because of potential problems that can be caused by the upgrade. This reluctance is partially due to the lack of resources in the small business to identify and fix problems caused by the installation of a software upgrade.
Large businesses have labs that resemble the production environment and have computer professionals who can test a new software image, resulting from an upgrade, in the lab environment before rolling out the new image into the production environment. However, as described above, in small to medium businesses there is often no computer professional on site and the existence of a lab is very rare.
Accordingly, in order to decrease customer reluctance to install software upgrades, techniques are needed by software manufacturers and distributors to facilitate the upgrading of installed software.
Reference will now be made in detail to various embodiments of the invention. Examples of these embodiments are illustrated in the accompanying drawings.
While the invention will be described in conjunction with these embodiments, it will be understood that it is not intended to limit the invention to any embodiment. On the contrary, it is intended to cover alternatives, modifications, and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the various embodiments. However, the present invention may be practiced without some or all of these specific details. In other instances, well known process operations have not been described in detail in order not to unnecessarily obscure the present invention.
An embodiment of the invention will now be described by way of example, not limitation, that is implemented on a network device such as a switch or router. In this embodiment a set of tests are identified that need to be run on a network device and these tests are run automatically by the software running on the network device. The results of the tests are saved in non-volatile storage on the device. The software image on the network device is then upgraded to form a new software image and the new software image is activated. The new software image then performs the same set of tests and compares the results obtained with the saved results to determine if system performance has changed as a result of the upgrade.
Any changes are reported so that the user is aware of the changes that have occurred and can take appropriate action. For example, if the changes reported degrade the performance of the device then the new image can be uninstalled. Alternatively, the new image can be reconfigured to undo undesired changes.
In this embodiment, each feature of the software image has an associated set of tests. A feature can be enabled so that the tests associated with the feature are run before and after an upgrade of the software image.
The following are some examples of features and associated tests:
Other features have similar associated tests specific to the feature. In this embodiment, the user registers features which are to be verified after a software upgrade. A standard set of features may be automatically registered by default.
The operation of this embodiment will now be described in greater detail.
As depicted in the flowchart of
If the current image is running for the first time then the boot setting indicates that the image should be verified. As depicted in the flow chart of
The results of the tests are stored in memory so that they serve as a reference for subsequent testing when the current image is upgraded. When the customer wishes to upgrade the current image the steps depicted in
These steps save the test results for the current image before the upgraded image is activated. The new image is now the current image and when it is activated the steps described above with reference to
The invention may be implemented as program code, stored on a computer readable medium, that is executed by a digital computer. The computer readable medium may include, among other things, magnetic media, optical media, electromagnetic fields encoding digital information, and so on.
The invention has now been described with reference to the preferred embodiments. Alternatives and substitutions will now be apparent to persons of skill in the art. For example, in the above description the tests are run in parallel however some tests could be run separately. Different techniques for reporting or acting on differences detected during verification can be implemented as understood by persons of ordinary skill in the art. Additionally, the invention is not limited to network devices but can be implemented on any computing system when software is to be upgraded. Accordingly, it is not intended to limit the invention except as provided by the appended claims.