Abstract:
A method of automatically testing different software applications for defects, comprising the step of a test automation enabler (a) converting recorded test scripts into a generic format that is not application-centric and (b) storing the resultant non-application centric data in generic data containers. A computer-based implementation called OPUS can be easily operated by any user with basic knowledge of software testing principles and FTAT. After minimal training the user can use OPUS to implement test automation. OPUS is process based, methodical, stable, measurable, and repeatable by following a multi-stage process which is not domain, platform or application centric. The manual process of recording the test scripts is done in a functional test automation tool (FTAT). OPUS takes the recorded scripts, converts them into non application centric data and uses them for the automated testing process.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    This invention relates to a method of automatically testing different software applications for defects, using a test automation enabler. 
         [0003]    2. Description of the Prior Art 
       What is Test Automation? 
     Functional Testing—Manual 
       [0004]    Functional testing is the process of manually testing software for defects. The process involves comparison of expected behavior of the application with the actual and generation of test reports and evidences. This is a very tedious and laborious process which is error prone. 
         [0005]    Usually the manual test projects consume a large amount of effort and time and require a sizeable number of human resources to execute it. 
       Refer FIG. 1. Process Diagram—Functional Testing (Manual) 
     Functional Testing—Automation 
       [0006]    Functional test automation on the other hand enhances the quality of testing by eliminating manual testing issues substantially. Functional test automation is the process of applying FTATs to test software applications. FTAT can automate most of the manual test processes and most times can add significant value. FTATs allow the users to define procedures to compare expected application behavior with the actual and determine the outcome 
         [0007]    The following is the value proposition in using the FTAT. 
         [0008]    1. Precision testing and accurate results 
         [0009]    2. Less manual effort and shorter project timeline. 
         [0010]    3. Smaller project teams as compared with manual testing projects 
         [0011]    4. Automatic generation of reports and evidences. 
         [0012]    5. Reliability on the reproducibility of test results 
         [0013]    6. Reusability of processes and test automation assets 
         [0014]    7. More scalable 
       Refer FIG. 2: Process Diagram—Functional Automated Testing 
     SUMMARY OF THE INVENTION 
       [0015]    The invention is a method of automatically testing different software applications for defects, comprising the step of a test automation enabler (a) converting recorded test scripts into a generic format that is not application-centric and (b) storing the resultant non-application centric data in generic data containers. 
         [0016]    The software applications can be of different types and/or run on different platforms and/or different domains. The test automation enabler configures the generic data for test execution and runs the test configuration using a chosen FTAT (functional test automation tool). 
         [0017]    The invention is implemented in a computer-based system called OPUS. 
       What is OPUS? 
       [0018]    OPUS is a test automation enabler. It acts as an enabler to implement functional test automation using an FTAT. 
         [0019]    OPUS is process based, methodical, stable, measurable, and repeatable by following a multi-stage process which is not domain, platform or application centric. The manual process of recording the test scripts is done in a FTAT. OPUS converts the recorded scripts into non-application centric data (e.g. is not specific to any single application under test) and performs the automated testing. Four types of databases are supported; Oracle, MySQL, IBM DB2, and SQL. 
       Refer FIG. 11: Overview of OPUS. 
       [0020]    Functional test automation can be implemented without the use of Opus. Refer  FIG. 2 . 
         [0021]    The following are business benefits of using Opus in functional test automation:
       1. It eliminates programming. The tool has does not need any programming and it is not an extension of any industry standard test automation framework.   2. It greatly reduces or eliminates design and development effort. Refer  FIG. 9 .   3. Opus is compatible and works with proprietary, free-ware and open-source tools, offering the business stakeholder a uniform and process driven functional test automation solution, irrespective of the FTAT or the QMS. Refer  FIG. 7 .   4. During Test Asset Generation, Opus identifies the unique business process from test cases by reverse engineering using a distinct method. Not only does it identify the unique functional paths or business processes but it also automatically groups associated test cases to those business processes. This enables the business user to test the AUT based on business processes rather than test cases
           Refer  FIG. 10 .   
           5. Opus has the capability to schedule and execute tests based on one or many combinations of business processes or test cases (using multiple configurations within Opus) across a network of systems without the aid of an QMS.       
 
       Quick Overview 
       [0000]    
       
         
           
             Using OPUS removes the need for technical expertise—In a fairly simple process OPUS picks up recorded test scripts, executes the selected tests, and uploads the results into a compatible Quality Management System. See Appendix H. 
             OPUS allows data to be modified by simple text editing on the User Interface—The values recorded for input fields, objects, or class names can easily be changed. Refer  FIGS. 75 ,  76  and  77 . See also Appendix H. 
             Redundant steps in test cases can be avoided using the Dynamic Key feature—specifics as in Unique Features of Opus below. 
             OPUS handles multiple test configurations and allows test cases to be grouped and configured based on user preferences. 
             OPUS identifies the unique business processes—Test cases are categorised based on their business flow and each process is given an identifier and multiple validation points. This empowers the user with a greater understanding of the processes and flows involved, making OPUS highly business centric. 
             OPUS Audit Trail allows changes to test data to be tracked—change history can be viewed and the data reverted to a specific change if necessary. 
             OPUS Version Differentiator—A revolutionary feature that analyses new versions of applications under test through an ingenious process, and locates changes in the version&#39;s user interface. The reports generated help gauge the impact of these changes, and greatly enhance the decision making process on the managing of the existing regression suites, and testing of the new version. OPUS successfully bridges the gap where traditional test automation fails. 
           
         
       
     
       Unique Features of OPUS 
       [0035]    1. Non-Application Centric Data (NCD)
       OPUS is a test automation enabler in which different types of applications across platforms and domains can be automated. See Appendix A for a list of the platforms currently supported.   OPUS converts the recorded test scripts produced using the FTAT into an OPUS recognised format, and stores the data in secure generic data containers (GDC).   Test scripts which are centric to the functional tests tools, contain the user actions captured on the application under test (AUT), and contain all the necessary information to perform testing. OPUS uses these scripts and other repository information in a specific format as input. The NCD is then derived from these scripts by OPUS, in a unique format which contains test, configuration and control data.       
 
       Refer FIG. 12: Non Application Centric Data 
       [0039]    2. Generic Data Containers (GM) 
         [0040]    OPUS uses Generic Data Containers to store its data. GDC are a finite set of tables with no specific field names, but with uniform field definitions. The columns are used generically to store the data in a random placement. 
         [0041]    3. Intelligent Script Generator (SG) 
         [0042]    OPUS Intelligent Script Generator uses the data in the GDC and converts it into scripts which are recognised by the functional testing tools. These scripts are then executed by the FTAT. OPUS can create the test scripts along with the test data, sequence of execution, fail-safe mechanisms, test verification and validation points, test evidence to be captured, and other actions that need to be taken. 
         [0043]    The scripts generated will also extract the actual values for the test conditions and store them in the GDC for OPUS to generate results for both on screen display and reporting purposes. 
         [0044]    Any single or group of test cases can be selected and run. Their related scripts can be packaged, and data generated, without any change to the original test scripts. 
       Refer FIG. 13: Intelligent Script Generator 
       [0045]    4. Test Tool Engine (TTE) 
         [0046]    OPUS Test Tool Engine takes the output from the ISG to drive the testing tool to perform automated testing. TTE uses the FTAT to execute the scripts in an expected manner. TTE will use the most suitable method for driving the FTAT based on a number of factors including operating systems, development platforms and FTAT capabilities. 
       Refer FIG. 14: Test Tool Engine 
       [0047]    5. Data Security Algorithms (DSA) 
         [0048]    OPUS Data Security Algorithms takes human-readable data as its input. It is first encrypted and then converted into hexadecimal form. The converted hexadecimal data is scrambled by randomly choosing multiple scrambling algorithms, and is then stored in GDC. There are three levels of security implemented by the Data Security Algorithm:
       Level 1—Encryption   Level 2—Hexadecimal Conversion   Level 3—Scrambling       
 
       Refer: FIG. 15 Data Security Algorithm 
       [0052]    To retrieve the data, the process operates in reverse; OPUS fetches the data from the GDC and unscrambles it. The unscrambled hexadecimal data is converted into encrypted ASCII data. The encrypted ASCII data is decrypted by OPUS before it is used for testing. 
         [0053]    6. Advanced Data Change Engine (DCE) 
         [0054]    Using OPUS Advanced Data Change Engine, the data used for testing can be changed throughout the test pack, with minimal effort, by entering the existing value and the new value. The new value will be changed in the entire test pack, or selected test case(s)/flows without modifying the script or re-importing/reprocessing them. 
         [0055]    OPUS uses the configuration details for identifying the data that needs to be modified, and makes the changes accordingly in the GDC. The changed data is generated as script for subsequent test executions. 
         [0056]    7. Dynamic Key Optimizer (DKO) 
         [0057]    Dynamic Keys can be used to:
       Avoid redundant test steps   Fetch a value generated by the AUT during the execution process that will be used at a later stage.   Minimize the impact due to changes in data       
 
         [0061]    To avoid redundant steps in test cases the Dynamic Key Optimizer is used to group the selected steps in the test cases, and a unique dynamic key is set for each group. The subsequent steps can be called by specifying the dynamic key. 
         [0062]    Sometimes, the AUT creates data as a part of the execution, which needs to be validated or reused as inputs for other test cases. The Dynamic Key Optimizer feature can be used in these circumstances to capture the dynamically generated value and use it later. 
         [0063]    To minimise the impact of data change, a value can be assigned to a Dynamic Key which can be used across the test pack where necessary. When the test data needs to be changed, the value can be changed in the dynamic key instead of changing it in all the places where the data is used. 
         [0064]    8. OPUS Audit Trail (OAT) 
         [0065]    OPUS Audit Trail feature is the ability to track changes made to test data that is stored in the GDC. Along with the original and the changed value, OAT also saves the user and system information from where the change is being made, and the date and time of the change. 
         [0066]    Using OPUS, users can view the change history and can revert to a specific change if necessary. 
         [0067]    9. Multiple Test Configuration (MTC) 
         [0068]    OPUS Multiple Test Configuration allows test cases to be grouped and configured based on user preference and the need, purpose, or requirement for testing the AUT. Multiple configurations can be created for the same test pack. Each configuration can have its own synchronisation attributes, fail-safe mechanisms, option to export results to external quality management systems, and can be executed simultaneously as independent units. 
         [0069]    An example of how MTC could be used would be to have separate configurations for smoke testing, or the testing of a particular module within an AUT, or grouping of all high priority test cases within an AUT for an emergency fix etc. 
         [0070]    10. Extreme Exception Handler (EEH) 
         [0071]    Extreme Exception Handler is used to handle exceptions when any power off/system crash happens when OPUS is processing. OPUS has the intelligence to resume the process, within a defined tolerance, from where it had been stopped and continue the automated testing. OPUS uses several exception handling strategies and can handle known and unknown scenarios. 
         [0072]    11. Upload Test Results into a Quality Management System 
         [0073]    OPUS has the ability to upload the test execution results, with the captured screen shots and other test evidence, into the quality management system (QMS). This happens for every applicable step of the test case and provides a full history of all aspects of the test. See Appendix B for a full list of compatible QMS. 
         [0000]    Refer  FIG. 16 : Upload Test Results into the QMS 
         [0074]    12. Test Scheduler 
         [0075]    OPUS has the option to schedule the execution process on multiple recognized and compatible machines at a specified date and time. The status can be viewed on a notification icon in the notification tray. The scheduler can also be stopped and rescheduled at any time. 
         [0076]    13. Unique Business Process Identifier (BPI) 
         [0077]    OPUS has the intelligence to identify the unique business processes in the application. It is capable of grouping the test cases based on their business process flow, and each process will be given a unique Business Process Identifier. The test cases can be ordered, and the automation done more effectively and precisely based on the BPI. 
         [0078]    Refer to Appendix C for an example of how a business process relates to a business object and definitions of flow, module and condition, as used within Net Magnus applications. 
         [0079]    14. Unique Business Object Identifier (BOI) 
         [0080]    OPUS identifies the unique business objects in the application, and automatically generates a unique identifier. The Business Object Identifier is associated with a class within the AUT. This can then be associated with test data and/or test conditions. The BOI can be called from anywhere in the application. 
         [0081]    15. Real Time Test Progress Indicator (TPI) 
         [0082]    Test progress indicator shows the complete status of the test cases and a description of the current execution process. For each test step being executed, a description of the test and a screen shot is available to view, by selecting from a summary screen. 
         [0083]    16. Data Verification Control (DVC) 
         [0084]    OPUS Data Verification Control has the ability to verify the business object properties in the application, and also validate the back-end process such as application database verification, file comparison, string comparison etc. 
         [0085]    DVC can access multiple applications, across multiple platforms and verify one or more test condition relating to a single test step. 
         [0086]    17. Sequence Changer 
         [0087]    OPUS Sequence Changer gives the user the ability to change the sequence in which test cases are navigated and the sequence in which test conditions need to be validated, without having the need to generate new test scripts which are dependent on the FTAT. 
         [0088]    18. Version Differentiator 
         [0089]    The Version Differentiator analyses new versions of applications under test and locates changes in the version&#39;s user interface. This assists in gauging the impact of changes and helps better manage existing regression suites, and testing of the new version functionality. 
         [0090]    The individual functionality delivered by OPUS is bundled into discreet software components. Designers have ensured that the components are very cohesive and are responsible for a single behavior. The cohesiveness of the components alleviates many maintenance hiccups and checks the propagation of side effects as components undergoes changes. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0091]      FIG. 1 : Manual Test Processes 
           [0092]      FIG. 2 : Functional Test Automation Process 
           [0093]      FIG. 3 : Functional Test Automation Process using OPUS 
           [0094]      FIG. 4 : Manual Test Deployment Diagram 
           [0095]      FIG. 5 : Functional Test Automation Deployment Diagram 
           [0096]      FIG. 6 : OPUS enabled Test Automation Deployment Diagram 
           [0097]      FIG. 7 : FTAT based test automation 
           [0098]      FIG. 8 : OPUS enabled test automation 
           [0099]      FIG. 9 : Comparison between Automation SDLC and OPUS enabled Automation SDLC 
           [0100]      FIG. 10 : Business Process Flows and Sub Components (Modules) 
           [0101]      FIG. 11 : Overview of OPUS 
           [0102]      FIG. 12 : Non Application Centric Data 
           [0103]      FIG. 13 : Intelligent Script Generator 
           [0104]      FIG. 14 : Test Tool Engine. 
           [0105]      FIG. 15 : Data Security Algorithm 
           [0106]      FIG. 16 : Upload test Results into the QMS 
           [0107]      FIG. 17  Showing the properties of the flow as associations 
           [0108]      FIG. 18  Showing the properties of the module as associations 
           [0109]      FIG. 19  Showing the properties of Screen, Class and Field as associations 
           [0110]      FIG. 20 : Relationship between Business flow and application GUI 
           [0111]      FIG. 21 : Component Diagram 
           [0112]      FIG. 22 : Deployment Diagram 
           [0113]      FIG. 23 : Activity Diagram 
           [0114]      FIG. 24 : Generation Sub components 
           [0115]      FIG. 25 : Configuration Sub components 
           [0116]      FIG. 26 : Data modification Sub components 
           [0117]      FIG. 27 : Scheduler Sub components 
           [0118]      FIG. 28 : Execution Sub components 
           [0119]      FIG. 29 : Version differentiator Sub components 
           [0120]      FIG. 30 : Activity diagram for generation 
           [0121]      FIG. 31 : Sequence diagram for testpack creation in generation 
           [0122]      FIG. 32 : Sequence diagram for application details in generation 
           [0123]      FIG. 33 : Sequence diagram for module map generation in generation 
           [0124]      FIG. 34 : Sequence diagram for flowdata generation in generation 
           [0125]      FIG. 35 : Flowchart for generation 
           [0126]      FIG. 36 : Activity diagram for configuration 
           [0127]      FIG. 37 : Sequence diagram for New configuration in configuration 
           [0128]      FIG. 38 : Sequence diagram for Synchronisation in configuration 
           [0129]      FIG. 39 : Sequence diagram for Continue exception in configuration 
           [0130]      FIG. 40 : Sequence diagram for Logout exception in configuration 
           [0131]      FIG. 41 : Sequence diagram for Customisation in configuration 
           [0132]      FIG. 42 : Flowchart for configuration 
           [0133]      FIG. 43 : Activity diagram for Datamodification 
           [0134]      FIG. 44 : Sequence diagram for add new condition Datamodification 
           [0135]      FIG. 45 : Sequence diagram for add new step in Datamodification 
           [0136]      FIG. 46 : Sequence diagram for deleting step in Datamodification 
           [0137]      FIG. 47 : Sequence diagram for Advanced update in Datamodification 
           [0138]      FIG. 48 : Sequence diagram for Fine and replace in Datamodification 
           [0139]      FIG. 49 : Sequence diagram for sequence change in Datamodification 
           [0140]      FIG. 50 : Sequence diagram for Add new object in Datamodification 
           [0141]      FIG. 51 : Sequence diagram for Add new module in Datamodification 
           [0142]      FIG. 52 : Sequence diagram for New dynamic key in Datamodification 
           [0143]      FIG. 53 : Sequence diagram for Rollback dynamic key in Datamodification 
           [0144]      FIG. 54 : Sequence diagram for Audit trail in Datamodification 
           [0145]      FIG. 55 : Flowchart for Datamodification 
           [0146]      FIG. 56 : Activity diagram for Scheduler 
           [0147]      FIG. 57 : Sequence diagram for scheduling in Scheduler 
           [0148]      FIG. 58 : Flowchart for Scheduler 
           [0149]      FIG. 59 : Activity Diagram for Execution 
           [0150]      FIG. 60 : Sequence Diagram for Test Preparation in Execution 
           [0151]      FIG. 61 : Sequence Diagram for Script Generation in Execution 
           [0152]      FIG. 62 : Sequence Diagram for Test Results in Execution 
           [0153]      FIG. 63 : Sequence Diagram for Power off Exception in Execution 
           [0154]      FIG. 64 : Flow Chart for Execution 
           [0155]      FIG. 65 : Activity diagram for Version Differentiator 
           [0156]      FIG. 66 : Sequence diagram for test creation in Version Differentiator. 
           [0157]      FIG. 67 : Sequence diagram for script generation in Version Differentiator 
           [0158]      FIG. 68 : Sequence diagram for test execution in Version Differentiator 
           [0159]      FIG. 69 : Flowchart for Version differentiator 
           [0160]      FIG. 70 : Sequence diagram for Encryption 
           [0161]      FIG. 71 : foreign exchange portal screen shot 
           [0162]      FIG. 72 : foreign exchange portal screen shot 
           [0163]      FIG. 73 : OPUS GUI showing how OPUS converts the QTP scripts to OPUS formats (Step  1 ) 
           [0164]      FIG. 74 : OPUS GUI showing Group Test cases configuration (Step  2 ) 
           [0165]      FIG. 75 : OPUS GUI showing data modification (Step  3 ) 
           [0166]      FIG. 76 : OPUS GUI showing an update condition (Step  4 ) 
           [0167]      FIG. 77 : OPUS GUI showing another update condition (Step  5 ) 
           [0168]      FIG. 78 : OPUS GUI showing viewing results (Step  6 ) 
           [0169]      FIG. 79 : OPUS GUI showing condition details (Step  7 ) 
       
    
    
     DETAILED DESCRIPTION 
     Product Engineering 
       [0170]    OPUS is built on .Net platform, using C# as the programming language. The designers have adopted OOP approach to design the programs and code libraries. The design is highly modular and layered to achieve high degree of agility and extensibility to accommodate change without breaking the code and the functionality Designers have applied design pattern principles where ever applicable to build application structure from loosely coupled components that interact with each other to deliver the system functionality. 
         [0171]    The individual functionality delivered by OPUS is bundled into discreet software components. Designers have ensured that the components are very cohesive and are responsible for a single behavior. The cohesiveness of the components alleviates many maintenance hiccups and checks the propagation of side effects as components undergoes changes. 
       Product Architecture 
       [0172]    The system architecture provides a high level view of the functional components and sub components and depicts how they communicate with each other. System architecture has been developed using UML, will show the different models of the system such as deployment diagram, component and sub-components. 
         [0173]    The core design objective of OPUS evolves around the effective implementation of functional path traversal and investigation of errors arising out of this process. A functional path can also be termed as a FLOW. 
         [0174]    A flow will always have a logical start and end point. And, the flow&#39;s traversal need not necessarily start and end within the boundaries of one application. 
       Refer FIG. 17 Showing the Properties of the Flow as Associations 
       [0175]    A Flow may comprise of one or many business processes, which will be termed as MODULE. In other words a Module could be defined as a complete functional sub-unit with well-defined start and end points traversed by the flow. The module composition within a flow is defined. 
         [0176]    Generally, multiplicities are defined with a lower bound and an upper bound. The lower bound may be any positive number or zero; the upper bound is any positive number or * (for unlimited). By default, the elements in a multi-valued multiplicity form a set. The modules are associated to the flow in defined manner or ordered fashion. The module is associated with a well-defined set of sub-process/s (back or front-end), which accomplish its defined objective. For example, generation of an XML file might be a backend module, and Transaction initiation can be a front-end module. 
       Refer FIG. 18 Showing the Properties of the Module as Associations 
       [0177]    The backend modules predominantly deal with procedures and packages, which will be referred in general as Backend Processes (BP). Their front-end equivalents will be termed as Screens. Their objectives, dependencies, error conditions, start and end points are clearly defined. 
       Refer FIG. 19 Showing the Properties of Screen, Class and Field as Associations 
       [0178]    A GUI screen can have multiple fields, which have been termed as OBJECTS at a high level. Every Object has a state and behaviour at any given point. A CLASS is a set of objects that share a common structure and a common behaviour. Classes are useful because they act as a blueprint for objects. In object-oriented design, complexity is managed using abstraction. Abstraction is the elimination of the irrelevant and the amplification of the essential. 
         [0179]    For example, a typical Login Module has two objects for taking specific input values from the user e.g. User Name and Password. But, both the objects are of the same Class (edit-set as identified by HP WinRunner for example). 
         [0180]    Hence, the design deals with the Functional paths as Flows. The sub-functional processes are defined as modules. Further, the modules are defined as a set of BP&#39;s or Screens. And, finally the Screens are further associated with Classes and Objects. 
       Refer FIG. 20: Relationship Between Business Flow and Application GUI. 
     System Components 
       [0181]    The main architectural components of the system are 
       OPUS Main 
       [0182]    OPUS Main is the core component that acts as a controller and interacts with other components to deliver the functionality 
       Generation 
       [0183]    The recorded data script is uploaded to OPUS through the generation component, and the data fetched from the recorded inputs (recorded data script) is stored in the GDC in a table format. 
       Configuration 
       [0184]    This component manages multiple Test component created under a Test Pack 
       Data Modification 
       [0185]    The data can be modified by using the data modification sub-component. 
       Execution 
       [0186]    Execution component executes the scripts using the selected FTAT. Execution component re generates the scripts from Module map and Flow data and feeds it to the FTAT. 
       Scheduler 
       [0187]    The scheduling sub-component is used to schedule the execution for processing, and the test execution sub-component is used to process the required data, and store the results in the GDC. 
       QMS 
       [0188]    OPUS is capable of uploading Test results to any of the supporting Quality management systems 
       FTAT Components 
       [0189]    OPUS uses FTAT component to invoke the FTAT and drive the automation 
       Results 
       [0190]    This is a key component which manages the test results and evidence. Results and evidences are stored in DB tables 
       Version Differentiator 
       [0191]    Version differentiator uses the Module map and compares it with the information on the newly learned objects of another version of the application and highlights changes 
       Database Components 
       [0192]    Database component provides Database services to perform as select, insert update and delete operations. This component does not have a sub component 
       Component Diagram 
       [0193]    Component diagrams provide a physical view of the current model. The component diagram shows the organizations and dependencies among software components. Calling dependencies among components are shown as dependency relationships between components and interfaces on other components. Component diagrams contain Component packages, Components, Interfaces and Dependency relationships. 
         [0194]    The model shown in  FIG. 21  depicts the high-level component breakdown of the OPUS design 
       Refer FIG. 21: Component Diagram 
     Deployment Diagram 
       [0195]    A deployment diagram shows how the OPUS components are deployed in the run-time environment and how they communicate with other software components such as Functional testing tools, Database servers and Quality managements systems 
       Refer FIG. 22: Deployment Diagram 
     Activity Diagram 
       [0196]    The main window that will be displayed with nine high level components:
       OPUS Main   Generation   Configuration   Data modification   Execution   Scheduler   QMS   FTAT component   Results   Version differentiator       
 
       Refer FIG. 23: Activity Diagram 
     Sub System Architecture 
       [0207]    A sub system architecture defines the structural components of a component. Each major component described above is made up of a number of related and interacting sub components. Each sub component delivers a distinct functionality. 
         [0208]    In OPUS not all components has sub component break down 
         [0209]    The following section enumerates the main components and associated sub components with diagrams 
       Sub Components 
       [0210]    Following are the list of Components and related Sub components which are elaborated in their respective sections 
         [0211]    1. Generation
       a) Testpack Creation   b) Application details   c) Modulemap Generation   d) Flowdata Generation       
 
       Refer FIG. 24: Generation Sub Components 
       [0216]    2. Configuration
       a) New configuration   b) Synchronisation   c) Continue exception   d) Logout exception   e) Customisation       
 
       Refer FIG. 25: Configuration Sub Components 
       [0222]    3. Data Modification
       a) Add condition   b) Add step   c) Delete step in a Test case can be deleted using this sub component   d) Find and replace   e) Advanced update   f) Sequence change   h) Add new object   i) Add new module   j) Create dynamic key   k) Rollback dynamic key   l) Audit Trail       
 
       Refer FIG. 26: Data Modification Sub Components 
       [0234]    4 Scheduler
       a) Scheduling       
 
       Refer FIG. 27: Scheduler Sub Components 
       [0236]    5 Execution
       a) Test Preparation   In this stage OPUS creates the necessary resources which includes Test identifiers for each Test Cases, DB and network connectivity   b) Script Generation   This component retrieves the scramble and encrypted scripts from the GDC and reconstructs the FTAT specific automation script   c) Test execution   This sub component invokes the FTAT to initiate automated testing using the script regenerated by the Script Generation sub component   d) Result generation—Result management is performed by this component   e) QMS Upload   Test results are uploaded to the supported QMS. This sub component interfaces between OPUS and QMS tool       
 
         [0246]    Refer  FIG. 28 : Execution Sub Components. 
         [0247]    6 Version Differentiator
       a) Test creation   b) Script generation for Version differentiator   c) Version Differentiator Execution       
 
       Refer FIG. 29: Version Differentiator Sub Components 
     Generation 
       [0251]    During generation, OPUS organizes the Test cases into Test Packs. A Test pack consists of one or many Configurations. Configuration in turn consists of individual Test Cases. 
         [0252]    OPUS identifies distinct business flows in the AUT by determining the sequence of Windows referred in the Test Case. Multiple Test Cases may cover the same business flow; hence they are grouped under the same business flow. 
         [0253]    Business flows and creation of configurations are covered in the later sections. 
         [0254]    OPUS creates individual Databases for each Test Pack. Test Pack name and the supporting Database name will be the same. The Test cases are stored in a Test Pack in a format specified by OPUS. 
         [0255]    As discussed an individual Database is created for each Test Pack. The Database is then populated with the full schema as per OPUS specification. 
       Activity Diagram—Sub Components 
     Refer FIG. 30: Activity Diagram for Generation 
     Sub Components 
       [0256]    Following is the list of sub components and associated Sequence diagrams 
       Testpack Creation 
       [0257]    A Test pack is the basic unit of Test asset. A Test pack contains all the GUI objects and business flow information. The key information also includes AUT name, AUT release version, Company name, initial module no and initial flow Id, FTAT tool name and add-ins 
         [0258]    For each Test case individual Databases is created in the Test pack name given by the user. User must have privileges to log into the DB server. User is also allowed to choose any of the DB servers supported by OPUS 
       Refer FIG. 31: Sequence Diagram for Testpack Creation in Generation 
     Application Details 
       [0259]    OPUS needs to know details regarding the AUT and the FTAT. This includes application path release number name of the FTAT tool, FTAT add-ins FTAT object repository path initial module number and flow id. 
       Refer FIG. 32: Sequence Diagram for Application Details in Generation 
     Modulemap Generation 
       [0260]    Individual Test Pack includes a Module map. A Module map is a repository that contains information on various windows and associated objects referred in a test script. 
         [0261]    Each Window is assigned a unique identifier. Each object found on the window is also assigned a unique identifier. The object identifier consists of two parts. The first part is the module identifier. The next part is a unique serial number which is hyphenated with Module identifier. 
       Refer FIG. 33: Sequence Diagram for Modulemap Generation in Generation 
     Flowdata Generation 
       [0262]    OPUS processes FTAT scripts to separate information on Objects, data and conditions and store them separately in Table1 and Table3. Data and conditions, which are stored together, are concatenated with a delimiter and stored in the same table. 
         [0263]    Steps consisting of objects in sequence are assigned a unique Test Id. A different object ID is assigned to the steps should any of the object reappear in the sequence 
       Refer FIG. 34: Sequence Diagram for Flowdata Generation in Generation 
     Product Design 
     Flow Chart 
     Refer FIG. 35: Flowchart for Generation 
     Algorithm 
     Testpack Creation 
     Steps: 
       [0264]    Object: Generation Main Form 
         [0265]    Capture Test Pack Name 
         [0266]    Capture User Name 
         [0267]    Capture Password (Encrypted) 
         [0268]    Select Data source from the Dialog box. System to display existing Network sources. 
         [0269]    Select the Testing Tool 
         [0270]    Click on Command button (‘Create’) to create a new Test Pack 
         [0271]    The event handler of the Command Button to perform the following Task 
         [0272]    Validate the following: 
         [0273]    Test Pack Name should not be Null 
         [0274]    User Name should not be Null 
         [0275]    Password should not be Null 
         [0276]    Data source should not be Null 
         [0277]    One of the Testing tool option is mandatory 
         [0278]    If validation succeeds
       Call function Create_Database( )       
 
         [0280]    End If 
         [0281]    Object: Generation Library 
         [0282]    Method: CreateDatabase( ) 
         [0283]    Connect to Database using the Credentials given above—Test Pack Name, DB Source, User Name and Password. 
         [0284]    If successfully connected throw Error Message as ‘Data Base Already Exists’ as Database name must be unique. 
         [0285]    Else 
         [0286]    Create DSN 
         [0287]    Validate query calling the object ‘Generation Library’ 
         [0288]    Object: Generation Library 
         [0289]    Method: Validate the Query( ) 
         [0290]    Steps: 
         [0291]    Validate Query 
         [0292]    Object: Database Library 
         [0293]    Method: Query( ) 
         [0294]    Steps: 
         [0295]    Create a Database in the name of the Test Pack 
         [0296]    If duplicate DB name display error message 
         [0297]    On Error creating Database, display error message 
         [0298]    Set Test tools add-in. 
       Application Details 
     Steps: 
       [0299]    Object: Generation Main Form 
         [0300]    Capture Application Name 
         [0301]    Capture Company name 
         [0302]    Capture Application Release no 
         [0303]    Choose Test tool add-in 
         [0304]    Capture the folder path of the script 
         [0305]    Capture the QTP object repository path 
         [0306]    Capture the initial Module number 
         [0307]    Capture the initial flow id number. 
         [0308]    Read all the scripts from the folder path specified above. 
         [0309]    Insert Test case information into the Database (Table2) 
         [0310]    Retrieve Test case information from the Database 
         [0311]    If the number of records retrieved I&lt;=0, flash message to re enter the correct scripts path 
         [0312]    Display Test case names on the screen 
         [0313]    Allow the user to choose the Test cases by selecting them 
         [0314]    Before the user input is saved to DB perform the following validation 
         [0315]    Display error message if Company name is null 
         [0316]    Display error message if Application name is null 
         [0317]    Display error message if Application release value is null 
         [0318]    Display error message if the number of the selected Test Cases is null 
         [0319]    Display error message if initial module id is null 
         [0320]    Display error message if initial flow id is null 
         [0321]    Display error message if input folder path is null 
         [0322]    Display error message if tool repository path is null 
         [0323]    Retrieve the ‘add-in’ from the check box and store it in an array 
         [0324]    Prompt the user for confirmation before saves. 
         [0325]    On confirmation Call OPUSLibrary.ExecuteQuery( ) 
         [0326]    Object: OPUSLibrary 
         [0327]    Method: ExecuteQuery( ) 
         [0328]    Object: SecurityLibrary 
         [0329]    Method: EncryptApplicationDetails( ) 
       Steps: 
       [0330]    Encrypt the following information: Initial module number, Initial flow id and scripts folder path 
         [0331]    Encrypt the following information: Company name, Application name, Application release number and Add in details. 
         [0332]    Retrieve the repository file from the folder specified. 
         [0333]    Convert the data in the file to byte stream 
         [0334]    Convert the byte stream data to BASE64 encrypted format 
         [0335]    Convert the BASE64 encrypted data using NMSI proprietary algorithm 
         [0336]    Store the encrypted Repository data in Table2 
         [0337]    Call the method DatabaseLibrary.InsertApplicationDetailsintoTable2( ) 
         [0338]    Object: DatabaseLibrary 
         [0339]    Method: InsertApplicationDetailsintoTable2( ) 
       Steps: 
       [0340]    Insert the following encrypted data into Table2 
         [0341]    Initial module number, Initial flow id and scripts folder path 
         [0342]    Company name, Application name, Application release number and Add in details. 
         [0343]    Object repository 
       Module Map Generation 
     Steps: 
       [0344]    Individual Test Pack includes a Module map. A Module map is a repository that contains information on various windows and associated objects referred in a test script. 
         [0345]    Each Window is assigned a unique identifier. Each object found on the window is also assigned a unique identifier. The object identifier consists of two parts. The first part is the module identifier. The next part is a unique serial number which is hyphenated with Module identifier. 
         [0346]    As explained, a window is uniquely identified in the Object Repository. 
         [0347]    Retrieve the following data from Table2 of the Test Pack Database and store them in Data row Collection 
         [0348]    1. Application Name 
         [0349]    2. Company name 
         [0350]    3. Application Release no 
         [0351]    4. Test tool add-in 
         [0352]    5. Folder path of the script 
         [0353]    6. QTP object repository path 
         [0354]    7. Initial Module number 
         [0355]    8. Initial flow id number. 
         [0356]    If the number of rows returned is &lt;1 flash error message 
         [0357]    Else
       Retrieve values for the above mentioned data and store it in respective variables.   Call the Module map generation Routine to generate Module map information.       
 
         [0360]    End If 
         [0361]    Object: GenerationLibrary 
         [0362]    Method: GetTestCases( ) 
         [0363]    Get all the selected Test Case names from the Database 
         [0364]    Call GenerationQTPLibrary.GetScriptValues( ) 
         [0365]    Object: GenerationQTPLibrary 
         [0366]    Method: GetScriptValues( ) 
         [0367]    FOR EACH Test Case Name in the Data set 
         [0368]    Read the script from the specified path and store it in array
       FOR EACH element (line of script) in the array       
 
         [0370]    From each line extract the following 
         [0371]    Window type and logical name 
         [0372]    Object type and logical name 
         [0373]    Each window will be assigned a unique identifier 
         [0374]    An object on the window is identified by the window it is associated with, object logical name and object class. 
         [0375]    Each object on the Window is assigned a unique identifier (Object ID) 
         [0376]    Object ID consists of Window id and Object id separated by hyphen. 
         [0377]    The first object on the Window is a dummy object which has the object id made up of Window Id and Window logical name. 
         [0378]    The second object is also a dummy object that&#39;s assigned an object id of 2 prefixed by Window name 
         [0379]    All other Window objects are assigned ids starting from 3 and prefixed by Window id Insert the following into Module Map in the Database, after encryption 
         [0380]    1. Module No 
         [0381]    2. Window type and logical name 
         [0382]    3. Object type and logical name
       END FOR       
 
         [0384]    END FOR 
       Flow Data Generation 
     Steps: 
       [0385]    Object:Generation Library 
         [0386]    Method:Get TestCases( ) 
         [0387]    Retrieve from the Table2 all the stored Testcases selected by the user for the Testpack 
         [0388]    FOR EACH TEST CASE
       Read the Test case into an array   Call CreateFlowDataSheet( )       
 
         [0391]    END FOR 
         [0392]    Method: CreateFlowDataSheet( ) 
         [0393]    Create Flow data table 
         [0394]    Retrieve the last Test Id value from the Database 
         [0395]    Increment the value by one. 
         [0396]    Object:GenerationQTPLibrary 
         [0397]    Method: FlowSequenceGeneration( ) 
         [0398]    FOR EACH SELECTED TEST CASE 
         [0399]    Read a script line 
         [0400]    Create arrays for storing Window, object, data and checkpoints information 
         [0401]    Separate Window, object, data and checkpoints and store it in an array 
         [0402]    Get object ID from the Module Map 
         [0403]    Get checkpoint information for the object for the window from the script&#39;s results log file. 
         [0404]    Assign Window name to a string variable if not already assigned. 
         [0405]    Return the business flow string 
         [0406]    Return object id array and Data condition/value array 
         [0407]    END FOR 
         [0408]    Method:FlowGeneration( ) 
         [0409]    Retrieve business flow string explained above 
         [0410]    Take the string 
         [0411]    Break it up into individual windows 
         [0412]    Get module id for each window 
         [0413]    Concatenate all the module Ids 
         [0414]    Check in the Table2 if the flow already exists 
         [0415]    If exists
       Append the current Test case name to the existing flow   Update Database with the new value       
 
         [0418]    Else 
         [0419]    Create a new flow with the module sequence and add Test case name\ 
         [0420]    Insert into DB 
         [0421]    End if 
         [0422]    Return Module sequence 
         [0423]    Method: FlowDataMainFunction( ) 
         [0424]    Within a Test Case a set of steps consisting of unique window objects references in a sequence is assigned a unique step id. A new step id is generated should any window object reference in the sequence reappear in the test step or a new Window is referred in the test step. Hence in the database table a test id represents a series of test steps concatenated into a string. However each test step is demarcated by a unique delimiter. 
         [0425]    In sum each instance of object reference in a Test Case will have unique Test Id. This is very important as data and checkpoints may vary with different instances of the same object within the Test Case. 
         [0426]    This representation of test step facilitates easy retrieval, insert and modification of test steps in opus. 
       Example 
       [0427]      
         [0000]    
       
         
               
               
               
               
               
             
           
               
                   
                   
               
               
                   
                 Test 
                   
                   
                   
               
               
                   
                 Id 
                 Test Steps 
                 Window 
                 Object 
               
               
                   
                   
               
             
             
               
                   
                 1 
                 1 
                 W1 
                 Obj1 
               
               
                   
                 1 
                 2 
                 W1 
                 Obj2 
               
               
                   
                 1 
                 3 
                 W1 
                 Obj3 
               
               
                   
                 2 
                 4 
                 W1 
                 Obj1 
               
               
                   
                 2 
                 5 
                 W4 
                 Obj1 
               
               
                   
                   
               
             
          
         
       
     
         [0428]    Maintain two arrays for object id and data value and conditions 
         [0429]    Maintain string for Module sequence returned from the above function 
         [0430]    Generate a Test Id 
         [0431]    Encrypt and save the values in the two arrays to the Flow data tables in the Database (Table1 &amp; Table 3) 
       Configuration 
       [0432]    A Test configuration is defined as a collection of Test cases that are executed to test a functional area in the AUT. A Test Pack typically encompasses a number of Test Configurations and each configuration may contain one or more Test cases. 
         [0433]    A functional area in AUT can be sub divided into functional modules. Functional modules are sub divided into Business flows. A Business flow in turn consists of a number of AUT user interfaces or windows that provide a certain functionality to the user. As far as OPUS is concerned a AUT UI/Window is the granular unit for testing. 
         [0434]    OPUS demands that automation test scripts are organized and stored in system folders that correspond to different module in the AUT. Hence Test scripts developed to cover a particular module will invariably be closely related and may overlap while covering application functionality 
         [0435]    OPUS smartly identifies business flows within the system by observing the sequence of Application windows referred while recording the script. Test Cases which refer the same sequence of Application windows fall under the same business flow. 
         [0436]    On the screen where testers create the test configurations, the system should list the modules, the corresponding business flows in each module and all the test cases that map to a business flow. 
       Activity Diagram—Sub Components 
     Refer FIG. 36: Activity Diagram for Configuration Sub Components 
       [0437]    Following is the list of sub components and associated Sequence diagrams 
       New Configuration 
       [0438]    A Test configuration is defined as a collection of Test cases that are executed to test a functional area in the AUT. A Test Pack typically encompasses a number of Test Configurations and each configuration may contain one or more Test cases. This component allows the user to create configurations 
       Refer FIG. 37: Sequence Diagram for New Configuration in Configuration 
     Synchronisation 
       [0439]    This allows configuration of object wait time for the state of an object to be set 
       Refer FIG. 38: Sequence Diagram for Synchronisation in Configuration 
     Continue Exception 
       [0440]    This sub component allows the user to define the parameters to handle run time exceptions that may occur during test execution 
       Refer FIG. 39: Sequence Diagram for Continue Exception in Configuration 
     Logout Exception 
       [0441]    The sub component allows the user to define the log out scenario when the FTAT comes across a situation which necessitates the user to log out. 
       Refer FIG. 40: Sequence Diagram for Logout Exception in Configuration 
     Customisation 
       [0442]    Customisation sub component allows the user to edit the module, flow &amp; condition names. 
       Refer FIG. 41: Sequence Diagram for Customisation in Configuration. 
     Product Design 
     Flowchart 
     Refer FIG. 42: Flowchart for Configuration 
     Algorithms 
       [0443]    Object: OPUS Main Form 
         [0444]    User navigates to OPUS Main form 
         [0445]    User chooses the option ‘New’ 
         [0446]    System to display the form to create Configuration 
         [0447]    The form contains a Edit box to accept the Test configuration name. The value should not be null. Length not to exceed 25 characters. Check the Database table to ensure that the Configuration name is unique 
         [0448]    Throw error in the event of duplicate value. 
         [0449]    Return control to Edit Box for the user to enter another value. 
         [0450]    OPUS to display the form to capture the following: 
         [0451]    User Name 
         [0452]    Password 
         [0453]    Test Pack Name—Test Pack name is retrieved from the System registry. Registry is update while creating the Test Pack 
         [0454]    Data Source 
         [0455]    System to display all the DB servers OPUS has access to. 
         [0456]    Connect to DB with the above credentials. Display confirmation message on successful connection. 
         [0457]    Display error message on failure. 
         [0458]    Select Test Cases 
         [0459]    Object: OPUS Main Form 
         [0460]    User chooses the option to add Test cases to the configuration. 
         [0461]    System to display the following information to the user for selection:
       Modules—OPUS to display all the modules. The modules are folders where QTP test scripts are organized Each folder contains automated test script to test a particular functionality of the AUT   On choosing the module, the system automatically retrieves the related Test cases under a particular module Also provide option to select all the modules in one shot   Flow.—These are business work flow identified from different test cases. A module may consists of multiple business flows. There might be multiple test cases testing a series of Application windows that make up a business flow. Tester to select the desired business flows.   On choosing the flow, the system retrieves the related Test cases that cover a business flow. Also provide option to select all the business flows in one shot   Test Cases—System to list all the Test cases that relate to a business flow. The user selects the desired Test cases Also provide option to select all the Test cases in one shot       
 
       Data Modification 
       [0467]    Data modification is the facility to perform add, edit and delete operations on the following objects
       Window—With in OPUS these are representations of the application user interfaces. Each Window object in the Database is assigned a unique identifier. The logical name of the window as assigned by the tool is also saved in the Database.   Objects associated with Windows—In a typical Window based system, a window contains a number of controls. These are Edit boxes, Drop-down lists, Command buttons, Radio buttons and many more. During recording, each control or object is assigned a unique logical name with which the automation tool locates the object on the window during execution. OPUS assigns a unique identifier to each object and saves the object information along with it&#39;s logical name.   Data associated with Windows and its objects—A typical test step contains object references, action and also test-data. Test data is entered by the user during test recording. OPUS allows the users to edit the test data, at later stages, on the respective OPUS user interfaces. This obviates the need for the user to edit the FTAT script direct, thereby eliminating the risk of injecting defects.   Data conditions associated with Windows and its objects—Tester may define validation points against any of the Windows or objects associated with it. QTP allows the users to define check points against objects while recording. OPUS allows the user to add some check points not available in the QTP environment.       
 
       Activity Diagram—Sub Components 
     Refer FIG. 43: Activity Diagram for Datamodification 
     Sub Components 
       [0472]    Given below is the list of Sub components and their associated diagrams Add New Condition 
         [0473]    Conditions are verification points defined against AUT UI objects. Conditions can be defined against a Window or any of the objects on the Window. 
         [0474]    Conditions are predefined in the system. User is allowed to select a condition from the drop-down list. 
       Refer FIG. 44: Sequence Diagram for Add New Condition in Datamodification 
     Add New Step 
       [0475]    As the test case is recoded, test steps may refer one or more unique windows in a sequence. All these test steps are assigned a unique test id. Should a test step refer a Window that has already appeared in the sequence, is assigned a new Test id. Test id helps uniquely identify different instances of an objects appearing in different test step. This helps in associating data and conditions with a particular instance of the object. 
       Refer FIG. 45: Sequence Diagram for Add New Step in Datamodification 
     Delete Step 
       [0476]    Delete step in a Test case can be deleted using this sub component 
       Refer FIG. 46: Sequence Diagram for Deleting Step in Datamodification 
     Advanced Update 
       [0477]    Test Data can be replaced globally with in a Test Pack. The operation affects all the Test Cases in a Test Pack. 
       Refer FIG. 47: Sequence Diagram for Advanced Update in Datamodification 
     Find and Replace 
       [0478]    This option is to allow users to search for a particular value in the Test Case and replace it with another value. The operation affects all the steps where there are occurrences of the search value. 
       Refer FIG. 48: Sequence Diagram for Fine and Replace in Datamodification 
     Sequence Change 
       [0479]    Sequence of test steps within a Test case can be changed 
       Refer FIG. 49: Sequence Diagram for Sequence Change in Datamodification 
     Add New Object 
       [0480]    When the application GUI changes the user can synchronize the Module map in OPUS, using this option 
       Refer FIG. 50: Sequence Diagram for Add New Object in Datamodification 
     Add New Module 
       [0481]    This component is used when the when a new window object has to be inserted in the Module map so that Module map stay synchronized 
       Refer FIG. 51: Sequence Diagram for Add New Module in Datamodification 
     Create Dynamic Key 
       [0482]    Dynamic key option allows the user to group common test steps across Test cases in a common container named Dynamic Key. A Dynamic key replaces the original steps. This helps eliminate redundancy and enhance maintenance of Test Cases as amendments to test steps are carried out in Dynamic key, which will reflect it all the Test cases where it&#39;s referred. 
       Refer FIG. 52: Sequence Diagram for New Dynamic Key in Datamodification 
     Rollback Dynamic Key 
       [0483]    Dynamic keys are optionally assigned to a Test Case to replace a set of test steps as explained above. If required, assignment of dynamic key can be rolled back using this option. In this case OPUS to insert the original test steps. 
       Refer FIG. 53: Sequence Diagram for Rollback Dynamic Key in Datamodification 
     Audit Trail 
       [0484]    OPUS Audit Trail feature is the ability to track changes made to test data that is stored in the GDC. Along with the original and the changed value, OAT also saves the user and system information from where the change is being made, and the date and time of the change. 
         [0485]    Using OPUS, users can view the change history and can revert back to a specific change if necessary. 
       Refer FIG. 54: Sequence Diagram for Audit Trail in Datamodification 
     Product Design 
     Flow Chart 
     Refer FIG. 55: Flowchart for Datamodification 
     Algorithms 
       [0486]    Add New Condition 
       Add New Step 
       [0487]    Navigate to DataModification main form 
         [0488]    Choose the option to insert new step 
         [0489]    Call object DatamodificationLibrary.Insert a new datarow( ) method 
         [0490]    Object: DataMOdificationLibrary 
         [0491]    Method: Insert a new datarow( ) 
         [0492]    System displays the screen to insert a new step. 
         [0493]    User places the cursor on the data grid where he wants to insert a new row. 
         [0494]    User selects the following from the respective drop-down list: 
         [0495]    Window object identifier 
         [0496]    The System to list all the Window objects stored in the Module map 
         [0497]    Object identifier 
         [0498]    The System to list all the objects, associated with the selected window, stored in the Module map 
         [0499]    Data 
         [0500]    User enters data. The system to validate for null 
         [0501]    Action 
         [0502]    The system lists all the action associated with the selected object. 
         [0503]    On confirmation 
         [0504]    Read Flow data table up to the record after which the new step has to be inserted 
         [0505]    Retrieve the last Test id and increment it by one 
         [0506]    Assign the newly generated Test id to the new test step. 
         [0507]    Append the new Test step to the last retrieved step sequence. 
       Delete Step 
       [0508]    User navigates to Datamodification main form 
         [0509]    Select the row to delete 
         [0510]    Call Data modification Library.Deleteselected rows from the grid 
         [0511]    On confirmation call DatabaseLibrary.DeleterowdetailsfromDatabase( ) to update the Table 
         [0512]    System to allow the user to delete any of the Test step. However there must be a minimum of one test step in a Test case. 
       Advanced Update 
     Find and Replace 
       [0513]    User navigates to DatamodificationMainForm 
         [0514]    Initiates the search and replace operation by calling Find and Replace Form 
         [0515]    User enters the search and substitute values in the dialog box displayed by the system 
         [0516]    Calls DatamodificationLibrary.LoadDetailsToFind to load details 
         [0517]    Calls DatamodificationLibrary.FindThe SpecifiedValue 
         [0518]    Calls DatamodificationLibrary.Replacethevaluewithnewvalue( ) to replace the occurrences of the search string with the new value. 
       Sequence Change 
       [0519]    User navigates to Datamodification Main Form 
         [0520]    User invokes the option to change the order of the test steps 
         [0521]    DatamodificationMainForm calls the 
         [0522]    DatamodificationLibrary.GetSequenceChangeDetails( ) 
         [0523]    DatamodificationLibrary.GetSequenceChangeDetails( ) 
         [0524]    The method DatamodificationLibrary.GetSequenceChangeDetails( ) returns the Test case details to be displayed 
         [0525]    Calls DatamodificationLibrary.GetSequenceChangetheSequence( ) 
         [0526]    DatamodificationLibrary.GetSequenceChangetheSequence( ) 
         [0527]    User selects the Test Case he wants to perform the operations on. The system displays the Test step on the data grid. 
         [0528]    User places the cursor on the test step on which he wants to effect sequence change. 
         [0529]    The system to display a dialog box. The Dialog box to have sections. 
         [0530]    The left section displays the current order of the objects on the referred window in the step 
         [0531]    The right section contains a text box which the user uses to define the order 
         [0532]    User selects the object on the left panel and click on the command button in between the sections to move the object to the text area in the right section. 
         [0533]    Call DatamodificationLibrary.update new seq details( ) 
         [0534]    DatamodificationLibrary.update new seq details( ) 
         [0535]    Before save the system to check if all the objects have been moved to the new order. DatabaseLibrary.UpdateSequencedetailsInLibrary( ) 
         [0536]    Save the changes to Database. 
         [0537]    Update the flow data to reflect the new order of changes. 
       Add New Object 
       [0538]    Navigate to DataModificationMainForm 
         [0539]    Call DataModificationLibrary.Add_Module( ) 
         [0540]    Object: DataModificationLibrary 
         [0541]    Method: Add_Module( ) 
         [0542]    Accept Object Id of the Window from the drop-down list 
         [0543]    Accept logical name of the object in the edit box. 
         [0544]    Check for null values. Check for special characters except hyphen. 
         [0545]    Check for duplicate of the value entered in the Module map. 
         [0546]    Warn the user in case of invalid characters. 
         [0547]    Call DatabaseLibrary.Update(add)thenewObject( ) to save 
         [0548]    On Save, generate an object ID for the object by hyphenating newly generated object sequence number to the window id. 
       Add New Module 
       [0549]    Navigate to DataModificationMainForm 
         [0550]    Call DataModificationLibrary.Add_Module( ) 
         [0551]    Object: DataModificationLibrary 
         [0552]    Method: Add_Module( ) 
       Steps: 
       [0553]    Accept new Module (window) name (Logical name) from the user 
         [0554]    Check full null values and special characters. 
         [0555]    Warn the use in case invalid characters 
         [0556]    Before saving value in the Module map table check if the object already exists 
         [0557]    If module does not already exist in the module map 
         [0558]    Generate a unique identifier for the object 
         [0559]    Add newly created object id and logical name to the Module map 
         [0560]    End If 
       Create Dynamic Key 
       [0561]    Initially a Dynamic key is created by a grouping a number of test steps in a Tests Case and assigning the set a name. Dynamic Key data is stored in TABLE2 
         [0562]    User navigates to DatamodificationMainForm 
         [0563]    User selects the test steps to be defined as a Dynamic key 
         [0564]    Right click to display the menu 
         [0565]    User to choose the option ‘Create new Dynamic Key’ 
         [0566]    User enters the name of the key and saves. 
         [0567]    Calls DatamodificationLibrary.CreateKeyFromFlowData 
         [0568]    Object: DatamodificationLibrary 
         [0569]    Method: CreateKeyFromFlowData 
         [0570]    Steps: 
         [0571]    Check if the key exists in the Database. 
         [0572]    Call method updataDataSheet( ) 
         [0573]    Method: updataDataSheet( ) 
         [0574]    Steps: 
         [0575]    Calls OPUSLibrary.ExecuteQuery( ) 
         [0576]    Insert dynamic key values into Flowdata table. 
         [0577]    Call viewDymaicFlowData of DataModificationLibrary—Retrieve the Key value from Database and replace the steps with the Key value/reference 
       Rollback Dynamic Key 
       [0578]    User navigates to the form ‘DataModificationMainForm. And chooses the relevant option 
         [0579]    Call DataModificationLibrary.RollBackDynamicKey( ) This method calls OPUSMainForm.Auditchanges( ) 
         [0580]    OPUSMainForm.Auditchanges( ) records the event that Dynamic key is rolled back DataModificationLibrary calls DatabaseLibrary.DeletetheDynamic.( ) to delete from flow data table. 
         [0581]    Calls ViewDynamicFlowData( ) to view the changes—steps restored. 
       Audit Trail 
       [0582]    User navigates to OPUS MainForm 
         [0583]    Call OPUSLIbrary.getValuesFromDB—this returns audit information from the Database. 
         [0584]    Display the Audit 
       Scheduler 
       [0585]    Scheduler is used to schedule the execution for processing, and the execution component is used to process the scheduled execution. Thus privileged user is allowed to schedule execution in any of the networked systems he has right to access. The OPUS starts execution at the scheduled time and posts results to the central Database. Scheduling is performed by the privileged user. 
       Activity Diagram—Sub Components 
     Refer FIG. 56: Activity Diagram for Scheduler 
     Sub Components 
       [0586]    Given below is the list of Sub components and their associated diagrams 
       Scheduling 
     Refer FIG. 57: Sequence Diagram for Scheduling in Scheduler 
     Product Design 
     Flow Chart 
     Refer FIG. 58: Flowchart for Scheduler 
     Algorithm 
     Scheduling 
       [0587]    Get the existing value from database 
         [0588]    Call the scheduler main form 
         [0589]    Call DisplaySchedulingDetails( ) method in Scheduler main form 
         [0590]    Call the add scheduler form 
         [0591]    Call the getNetworkComputers( ) method to get list of computers connected in the network. 
         [0592]    Give details to add new schedule task 
         [0593]    Call saveSchedulerDetails( ) method to save new schedule details 
         [0594]    Call loadScheduleDetails( ) method to get the details of schedule task 
         [0595]    Call checkSchedulerStatus( ) method to check the status of the scheduler 
         [0596]    Check the timer in regular interval to execute schedule task 
         [0597]    If timer reached the time call the Execution exe to execute the schedule task. 
         [0598]    An change the schedule task status 
       Execution 
       [0599]    Test Execution is the process by which OPUS executes the selected Test configurations by invoking the appropriate FTAT. Before execution starts, OPUS reads the flow data table. Flow data table holds the original script in a format that OPUS maintains, and quite different from FTAT script format.
       To recall, OPUS, during generation, using the FTAT automation script, separates the various objects such as Windows, Window controls, test data and data conditions. The Window and object information is stored exclusively after encryption in a logical repository called Module Map. The information relating to Test data and data conditions are stored after encryption in another logical repository called Flow Data. Both the repositories are supported by two underlying physical DB tables       
 
         [0601]    During execution OPUS re-builds the scripts that lie encrypted, scrambled and stored in different tables. The re constructed script is in the original format that the FTAT recorded during automation of the manual test cases. 
         [0602]    To execute the Test script, OPUS invokes the FTAT and transfers to it the re constructed script. 
         [0603]    FTAT run the script and post the results and images to a designated directory. At the end of each test script run OPUS collects the results and the associated images (Images highlight the objects for which verification points failed) and upload them to TABLE2 of OPUS Database. 
         [0604]    Test results, showing the success/failure status of each test step, are displayed on completion of the whole test. Results are shown in Data grid on the respective Results screen. When the user clicks on the test step OPUS retrieves the associated image from the database to display. 
         [0605]    The Test Execution consists of three stages. They are preparation, script generation, execution and results. 
         [0606]    OPUS allows the users to execute a Test configuration which contains automated test scripts. Test configurations are contained in Test Packs. User chooses the Test Pack, the Test configuration and Test Cases with in a Test configuration. User can execute only one Test configuration at a time, though he may choose multiple Test cases with in a configuration to execute. 
       Activity Diagram—Sub Components 
       [0607]    This diagram shows the workflow within the main component and all the sub components involved in the flow 
       Refer FIG. 59: Activity Diagram for Execution 
     Sub Components 
       [0608]    Following is the list of sub components and associated Sequence diagrams 
       Test Preparation 
       [0609]    In this stage OPUS creates the necessary resources which includes Test identifiers for each Test Cases, DB and network connectivity 
       Refer FIG. 60: Sequence Diagram for Test Preparation in Execution 
     Script Generation 
       [0610]    This component retrieves the scrambled and encrypted scripts from the GDC and reconstructs the FTAT specific automation script 
       Refer FIG. 61: Sequence Diagram for Script Generation in Execution 
     Test Results 
       [0611]    As mentioned in the sections above execution is per Test Case. OPUS evaluates the success or failure of conditions by matching the expected data stored in the Database, with the data generated during test execution, and writes the status to Results Database. 
       Refer FIG. 62: Sequence Diagram for Test Results in Execution 
     Power off Exception 
       [0612]    OPUS is smart enough to learn whether execution is completed successfully or disrupted by any unforeseen events such as power failure. 
         [0613]    In the event of aborted execution, when OPUS is launched subsequently, it identifies the Test Case which was not successfully executed. OPUS starts execution from the aborted Test Case and continues till the whole Test Configuration is executed. 
       Refer FIG. 63: Sequence Diagram for Power Off Exception in Execution 
     Product Design 
     Flow Chart 
     Refer FIG. 64: Flow Chart for Execution 
     Algorithms 
     Test Preparation 
       [0614]    User navigates to OPUSMainForm to initiate run 
         [0615]    User selects Test Pack Test configuration and Test Cases 
         [0616]    call runTestToolAddon( ) which calls OPUS_QTP.Exe 
         [0617]    OPUS_QTP.Exe QTPMainForm opens up 
         [0618]    THis calls DatabaseLibrary.GetDBDIIs 
         [0619]    This returns all the objects for the corresponding Database 
         [0620]    From QTP Main form call DSNCreate 
         [0621]    THis creates a DSN for the Database 
         [0622]    QTOMainForm calls getRunName( ) 
         [0623]    This determines how many times test pack run is run already increment by one and return the run name 
         [0624]    QTPMAin form calls QTP Execution 
       Script Generation 
       [0625]    Execution form calls OPUSLibrary.getExecutedScripts( ) 
         [0626]    This object calls DatabaseLibrary.getScriptDetails( ) 
         [0627]    The object retrieves the relevant test cases to be run—selected test cases in configuration 
         [0628]    Control return to Execution form 
         [0629]    Execution form Calls QTPcodeCreate( ). This method creates the requisite folder structure and the default files 
         [0630]    QTPcodeCreate( ) calls createTPScript( ) which re creates VB script for QTP. The scripts are generated as follows 
         [0631]    Take the first Test case in the Test Configuration 
         [0632]    Identify the objects associated with the Test case, in the Flow data repository 
         [0633]    Identify Data conditions associated with the Test Case in the Flow Data repository 
         [0634]    Identify action conditions associated with the object identified in the steps above. 
         [0635]    Re construct the QTP script by composing objects data and action 
         [0636]    Add VB Script Library for the QTP to the generated script 
         [0637]    Call OPUSLIbray.getLogoutExceptionDetails( ) to return information regarding unplanned log out 
         [0638]    Return control to execution Form 
         [0639]    Call OPUSLibrary.getContinueException( ) to get details regarding exceptions encountered during previous run 
         [0640]    Return control to Execution Form 
         [0641]    Call QTPLibrary.QTP_ExceptionScriptGeneration( ) to generate Generates exception related script 
         [0642]    Call OPUSLibrary.continueLogoutExceptionScript( ) 
         [0643]    This method calls DatabaseLibrary.insert into Database( ) to insert Logout and continue exception data to the Database. 
         [0644]    From ExecutionForm calls QTPLibrary.QTP_MainScriptGen( ) 
         [0645]    This method in turn calls DBLibrary.getModuleMap&amp;FlowDet( ) 
         [0646]    This method returns Map and flow details 
         [0647]    Control returns to QTP Library 
         [0648]    Calls QTPSubDriver( ) 
         [0649]    This method divides script into normal script and condition script If condition script calls Condition handler to generate this generates condition script 
         [0650]    Else call QTPSubDriver( ) 
         [0651]    End If 
         [0652]    Calls Setval( ) to generate normal QTP Script 
         [0653]    Call OPUSLibrary.storeTheGeneratedScript to invoke DatabaseLibrary to save generated QTP script in TABLE5 
         [0654]    Return control to Execution Main Form 
       Test Results 
       [0655]    Control is with ExecutionForm 
         [0656]    Calls result( ) 
         [0657]    Result( ) method calls Resultlibrary.resultGeneration( ) 
         [0658]    Resultlibrary.resultGeneration( ) calls getDBvalues( ) to obtain results from TABLE5 (temporary storage) 
         [0659]    Return control to ResultLibrary 
         [0660]    Calls conditionvalidate( ) 
         [0661]    This method retrieves data for the conditions and matches with data generated during run to determine pass/fail status of the condition 
         [0662]    Control is returned to ResultLibrary 
         [0663]    Calls DBLibrary.insert results to TABLE4 
         [0664]    Control returns to ExecutionForm 
         [0665]    Calls ResultLib.StoreErrorImage( ) 
         [0666]    Calls DBLibraryget.DBValues . . . 8 to retrieve Error Test Cases with image 
         [0667]    If present call DatabaseLibrary.InsertErrorTestCaseDet( ) to insert error information into TABLE4 
         [0668]    Calls DBLibrary.getResultStatus 
         [0669]    Get Condition status from DB 
         [0670]    Control returns to ResultFun 
         [0671]    Check pass/fail status 
       Power Off Exception 
       [0672]    OPUS checks if Test Execution control file exists in the folder. This file contains the execution status 
         [0673]    If it exists 
         [0674]    Call PowerOffExceptionCall( ) 
         [0675]    Call OPUSMainForm.OPUSMainForm( ) 
         [0676]    Call OpenConfig( ) to open configuration file. 
         [0677]    Call runTestToAddOn( ) to start execution. 
         [0678]    Call QTP MainForm. The rest of the steps are the as in Test execution. 
       Version Differentiator 
     Activity Diagram—Sub Components 
     Refer FIG. 65: Activity Diagram for Version Differentiator. 
     Sub Components 
     Test Creation 
     Refer FIG. 66: Sequence Diagram for Test Creation in Version Differentiator. 
     Script Generation for Version Differentiator 
     Refer FIG. 67: Sequence Diagram for Script Generation in Version Differentiator 
     Version Differentiator Execution 
     Refer FIG. 68: Sequence Diagram for Test Execution in Version Differentiator 
     Flow Chart 
     Refer FIG. 69: Flowchart for Version Differentiator 
     Algorithm 
     Test Creation 
       [0679]    User navigates to OPUSMainForm to initiate Version differentiator 
         [0680]    User Select the Analyze Tab and 
         [0681]    User Enter the Version Name and Click the run button 
         [0682]    call runTestToolAddon( ) which calls OPUS_VD.Exe 
         [0683]    OPUS_VDExe VDMainForm opens up 
         [0684]    THis calls DatabaseLibrary.GetDBDIIs 
         [0685]    This returns all the objects for the corresponding Database 
         [0686]    From VD Main form call DSNCreate 
         [0687]    THis creates a DSN for the Database 
         [0688]    VDMain form calls VD Execution 
       Script Generation for Version Differentiator 
       [0689]    Execution form calls OPUSLibrary.getExecutedScripts( ) 
         [0690]    This object calls DatabaseLibrary.getScriptDetails( ) 
         [0691]    The object retrieves the all test cases to be run—selected test cases in Test Packs 
         [0692]    Control return to Execution form 
         [0693]    Execution form Calls VDcodeCreate( ). This method creates the requisite folder structure and the default files 
         [0694]    VDcodeCreate( ) calls createVDScript( ) which re creates VB script for VD. The scripts are generated as follows 
         [0695]    Take the first Test case in the Test Configuration 
         [0696]    Identify the objects associated with the Test case, in the Flow data repository 
         [0697]    Identify Data conditions associated with the Test Case in the Flow Data repository 
         [0698]    Identify action conditions associated with the object identified in the steps above. 
         [0699]    Re construct the VD script by composing objects data and action 
         [0700]    Add VB Script Library for the VD to the generated script 
         [0701]    Call OPUSLIbray.getLogoutExceptionDetails( ) to return information regarding unplanned log out 
         [0702]    Return control to execution Form 
         [0703]    Call OPUSLibrary.getContinueException( ) to get details regarding exceptions encountered during previous run 
         [0704]    Return control to Execution Form 
         [0705]    Call VDLibrary.VD_ExceptionScriptGeneration( ) to generate Generates exception related script 
         [0706]    Call OPUSLibrary.continueLogoutExceptionScript( ) 
         [0707]    This method calls DatabaseLibrary.insert into Database( ) to insert Logout and continue exception data to the Database. 
         [0708]    From ExecutionForm calls VDLibrary.VD_MainScriptGen( ) 
         [0709]    This method in turn calls DBLibrary.getModuleMap&amp;FlowDet( ) 
         [0710]    This method returns Map and flow details 
         [0711]    Control returns to VD Library 
         [0712]    Calls VDSubDriver( ) 
         [0713]    This method divides script into normal script and condition script and also added the get objects properties script into normal script 
         [0714]    If condition script call Condition handler to generate this generates condition script 
         [0715]    Else call VDSubDriver( ) 
         [0716]    End If 
         [0717]    Calls Setval( ) to generate normal VD Script 
         [0718]    Call OPUSLibrary.storeTheGeneratedScript to invoke DatabaseLibrary to save generated VD script in TABLE5 
         [0719]    Return control to Execution Main Form 
       Version Differentiator Execution 
       [0720]    Control is with ExecutionForm 
         [0721]    Calls result( ) 
         [0722]    Result( ) method calls Resultlibrary.resultGeneration( ) 
         [0723]    Resultlibrary.resultGeneration( ) calls getDBvalues( ) to obtain results from TABLE5 (temporary storage) 
         [0724]    Return control to ResultLibrary 
         [0725]    Calls conditionvalidate( ) 
         [0726]    This method retrieves data for the conditions and matches with data generated during run to determine pass/fail status of the condition 
         [0727]    Control is returned to ResultLibrary 
         [0728]    Calls DBLibrary.insert results to TABLE4 
         [0729]    Control returns to ExecutionForm 
         [0730]    Calls ResultLib.StoreErrorImage( ) 
         [0731]    Calls DBLibraryget.DBValues . . . 8 to retrieve Error Test Cases with image 
         [0732]    If present call DatabaseLibrary.InsertErrorTestCaseDet( ) to insert error information into TABLE4 
         [0733]    Calls DBLibrary.getResultStatus 
         [0734]    Get Condition status from DB 
         [0735]    Control returns to ResultFun 
         [0736]    Check pass/fail status 
       GLOSSARY 
       [0737]      
         [0000]    
       
         
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 ASCII 
                 American Standard Code for Information Interchange 
               
               
                   
                 AUT 
                 Application under test 
               
               
                   
                 BM 
                 Business module 
               
               
                   
                 BO 
                 Business object 
               
               
                   
                 BOI 
                 Business object identifier 
               
               
                   
                 BP 
                 Business process 
               
               
                   
                 BPI 
                 Business process identifier 
               
               
                   
                 CTP 
                 Common Test Platform 
               
               
                   
                 DB 
                 Database 
               
               
                   
                 DSA 
                 Data security algorithm 
               
               
                   
                 DVC 
                 DVC Data verification control 
               
               
                   
                 FTAT 
                 Functional test automation tool 
               
               
                   
                 GDC 
                 Generic data container 
               
               
                   
                 HP 
                 Hewlett-Packard 
               
               
                   
                 HP QC 
                 Hewlett-Packard Quality Center 
               
               
                   
                 IBM 
                 International Business Machines 
               
               
                   
                 ISG 
                 Intelligent script generator 
               
               
                   
                 MTC 
                 Multiple test configuration 
               
               
                   
                 NCD 
                 Non-application centric data 
               
               
                   
                 OAT 
                 OPUS Audit trail 
               
               
                   
                 QMS 
                 Quality management system 
               
               
                   
                 QTP 
                 QuickTest Professional 
               
               
                   
                 SQL 
                 Structured query language 
               
               
                   
                 TTE 
                 Test tool engine 
               
               
                   
                 TPI 
                 Test progress indicator 
               
               
                   
                 EEH 
                 Extreme exception handler 
               
               
                   
                 DKO 
                 Dynamic key optimizer 
               
               
                   
                 DCE 
                 Data change engine 
               
               
                   
                 HLT 
                 High Level Test Case 
               
               
                   
                 LLT 
                 Low Level Test Case 
               
               
                   
                   
               
             
          
         
       
     
       APPENDICES 
     Appendix A 
     Platforms Currently Supported by OPUS 
       [0738]    These are correct as at November 2011.
       Windows applications   Middleware   Client—Server applications   AS/400 or System i   Web applications   Java   NET Framework       
 
       Appendix B 
     Compatible Quality Management Systems 
       [0746]    Correct as at November 2011
       HP QC—Hewlett-Packard Quality Center   CTP—Net Magnus Common Test Platform       
 
       Appendix C 
     Example and Definitions 
       [0749]    Example of how the Business Process relates to a Business Object: 
         [0750]    1 AUT: Many Business Processes (BP) 
         [0751]    1 BP: Many Business Modules (BM) 
         [0752]    1 BM: Many Classes 
         [0753]    1 Class: Many Business Objects (BO) 
         [0754]    In an Internet banking application, classes could be a button and a text box. For the text box class, the BO could be the login text box and the password text box. 
       DEFINITIONS 
       [0755]    Flow—A Flow is a unique business process within the application under test (AUT). 
         [0756]    All unique business processes within the AUT are automatically generated by OPUS without the need for human intervention 
         [0757]    Module—A business process may comprise of one or more business components or modules. All unique modules are identified and associated with their corresponding business processes by OPUS in a fully automated manner. 
         [0758]    Condition—A test condition is the most granular element of a test. Test Condition definition, build and verification increases the testing efficiency of the automated suite. 
       Appendix D 
     Output File Formats 
       [0759]    These are correct as at November 2011.
       xls   pdf   csv   html   txt       
 
       Appendix E 
     Encryption 
     Refer FIG. 70: Sequence Diagram for Encryption 
     Steps: 
       [0765]    Convert Query values to Byte Array 
         [0766]    Add ‘Salt’ to the Byte Array 
         [0767]    Encrypt the Bytes with Cryptogram 
         [0768]    Converted the encrypted Array to String 
         [0769]    Converted the encrypted string to hexadecimal 
         [0770]    Scramble the values using various defined algorithms 
         [0771]    Store the values into different tables 
       Appendix F 
     Left Blank 
     Appendix G 
     Database Schema 
     Database Name: Test Pack Name 
     Name of the Table: TABLE 1 
       [0772]    Module map is a repository that holds information regarding the Application windows and related Window objects. Each object is assigned a unique identifier. Object identifier consists of two parts separated by hyphen. The first part is the Window identifier which is a unique serial number. The other part is a unique serial number to represent the object. 
         [0773]    A window and associated objects will have only single reference in the Module map, across the Test cases. Window and object information is not repeated even if the same window may appear in another test case. However if there are object windows newly referred in the Test case, OPUS shall append the information on these objects to the Module Map. 
         [0774]    Flow data represents the QTP scripts. OPUS processes QTP scripts to separate information on Objects data and conditions and store them separately in Table1 and Table3. Data and conditions are concatenated with a delimiter and stored in the same table. 
         [0775]    Steps consisting of objects in sequence are assigned a unique Test Id. A different object ID is assigned to the steps should any of the object reappear in the sequence 
       Module Map &amp; Flow Data 
       [0776]      
         [0000]    
       
         
               
               
               
               
               
             
           
               
                   
               
               
                 # 
                 Column name 
                 Type 
                 Size 
                 P.Key 
               
               
                   
               
             
             
               
                 1 
                 Column1 
                 Text 
                 Max. Size 
                   
               
               
                 2 
                 Column2 
                 Text 
                 Max. Size 
               
               
                 3 
                 Column3 
                 Text 
                 Max. Size 
               
               
                 4 
                 Column4 
                 Text 
                 Max. Size 
               
               
                 5 
                 Column5 
                 VARCHAR(3500) 
                 Max. Size 
                 Yes 
               
               
                 6 
                 Column6 
                 Text 
                 Max. Size 
               
               
                   
               
             
          
         
       
     
       Database Name: Test Pack Name 
     Name of the Table: TABLE 2 
     Application &amp; Test Pack Details 
       [0777]      
         [0000]    
       
         
               
               
               
               
             
           
               
                   
               
               
                 # 
                 Column name 
                 Type 
                 Size 
               
               
                   
               
             
             
               
                 1 
                 Column1 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 2 
                 Column2 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 3 
                 Column3 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 4 
                 Column4 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 5 
                 Column5 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 6 
                 Column6 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                   
               
             
          
         
       
     
       Database Name: Test Pack Name 
     Name of the Table: TABLE 3 
     Module Map &amp; Flow Data 
       [0778]      
         [0000]    
       
         
               
               
               
               
               
             
           
               
                   
               
               
                 # 
                 Column name 
                 Type 
                 Size 
                 P.Key 
               
               
                   
               
             
             
               
                 1 
                 Column1 
                 Text 
                 Max. Size 
                   
               
               
                 2 
                 Column2 
                 Text 
                 Max. Size 
               
               
                 3 
                 Column3 
                 Text 
                 Max. Size 
               
               
                 4 
                 Column4 
                 Text 
                 Max. Size 
               
               
                 5 
                 Column5 
                 Varchar(3500) 
                 Max. Size 
                 Yes 
               
               
                 6 
                 Column6 
                 Text 
                 Max. Size 
               
               
                   
               
             
          
         
       
     
       Database Name: Test Pack Name 
     Name of the Table: TABLE 4 
     Result 
       [0779]      
         [0000]    
       
         
               
               
               
               
             
           
               
                   
               
               
                 # 
                 Column name 
                 Type 
                 Size 
               
               
                   
               
             
             
               
                 1 
                 Column1 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 2 
                 Column2 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 3 
                 Column3 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 4 
                 Column4 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 5 
                 Column5 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 6 
                 Column6 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                   
               
             
          
         
       
     
       Database Name: Test Pack Name 
     Name of the Table: TABLE 5 
     Temporary Table 
       [0780]      
         [0000]    
       
         
               
               
               
               
             
           
               
                   
               
               
                 # 
                 Column name 
                 Type 
                 Size 
               
               
                   
               
             
             
               
                 1 
                 Column1 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 2 
                 Column2 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 3 
                 Column3 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 4 
                 Column4 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 5 
                 Column5 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                 6 
                 Column6 
                 Text 
                 Max. 
               
               
                   
                   
                   
                 Size 
               
               
                   
               
             
          
         
       
     
       Database Name: NMDB 
     Name of the Table: RTABLE 1 
     Data: Configuration Details 
     Temporary Table 
       [0781]      
         [0000]    
       
         
               
               
               
               
               
             
           
               
                   
                   
               
               
                   
                 # 
                 Column name 
                 Type 
                 Size 
               
               
                   
                   
               
             
             
               
                   
                 1 
                 Column1 
                 Text 
                 Max. Size 
               
               
                   
                 2 
                 Column2 
                 Text 
                 Max. Size 
               
               
                   
                 3 
                 Column3 
                 Text 
                 Max. Size 
               
               
                   
                 4 
                 Column4 
                 Text 
                 Max. Size 
               
               
                   
                 5 
                 Column5 
                 Text 
                 Max. Size 
               
               
                   
                 6 
                 Column6 
                 Text 
                 Max Size 
               
               
                   
                   
               
             
          
         
       
     
       Database Name: NMDB 
     Name of the Table: RTABLE 2 
     Audit Changes Details 
     Temporary Table 
       [0782]      
         [0000]    
       
         
               
               
               
               
               
             
           
               
                   
                   
               
               
                   
                 # 
                 Column name 
                 Type 
                 Size 
               
               
                   
                   
               
             
             
               
                   
                 1 
                 Column1 
                 Text 
                 Max. Size 
               
               
                   
                 2 
                 Column2 
                 Text 
                 Max. Size 
               
               
                   
                 3 
                 Column3 
                 Text 
                 Max. Size 
               
               
                   
                 4 
                 Column4 
                 Text 
                 Max. Size 
               
               
                   
                 5 
                 Column5 
                 Text 
                 Max. Size 
               
               
                   
                 6 
                 Column6 
                 Text 
                 Max Size 
               
               
                   
                   
               
             
          
         
       
     
       Database Name: Test Pack Name 
     Name of the Table: TABLE 6 
     Version Differentiator Table 
       [0783]      
         [0000]    
       
         
               
               
               
               
               
             
           
               
                   
                   
               
               
                   
                 # 
                 Column name 
                 Type 
                 Size 
               
               
                   
                   
               
             
             
               
                   
                 1 
                 Column1 
                 Text 
                 Max. Size 
               
               
                   
                 2 
                 Column2 
                 Text 
                 Max. Size 
               
               
                   
                 3 
                 Column3 
                 Text 
                 Max. Size 
               
               
                   
                 4 
                 Column4 
                 Text 
                 Max. Size 
               
               
                   
                 5 
                 Column5 
                 Text 
                 Max. Size 
               
               
                   
                 6 
                 Column6 
                 Text 
                 Max. Size 
               
               
                   
                   
               
             
          
         
       
     
       Appendix H 
     Comparison Between ‘Functional Test Automation’ and ‘Opus Enabled Functional Test Automation’ 
       [0784]    A foreign exchange portal (XE.com) has been selected to illustrate functional test automation using an FTAT alone. The same is also demonstrated using Opus along with an FTAT. 
       Refer FIG. 71 and FIG. 72. 
     Test Requirement 
       [0785]    The scope of the requirement is limited to retrieval of values from the portal and it&#39;s storage in DB tables. 
         [0786]    Connect to web site. Validate connection 
         [0787]    Set ‘Amount’ to 10000 
         [0788]    Choose INR as the ‘From’ currency 
         [0789]    Choose GBP as the ‘To’ currency 
         [0790]    Capture the displayed value and store in a data store for reference downstream 
       Automation Solution Using HP Quick Test Pro (QTP) a Functional Test Automation Tool (FTAT). 
       [0791]    QTP is a record and playback test automation tool primarily used to perform functional and regression testing of GUI applications. QTP automates testing by generating scripts which represent user actions on the application under test. The recorded scripts are executed or played back during regression test cycles. Users also add data verification points to the scripts which are validated during script playback. 
         [0792]    QTP fairly supports testing of basic application functionality in the record and playback mode. However, for advanced testing, the user needs to modify the played back script and introduce programmatic constructs. This requires technical users with programming knowledge who must also validate the scripts he or she writes there by impacting project time line and effort. 
         [0793]    To implement the above test requirement, the technical user captures the values from the screen using QTP native functions. However to save the values in the user defined DB tables, the user should modify the recorded scripts by adding logical routines in VB script as illustrated below. As is evident, user must be proficient in programming logic and the programming language which is VB script. Also the user must spend time and effort to test the script for possible bugs. This takes away considerable time off the test project schedule which in turn impacts the project deadline. 
         [0794]    The sample script for automating the above requirement is given below: 
         [0000]    
       
         
               
             
               
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
           
               
                   
               
             
             
               
                 
                   SystemUtil.Run “C:\Program Files\Internet 
                 
               
               
                 
                   Explorer\IEXPLORE.EXE”, “”, “C:\Documents and Settings\Netmagnus”, “open” 
                 
               
               
                   Browser ( “Browser” ) .Page ( “Page” ) .Sync   
               
               
                   Browser ( “Browser” ) .Navigate “http:/www.xe.com/”   
               
               
                   Browser ( “Browser” ) Page ( “XE  -  The World’s Favorite ) .Link ( “More currencies” ) .Click   
               
               
                   Browser ( “Browser” ) .Page ( “XE  -  Universal Currency” ) .WebEdit ( “Amount” ) .Set   
               
               
                 
                   “10000” 
                 
               
               
                   Browser ( “Browser” ) Page ( “XE  -  Universal Currency” ) .WebEdit ( “WebEdit” ) .Set “INR  - 
               
               
                 
                   Indian Rupee” 
                 
               
               
                   Browser ( “Browser” ) .Page ( “XE  -  Universal Currency” ) .WebEdit ( “WebEdit   —   2” ) .Set   
               
               
                   “GBP  -  British Pound”   
               
               
                   ‘Get the values from the object at run - time   
               
               
                   inputAmount = Browser ( “Browser” ) .Page ( “XE  -  Universal   
               
               
                   Currency” ) .WebEdit ( “Amount” ) .GetROProperty ( “value” ) 
               
               
                   currencyFrom = Browser ( “Browser” ) .Page ( “XE  -  Universal   
               
               
                   Currency” ) .WebEdit ( “WebEdit” ) .GetROProperty ( “value” ) 
               
               
                   currencyTo = Browser ( “Browser” ) .Page ( “XE  -  Universal   
               
               
                   Currency” ) .WebEdit ( “WebEdit   —   2” ) .GetROProperty ( “value” ) 
               
               
                   Browser ( Browser” ) .Page ( “XE  -  Universal Currency” ) .WebButton ( Convert” ) .Click   
               
               
                   convertedAmount = Browser ( “Browser” ) .Page ( “XE:  ( INR/GBP )  Indian   
               
               
                   Rupee” ) .WebTable ( “Mid - market” ) .GetCellData ( 3,3 ) 
               
               
                   Call insertvalues ( inputAmount,currencyFrom,currencyTo,convertedAmount ) 
               
               
                   Browser ( “Browser” ) .Page ( “XE: ( INR/GBP )  Indian Rupee” ) .WebTable ( “Mid - 
               
               
                   market” ) .Check CheckPoint ( “Mid - market” ) 
               
               
                   Browser ( “Browser” ) .Page ( “XE: ( INR/GBP )  Indian Rupee” ) .Sync   
               
               
                   Browser ( “Browser” ) .Close   
               
               
                 
                   ‘Function Name : insertvalues 
                 
               
               
                 
                   ‘Parameters : inputAmount,currencyFrom,currencyTo,outputAmount 
                 
               
               
                 
                   ‘Purpose : To store the values into database 
                 
               
               
                   Function insertvalues ( inputAmount,currencyFrom,currencyTo,outputAmout ) 
               
             
          
           
               
                   
                 
                   Dim dbCon 
                 
               
             
          
           
               
                   
                   Set dbCon = CreateObject ( “ADODB.Connection” ) 
               
               
                   
                   dbcon.Open ( “DSN=Test;UID=NetMagnus;PWD=netmag;APP=QuickTest   
               
             
          
           
               
                   Professional;WSID=NMSIDEMO03;DATABASE=TestDB;” ) 
               
             
          
           
               
                   
                   query = “insert into conversion   —   details values ( “ &amp;  inputAmount &amp; ”,‘“ &amp; 
               
             
          
           
               
                   currencyFrom &amp; ”’,‘“ &amp;  currencyTo &amp; ”’,‘“ &amp;  outputAmout &amp; ”’ ) ;”   
               
             
          
           
               
                   
                   dbCon.Execute ( query ) 
               
               
                   
                 
                   dbcon.Close 
                 
               
             
          
           
               
                 
                   End Function 
                 
               
               
                   
               
             
          
         
       
     
         [0795]    The script marked in bold is hand coded by the user. The script marked in italics is recorded on the FTAT. 
         [0000]    In Sum What the Script does is the Following 
         [0796]    Get the object property values at run-time 
         [0797]    Connect to DB 
         [0798]    Insert the captured values in the DB tables 
         [0000]    However this Requires the Tester to have Programming Skills 
       Automation Solution Using OPUS Enabler 
       [0799]    The same operation using Opus: 
         [0800]    The slightly complex Test requirement explained above is automated using OPUS without need of any programmatic skills. 
         [0801]    OPUS provides pre defined data functions on GUI which allows the user to implement the test requirement without modification to recorded scripts. This eliminates the need for a technical user who is proficient in programming, logic and DB operations. This unique feature of OPUS saves considerable time and effort which otherwise would have been spent on programming, debugging and defect fixing of the modified script. Naturally, OPUS boosts the productivity. 
         [0802]    When the user uses OPUS he needs to perform only simple basic recording using the automation tool. The script is given below: 
         [0000]    
       
         
               
             
           
               
                   
               
             
             
               
                 SystemUtil.Run “C:\Program Files\Internet 
               
               
                 Explorer\IEXPLORE.EXE”,“”,“C:\Documents and Settings\Netmagnus”,“open” 
               
               
                 Browser(“Browser”).Page(“Page”).Sync 
               
               
                 Browser(“Browser”).Navigate “http://www.xe.com/” 
               
               
                 Browser(“Browser”).Page(“XE - The World&#39;s Favorite”).Link(“More currencies”).Click 
               
               
                 Browser(“Browser”).Page(“XE - Universal Currency”).WebEdit(“Amount”).Set 
               
               
                 “10000” 
               
               
                 Browser(“Browser”).Page(“XE - Universal Currency”).WebEdit(“WebEdit”).Set “INR - 
               
               
                 Indian Rupee” 
               
               
                 Browser(“Browser”).Page(“XE - Universal Currency”).WebEdit(“WebEdit_2”).Set 
               
               
                 “GBP - British Pound” 
               
               
                 Browser(“Browser”).Page(“XE - Universal Currency”).WebButton(“Convert”).Click 
               
               
                 Browser(“Browser”).Page(“XE: (INR/GBP) Indian Rupee”).WebTable(“Mid- 
               
               
                 market”).Check CheckPoint(“Mid-market”) 
               
               
                 Browser(“Browser”).Page(“XE: (INR/GBP) Indian Rupee”).Sync 
               
               
                 Browser(“Browser”).Close 
               
               
                   
               
             
          
         
       
     
         [0803]    You can see that there are no programmatic constructs here. 
         [0804]    The script above is processed by OPUS and converted to its native format which again is very user friendly and allows the user to modify it without producing any undesirable bugs. Refer  FIG. 1 . 
         [0805]    To explain the process: 
         [0806]    Given below are the images of OPUS screens with steps, which facilitate the implementation of the above requirement without any programming. 
       Step  1   
       [0807]    OPUS converts the QTP scripts to OPUS formats 
         [0808]    Refer  FIG. 73 : Generation. This operation removes the requirement of the tester&#39;s capability to program/code 
       Step  2   
       [0809]    Group Test cases. Refer  FIG. 74 . Configuration 
       Step  3   
     Data Modification 
       [0810]    This is the screen on which the tester can view the original QTP script in OPUS format which is easy to modify without causing undesirable bugs. 
         [0811]    Refer  FIG. 75 : Data Modification 
         [0812]    This screen presents the original script in the OPUS native format. 
       Step  4   
       [0813]    This step uses OPUS built in functions to capture run time values from the web page explained above 
         [0814]    Refer  FIG. 76 : Update Condition 
       Step  5   
       [0815]    In this step the captured values are inserted into the DB tables. 
         [0816]    Refer  FIG. 77 : Update Condition 
       Step  6   
       [0817]    Viewing results 
         [0818]    Refer  FIG. 78 : Viewing Results 
       Step  7   
       [0819]    Refer  FIG. 77 . Condition details