Patent Publication Number: US-7583792-B2

Title: Testing a data-processing system with telecommunications endpoints

Description:
FIELD OF THE INVENTION 
     The present invention relates to telecommunications in general, and, more particularly, to testing a data-processing system by using one or more associated telecommunications endpoints. 
     BACKGROUND OF THE INVENTION 
       FIG. 1  depicts telecommunications system  100  in the prior art. Telecommunications system  100  comprises telecommunications endpoints  101 - 1  through  101 -M, wherein M is a positive integer; data-processing system  102 ; telecommunications network  103 ; and test-execution system  104 , interconnected as shown. 
     Telecommunications endpoint  101 -m, wherein m has a value between 1 and M, inclusive, is a device that is capable of enabling its user to communicate with one or more other users of endpoints in telecommunications system  100 . For example, endpoint  101 - 1  is a telephone and can initiate a session with telephone endpoint  101 - 2  by using the Session Initiation Protocol (or “SIP”). In addition to initiating the session with endpoint  101 - 2 , endpoint  101 - 1  might also initiate a session with a third endpoint, endpoint  101 - 3 , in order to form a three-party conference call with endpoints  101 - 2  and  101 - 3 . 
     Endpoint  101 -m is also capable of receiving and transmitting test-related signals. One test-related signal might direct endpoint  101 -m to perform a specific function. For example, endpoint  101 - 1  might receive a signal to dial a telephone number for initiating a session with endpoint  101 - 2 . Another test-related signal might carry information to be used for generating a test result. For example, endpoint  101 - 2  might transmit a signal that indicates endpoint  101 - 1  is requesting the initiation of a session. Various equipment providers (e.g., Avaya, etc.) offer endpoints that are capable of handling test-related signals. 
     Data-processing system  102  is device that is capable of enabling communications, such as by setting up a call or a session, between one or more endpoints  101 - 1  through  101 -M. In particular, data-processing system  102 , acting as a proxy server, enables the initiation of a data exchange between two or more endpoints. During the initiation of a session, for example, data-processing system  102  receives messages from one or more endpoints and, as a proxy, acts on the received messages. 
     Telecommunications network  103  enables that sharing of data between devices that are connected to the network. For example, network  103  might comprise a local area network, such as the Ethernet. Similarly, network  103  might comprise a wide-area network where the endpoints are located miles apart. In telecommunications system  100 , those connected devices include endpoints  101 - 1  through  101 -M and data-processing system  103 . 
     Test-execution system  104  is a device that is capable of executing test sequences for testing data-processing system  102 . Test-execution system  104  communicates directly with data-processing system  102  by exchanging test-related signals in the course of testing data-processing system  102 . In some test configurations, test-execution system  104  can also communicate with one or more endpoints  101 - 1  through  101 -M, either through telecommunications network  103  or through direct pathways to the endpoints. 
     The problem with test-execution system  104  communicating directly with data-processing system  102  for the purpose of testing system  102  is that the very test signals that test-execution system  104  transmits to system  102  can potentially alter system  102 &#39;s operational performance and perturb the results of one or more tests. Consider that in a true operating environment, data-processing system  102  interacts with one or more endpoints  101 - 1  through  101 -M and not with test-execution system  104 . Direct communication between systems  102  and  104  might have the effect of causing a particular test sequence to pass when, in fact, the sequence would have normally failed, or vice-versa. Moreover, it might not even be feasible for test-execution system  104  to be interfaced to data-processing system  102 . For example, test-execution system  104  might have been designed by a first vendor (e.g., Avaya, etc.) to operate in accordance with a first protocol, while data-processing system  102  might have been designed by a second vendor (e.g., Cisco Systems, etc.) to operate in accordance with a second protocol that might be incompatible with the first. The second protocol might be incompatible with the first protocol due to, for example, different specification options implemented in the two systems. Therefore, a compatibility issue might exist between data-processing system  102  and test-execution system  104 . 
     What is needed is a technique for testing a data-processing system, such as system  102 , without some of the disadvantages in the prior art. 
     SUMMARY OF THE INVENTION 
     The present invention provides a technique, without some of the disadvantages in the prior art, for testing a data-processing system that enables communications between two or more telecommunications endpoints. An example of such a data-processing system under test is a Session_Initiation Protocol (SIP) proxy server that handles the signaling protocol of Voice over Internet Protocol (VoIP) telephony. In particular, a test-execution system, in accordance with the illustrative embodiment of the present invention, transmits test-related signals to and receives test-related signals from one or more endpoints, such as SIP-enabled telephones. Some of the transmitted, test-related signals command an endpoint to transmit a message, such as a session-initiation request, to the data-processing system under test. Some of the received test-related signals comprise information from an endpoint, such as whether or not a message has been received from the data-processing system under test. Instead of communicating with the data-processing system itself, the test-execution system of the illustrative embodiment enlists the telecommunications endpoints to interact with the data-processing system. In the SIP proxy server example, having the endpoints interact with the data-processing system serves to mimic realistically a live operating environment in the initiating of sessions, the setting up and controlling of calls, and so forth. 
     The test-execution system of the illustrative embodiments interfaces with the telecommunications endpoints via a telecommunications network, such as a local area Ethernet network. The test-execution system communicates with the endpoints via a mutually-understood protocol and in accordance with the illustrative embodiment. The endpoints communicate with each other and with the data-processing system via the Session Initiation Protocol in accordance with the illustrative embodiment; however, it will be clear to those skilled in the art that other protocols can be used, such as H.323 and so forth. 
     The control of the test-execution system&#39;s transmitting and receiving of test-related signals is based on generated test sequences and the test instructions that make up each test sequence. The test-execution system executes one or more instructions to transmit at least one test-related signal to an endpoint or to receive at least one test-related signal from an endpoint, alone or in combination. A first category of exchanged test-related signals is based on the test-execution system transmitting a command to an endpoint and then receiving a response from an endpoint, wherein the response is based on the command. A second category is based on the test-execution system receiving a status-related signal from an endpoint, then transmitting a command-related signal to an endpoint, and then receiving another status-related signal from an endpoint. The test result is then based on the combinations of the transmitted and received signals, as well as possibly on other aspects of the corresponding test sequence. In accordance with the illustrative embodiment, multiple test results can be generated from tests that execute sequentially or in parallel. 
     While interacting with the telecommunications endpoints to issue test-related commands or receive test-related outcomes, the test-execution system of the illustrative embodiment advantageously bypasses the data-processing system under test. Specifically, the transmission paths of the test-related signals avoid the data-processing system. The test-execution system of the illustrative embodiment is advantageous over some systems in the prior art because only the endpoints—and not the test-execution system—interact directly with the data-processing system. As a result, the operation of the data-processing system is tested more effectively and under more realistic conditions, while minimizing any intrusive effects that the test-execution system might have on the data-processing system. Furthermore, the test-execution system needs only to be directly compatible with one or more of the endpoints and not with the data-processing system, a merit that can be valuable in the testing of a mixed-vendor telecommunications system. 
     The illustrative embodiment of the present invention comprises: transmitting a first signal to a first endpoint that is able to communicate with a data-processing system; receiving a second signal from a second endpoint that is able to communicate with the data-processing system; and generating a first test result, based on the first signal and the second signal; wherein the data-processing system enables communications between the first endpoint and the second endpoint. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  depicts telecommunications system  100  in prior art. 
         FIG. 2  depicts telecommunications system  200  in accordance with the illustrative embodiment of the present invention. 
         FIG. 3  depicts test-execution system  204 , in accordance with the illustrative embodiment of the present invention. 
         FIG. 4  depicts a block diagram of how information is stored and organized in memory  303  of endpoint  201 -n, in accordance with the illustrative embodiment of the present invention. 
         FIG. 5  depicts a first flowchart of the salient events associated with testing data-processing system  202 , in accordance with the illustrative embodiment of the present invention. 
         FIG. 6  depicts a message-flow diagram of a normal call flow between endpoints  201 - 1  and  201 - 2 , as part of an attempt to initiate a three-way conference call between endpoints  201 - 1 ,  201 - 2 , and  201 - 3 . 
         FIG. 7  depicts a message-flow diagram of a normal call flow between endpoints  201 - 1  and  201 - 3 , as part of an attempt to initiate a three-way conference call between endpoints  201 - 1 ,  201 - 2 , and  201 - 3 . 
         FIG. 8  depicts a message-flow diagram of a call flow between endpoints  201 - 1  and  201 - 2  with data-processing system  202  operating in error, as part of an attempt to initiate a three-way conference call between endpoints  201 - 1 ,  201 - 2 , and  201 - 3 . 
         FIG. 9  depicts a message-flow diagram of a call flow between endpoints  201 - 1  and  201 - 3  with endpoint  201 - 3  operating in error. 
         FIG. 10  depicts a second flowchart of the salient events associated with testing data-processing system  202 , in accordance with the illustrative embodiment of the present invention. 
         FIG. 11  depicts a message-flow diagram of a normal call flow between endpoints  201 - 1  and  201 - 2  with a spontaneous BYE request sent by endpoint  201 - 1 . 
     
    
    
     DETAILED DESCRIPTION 
     The term that appears below is given the following definition for use in this Description and the appended Claims. 
     For the purposes of the specification and claims, the term “endpoint” is defined as a device, such as a telecommunications terminal, that is capable of enabling its user to communicate with the users of one or more other terminals (i.e., endpoints). An endpoint can call another endpoint and can receive a call initiated from another endpoint. It transmits or receives, or both, an information stream that is exchanged with one or more other endpoints, where the information stream comprises one or more of voice, data, video, audio, text, and so forth. As described in this specification, an endpoint is also capable of exchanging test-related information with a test-execution system. Examples of endpoints comprise Session-Initiation Protocol (SIP) terminals, H.323 terminals, Voice over Internet Protocol (VoIP) terminals, Integrated Services Digital Network (ISDN) terminals, Plain Old Telephone Service (POTS) terminals, and so forth. 
       FIG. 2  depicts telecommunications system  200  in accordance with the illustrative embodiment of the present invention. Telecommunications system  200  comprises telecommunications endpoints  201 - 1  through  201 -N, wherein N is a positive integer; data-processing system  202 ; telecommunications network  203 ; and test-execution system  204 , interconnected as shown. 
     Telecommunications endpoint  201 -n, wherein n is a value between 1 and N, inclusive, is a device that is capable of enabling its user to communicate with and to control communications with one or more other users of endpoints in telecommunications system  200 , in accordance with the illustrative embodiment. Among other uses, endpoint  201 -n can be used to call, conference in, transfer to, or message another endpoint or endpoints. For example, endpoint  201 - 1  is capable of initiating a session with endpoint  201 - 2  and might do so by using the Session Initiation Protocol (or “SIP”). Endpoint  201 - 1  might then also initiate a session with a third endpoint, endpoint  201 - 3 , to form a three-party conference call with endpoint  201 - 3  from the session-in-progress with endpoint  201 - 2 . 
     Although endpoint  201 -n in the illustrative embodiment is a telecommunications terminal that is capable of enabling its user to communicate with other telecommunications terminal users, it will be clear to those skilled in the art how to make and use one or more of endpoints  201 - 1  through  201 -N that are intended for other purposes. 
     Endpoint  201 -n is also capable of exchanging test-related signals with test-execution system  204 . One test-related signal might direct endpoint  201 -n to perform a specific function. For example, endpoint  201 - 1  might receive from test-execution system  204  a signal to create the effect of pushing buttons on endpoint  201 - 1 , which in turn causes endpoint  201 - 1  to dial a telephone number for initiating a session with endpoint  201 - 2 . Another test-related signal might carry information to be used for generating a test result. For example, endpoint  201 - 2  might transmit a signal to test-execution system  204  that indicates endpoint  201 - 1  is requesting the initiation of a session. Endpoint  201 -n decodes the received signals from test-execution system  204  into information that it can act on and encodes information for transmission, in well-known fashion. In accordance with the illustrative embodiment, endpoint  201 -n exchanges test-related information with system  204  via network  203  and by using the same physical interface that endpoint  201 -n uses to communicate with other endpoints. In some alternative embodiments, endpoint  201 -n exchanges test-related information with system  204  by using a different physical interface, for example an RS-232 interface, as is known in the art. 
     It will be clear to those who are skilled in the art how to make and use endpoint  201 -n. 
     Data-processing system  202  is device that enables communication, such as by setting up a call or initiating a session, between one or more endpoints  201 - 1  through  201 -N, in well-known fashion. In accordance with the illustrative embodiment of the present invention data-processing system  202  comprises a Session-Initiation Protocol (SIP) proxy server, as is known in the art, for enabling Voice over Internet Protocol (VoIP) telephony between endpoints. As a SIP proxy, data-processing system  202  coordinates the initiation of a data exchange between two or more endpoints. During the initiation of a session, for example, data-processing system  202  receives messages from one or more endpoints and acts on the received messages, in well-known fashion. It will be clear to those who are skilled in the art how to make and use data-processing system  202 . 
     Although data-processing system  202  in the illustrative embodiment is a SIP proxy, it will be clear to those skilled in the art how to make and use data-processing system  202  for a purpose other than serving as a SIP-based proxy. For example, system  202 , in some alternative embodiments, can be an H.323-based proxy, a redirect server, a gateway, another endpoint, and so forth. 
     Telecommunications network  203  is a system that enables that sharing of data, in well-known fashion, among devices that are connected to the network. In telecommunications system  200 , those connected devices include endpoints  201 - 1  through  201 -N, data-processing system  203 , and test-execution system  204 . In accordance with the illustrative embodiment, telecommunications network  203  is a local-area, Ethernet-based network, as is well-known in the art. As those who are skilled in the art will appreciate, in some alternative embodiments telecommunications network  203  can be another type of network or might comprise multiple networks that are based on one or more protocols. It will be clear to those who are skilled in the art how to make and use telecommunications network  203 . 
     Test-execution system  204  is a testing device (also known as an “engine”) that is capable of generating and executing test sequences for testing data-processing system  202 , in accordance with the illustrative embodiment of the present invention. For example, test-execution system  204  might be a desktop computer that is configured to generate and run test sequences. Test-execution system  204 &#39;s structure is described below and with respect to  FIG. 3 . In some embodiments, test-execution system  204  is also capable of testing one or more of endpoints  201 - 1  through  201 -N. 
     Test-execution system  204  exchanges signals, such as test messages, with endpoints  201 - 1  through  201 -N via telecommunications network  203 , in accordance with the illustrative embodiment. In some alternative embodiments, test-execution system  204  is connected to each of endpoints  201 - 1  through  201 -N through pathways that are separate from telecommunications network  203 . For example, in some of those alternative embodiments, test-execution system  204  can be connected to each endpoint via an RS-232 interface, as is well-known in the art, with one or more intermediary devices in each pathway that convert the RS-232-based signals into signals that can be acted upon (e.g., a command to dial a telephone number, etc.). 
       FIG. 3  depicts test-execution system  204 , in accordance with the illustrative embodiment of the present invention. Test-execution system  204  (or “system  204 ”) comprises network interface  301 , processor  302 , and memory  303 , interconnected as shown. 
     Network interface  301  comprises a receiving part and a transmitting part. The receiving part receives signals from telecommunications network  203 , and forwards the information encoded in the signals to processor  302 , in well-known fashion. The transmitting part receives information from processor  302 , and outputs signals that encode this information to telecommunications network  203 , in well-known fashion. It will be clear to those skilled in the art how to make and use network interface  301 . 
     Processor  302  is a general-purpose processor whose capabilities comprise: (i) receiving information from network interface  301 , (ii) reading data from and writing data into memory  303 , (iii) executing the tasks described below and with respect to  FIGS. 5  and  10 , and (iv) transmitting information to network interface  301 . In some alternative embodiments of the present invention, processor  302  might be a special-purpose processor. In either case, it will be clear to those skilled in the art, after reading this disclosure, how to make and use processor  302 . 
     Memory  303  stores data and executable instructions, in well-known fashion, and is a combination of volatile and non-volatile memory. It will be clear to those skilled in the art how to make and use memory  303 . 
       FIG. 4  depicts a block diagram of how information is stored and organized in memory  303  of endpoint  201 -n, in accordance with the illustrative embodiment of the present invention. The information stored in memory  303  comprises: user interface  401 - 1  through  401 -P, wherein P is a positive integer that is less than or equal to N; application software  402 ; and operating system  403 . As will be appreciated by those skilled in the art, the information that is stored in memory  303  can be organized differently than what is depicted in  FIG. 4 . 
     User interface  401 -p , wherein p is a value between 1 and P inclusive, constitutes a test agent that emulates user U p  who is associated with endpoint  201 -p . User interface  401 -p comprises one or more instructions that control the transmitting of signals to endpoint  201 -p and the receiving of signals from endpoint  201 -p . User interface  401 -p is created as part of one or more test sequences. For example, if a generated test sequence specifies that endpoint  201 - 1  shall initiate a session with another endpoint as part of simulating user U 1  calling another user, then user interface  401 - 1  comprises the instruction to transmit a directing signal to endpoint  201 - 1  to initiate the session. 
     Application software  402  is the software portion of the system described below and with respect to  FIGS. 5 and 10 . Operating system  403  is an operating system that performs input/output, file and memory management, and all of the other functions normally associated with operating systems, in well-known fashion. It will be clear to those skilled in the art how to make and use operating system  403 . 
       FIGS. 5 through 11  depict a series of flowcharts and illustrative message-flow diagrams that are associated with testing data-processing system  202 , in accordance with the illustrative embodiment of the present invention. The message-flow diagrams that are depicted in  FIGS. 6 ,  7 ,  8 ,  9 , and  11  illustrate various message-flow segments of a three-way conference call initiation, in which data-processing system  202  acts as the proxy server to the three endpoints involved in the conference call. The message-flow diagrams serve to provide examples of the test sequences and test-related signals that appear in the tasks described with respect to the flowcharts in  FIGS. 5 and 10 . Although a three-way conference call scenario is used as an illustrative category of tests, it will be clear to those who are skilled in the art how to make and use test-execution system  204  for testing with other call scenarios in mind. 
       FIG. 5  depicts a first flowchart of the salient tasks associated with testing data-processing system  202 , in accordance with the illustrative embodiment of the present invention. In this message flow, test-execution system  204  transmits a signal to endpoint  201 -j and then reacts to subsequent events. This is in contrast to the message flow depicted in  FIG. 10 , in which test-execution system  204  receives a signal from endpoint  201 -j and then reacts. It will be clear to those skilled in the art which events depicted in  FIG. 5  can occur simultaneously or in a different order than that depicted. 
     At task  501 , system  204  generates I test sequences, wherein I is a positive integer, for testing data-processing system  202  and, optionally, one or more of endpoints  201 - 1  through  201 -N, in accordance with the illustrative embodiment of the present invention. A test sequence comprises P sets of instructions, one set for each user interface  401 -p , that are executed as part of the corresponding test. Note that the number of user interfaces P might vary from one test sequence to another. Some of the instructions translate to signals, such as those that convey commands (e.g., push a sequence of buttons, etc.), which are to be transmitted by user interfaces to the corresponding endpoints. Some other instructions translate to waiting intervals for signals that are to be received by user interfaces from the corresponding endpoints (e.g., expect a session request within five seconds, etc.). Still other instructions translate to actions that are to be taken in response to signals being received by user interfaces from the corresponding endpoints (e.g., answer call, etc.). It will be clear to those skilled in the art how to generate a test sequence. 
     In accordance with the illustrative embodiment, system  204  generates the test sequences. As those who are skilled in the art will appreciate, the test sequences can be generated elsewhere and then loaded into system  204  for testing purposes. For at least some of the test sequences, the generating of each test sequence assumes that the endpoints that are to be involved in the actual test operate correctly during the execution of the test sequence. 
     At task  502 , system  204  transmits a first signal, signal S 1 , to endpoint  201 -j via user interface  401 -j, wherein j is determined by the test sequence. For example, the first signal might convey a command (e.g., push buttons to dial, etc.) that directs endpoint  201 - 1  to transmit an INVITE request to data-processing system  202 , per the Session-Initiation Protocol. The first signal bypasses data-processing system  202 , in accordance with the illustrative embodiment. 
     At task  503 , system  204  receives a second signal, signal S 2 , from endpoint  201 -k via user interface  401 -k, wherein k is determined by the test sequence. For example, the second signal might indicate the arrival, at endpoint  201 - 2 , of an INVITE request from data-processing system  202 . The second signal bypasses data-processing system  202 , in accordance with the illustrative embodiment. 
     Depending on the test sequence, system  204  might also transmit additional signals to one or more endpoints. System  204  might also receive additional signals from one or more endpoints. Furthermore, system  204  might transmit signals to and receive signals from the same endpoint. 
     At task  504 , system  204  generates a test result based on one or more of the first signal, the second signal, and possibly other signals transmitted or received. In some embodiments, the test result is also based on other aspects of the corresponding test sequence (e.g., waiting intervals, etc.). 
     At task  505 , system  204  determines if the generated I test sequences have been executed. If so, task execution ends. If not, task execution proceeds to task  502 . 
       FIGS. 6 through 8  depict a series of message-flow diagrams that illustrate an example of a three-way conference call initiation. In one possible call flow for initiating a three-way conference call, endpoint  201 - 1 :
         (i) initiates a session with  201 - 2 , which is depicted in  FIG. 6 ;   (ii) puts endpoint  201 - 2  on hold;   (iii) initiates a session with  201 - 3 , which is depicted in  FIG. 7 ; and   (iv) conferences endpoint  201 - 2  back into the session, an attempt of which is depicted in  FIG. 8 .       
       FIG. 6  depicts a message-flow diagram of a normal message flow between endpoints  201 - 1  and  201 - 2 , in which endpoint  201 - 1  is attempting to initiate a session with endpoint  201 - 2 , in accordance with the illustrative embodiment of the present invention. In this scenario, user interface  401 - 1  of test-execution system  204  initiates a session between endpoints  201 - 1  and  201 - 2  by using Session Initiation Protocol. 
     At event  601 , user interface  401 - 1  transmits a signal to endpoint  201 - 1 . The signal directs endpoint  201 - 1  to transmit an INVITE request to data-processing system  202 . 
     At event  602 , endpoint  201 - 1  transmits an INVITE request to data-processing system  202  in well-known fashion. 
     At event  603 , data-processing system  202  transmits a corresponding INVITE message to endpoint  201 - 2  in well-known fashion. At event  604 , data-processing system  202  also transmits a “Trying” response back to endpoint  201 - 1  in well-known fashion. As those who are skilled in the art will appreciate, endpoint  201 - 1  can then transmit a signal to user interface  401 - 1  of test-execution system  204 , in which the signal indicates the arrival of the response. 
     At event  605 , endpoint  201 - 2  transmits a signal to user interface  401 - 2  of test-execution system  204  that indicates the arrival of the INVITE request. At event  606 , endpoint  201 - 2  also transmits a “Ringing” response back to data-processing system  202  in well-known fashion. 
     At event  607 , data-processing system relays the “Ringing” response back to endpoint  201 - 1  in well-known fashion. As those who are skilled in the art will appreciate, endpoint  201 - 1  can then transmit a signal to user interface  401 - 1  of test-execution system  204 , in which the signal indicates the arrival of the response. 
     Meanwhile, at event  608 , user interface  401 - 2  of test-execution system  204  transmits a signal to endpoint  201 - 2  to answer the call. Note that the transmitting of the signal can be based on, for example: the received INVITE-related signal; the INVITE-related signal plus a time interval; the signal and interval plus another event related or unrelated to endpoints  201 - 1 ,  201 - 2 , or  201 - 3 ; and so forth. 
     At event  609 , endpoint  201 - 2  transmits an “OK” response back to data-processing system  202  in well-known fashion. 
     At event  610 , data-processing system  202  relays the “OK” response back to endpoint  201 - 1  in well-known fashion. 
     At event  611 , endpoint  201 - 1  transmits a signal to user interface  401 - 1  of test-execution system  204 , in which the signal indicates the arrival of the “OK” response. As a result, at event  612 , endpoint  201 - 1  transmits an ACK response to endpoint  201 - 2  in well-known fashion. Note that the ACK response, as well as possibly some other messages, does not have to traverse data-processing system  202  because endpoint  201 - 2  has provided its contact information to endpoint  201 - 1  in the “OK” response. As those who are skilled in the art will appreciate, endpoint  201 - 2  can then transmit a signal to user interface  401 - 2  of test-execution system  204 , in which the signal indicates the arrival of the request. 
     At event  613 , endpoints  201 - 1  and  201 - 2  exchange media that constitute data streams and as part of a session, in well-known fashion. As those who are skilled in the art will appreciate, endpoint  201 - 1  can transmit a signal to user interface  401 - 1  of test-execution system  204  and endpoint  201 - 2  can transmit a signal to user interface  401 - 2  of test-execution system  204 , in which the signals provide information on the data streams. 
     Test-execution system  204  then uses one or more signals that are either received from or transmitted to endpoints  201 - 1  and  201 - 2  to generate one or more test results, as described with respect to task  503 . For example, a test result that is based on the signals associated with events  601  and  605  might suggest that data-processing system  202  was able to handle properly an INVITE request from endpoint  201 - 1  to endpoint  201 - 2 . As another example, a test result that is based on the signals associated with events  608  and  611  might suggest that data-processing system  202  was able to properly handle an “OK” response from endpoint  201 - 2  to endpoint  201 - 1 . 
     Continuing with the illustrative three-way conference test scenario, endpoint  201 - 1  then puts endpoint  201 - 2  on hold in well-known fashion. As those who are skilled in the art will appreciate, user interfaces  401 - 1  and  401 - 2  can transmit and receive signals to control and monitor endpoints  201 - 1  and  201 - 2  for the purpose of generating one or more test results on data-processing system  202 &#39;s performance while putting endpoint  201 - 2  on hold. 
       FIG. 7  depicts a message-flow diagram of a normal call flow between endpoints  201 - 1  and  201 - 3 , in which endpoint  201 - 1  is attempting to initiate a session with endpoint  201 - 3 , in accordance with the illustrative embodiment of the present invention. In this scenario, user interface  401 - 1  of test-execution system  204  initiates a session between endpoints  201 - 1  and  201 - 3  by using Session Initiation Protocol. 
     At event  701 , user interface  401 - 1  transmits a signal to endpoint  201 - 1 . The signal directs endpoint  201 - 1  to transmit an INVITE request to data-processing system  202 . 
     At event  702 , endpoint  201 - 1  transmits an INVITE request to data-processing system  202  in well-known fashion. 
     At event  703 , data-processing system  202  transmits a corresponding INVITE message to endpoint  201 - 3  in well-known fashion. At event  704 , data-processing system  202  also transmits a “Trying” response back to endpoint  201 - 1  in well-known fashion. As those who are skilled in the art will appreciate, endpoint  201 - 1  can then transmit a signal to user interface  401 - 1  of test-execution system  204 , in which the signal indicates the arrival of the response. 
     At event  705 , endpoint  201 - 3  transmits a signal to user interface  401 - 3  of test-execution system  204 , in which the signal indicates the arrival of the request. 
     The scenario then progresses as described with respect to events  605  through  612  depicted in  FIG. 6 , with the difference that endpoint  201 - 3  and user interface  401 - 3  are used instead of endpoint  201 - 2  and user interface  401 - 2 . 
     At event  705 , endpoints  201 - 1  and  201 - 3  exchange media that constitute data streams and as part of a session, in well-known fashion. As those who are skilled in the art will appreciate, endpoint  201 - 1  can transmit a signal to user interface  401 - 1  of test-execution system  204  and endpoint  201 - 3  can transmit a signal to user interface  401 - 3  of test-execution system  204 , in which the signals provide information on the data streams. 
     Test-execution system  204  then uses one or more signals that are either received from or transmitted to endpoints  201 - 1  and  201 - 3  to generate one or more test results, as described with respect to task  507 . For example, a test result that is based on the signals associated with events  701  and  705  might suggest that data-processing system  202  was able to handle properly an INVITE request from endpoint  201 - 1  to endpoint  201 - 3  (with endpoint  201 - 2  on hold). 
       FIG. 8  depicts a message-flow diagram of a call flow between endpoints  201 - 1  and  201 - 2  with data-processing system  202  operating in error, in accordance with the illustrative embodiment of the present invention. In this scenario, user interface  401 - 1  of test-execution system  204  directs endpoint  201 - 1  to request, by using Session Initiation Protocol, that endpoint  201 - 2  serve as a mixer of all of the data streams in the three-way conference call. 
     At event  801 , user interface  401 - 1  transmits a signal to endpoint  201 - 1 . The signal directs endpoint  201 - 1  to transmit an INVITE request to data-processing system  202  to complete the three-way conference call, specifying that endpoint  201 - 2  serve as a mixer of the data streams in the three-way conference call. 
     At event  802 , endpoint  201 - 1  transmits an INVITE request to data-processing system  202  in well-known fashion. 
     At event  803 , data-processing system  202  experiences an error condition and, consequently, is unable to act on the received INVITE request. 
     At event  804 , endpoint  201 - 1  experiences a timeout as the result of not having received a “Trying” response from data-processing system  202 . As a result, at event  805 , endpoint  201 - 1  transmits a signal to user interface  401 - 1  to indicate that the timeout has occurred. 
     Test-execution system  204  then uses one or more signals that are either received from or transmitted to endpoints  201 - 1  and  201 - 2  to generate one or more test results, as described with respect to task  505 . For example, a test result that is based on the signals associated with events  801  and  805  might suggest that data-processing system  202  was unable to handle properly an INVITE request from endpoint  201 - 1  to endpoint  201 - 2  for completing a three-way conference call. 
     Referring to  FIG. 9 , the technique provided in the illustrative embodiment of the present invention can also be used to generate one or more test results for an endpoint.  FIG. 9  depicts a message-flow diagram of a call flow between endpoints  201 - 1  and  201 - 3  with endpoint  201 - 3  operating in error, in accordance with the illustrative embodiment of the present invention. This call flow, for example, might have occurred as part of the three-way conference call attempt described earlier. In this scenario, user interface  401 - 1  of test-execution system  204  initiates a session between endpoints  201 - 1  and  201 - 3  by using Session Initiation Protocol. 
     At event  901 , user interface  401 - 1  transmits a signal to endpoint  201 - 1 . The signal directs endpoint  201 - 1  to transmit an INVITE request to data-processing system  202 . 
     At event  902 , endpoint  201 - 1  transmits an INVITE request to data-processing system  202  in well-known fashion. 
     At event  903 , data-processing system  202  transmits a corresponding INVITE message to endpoint  201 - 3  in well-known fashion. At event  904 , data-processing system  202  also transmits a “Trying” response back to endpoint  201 - 1  in well-known fashion. 
     At event  905 , endpoint  201 - 1  transmits a signal to user interface  401 - 1  to indicate that the “Trying” response was received by endpoint  201 - 1 . 
     Meanwhile, at event  906 , endpoint  201 - 3  experiences an error condition and, consequently, is unable to act on the received INVITE request. 
     Test-execution system  204  experiences a timeout because it did not receive, via user interface  401 - 1 , an indication of a “Ringing” response from endpoint  201 - 1 . As a result, at event  907 , user interface  401 - 3  transmits a signal to endpoint  201 - 3  to request information that is to be used to generate a test result. The requested information, for example, might be a bitmap or other such representation of endpoint  201 - 3 &#39;s display screen, or error codes that can be used for debugging purposes. 
     At event  908 , endpoint  201 - 3  transmits a signal to user interface  401 - 3  that contains the requested information. 
     Test-execution system  204  then uses one or more signals that are either received from or transmitted to endpoints  201 - 1  and  201 - 3  to generate one or more test results, as described with respect to task  507 . For example, a test result that is based on the signals associated with events  901  and  908  might suggest that endpoint  201 - 3  was unable to handle properly an INVITE request that was sent by endpoint  201 - 1  through data-processing system  202 . 
       FIG. 10  depicts a second flowchart of the salient tasks associated with testing data-processing system  202 , in accordance with the illustrative embodiment of the present invention. In this message flow, test-execution system  204  receives a signal from endpoint  201 -j and then reacts. This is in contrast to the message flow depicted in  FIG. 5 , in which test-execution system  204  transmits a signal to endpoint  201 -j and then reacts to subsequent events. It will be clear to those skilled in the art which events depicted in  FIG. 10  can occur simultaneously or in a different order than that depicted. 
     At task  1001 , system  204  generates I test sequences, wherein I is a positive integer, for testing data-processing system  202  and, optionally, one or more of endpoints  201 - 1  through  201 -N, in accordance with the illustrative embodiment of the present invention. It will be clear to those skilled in the art, after reading this disclosure, how to generate a test sequence. 
     In accordance with the illustrative embodiment, system  204  generates the test sequences. As those who are skilled in the art will appreciate, the test sequences can be generated elsewhere and then loaded into system  204  for testing purposes. Depending on the particular test sequence, the generating of that test sequence might or might not assume that the endpoints that are to be involved in the actual test operate correctly during the execution of the test sequence. 
     At task  1002 , system  204  receives a first signal, signal S 1 , from endpoint  201 -j via user interface  401 -j, wherein j is determined by the test sequence. For example, the first signal, received from endpoint  201 - 2 , might indicate that endpoint  201 - 2  has received an INVITE request from endpoint  201 - 1 . The first signal bypasses data-processing system  202 , in accordance with the illustrative embodiment. 
     At task  1003 , system  204  transmits a second signal, signal S 2 , to endpoint  201 -k via user interface  401 -k, wherein k is determined by the test sequence. Depending on the test sequence, the second signal might be transmitted in response to having received the first signal. As a first example, the second signal might direct endpoint  201 - 2  to answer the incoming call. As a second example, the second signal might direct endpoint  201 - 1  to hang up before endpoint  201 - 2  has a chance to answer the call. As a third example, the second signal might direct one of the endpoints to transmit a representation (e.g., a bitmap image, etc.) of the endpoint&#39;s display to system  204 . The second signal bypasses data-processing system  202 , in accordance with the illustrative embodiment. 
     At task  1004 , system  204  receives a third signal, signal S 3 , from an endpoint. Depending on the test sequence, the third signal might be received in response to an event having been caused by the second signal. For example, the third signal might convey a retrieved bitmap image of an endpoint&#39;s display. The third signal bypasses data-processing system  202 , in accordance with the illustrative embodiment. 
     Depending on the test sequence, system  204  might also transmit additional signals to one or more endpoints. System  204  might also receive additional signals from one or more endpoints. Furthermore, system  204  might transmit signals to and receive signals from the same endpoint. 
     At task  1005 , system  204  generates a test result based on one or more of the first signal, second signal, third signal, and possibly other signals transmitted or received. In some embodiments, the test result is also based on other aspects of the corresponding test sequence (e.g., waiting intervals, etc.). 
     At task  1006 , system  204  determines if the generated I test sequences have been executed. If so, task execution ends. If not, task execution proceeds to task  1002 . 
       FIG. 11  depicts a message-flow diagram of a normal call flow between endpoints  201 - 1  and  201 - 2  with a spontaneous BYE request sent by endpoint  201 - 1 , in accordance with the illustrative embodiment of the present invention. In this scenario, user interface  401 - 1  of test-execution system  204  initiates a session between endpoints  201 - 1  and  201 - 2  by using Session Initiation Protocol. 
     At event  1101 , user interface  401 - 1  transmits a signal to endpoint  201 - 1 . The signal directs endpoint  201 - 1  to transmit an INVITE request to data-processing system  202 . 
     At event  1102 , endpoint  201 - 1  transmits an INVITE request to data-processing system  202  in well-known fashion. 
     At event  1103 , data-processing system  202  transmits a corresponding INVITE message to endpoint  201 - 2  in well-known fashion. At event  1104 , data-processing system  202  also transmits a “Trying” response back to endpoint  201 - 1  in well-known fashion. As those who are skilled in the art will appreciate, endpoint  201 - 1  can then transmit a signal to user interface  401 - 1  of test-execution system  204 , in which the signal indicates the arrival of the response. 
     At event  1105 , endpoint  201 - 2  transmits a signal to user interface  401 - 2  of test-execution system  204  that indicates the arrival of the INVITE request. In addition, at event  1106 , endpoint  201 - 2  transmits a “Ringing” response to data-processing system  202  in well-known fashion. 
     Meanwhile, at event  1107 , user interface  401 - 1  transmits a signal to endpoint  201 - 1 . The signal directs endpoint  201 - 1  to transmit a BYE request to data-processing system  202  (i.e., by “pushing” the drop button of endpoint  201 - 1 ). The BYE request signifies that endpoint  201 - 1  is ending the session. Note that the transmitting of the signal can be based on, for example: the received “Trying” response signal; the response-related signal plus a time interval; the signal and interval plus another event related or unrelated to endpoints  201 - 1  or  201 - 2 ; the received INVITE-related signal (as part of event  1105 ); and so forth. 
     At event  1108 , endpoint  201 - 1  transmits a BYE request to data-processing system  202  in well-known fashion. 
     At event  1109 , data-processing system  202  transmits a corresponding BYE request to endpoint  201 - 2  in well-known fashion. 
     At event  1110 , endpoint  201 - 2  transmits a signal to user interface  401 - 2  of test-execution system  204 , in which the signal indicates the arrival of the request. 
     At event  1111 , data-processing system  202  also transmits a “Trying” response back to endpoint  201 - 1  in well-known fashion. 
     At event  1112 , endpoint  201 - 1  transmits a signal to user interface  401 - 1  of test-execution system  204 , in which the signal indicates that endpoint  201 - 1  has received a “Trying” response. 
     Test-execution system  204  then uses one or more signals that are either received from or transmitted to endpoints  201 - 1  and  201 - 2  to generate one or more test results, as described with respect to task  1005  in  FIG. 10 . For example, a test result that is based on the signals associated with events  1105 ,  1107 ,  1110 , and  1112  might suggest that data-processing system  202  was able to properly handle a BYE request from endpoint  201 - 1  while in the process of initiating a session. 
     The call flow that is represented in  FIG. 11  might continue with additional messages that are not depicted being exchanged until the session has successfully ended. The additional messages are irrelevant, however, for the particular test sequence that is featured in the example illustrated in  FIG. 11 . 
     It is to be understood that the above-described embodiments are merely illustrative of the present invention and that many variations of the above-described embodiments can be devised by those skilled in the art without departing from the scope of the invention. For example, in this Specification, numerous specific details are provided in order to provide a thorough description and understanding of the illustrative embodiments of the present invention. Those skilled in the art will recognize, however, that the invention can be practiced without one or more of those details, or with other methods, materials, components, etc. 
     Furthermore, in some instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the illustrative embodiments. It is understood that the various embodiments shown in the Figures are illustrative, and are not necessarily drawn to scale. Reference throughout the specification to “one embodiment” or “an embodiment” or “some embodiments” means that a particular feature, structure, material, or characteristic described in connection with the embodiment(s) is included in at least one embodiment of the present invention, but not necessarily all embodiments. Consequently, the appearances of the phrase “in one embodiment,” “in an embodiment,” or “in some embodiments” in various places throughout the Specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, materials, or characteristics can be combined in any suitable manner in one or more embodiments. It is therefore intended that such variations be included within the scope of the following claims and their equivalents.