US9612947B2 - Code-free testing framework - Google Patents

Code-free testing framework Download PDF

Info

Publication number
US9612947B2
US9612947B2 US13/692,228 US201213692228A US9612947B2 US 9612947 B2 US9612947 B2 US 9612947B2 US 201213692228 A US201213692228 A US 201213692228A US 9612947 B2 US9612947 B2 US 9612947B2
Authority
US
United States
Prior art keywords
test
computer
testable
orchestrator
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US13/692,228
Other versions
US20140157057A1 (en
Inventor
Tomer Fishaimer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CA Inc
Original Assignee
CA Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CA Inc filed Critical CA Inc
Priority to US13/692,228 priority Critical patent/US9612947B2/en
Priority to US13/692,348 priority patent/US9304894B2/en
Assigned to CA, INC. reassignment CA, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FISHAIMER, TOMER
Publication of US20140157057A1 publication Critical patent/US20140157057A1/en
Application granted granted Critical
Publication of US9612947B2 publication Critical patent/US9612947B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2294Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by remote test

Definitions

  • the present disclosure relates to deployed applications, and more specifically, to testing a deployed application.
  • One aspect of developing complex, and not-so-complex, software applications relates to testing of the software application.
  • Typical software testing may involve providing a software tester with a complete version of a software application, in various stage of development, and then having them randomly use the application in an attempt to identify problems.
  • attempts, however to automate software testing These attempts, however require knowing the structure of the software application and having sufficient programming ability to create an automatic testing framework that autonomously inputs different, pre-selected data sets into the application and analyzes the resulting output.
  • developing and designing such an automated testing framework requires a software tester that is highly knowledgeable about the details of the software application and highly skilled in programming as well. While such an approach is, at best, difficult to implement even if started at the early stages of developing an application, it is nearly impossible to implement for legacy code that has already been deployed into operation.
  • a method for testing testable code of an application comprises sending a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator; and receiving, by the computer-implemented client from the remote test orchestrator, the list identifying any test agents registered with the remote test orchestrator.
  • a system for testing testable code of an application comprises a computer processor and memory configured to store and execute instructions; a communication module configured to send a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator; and the communication module further configured to receive, by the computer-implemented client from the remote test orchestrator, the list identifying any test agents registered with the remote test orchestrator.
  • a computer program product for testing testable code of an application comprises a computer readable storage medium having computer readable program code embodied therewith.
  • the computer readable program code comprising computer readable program code configured to send a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator; and computer readable program code configured to receive, by the computer-implemented client from the remote test orchestrator, the list identifying any test agents registered with the remote test orchestrator.
  • FIG. 1 illustrates an example computing environment in which a code-free testing framework can be deployed in accordance with the principles of the present disclosure.
  • FIG. 2A - FIG. 2C illustrate an example user interface of a code-free testing framework in accordance with the principles of the present disclosure.
  • FIG. 3A depicts a flowchart of an example method for a deployed agent providing a code-free testing framework in accordance with the principles of the present disclosure.
  • FIG. 3B depicts a flowchart of an example method for a test orchestrator to provide a code-free testing framework in accordance with the principles of the present disclosure.
  • FIG. 3C depicts a flowchart of an example method for a test client to utilize a code-free testing framework in accordance with the principles of the present disclosure.
  • FIG. 4 is a block diagram of a data processing system in accordance with the principles of the present disclosure.
  • aspects of the present disclosure may be illustrated and described herein in any of a number of patentable classes or context including any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof. Accordingly, aspects of the present disclosure may be implemented entirely hardware, entirely software (including firmware, resident software, micro-code, etc.) or combining software and hardware implementation that may all generally be referred to herein as a “circuit,” “module,” “component,” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon.
  • the computer readable media may be a computer readable signal medium or a computer readable storage medium.
  • a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
  • a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
  • a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
  • a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
  • Program code embodied on a computer readable signal medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
  • Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, CII, VB.NET, Python or the like, conventional procedural programming languages, such as the “c” programming language, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, dynamic programming languages such as Python, Ruby and Groovy, or other programming languages.
  • the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) or in a cloud computing environment or offered as a service such as a Software as a Service (SaaS).
  • LAN local area network
  • WAN wide area network
  • SaaS Software as a Service
  • These computer program instructions may also be stored in a computer readable medium that when executed can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions when stored in the computer readable medium produce an article of manufacture including instructions which when executed, cause a computer to implement the function/act specified in the flowchart and/or block diagram block or blocks.
  • the computer program instructions may also be loaded onto a computer, other programmable instruction execution apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatuses or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • FIG. 1 an example environment of J 2 EE managed servers is described, with respect to FIG. 1 .
  • this environment is provided merely by way of example and the functionality and behavior described herein is not limited to this environment but can, for example, be implemented with .NET managed servers and the like.
  • the example environment of FIG. 1 is merely one particular example of an environment that provides a code-free testing framework.
  • J 2 EE servers may be located at different physical or logical locations accessible using a network 100 and each of the J 2 EE servers provide one or more executing applications which can be utilized by a client.
  • one J 2 EE server 102 , a second J 2 EE server 106 , and other J 2 EE servers 110 can be deployed on various hardware platforms in communication with the network 100 (e.g., the Internet).
  • Each J 2 EE server is not necessarily isolated at a unique hardware location, although that can occur.
  • a hardware platform 124 can have more than one concurrently executing J 2 EE server (e.g., server 126 and server 130 ).
  • Examples of conventional J 2 EE servers include JBOSS, WebLogic, and WebSphere.
  • J 2 EE server is one type of application server wherein an application server, in general, provides an environment in which various applications can execute.
  • application servers usually provide services such as security, data services, transaction support, and load balancing so that applications running on the server do not need to explicitly include such services.
  • test agent Agent 1 104 is associated with the J 2 EE server 102 ; test agent Agent 2 108 is associated with the J 2 EE server 106 ; test agent AgentN 112 is associated with the J 2 EE server 110 ; test agent AgentA 128 is associated with the J 2 EE server 126 ; and test agent AgentB 132 is associated with the J 2 EE server 130 .
  • each respective test agent provides access to testable code associated with its associated J 2 EE server.
  • the J 2 EE Server 106 may have two different components that execute within its environment.
  • the test agent Agent 2 108 is configured to discover portions of each component that can be tested and to facilitate interaction with that code by a client.
  • the testable code can comprise a plurality of components and each component (e.g., a Java component) available within the environment of the J 2 EE server 106 may be an Enterprise Bean defined by a respective .class file; in another example, the components may be part of a package that has a number of related .class files.
  • the test agent Agent 2 108 executes on the J 2 EE server 106 and can identify the .class files defining the components. Once the .class files are identified, then the test agent Agent 2 108 can identify respective methods that become available when each .class file is instantiated as a respective object.
  • Each test agent may also register with a test orchestrator 114 .
  • the test orchestrator 114 may be an application accessible through the network 100 and may simplify access by clients to the different J 2 EE servers (e.g., 102 , 106 , 110 , 126 , 130 ).
  • the test agent Agent 1 102 may be developed with foreknowledge of the existence, and location, of the test orchestrator 114 .
  • the test agent Agent 1 104 when deployed on the application server 102 it may register with the test orchestrator 114 .
  • test agent When a test agent (e.g., 104 , 108 , 112 , 128 , 132 ) registers with the test orchestrator 114 , the test agent can identify the appropriate application server (e.g., 102 , 106 , 110 , 126 , 130 ) on which it is deployed as well as information about the components that comprise the testable code that each agent discovers.
  • the test orchestrator 114 can have storage 116 available to store the information related to those test agents (e.g., 104 , 108 , 112 , 128 , 132 ) which have registered with the test orchestrator 114 .
  • the test orchestrator 114 has knowledge of how to locate the application servers (e.g., 102 , 106 , 110 , 126 , 130 ). There may be one or more clients such as client 1 118 , client 2 120 , and clientN 122 that desire to test testable code that is available on one or more of the application servers (e.g., 102 , 106 , 110 , 126 , 130 ).
  • Each client may be a web browser that can be used by a quality assurance engineer, an application developer or a software engineer to test software applications in accordance with the principles of the present disclosure.
  • Each client e.g., 118 , 120 , 122
  • the dashed lines 101 and 103 of FIG. 1 represent the apparent communication that takes place between the clients (e.g., 118 , 120 , 122 ), the test orchestrator 114 , and the application servers (e.g., 102 , 106 , 110 , 126 , 130 ).
  • FIG. 2A - FIG. 2C illustrate an example user interface of a code-free testing framework in accordance with the principles of the present disclosure.
  • the orchestrator 114 can provide a client (e.g., 118 , 120 , 122 ) with a list of available test agents (e.g., 104 , 108 , 112 , 128 , 132 ) which the client may be authorized to access.
  • the client may then select a particular one of the agents and then the client is presented with information about testable code which is accessible using that particular test agent.
  • the client may be presented a user interface screen 200 that lists components which the client may test.
  • a component may, for example, comprise one or more .class files, which can be instantiated to define one or more objects.
  • client 1 118 may have selected Agent 1 104 such that client 1 118 is presented with a list of components that are installed (i.e., deployed) to be executed on the J 2 EE Server 1 102 .
  • Each component may have a corresponding .class file residing in an appropriate location on the J 2 EE Server 1 102 .
  • the J 2 EE Server 1 may have an environmental variable that defines the default path locations for where all possible .class files are stored on the J 2 EE Server 1 102 .
  • These class files provide the definition of the different components that can be instantiated as objects and tested by the client 1 118 via the test orchestrator 114 and the test agent Agent 1 104 .
  • the client client 1 118 is presented with a list having three components Component 1 202 A, Component 2 202 B, and Component 3 202 C. Assuming that the client 1 118 clicked on Component 1 202 A, an expanded drop-down list can appear that lists the three methods declared within Component 1 202 A which are, for example, Method 1 204 A, Method 2 204 B, and Method 3 204 C.
  • Method 1 204 A When client client 1 118 selects Method 1 204 A, for example, then the user interface screens 201 and 202 of FIG. 2B and FIG. 2C , respectively, can be provided to the client client 1 118 .
  • the user interface screens 200 , 201 and 202 are merely examples of what information can be provided by a test agent and how it may be arranged. The information may also vary according to a particular structure of the component or method that is being tested.
  • the testable component Component 1 202 A has two fields 206 A and 206 B.
  • the fields represent variables within the component that can be assigned different values by the client client 1 118 via the user interface screen 201 .
  • a field has a label (e.g., “Field 1 ”) and an assigned value.
  • the particular values assigned to Field 1 206 A and Field 2 206 B may affect multiple methods within Component 1 202 A and, thus, they may be grouped and displayed as shown in FIG. 2B .
  • the Method 1 204 A may have its own fields that are variables applicable only within Method 1 204 A.
  • the three fields of user interface screen 203 , FieldA 216 , FieldB 217 , and FieldC 218 can be collectively referred to as the properties of Method 1 204 A.
  • Field 1 206 A and Field 2 206 B apply to all methods within Component 1 202 A and, hence, are also considered properties of Method 1 204 .
  • Method 1 204 A can also be provided via the user interface screen 201 .
  • parameters 208 that are passed to the Method 1 204 A can be identified; and also the primitive type (e.g., int, double, string, etc.) of the Method 1 204 A can be provided as well.
  • a method it is possible for a method to also refer to a component, thus ComponentA 212 and ComponentB 214 may also be available for selection and testing.
  • the various fields 206 A, 206 B, 216 , 217 , and 218 are depicted as boxes to indicate that their values may be changed.
  • the following example code provides a simple example of a .java file that could be compiled to create a .class file defining a component that can be instantiated as an object to be tested.
  • the user-interface screen 200 would list one testable component “Rectangle.” Within this testable component, there would be three methods identified as “getArea”, “getPerimeter” and “getDescription”. The fields of “Rectangle” corresponding to 206 A and 206 B of FIG. 2B would be “myDimension.width” and “myDimension.height”. If the method “getDescription” was selected for testing, then its list of properties in screen 203 would include one field labeled “myLabel”. The text box next to that label (e.g., 216 ) could be initially filled in with the value “Rectangle” but this value could be changed.
  • a “test” button 220 can be selected.
  • the test agent Agent 1 104 receives the assigned values and activates the testable code of Method 1 204 A.
  • the Agent 1 104 invokes the Method 1 using the field values provided by the client 1 118 to produce a result.
  • the result of invoking “getDescription” will be the return of the string “Rectangle”. If the client 1 118 had used the interface screens 201 and 203 to change the value of “myLabel” to another word such as, for example, “Square”, then invoking “getDescription” would have returned the string “Square”.
  • the client 1 118 can be presented with a series of user interface screens that allows the client 1 118 to test different methods of a testable component by assigning respective values to the different properties of a method and then invoking the method with those assigned respective values. No programming knowledge or skill is necessary to perform such testing and no prior knowledge about the structure of the testable components and their methods is needed.
  • FIG. 3A depicts a flowchart of an example method for a deployed agent providing a code-free testing framework in accordance with the principles of the present disclosure.
  • one or more applications are deployed on a managed server.
  • the term “managed server” refers to a software platform in which an executable environment is provided by an application server such as, for example, a J 2 EE server.
  • an application server such as, for example, a J 2 EE server.
  • executable components, or applications have a common general format appropriate for the application server.
  • a test agent is deployed on the managed server as well.
  • the test agent executes within the environment of the managed server and has access to the other applications that are deployed on that server. Using this access, the test agent may determine, in step 306 , all the components on the managed server that are available to be tested.
  • the test agent may locate all the .class files in specified directory locations in the managed server environment.
  • the following code snippet may be one example of how a list of the class files in the current directory path could be generated by the test agent.
  • test agent can then instantiate an object corresponding to each .class file. Once instantiated, the test agent can then, in step 308 , determine what methods are available for that instantiated object.
  • Java's “Reflection” API provides beneficial techniques. Similar techniques are available for C## and other programming environments as well. For example, the following code snippet illustrates how to generate a list of methods for an instantiated object:
  • the line Class c Class.forName(args[0]) constructs an object in the memory space of the managed server using the .class file named “args[0]”. Thus, the test agent would use the appropriate name of a .class file instead of “args[0]” to instantiate any desired object.
  • Method m[ ] c.getDeclaredMethods( ) uses the built-in method “getDeclaredMethods” to fill an array m[ ] with all the methods available in the instantiated object.
  • the test agent can register, in step 310 , with the test orchestrator.
  • the test agent can identify the identity of the application server (e.g., a URL) and provide the discovered information about components and their methods.
  • the test agent receives a client request related to testing code.
  • the test orchestrator or the test agent, could send information to the client, in step 314 , identifying available, testable components and their testable methods.
  • the test orchestrator could act as a proxy in all communications between a client and a test agent.
  • the test orchestrator can handle an initial inquiry from a client and then share enough information to allow the client to directly communicate with the test agent.
  • the test agent In sending information about a testable method, the test agent identifies the properties that may be associated with the method.
  • the Java Reflection API provides a method “getDeclaredFields” that identifies each field declared in a particular method and, for that field identifies its name, its type, and other information.
  • the test agent can, for example, construct a fillable HTML form that can be sent to a web browser identifying the information about the fields of a method and providing corresponding text boxes that can be filled in. From the test agent's perspective, a client will input data values for the different properties (i.e., fields) associated with a method and then send those data values back as a way to request that the test agent activate, or invoke the method, using those data values.
  • the test agent invokes the method using the returned data values from the client.
  • This result can then be provided to the client, by the test agent in step 320 , so that the client can observe that output of the method that results based on their input values they provided.
  • FIG. 3B depicts a flowchart of an example method for a test orchestrator to provide a code-free testing framework in accordance with the principles of the present disclosure.
  • the test orchestrator may be deployed on a hardware platform, in step 330 , so that clients have a single location that they may visit to discover information about a variety of potentially available test agents and testable code.
  • the test orchestrator is contacted, in step 332 , by a deployed test agent that desires to register with the test orchestrator.
  • the test orchestrator registers the deployed test agent.
  • Example information that may be involved with registering a test agent includes an identifier of the test agent, an identifier and/or location, of a managed server on which the test agent is deployed, identifiers of testable components available through the test agent, and possibly one or more methods associated with the available, testable components.
  • the identifiers of testable components may include a list of .class files, or more generally a list of available testable code, which the test agent can use to instantiate different objects to be tested.
  • the test orchestrator will be contacted by a test client wishing to use one or more of the registered test agents to test available, testable components.
  • the test orchestrator can send a user-interface screen that identifies the test agents registered with the test orchestrator.
  • the user interface screen may be an HTML page, viewable in a web browser, that has a respective hyperlink to each of the test agents.
  • the client clicks on one of the hyperlinks the client may be connected to the appropriate test agent that is executing on a corresponding managed server.
  • the test agent may then be responsible for communicating information about testable code to the client.
  • test orchestrator can act as a proxy so that all communication, in any direction, first passes through the test orchestrator before being forwarded to either the test agent of the client.
  • FIG. 3C depicts a flowchart of an example method for a test client to utilize a code-free testing framework in accordance with the principles of the present disclosure.
  • the client contacts the test orchestrator and, in response in step 342 , the client receives a list of test agents that have previously registered with the test orchestrator. The client may then, in step 344 , select one of the registered test agents.
  • the client Upon selection of a particular test agent, the client receives, in step 346 , information about the components (e.g., objects defined by a class file) available for testing and their respective methods using that test agent. This information may be communicated with the client directly from a test agent or may be communicated indirectly via the test orchestrator.
  • the client selects one of the available methods of a component and, in response, receives information about that method.
  • the information about the method relates to the properties, or fields, of that method for which the client can supply different values.
  • the test agent provides this information in a user interface that allows the client to assign different values to each of the method's properties and then request that these assigned values be used.
  • the client supplies data values, or test data to the test agent and requests that the test agent invoke the method using this test data.
  • the test agent invokes the method using the test data which generates a result based on the particular values of the test data.
  • the client receives from the test agent the result generated based on the supplied test data. This process can be easily repeated to supply a variety of test data to a particular method or for selecting different methods, or even different components available through the test agent.
  • a data processing system 400 may comprise a symmetric multiprocessor (SMP) system or other configuration including a plurality of processors 402 connected to system bus 404 .
  • SMP symmetric multiprocessor
  • a single processor 402 may be employed.
  • memory controller/cache 406 Also connected to system bus 404 is memory controller/cache 406 , which provides an interface to local memory 408 .
  • An I/O bridge 410 is connected to the system bus 404 and provides an interface to an I/O bus 412 .
  • the I/O bus may be utilized to support one or more busses and corresponding devices 414 , such as bus bridges, input output devices (I/O devices), storage, network adapters, etc.
  • Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks.
  • Also connected to the I/O bus may be devices such as a graphics adapter 416 , storage 418 and a computer usable storage medium 420 having computer usable program code embodied thereon.
  • the computer usable program code may be executed to execute any aspect of the present disclosure, for example, to implement aspect of any of the methods, computer program products and/or system components illustrated in FIG. 1 - FIG. 3C .
  • each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s).
  • the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

A method, system and computer program product for testing testable code of an application comprises sending a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator; and receiving, by the computer-implemented client from the remote test orchestrator, a list identifying the test agent registered with the remote test orchestrator.

Description

CROSS REFERENCE TO RELATED APPLICATION
This application is related to an application filed concurrently herewith entitled “Code-Free Testing Framework,” by Tomer Fishaimer, now issued as U.S. Pat. No. 9,304,894, the entire disclosure of which is incorporated herein by reference.
BACKGROUND
The present disclosure relates to deployed applications, and more specifically, to testing a deployed application.
One aspect of developing complex, and not-so-complex, software applications relates to testing of the software application. Typical software testing may involve providing a software tester with a complete version of a software application, in various stage of development, and then having them randomly use the application in an attempt to identify problems. There have been attempts, however to automate software testing. These attempts, however require knowing the structure of the software application and having sufficient programming ability to create an automatic testing framework that autonomously inputs different, pre-selected data sets into the application and analyzes the resulting output. Thus, developing and designing such an automated testing framework requires a software tester that is highly knowledgeable about the details of the software application and highly skilled in programming as well. While such an approach is, at best, difficult to implement even if started at the early stages of developing an application, it is nearly impossible to implement for legacy code that has already been deployed into operation.
BRIEF SUMMARY
According to one aspect of the present disclosure, a method for testing testable code of an application comprises sending a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator; and receiving, by the computer-implemented client from the remote test orchestrator, the list identifying any test agents registered with the remote test orchestrator.
According to another aspect of the disclosure, a system for testing testable code of an application comprises a computer processor and memory configured to store and execute instructions; a communication module configured to send a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator; and the communication module further configured to receive, by the computer-implemented client from the remote test orchestrator, the list identifying any test agents registered with the remote test orchestrator.
According to yet another aspect of the disclosure, a computer program product for testing testable code of an application, comprises a computer readable storage medium having computer readable program code embodied therewith. The computer readable program code comprising computer readable program code configured to send a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator; and computer readable program code configured to receive, by the computer-implemented client from the remote test orchestrator, the list identifying any test agents registered with the remote test orchestrator.
BRIEF DESCRIPTION OF THE DRAWINGS
Aspects of the present disclosure are illustrated by way of example and are not limited by the accompanying figures with like references indicating like elements.
FIG. 1 illustrates an example computing environment in which a code-free testing framework can be deployed in accordance with the principles of the present disclosure.
FIG. 2A-FIG. 2C illustrate an example user interface of a code-free testing framework in accordance with the principles of the present disclosure.
FIG. 3A depicts a flowchart of an example method for a deployed agent providing a code-free testing framework in accordance with the principles of the present disclosure.
FIG. 3B depicts a flowchart of an example method for a test orchestrator to provide a code-free testing framework in accordance with the principles of the present disclosure.
FIG. 3C depicts a flowchart of an example method for a test client to utilize a code-free testing framework in accordance with the principles of the present disclosure.
FIG. 4 is a block diagram of a data processing system in accordance with the principles of the present disclosure.
DETAILED DESCRIPTION
As will be appreciated by one skilled in the art, aspects of the present disclosure may be illustrated and described herein in any of a number of patentable classes or context including any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof. Accordingly, aspects of the present disclosure may be implemented entirely hardware, entirely software (including firmware, resident software, micro-code, etc.) or combining software and hardware implementation that may all generally be referred to herein as a “circuit,” “module,” “component,” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon.
Any combination of one or more computer readable media may be utilized. The computer readable media may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Rash memory), an appropriate optical fiber with a repeater, a portable compact disc read-only memory (CORaM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable signal medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, CII, VB.NET, Python or the like, conventional procedural programming languages, such as the “c” programming language, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, dynamic programming languages such as Python, Ruby and Groovy, or other programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) or in a cloud computing environment or offered as a service such as a Software as a Service (SaaS).
Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatuses (systems) and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable instruction execution apparatus, create a mechanism for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that when executed can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions when stored in the computer readable medium produce an article of manufacture including instructions which when executed, cause a computer to implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable instruction execution apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatuses or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
To aid in understanding aspects of the present disclosure, an example environment of J2EE managed servers is described, with respect to FIG. 1. However, one of ordinary skill will readily recognize that this environment is provided merely by way of example and the functionality and behavior described herein is not limited to this environment but can, for example, be implemented with .NET managed servers and the like. The example environment of FIG. 1 is merely one particular example of an environment that provides a code-free testing framework.
Referring to FIG. 1, different J2EE servers may be located at different physical or logical locations accessible using a network 100 and each of the J2EE servers provide one or more executing applications which can be utilized by a client. For example, one J2EE server 102, a second J2EE server 106, and other J2EE servers 110 can be deployed on various hardware platforms in communication with the network 100 (e.g., the Internet). Each J2EE server is not necessarily isolated at a unique hardware location, although that can occur. For example, a hardware platform 124 can have more than one concurrently executing J2EE server (e.g., server 126 and server 130). Examples of conventional J2EE servers include JBOSS, WebLogic, and WebSphere. One of ordinary skill will recognize that a J2EE server is one type of application server wherein an application server, in general, provides an environment in which various applications can execute. For example, application servers usually provide services such as security, data services, transaction support, and load balancing so that applications running on the server do not need to explicitly include such services.
In the environment of FIG. 1, there is a respective test agent associated with each of the J2EE servers. Specifically, test agent Agent1 104 is associated with the J2EE server 102; test agent Agent2 108 is associated with the J2EE server 106; test agent AgentN 112 is associated with the J2EE server 110; test agent AgentA 128 is associated with the J2EE server 126; and test agent AgentB 132 is associated with the J2EE server 130. As explained more fully below, each respective test agent provides access to testable code associated with its associated J2EE server. For example, the J2EE Server 106 may have two different components that execute within its environment. The test agent Agent2 108 is configured to discover portions of each component that can be tested and to facilitate interaction with that code by a client.
In a particular example, the testable code can comprise a plurality of components and each component (e.g., a Java component) available within the environment of the J2EE server 106 may be an Enterprise Bean defined by a respective .class file; in another example, the components may be part of a package that has a number of related .class files. In either instance, the test agent Agent2 108 executes on the J2EE server 106 and can identify the .class files defining the components. Once the .class files are identified, then the test agent Agent2 108 can identify respective methods that become available when each .class file is instantiated as a respective object.
Each test agent (e.g., 104, 108, 112, 128, 132) may also register with a test orchestrator 114. The test orchestrator 114 may be an application accessible through the network 100 and may simplify access by clients to the different J2EE servers (e.g., 102, 106, 110, 126, 130). For example, the test agent Agent1 102 may be developed with foreknowledge of the existence, and location, of the test orchestrator 114. Thus, when the test agent Agent1 104 is deployed on the application server 102 it may register with the test orchestrator 114. When a test agent (e.g., 104, 108, 112, 128, 132) registers with the test orchestrator 114, the test agent can identify the appropriate application server (e.g., 102, 106, 110, 126, 130) on which it is deployed as well as information about the components that comprise the testable code that each agent discovers. The test orchestrator 114 can have storage 116 available to store the information related to those test agents (e.g., 104, 108, 112, 128, 132) which have registered with the test orchestrator 114.
As a result of the test agents (e.g., 104, 108, 112, 128, 132) registering with the test orchestrator, the test orchestrator 114 has knowledge of how to locate the application servers (e.g., 102, 106, 110, 126, 130). There may be one or more clients such as client1 118, client2 120, and clientN 122 that desire to test testable code that is available on one or more of the application servers (e.g., 102, 106, 110, 126, 130). Each client (e.g., 118, 120, 122) may be a web browser that can be used by a quality assurance engineer, an application developer or a software engineer to test software applications in accordance with the principles of the present disclosure. Each client (e.g., 118, 120, 122), therefore, may communicate with just the test orchestrator 114 so that each client does not need to know how to directly communicate with each of the application servers. Accordingly, the dashed lines 101 and 103 of FIG. 1 represent the apparent communication that takes place between the clients (e.g., 118, 120,122), the test orchestrator 114, and the application servers (e.g., 102, 106, 110, 126, 130).
FIG. 2A-FIG. 2C illustrate an example user interface of a code-free testing framework in accordance with the principles of the present disclosure. The orchestrator 114 can provide a client (e.g., 118, 120, 122) with a list of available test agents (e.g., 104, 108, 112, 128, 132) which the client may be authorized to access. The client may then select a particular one of the agents and then the client is presented with information about testable code which is accessible using that particular test agent. For example, the client may be presented a user interface screen 200 that lists components which the client may test. A component may, for example, comprise one or more .class files, which can be instantiated to define one or more objects.
Returning to FIG. 1, client1 118 may have selected Agent1 104 such that client1 118 is presented with a list of components that are installed (i.e., deployed) to be executed on the J2EE Server1 102. Each component may have a corresponding .class file residing in an appropriate location on the J2EE Server1 102. For example, the J2EE Server1 may have an environmental variable that defines the default path locations for where all possible .class files are stored on the J2EE Server1 102. These class files provide the definition of the different components that can be instantiated as objects and tested by the client1 118 via the test orchestrator 114 and the test agent Agent1 104.
In the example screen 200 of FIG. 2A, the client client1 118 is presented with a list having three components Component1 202A, Component2 202B, and Component3 202C. Assuming that the client1 118 clicked on Component1 202A, an expanded drop-down list can appear that lists the three methods declared within Component1 202A which are, for example, Method1 204A, Method2 204B, and Method3 204C.
When client client1 118 selects Method1 204A, for example, then the user interface screens 201 and 202 of FIG. 2B and FIG. 2C, respectively, can be provided to the client client1 118. The user interface screens 200, 201 and 202 are merely examples of what information can be provided by a test agent and how it may be arranged. The information may also vary according to a particular structure of the component or method that is being tested.
In the example screen 201, the testable component Component1 202A has two fields 206A and 206B. The fields represent variables within the component that can be assigned different values by the client client1 118 via the user interface screen 201. A field has a label (e.g., “Field1”) and an assigned value. The particular values assigned to Field1 206A and Field2 206B may affect multiple methods within Component1 202A and, thus, they may be grouped and displayed as shown in FIG. 2B. The Method1 204A may have its own fields that are variables applicable only within Method1 204A. The three fields of user interface screen 203, FieldA 216, FieldB 217, and FieldC 218 can be collectively referred to as the properties of Method1 204A. Field1 206A and Field2 206B apply to all methods within Component1 202A and, hence, are also considered properties of Method1 204.
Other information about the Method1 204A can also be provided via the user interface screen 201. For example, parameters 208 that are passed to the Method1 204A can be identified; and also the primitive type (e.g., int, double, string, etc.) of the Method1 204A can be provided as well. It is possible for a method to also refer to a component, thus ComponentA 212 and ComponentB 214 may also be available for selection and testing. The various fields 206A, 206B, 216, 217, and 218 are depicted as boxes to indicate that their values may be changed. For example, the following example code provides a simple example of a .java file that could be compiled to create a .class file defining a component that can be instantiated as an object to be tested.
public class Rectangle {
 public Rectangle(int width, int height) {
  myDimension.width = width;
  myDimension.height = height;
 }
 public double getArea( ) {
  return myDimension.width * myDimension.height;
 }
 public double getPerimeter {
  return 2*(myDimension.width+myDimension.height);
 }
 public String getDescription{
  private String myLabel = “Rectangle”
  return myLabel;
 }
}
Relying on the above example, the user-interface screen 200 would list one testable component “Rectangle.” Within this testable component, there would be three methods identified as “getArea”, “getPerimeter” and “getDescription”. The fields of “Rectangle” corresponding to 206A and 206B of FIG. 2B would be “myDimension.width” and “myDimension.height”. If the method “getDescription” was selected for testing, then its list of properties in screen 203 would include one field labeled “myLabel”. The text box next to that label (e.g., 216) could be initially filled in with the value “Rectangle” but this value could be changed.
Once the client1 118 is finished assigning values to all the available fields, then a “test” button 220 can be selected. In response to the “test” button 220 being selected, the test agent Agent1 104 receives the assigned values and activates the testable code of Method1 204A. In particular, the Agent1 104 invokes the Method1 using the field values provided by the client1 118 to produce a result. Using the above example code, if the client1 makes no changes, then the result of invoking “getDescription” will be the return of the string “Rectangle”. If the client1 118 had used the interface screens 201 and 203 to change the value of “myLabel” to another word such as, for example, “Square”, then invoking “getDescription” would have returned the string “Square”.
In this manner, the client1 118 can be presented with a series of user interface screens that allows the client1 118 to test different methods of a testable component by assigning respective values to the different properties of a method and then invoking the method with those assigned respective values. No programming knowledge or skill is necessary to perform such testing and no prior knowledge about the structure of the testable components and their methods is needed.
FIG. 3A depicts a flowchart of an example method for a deployed agent providing a code-free testing framework in accordance with the principles of the present disclosure. In step 302 one or more applications are deployed on a managed server. The term “managed server” refers to a software platform in which an executable environment is provided by an application server such as, for example, a J2EE server. Within a managed server environment, executable components, or applications, have a common general format appropriate for the application server.
In step 304, a test agent is deployed on the managed server as well. By deploying the test agent on the managed server, the test agent executes within the environment of the managed server and has access to the other applications that are deployed on that server. Using this access, the test agent may determine, in step 306, all the components on the managed server that are available to be tested. One example, in a Java environment, is that the test agent may locate all the .class files in specified directory locations in the managed server environment.
The following code snippet, for example, may be one example of how a list of the class files in the current directory path could be generated by the test agent.
import java.io.File;
public class ListFiles {
 public static void main (String[ ] args) {
  String path = “.”;
  String files;
  File folder = new File(path);
  File[ ] listOfFiles = folder.listFiles( );
  for (int i = 0; i <listOfFiles.length; i++) {
   files = listOfFiles[i].getName( );
   if (files.endsWith(“.class”) {
    System.out.printIn(files);
   }
  }
 }
}
Once the names of the .class files are known, the test agent can then instantiate an object corresponding to each .class file. Once instantiated, the test agent can then, in step 308, determine what methods are available for that instantiated object. Although there are a variety of different ways to inspect within an instantiated object, Java's “Reflection” API provides beneficial techniques. Similar techniques are available for C## and other programming environments as well. For example, the following code snippet illustrates how to generate a list of methods for an instantiated object:
import java.lang.reflect.*;
public class DumpMethods {
 public static void main(String args[ ]) {
  try {
   Class c = Class.forName(args[0]);
   Method m[ ] = c.getDeclaredMethods( );
   for (int i=0; l <m.length; i++)
    System.out.printIn(m[i].toString( ));
  }
 }
}
The line Class c=Class.forName(args[0]) constructs an object in the memory space of the managed server using the .class file named “args[0]”. Thus, the test agent would use the appropriate name of a .class file instead of “args[0]” to instantiate any desired object. The next line Method m[ ]=c.getDeclaredMethods( ) uses the built-in method “getDeclaredMethods” to fill an array m[ ] with all the methods available in the instantiated object.
Once the test agent has identified the available components and their respective methods, the test agent can register, in step 310, with the test orchestrator. When registering, the test agent can identify the identity of the application server (e.g., a URL) and provide the discovered information about components and their methods.
In operation, the test agent, in step 312, receives a client request related to testing code. The test orchestrator, or the test agent, could send information to the client, in step 314, identifying available, testable components and their testable methods. For example, the test orchestrator could act as a proxy in all communications between a client and a test agent. Alternatively, the test orchestrator can handle an initial inquiry from a client and then share enough information to allow the client to directly communicate with the test agent.
In sending information about a testable method, the test agent identifies the properties that may be associated with the method. The Java Reflection API provides a method “getDeclaredFields” that identifies each field declared in a particular method and, for that field identifies its name, its type, and other information. The test agent can, for example, construct a fillable HTML form that can be sent to a web browser identifying the information about the fields of a method and providing corresponding text boxes that can be filled in. From the test agent's perspective, a client will input data values for the different properties (i.e., fields) associated with a method and then send those data values back as a way to request that the test agent activate, or invoke the method, using those data values.
Thus, in step 318, the test agent invokes the method using the returned data values from the client. For example, the Java Reflection class provides for a method such as Object returnObject=meth.invoke(methodName, argList) to invoke the method “methodName” using a supplied list of arguments “argList” in order to generate a result called “returnObject”. This result can then be provided to the client, by the test agent in step 320, so that the client can observe that output of the method that results based on their input values they provided.
FIG. 3B depicts a flowchart of an example method for a test orchestrator to provide a code-free testing framework in accordance with the principles of the present disclosure. From the perspective of the test orchestrator, it may be deployed on a hardware platform, in step 330, so that clients have a single location that they may visit to discover information about a variety of potentially available test agents and testable code. Initially, the test orchestrator is contacted, in step 332, by a deployed test agent that desires to register with the test orchestrator. Thus, in step 334, the test orchestrator registers the deployed test agent. Example information that may be involved with registering a test agent includes an identifier of the test agent, an identifier and/or location, of a managed server on which the test agent is deployed, identifiers of testable components available through the test agent, and possibly one or more methods associated with the available, testable components. For example, the identifiers of testable components may include a list of .class files, or more generally a list of available testable code, which the test agent can use to instantiate different objects to be tested.
Subsequently, the test orchestrator will be contacted by a test client wishing to use one or more of the registered test agents to test available, testable components. In step 338, the test orchestrator can send a user-interface screen that identifies the test agents registered with the test orchestrator. For example, the user interface screen may be an HTML page, viewable in a web browser, that has a respective hyperlink to each of the test agents. When a client clicks on one of the hyperlinks the client may be connected to the appropriate test agent that is executing on a corresponding managed server. The test agent may then be responsible for communicating information about testable code to the client.
As mentioned above, another alternative is that the test orchestrator can act as a proxy so that all communication, in any direction, first passes through the test orchestrator before being forwarded to either the test agent of the client.
FIG. 3C depicts a flowchart of an example method for a test client to utilize a code-free testing framework in accordance with the principles of the present disclosure. From the perspective of the test client, in step 340, the client contacts the test orchestrator and, in response in step 342, the client receives a list of test agents that have previously registered with the test orchestrator. The client may then, in step 344, select one of the registered test agents.
Upon selection of a particular test agent, the client receives, in step 346, information about the components (e.g., objects defined by a class file) available for testing and their respective methods using that test agent. This information may be communicated with the client directly from a test agent or may be communicated indirectly via the test orchestrator. The client then, in step 348 selects one of the available methods of a component and, in response, receives information about that method. In particular, the information about the method relates to the properties, or fields, of that method for which the client can supply different values. In particular, the test agent provides this information in a user interface that allows the client to assign different values to each of the method's properties and then request that these assigned values be used.
Thus, in step 350, the client supplies data values, or test data to the test agent and requests that the test agent invoke the method using this test data. The test agent invokes the method using the test data which generates a result based on the particular values of the test data. In step 352, the client receives from the test agent the result generated based on the supplied test data. This process can be easily repeated to supply a variety of test data to a particular method or for selecting different methods, or even different components available through the test agent.
Referring to FIG. 4, a block diagram of a data processing system is depicted in accordance with the present disclosure. A data processing system 400, such as may be utilized to implement the hardware platform 108 or aspects thereof, e.g., as set out in greater detail in FIG. 1-FIG. 3C, may comprise a symmetric multiprocessor (SMP) system or other configuration including a plurality of processors 402 connected to system bus 404. Alternatively, a single processor 402 may be employed. Also connected to system bus 404 is memory controller/cache 406, which provides an interface to local memory 408. An I/O bridge 410 is connected to the system bus 404 and provides an interface to an I/O bus 412. The I/O bus may be utilized to support one or more busses and corresponding devices 414, such as bus bridges, input output devices (I/O devices), storage, network adapters, etc. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks.
Also connected to the I/O bus may be devices such as a graphics adapter 416, storage 418 and a computer usable storage medium 420 having computer usable program code embodied thereon. The computer usable program code may be executed to execute any aspect of the present disclosure, for example, to implement aspect of any of the methods, computer program products and/or system components illustrated in FIG. 1-FIG. 3C.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various aspects of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular aspects only and is not intended to be limiting of the disclosure. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, material s, acts, and equivalents of any means or step plus function elements in the claims below are intended to include any disclosed structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosure in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the disclosure. The aspects of the disclosure herein were chosen and described in order to best explain the principles of the disclosure and the practical application, and to enable others of ordinary skill in the art to understand the disclosure with various modifications as are suited to the particular use contemplated.

Claims (33)

The invention claimed is:
1. A method for testing testable code of an application comprising:
sending a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator, said any test agents each configured to provide access to respective associated testable code and said remote test orchestrator configured to provide the computer-implemented client with access to said any test agents; and
receiving, by the computer-implemented client from the remote test orchestrator, the list identifying said any test agents registered with the remote test orchestrator.
2. The method of claim 1, wherein a particular one of the test agents is configured to execute on an application server separate from the remote test orchestrator.
3. The method of claim 1, wherein the list identifies a plurality of different test agents registered with the remote test orchestrator.
4. The method of claim 1, further comprising:
in response to receiving the list, sending a first selection indication, by the computer-implemented client to the remote test orchestrator, thereby selecting a particular one of said any test agents; and
receiving, by the computer-implemented client from the remote test orchestrator, an identification of the respective testable code associated with the particular one test agent.
5. The method of claim 4, wherein the respective testable code comprises a plurality of components.
6. The method of claim 4, wherein the identification of the respective testable code comprises an identification of a testable method associated with the particular one test agent.
7. The method of claim 6, further comprising:
in response to receiving the identification of the testable method, sending a selection indication, by the computer-implemented client to the remote test orchestrator, thereby selecting the testable method; and
receiving, by the computer-implemented client from the remote test orchestrator, a list of properties associated with the testable method.
8. The method of claim 7, further comprising:
in response to receiving the list of properties associated with the testable method, sending, by the computer-implemented client to the remote test orchestrator, a respective data portion corresponding to each of the properties, whereby execution of the respective testable code using the respective data portions produces a test result; and
receiving by the computer-implemented client from the remote test orchestrator, the test result.
9. The method of claim 1, further comprising:
in response to receiving the list, selecting a particular one of said any test agents; and
receiving, by the computer-implemented client from the particular one of the test agents, an identification of the respective testable code associated with the particular one of the test agents.
10. The method of claim 9, further comprising:
receiving, by the computer-implemented client from the particular one of the test agents, a list of properties associated with the respective testable code.
11. The method of claim 10, further comprising:
in response to receiving the list of properties associated with the respective testable code, sending, by the computer-implemented client to the particular one of the test agents, a respective data portion corresponding to each of the properties, whereby execution of the testable code using the respective data portions produces a test result; and
receiving, by the computer-implemented client, the test result.
12. A system for testing testable code of an application comprising:
a processor;
a non-transitory memory in communication with the processor, wherein the non-transitory memory storing instructions executable by the processor to:
send a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator, said any test agents each configured to provide access to respective associated testable code and said remote test orchestrator configured to provide the computer-implemented client with access to said any test agents; and
receive, by the computer-implemented client from the remote test orchestrator, the list identifying said any test agents registered with the remote test orchestrator.
13. The system of claim 12, wherein a particular one of the test agents is configured to execute on an application server separate from the remote test orchestrator.
14. The system of claim 12, wherein the list identifies a plurality of different test agents registered with the remote test orchestrator.
15. The system of claim 12, wherein the instructions are executable by the processor to:
in response to receiving the list, send a first selection indication, by the computer-implemented client to the remote test orchestrator, thereby selecting a particular one of said any test agents; and
receive, by the computer-implemented client from the remote test orchestrator, an identification of the respective testable code associated with the particular one test agent.
16. The system of claim 15, wherein the respective testable code comprises a plurality of components.
17. The system of claim 15, wherein the identification of the respective testable code comprises an identification of a testable method associated with the particular one test agent.
18. The system of claim 17, wherein the instructions are executable by the processor to:
in response to receiving the identification of the testable method, send a selection indication, by the computer-implemented client to the remote test orchestrator, thereby selecting the testable method; and
receive, by the computer-implemented client from the remote test orchestrator, a list of properties associated with the testable method.
19. The system of claim 18, wherein the instructions are executable by the processor to:
in response to receiving the list of properties associated with the testable method, send, by the computer-implemented client to the remote test orchestrator, a respective data portion corresponding to each of the properties, whereby execution of the respective testable code using the respective data portions produces a test result; and
receive by the computer-implemented client from the remote test orchestrator, the test result.
20. The system of claim 12, wherein the instructions are executable by the processor to:
in response to receiving the list, select a particular one of said any test agents; and
receive, by the computer-implemented client from the particular one of the test agents, an identification of the respective testable code associated with the particular one of the test agents.
21. The system of claim 20, wherein the instructions are executable by the processor to:
receive, by the computer-implemented client from the particular one of the test agents, a list of properties associated with the respective testable code.
22. The system of claim 21, wherein the instructions are executable by the processor to:
in response to receiving the list of properties associated with the respective testable code, send, by the computer-implemented client to the particular one of the test agents, a respective data portion corresponding to each of the properties, whereby execution of the respective testable code using the respective data portions produces a test result; and
receive, by the computer-implemented client, the test result.
23. A computer program product for testing testable code of an application, comprising:
a non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising:
computer readable program code configured to send a request, from a computer-implemented client to a remote test orchestrator, for a list identifying any test agents registered with the remote test orchestrator, said any test agents each configured to provide access to respective associated testable code and said remote test orchestrator configured to provide the computer-implemented client with access to said any test agents; and
computer readable program code configured to receive, by the computer-implemented client from the remote test orchestrator, the list identifying said any test agents registered with the remote test orchestrator.
24. The computer program product of claim 23, wherein a particular one of the test agents is configured to execute on an application server separate from the remote test orchestrator.
25. The computer program product of claim 23, wherein the list identifies a plurality of different test agents registered with the remote test orchestrator.
26. The computer program product of claim 23, further comprising:
computer readable program code configured to, in response to receiving the list, send a first selection indication, by the computer-implemented client to the remote test orchestrator, thereby selecting a particular one of said any test agents; and
computer readable program code configured to receive, by the computer-implemented client from the remote test orchestrator, an identification of the respective testable code associated with the particular one test agent.
27. The computer program product of claim 26, wherein the respective testable code comprises a plurality of components.
28. The computer program product of claim 26, wherein the identification of the respective testable code comprises an identification of a testable method associated with the particular one test agent.
29. The computer program product of claim 28, further comprising:
computer readable program code configured to, in response to receiving the identification of the testable method, send a selection indication, by the computer-implemented client to the remote test orchestrator, thereby selecting the testable method; and
computer readable program code configured to receive, by the computer-implemented client from the remote test orchestrator, a list of properties associated with the testable method.
30. The computer program product m of claim 29, further comprising:
computer readable program code configured to, in response to receiving the list of properties associated with the testable method, send, by the computer-implemented client to the remote test orchestrator, a respective data portion corresponding to each of the properties, whereby execution of the respective testable code using the respective data portions produces a test result; and
computer readable program code configured to receive by the computer-implemented client from the remote test orchestrator, the test result.
31. The computer program product of claim 23, further comprising:
computer readable program code configured to, in response to receiving the list, select a particular one of said any test agents; and
computer readable program code configured to receive, by the computer-implemented client from the particular one of the test agents, an identification of the respective testable code associated with the particular one of the test agents.
32. The computer program product of claim 31, further comprising:
computer readable program code configured to receive, by the computer-implemented client from the particular one of the test agents, a list of properties associated with the respective testable code.
33. The computer program product of claim 32, further comprising:
computer readable program code configured to, in response to receiving he list of properties associated with the respective testable code, send, by the computer-implemented client to the particular one of the test agents, a respective data portion corresponding to each of the properties, whereby execution of the respective testable code using the respective data portions produces a test result; and
computer readable program code configured to receive, by the computer-implemented client, the test result.
US13/692,228 2012-12-03 2012-12-03 Code-free testing framework Active 2034-08-19 US9612947B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/692,228 US9612947B2 (en) 2012-12-03 2012-12-03 Code-free testing framework
US13/692,348 US9304894B2 (en) 2012-12-03 2012-12-03 Code-free testing framework

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/692,228 US9612947B2 (en) 2012-12-03 2012-12-03 Code-free testing framework

Publications (2)

Publication Number Publication Date
US20140157057A1 US20140157057A1 (en) 2014-06-05
US9612947B2 true US9612947B2 (en) 2017-04-04

Family

ID=50826741

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/692,228 Active 2034-08-19 US9612947B2 (en) 2012-12-03 2012-12-03 Code-free testing framework
US13/692,348 Expired - Fee Related US9304894B2 (en) 2012-12-03 2012-12-03 Code-free testing framework

Family Applications After (1)

Application Number Title Priority Date Filing Date
US13/692,348 Expired - Fee Related US9304894B2 (en) 2012-12-03 2012-12-03 Code-free testing framework

Country Status (1)

Country Link
US (2) US9612947B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11275674B1 (en) * 2019-09-03 2022-03-15 Sprint Communications Company L.P. Operations support system (OSS) test tool

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612947B2 (en) 2012-12-03 2017-04-04 Ca, Inc. Code-free testing framework
US10812516B2 (en) * 2014-08-05 2020-10-20 AttackIQ, Inc. Cyber security posture validation platform
US9684579B1 (en) * 2014-12-05 2017-06-20 Amazon Technologies, Inc. Test device selection using multi-pass scoring
CN106294158A (en) * 2016-08-11 2017-01-04 北京小米移动软件有限公司 Terminal test method, Apparatus and system
CN107995026B (en) * 2017-11-16 2021-07-30 中国银行股份有限公司 Management and control method, management node, managed node and system based on middleware
US11611612B2 (en) * 2019-11-25 2023-03-21 Verizon Patent And Licensing Inc. Link quality measurements and link status detection
CN112799954B (en) * 2021-02-09 2024-04-16 上海云轴信息科技有限公司 Method, apparatus and computer readable medium for quickly constructing test environment

Citations (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360268B1 (en) * 1997-10-07 2002-03-19 Hewlett-Packard Company Distributed automated testing system
US20020062475A1 (en) 2000-04-04 2002-05-23 Jose Iborra Automatic software production system
US20030055936A1 (en) * 2001-09-11 2003-03-20 Sun Microsystems, Inc. Dynamic attributes for distributed test framework
US20030084429A1 (en) 2001-10-26 2003-05-01 Schaefer James S. Systems and methods for table driven automation testing of software programs
US20030120829A1 (en) * 2001-07-11 2003-06-26 Sun Microsystems, Inc. Registry service for use in a distributed processing framework system and methods for implementing the same
US20030131088A1 (en) * 2002-01-10 2003-07-10 Ibm Corporation Method and system for automatic selection of a test system in a network environment
US20030140138A1 (en) * 2002-01-24 2003-07-24 Dygon John G. Remotely driven system for multi-product and multi-platform testing
US20040015975A1 (en) * 2002-04-17 2004-01-22 Sun Microsystems, Inc. Interface for distributed processing framework system
US6779134B1 (en) * 2000-06-27 2004-08-17 Ati International Srl Software test system and method
US20050138426A1 (en) 2003-11-07 2005-06-23 Brian Styslinger Method, system, and apparatus for managing, monitoring, auditing, cataloging, scoring, and improving vulnerability assessment tests, as well as automating retesting efforts and elements of tests
US20070033441A1 (en) * 2005-08-03 2007-02-08 Abhay Sathe System for and method of multi-location test execution
US7334162B1 (en) 2003-01-29 2008-02-19 Sun Microsystems, Inc. Dynamic distribution of test execution
US20080163165A1 (en) 2006-12-28 2008-07-03 Sap Ag. method and framework for object code testing
US20090007078A1 (en) 2007-06-29 2009-01-01 Nabil Mounir Hoyek Computer-Implemented Systems And Methods For Software Application Testing
US20090138855A1 (en) 2007-11-22 2009-05-28 Microsoft Corporation Test impact feedback system for software developers
US20100180260A1 (en) 2009-01-10 2010-07-15 TestingCzars Software Solutions Private Limited Method and system for performing an automated quality assurance testing
US20110131001A1 (en) * 2009-11-30 2011-06-02 International Business Machines Corporation Open-service based test execution frameworks
US20110145795A1 (en) 2009-12-10 2011-06-16 Amol Khanapurkar System and method for automated performance testing in a dynamic production environment
US20120042210A1 (en) * 2010-08-12 2012-02-16 Salesforce.Com, Inc. On-demand services environment testing framework
US20120144373A1 (en) 2010-12-03 2012-06-07 Dcs Consultancy Services Limited Computer Program Testing
US20120151448A1 (en) * 2009-10-08 2012-06-14 International Business Machines Corporation Automated test execution plan generation
US20120174068A1 (en) 2010-12-30 2012-07-05 Sap Ag Testing Software Code
US20130042222A1 (en) 2011-08-08 2013-02-14 Computer Associates Think, Inc. Automating functionality test cases
US8386419B2 (en) 2011-05-12 2013-02-26 Narendar Yalamanchilli Data extraction and testing method and system
US20130055028A1 (en) * 2011-08-31 2013-02-28 Ebay Inc. Methods and systems for creating software tests as executable resources
US20130080999A1 (en) * 2011-09-26 2013-03-28 Microsoft Corporation Automated Testing for Hosted Applications on Various Computing Platforms
US20130152047A1 (en) * 2011-11-22 2013-06-13 Solano Labs, Inc System for distributed software quality improvement
US8578336B1 (en) * 2008-11-03 2013-11-05 United Services Automobile Association (Usaa) Systems and methods for providing a test automation framework having a unified user interface
US8745200B2 (en) * 2008-05-06 2014-06-03 Nvidia Corporation Testing operation of processors setup to operate in different modes
US20140157241A1 (en) 2012-12-03 2014-06-05 Ca, Inc. Code-free testing framework

Patent Citations (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360268B1 (en) * 1997-10-07 2002-03-19 Hewlett-Packard Company Distributed automated testing system
US20020062475A1 (en) 2000-04-04 2002-05-23 Jose Iborra Automatic software production system
US6779134B1 (en) * 2000-06-27 2004-08-17 Ati International Srl Software test system and method
US20030120829A1 (en) * 2001-07-11 2003-06-26 Sun Microsystems, Inc. Registry service for use in a distributed processing framework system and methods for implementing the same
US20030055936A1 (en) * 2001-09-11 2003-03-20 Sun Microsystems, Inc. Dynamic attributes for distributed test framework
US20030084429A1 (en) 2001-10-26 2003-05-01 Schaefer James S. Systems and methods for table driven automation testing of software programs
US20030131088A1 (en) * 2002-01-10 2003-07-10 Ibm Corporation Method and system for automatic selection of a test system in a network environment
US20030140138A1 (en) * 2002-01-24 2003-07-24 Dygon John G. Remotely driven system for multi-product and multi-platform testing
US20040015975A1 (en) * 2002-04-17 2004-01-22 Sun Microsystems, Inc. Interface for distributed processing framework system
US7334162B1 (en) 2003-01-29 2008-02-19 Sun Microsystems, Inc. Dynamic distribution of test execution
US20050138426A1 (en) 2003-11-07 2005-06-23 Brian Styslinger Method, system, and apparatus for managing, monitoring, auditing, cataloging, scoring, and improving vulnerability assessment tests, as well as automating retesting efforts and elements of tests
US20070033441A1 (en) * 2005-08-03 2007-02-08 Abhay Sathe System for and method of multi-location test execution
US20080163165A1 (en) 2006-12-28 2008-07-03 Sap Ag. method and framework for object code testing
US20090007078A1 (en) 2007-06-29 2009-01-01 Nabil Mounir Hoyek Computer-Implemented Systems And Methods For Software Application Testing
US20090138855A1 (en) 2007-11-22 2009-05-28 Microsoft Corporation Test impact feedback system for software developers
US8745200B2 (en) * 2008-05-06 2014-06-03 Nvidia Corporation Testing operation of processors setup to operate in different modes
US8578336B1 (en) * 2008-11-03 2013-11-05 United Services Automobile Association (Usaa) Systems and methods for providing a test automation framework having a unified user interface
US20100180260A1 (en) 2009-01-10 2010-07-15 TestingCzars Software Solutions Private Limited Method and system for performing an automated quality assurance testing
US20120151448A1 (en) * 2009-10-08 2012-06-14 International Business Machines Corporation Automated test execution plan generation
US20110131001A1 (en) * 2009-11-30 2011-06-02 International Business Machines Corporation Open-service based test execution frameworks
US20110145795A1 (en) 2009-12-10 2011-06-16 Amol Khanapurkar System and method for automated performance testing in a dynamic production environment
US20120042210A1 (en) * 2010-08-12 2012-02-16 Salesforce.Com, Inc. On-demand services environment testing framework
US20120144373A1 (en) 2010-12-03 2012-06-07 Dcs Consultancy Services Limited Computer Program Testing
US20120174068A1 (en) 2010-12-30 2012-07-05 Sap Ag Testing Software Code
US8386419B2 (en) 2011-05-12 2013-02-26 Narendar Yalamanchilli Data extraction and testing method and system
US20130042222A1 (en) 2011-08-08 2013-02-14 Computer Associates Think, Inc. Automating functionality test cases
US20130055028A1 (en) * 2011-08-31 2013-02-28 Ebay Inc. Methods and systems for creating software tests as executable resources
US20130080999A1 (en) * 2011-09-26 2013-03-28 Microsoft Corporation Automated Testing for Hosted Applications on Various Computing Platforms
US20130152047A1 (en) * 2011-11-22 2013-06-13 Solano Labs, Inc System for distributed software quality improvement
US20140157241A1 (en) 2012-12-03 2014-06-05 Ca, Inc. Code-free testing framework

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Fink, George, et al.; "Property-Based Testing; A New Approach to Testing for Assurance"; Software Engineering Notes, vol. 22, No. 4, pp. 74-80; Jul. 1997.
Rivera, Anibal; Final Office Action; U.S. Appl. No. 13/692,348; May 8, 2015; United States Patent and Trademark Office; Alexandria, VA.
Rivera, Anibal; Non-Final Office Action; U.S. Appl. No. 13/692,348; Aug. 15, 2014; United States Patent and Trademark Office; Alexandria, VA.
Rivera, Anibal; Non-Final Office Action; U.S. Appl. No. 13/692,348; Dec. 24, 2014; United States Patent and Trademark Office; Alexandria, VA.
Rivera, Anibal; Notice of Allowance; U.S. Appl. No. 13/692,348; dated Dec. 7, 2015; United States Patent and Trademark Office, Alexandria, VA.
Shaw, Mary, et al.; "Abstractions for Software Architecture and Tools to Support Them"; IEEE Transactions on Software Engineering, vol. 21, No. 4, Apr. 1995.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11275674B1 (en) * 2019-09-03 2022-03-15 Sprint Communications Company L.P. Operations support system (OSS) test tool

Also Published As

Publication number Publication date
US20140157057A1 (en) 2014-06-05
US9304894B2 (en) 2016-04-05
US20140157241A1 (en) 2014-06-05

Similar Documents

Publication Publication Date Title
US9612947B2 (en) Code-free testing framework
US10642725B2 (en) Automated test generation for multi-interface enterprise virtualization management environment
US10169035B1 (en) Customized static source code analysis
US10628243B1 (en) Validation framework for runtime connected API systems
CN107534571B (en) Method, system and computer readable medium for managing virtual network functions
US10341409B2 (en) Software version control without affecting a deployed container
US10977167B2 (en) Application monitoring with a decoupled monitoring tool
US20210211434A1 (en) Data security across data residency restriction boundaries
CN112119374A (en) Selectively providing mutual transport layer security using alternate server names
US9934135B2 (en) Generic test automation for application programming interface applications
CN106648556B (en) Method and device for front-end and back-end integrated development test
US10382313B2 (en) Test building for testing server operation
JP2021509498A (en) Computing device
US10552306B2 (en) Automated test generation for multi-interface and multi-platform enterprise virtualization management environment
US9760472B2 (en) Tenant code debugging in multi-tenant systems
US20160259795A1 (en) Distributed version control of orchestration templates
US20130254758A1 (en) Application Construction for Execution on Diverse Computing Infrastructures
US20220269582A1 (en) Method and system for synchronous development and testing of live, multi-tenant microservices based saas systems
CN113835842A (en) Service design method and system for simultaneously supporting monomer architecture and micro-service architecture
US20160232021A1 (en) Automated virtual machine provisioning based on defect state
US9892022B2 (en) Apparatus for minimally intrusive debugging of production user interface software
CN114237821A (en) Self-discovery method and device for Kubernetes container cluster, electronic device and storage medium
CN113495498A (en) Simulation method, simulator, device, and medium for hardware device
CN110083366A (en) The generation method of application runtime environment, calculates equipment and storage medium at device
Su et al. Continuous integration for web-based software infrastructures: Lessons learned on the webinos project

Legal Events

Date Code Title Description
AS Assignment

Owner name: CA, INC., NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FISHAIMER, TOMER;REEL/FRAME:029392/0787

Effective date: 20121202

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8