FIELD OF THE INVENTION
The present invention relates to networked computers and in particular to a system and method for effecting control of remote computers in a networked computer environment. The system more particularly relates to a methodology that can be utilised in the running or execution of the same computer application on one or more remote computers concurrently so as to enable an evaluation and testing of the performance of that program on each of the remote computers.
Within a networked architecture it is known that individual computers can communicate with one another using distinct network protocols such as TCP/IP. Using these protocols it is possible for a person running a software application on a first computer to utilise data that is stored on another computer such as a file server or the like.
It is also known in the art to provide software applications that enable a remote user to effectively take control of another computer so as to run computer applications that reside on the remote computer from their own local computer. Such applications include that provided by Microsoft™ under their Remote Desktop brand and an open source software application called VNC (Virtual Network Computing). These applications make it possible to view and fully-interact with one computer from any other computer or mobile device anywhere on the Internet. VNC software is a cross-platform application which is advantageous in that it allows remote control between different types of computer, but has the restriction that only that the end user can only control one remote machine at a time; for each end user it is a 1-1 arrangement.
AnyplaceControl™ is a product that allows the user to connect to multiple machines simultaneously. However, although the user can connect to the multiple machines, he is restricted in that he can control one machine at a time, but cannot control multiple machines by passing the same action to many machines simultaneously. Therefore, although it is different to VNC in that it enables a 1-many connection, it does not allow 1-many control.
Uses of these remote desktop software applications include system administration, IT support and helpdesk applications where the technical support provider can log into the computer that is causing the difficulty and interrogate it without having to be physically present at the computer. These systems allow several connections to the same desktop thereby enabling collaborative or shared working, but with only one computer acting as the controller at a time. The remote desktop application can also be used for training purposes, whereby the instructor can view a single pupil's machine or several pupils' machines, however heretofore simultaneous control of multiple machines by the teacher is not possible.
Such control of a remote computer by a local computer can be used in the realm of software testing. Software testing involves the operation of a system or application under controlled conditions and an evaluation of the results. The controlled conditions should include both normal and abnormal conditions. Testing should intentionally attempt to make things go wrong to determine if things happen when they should happen and more importantly if things happen when they should not happen. The requirements for good software testing are reasonably well defined to ensure that it is a process of quality control using group of well defined methods and evaluation criteria, together with guidelines for their use, to ensure that the software products or modules are of sufficiently high quality. The testing that is required for good software testing has to be rigorous and as such it will be apparent that it adds to the cost of development.
It can be applied to all or some of the following activities:
Robustness, Reliability, and Security Testing
Ensuring that the software provides fault-free service under specific hardware and software environments.
Logo Compliance and Certification Testing
Ensuring the application under test meets standards to compliant with a standard such as Sun “JavaVerified” or Microsoft “Designed for Windows”.
Application and hardware compatibility testing for new versions of platform and system software.
Ensuring that various components of the system work well together in selected scenarios.
Testing to ensure that a product meets well defined globalisation standards.
As the application of software testing is pervasive within a computer software architecture, it would therefore be advantageous if certain portions of the test strategy could be automated. Despite the benefits in cost and time, automated testing to date has not been perfect. Some examples have been deployed in what is called user interface automated testing where one or more of the following actions are used:
Acquiring data from controls.
In capturing controls it is necessary to know what you are looking for. For example in an Windows™ environment there are three types of controls:
1. Standard Windows™ controls—buttons, text boxes, custom controls,
2. Custom owner drawn controls are controls that have the functionality of standard controls but also have custom functionality added by the developer. Windows provides support for “owner drawn” controls and menus by allowing the developer to override methods in the base classes of menus or dialogs and implement new appearance and behaviour of the control or menu.
3. Painted controls—controls that have the functionality of standard controls, but also have functionality added by the developer. In addition to the “Custom owner draw controls”, the painted controls take responsibility for processing windows messages, such as WM_PAINT, themselves.
Current automated testing tools come in three general categories, each with different operating modes, namely:
Simple capture—record and playback,
Object orientated automation,
Image-based component discovery.
It will be appreciated that each of these techniques has different architecture and different characteristics. The Simple Capture Record/Playback has the advantage of being simple, while it suffers the disadvantages of being sensitive to graphical user interface changes, sensitive to application position on the screen and having playback synchronisation issues. The programmatic approach can adjust to changes in the application user interface more easily than the former approach and can handle playback synchronisation issues better. However, there is a skills issue where the tester has also to be a developer. The issue of test case script development brings with it version control and change management, much like a software development process. The third approach utilises images that are generated and utilised during the running of the program being tested. Images are taken of regions around the mouse at the time of some mouse interaction. This image is then stored. At a later time the stored image is used to identify where the mouse action should be taken either during playback of a test script or where the action should be taken on some other system.
An example of an available product that utilises image based component discovery in an automated testing context is a product provided by Redstone™ under their Eggplant™ brand. Eggplant™ is a software testing tool that utilises VNC (discussed above) which is specifically directed towards testing what a human will experience when using a software application. The Eggplant™ software operates by separating the issues of finding a region of interest and finding the area where the user input is to be applied.
Furthermore, Eggplant does not recognise objects in the sense described for Object Oriented automated testing. The Eggplant “objects” are screenshots of identifying features, they are not objects in the sense of widgets, with defined data and behaviour. The Eggplant “objects” are defined by the user, using the movable and resizable window that defines the region of interest.
There is therefore a need to provide a system and methodology that enables a control of a plurality of computing devices through the desktop of a first computing device, with desktops of the controlled devices being displayed on a display associated with the first device. There is a further need for an image based discovery testing application that can be easily rolled out over multiple computers and provides a robust and secure testing architecture.
These and other needs are addressed by a system and method in accordance with the present invention that provides for an automation of testing or remote management of computers within a networked environment. A network architecture in accordance with the invention enables a 1-many connection and control between a first computing device and a plurality of other computing devices. The architecture enables this 1-many connection by provision of a client target module which is executable on one or more systems under test, each of these being defined as target devices, a client viewer module which is executable on a local computer and allows a user to view and control each of the systems under test on a local desktop—referred to as a client device and a dispatch server module which provides for an interface between each of the client viewer modules and client target modules—referred to as a server device. The dispatch server module is a server application executable on a computer and configured to mediate all interactions between the user and each of the systems under test. Interfaceable with the dispatch server module may be provided an interpretation server module which may be configured to effect one or more of a plurality of possible tasks including for example image processing, image segmentation, image interpretation, database lookup and generation of generic information, such as XML descriptions of the image being interrogated.
Using a network architecture in accordance with the invention enables a user to perform automated testing or remote management on one or more remote computers simultaneously; the interface provided between the user and the systems under test enables a connection to and control of each of the systems under test concurrently. It will be appreciated that the word computer is used in its general sense to encompass any computing device or electronic device running an operating system and that it is intended to encompass within the present invention any device such as for example personal digital assistants (PDAs), mobile telephones etc., as well as a conventional personal computer or laptop.
Accordingly the invention provides a system as detailed in claim 1 with advantageous embodiments provided in the dependent claims. The invention also provides a method in accordance with claim 23.
These and other features will be better understood with reference to the following drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 shows in schematic form, a network architecture in accordance with the teachings of the invention.
FIG. 2 shows an example of the processing implemented across the network architecture in accordance with the invention.
FIG. 3 shows a modification of the architecture of FIG. 1 to include an additional client viewer device.
FIGS. 4a to 4c illustrate socket communications between components of the present invention.
FIG. 5 shows a screenshot from a client device showing operation of a system in accordance with the teaching of the present invention, with two machines connected.
DETAILED DESCRIPTION OF THE DRAWINGS
A system in accordance with the teachings of the invention will now be described with reference to the following nomenclature which is provided for ease of explanation and no inference is to be taken from the naming protocol used. As shown in FIG. 1, a system 100 in accordance with the teaching of the invention has several components:
One or more Shadow Client Targets (SCT) 105
Shadow Dispatch Server (SDS) 110 coupled to a data storage device 110A
Shadow Client Viewer (SCV) 115
Shadow Interpretation Server (SIS) 120, coupled to a data storage device 120A
The SIS may be considered an optional feature to the architecture as it enables further processing routines and functionality to be achieved within the 1-many connection.
In the following sections we will go through each of the individual components separately.
Shadow Client Target (SCT) 105
The SCT is a software module that is operable on the system under test or machine that the user desires to be controlled remotely. It is provided as a multi-threaded piece of software running on the system under test and performs the following functional steps: