User Tag List

Thanks Thanks:  0
Likes Likes:  0
Dislikes Dislikes:  0
Results 1 to 4 of 4

Thread: Extension Kit

  1. #1
    Junior Member
    Join Date
    Dec 1999
    Allendale, NJ, US
    Post Thanks / Like
    0 Post(s)
    0 Thread(s)
    Total Downloaded

    Extension Kit

    Can anyone point me in the direction where I might get detailed information on using the Extension Kit. I plead total ignorance.
    Thanks in advance,

  2. #2
    Senior Member
    Join Date
    Sep 1999
    San Jose,CA,USA
    Post Thanks / Like
    0 Post(s)
    0 Thread(s)
    Total Downloaded

    Re: Extension Kit


    I also plead my share of ignorance in this arena. One worry I always had in this area
    was could this potentially lead to application errors in the field.

    Has a hook that had to be placed in the AUT for Segue, ever to your knowlege caused a failure out in the field? Or possibly more to the point "could it"?

    Or has this EK interface been so well structured as to make that nearly impossible?
    I am exceedingly curious as to the answer on this one.

    Smoke me a kipper, I'll be back for breakfast!
    Richard Weth
    Sr. QA Engineer

  3. #3
    Senior Member
    Join Date
    Jul 1999
    Burlingame CA 94010
    Post Thanks / Like
    0 Post(s)
    0 Thread(s)
    Total Downloaded

    Re: Extension Kit


    The EK is a library of functions which allow a developer to define a class and methods inside the application's code. The user is allowed to declare this class/methods inside a 4-test file, then call the methods from test scripts. The methods can accept parameters and return any type of value, except pointers.

    You must purchase the EK from Segue. I'm not sure what the current price is. You only need one copy. Once the code is added to the application, any number of users can call the methods.

    The biggest hurdle is not writing the code, any developer can do that fairly easy. The difficulty is in getting development support for the project.

    Hope this helps.

    John W Green

  4. #4
    Senior Member
    Join Date
    Jun 2000
    Sunyyvale CA USA
    Post Thanks / Like
    0 Post(s)
    0 Thread(s)
    Total Downloaded

    Re: Extension Kit


    Please find the reply from Segue support for my question on this topic. I think I can post their reply here.

    The SilkTest Extention Kit (EK) is only available on Win32 platforms.
    The EK is a
    "tool set" consisting of C header files and a library. Its main purpose
    is to serve
    as a way for customers to build added functionality into SilkTest
    specifically for
    their application under test when that application has an unwieldy
    number of GUI
    objects that SilkTest cannot see, penetrate, or otherwise manipulate.
    What unwieldly
    means in this contxt is ultimately up to the customer as to what is too
    much 4Test
    customization to handle custom objects in the application.

    The way the EK works is that the customer uses it to build a an
    extension to the
    application that has a new 4Test component consisting of new classes,
    and/or functions. The extension then communicates directly with the
    application and
    the agent, rather than going through the Windows API in order to
    communicate and
    manipulate the application. Normally the SilkTest agent sends its
    queries and action
    requests to the Windows API on Win32 platforms, not directly to the

    When writing an extension for an application with the EK, you have a
    choice of
    imbedding the agent
    communication inside your application or making an external extension
    that can
    communicate directly
    with your application and with the SilkTest agent. Because use of the EK
    writing code and
    programming, the language of the extension is important to understand.

    The Extension Kit interface consists of C functions. However, many
    applications for which an extension is to be written are in C++. You can
    extension functions in C++ and create C wrapper functions for them.
    However, it
    would be handy to have a C++ class for the EK interface functions.

    The Extension Kit interfaces with 'assist.dll'. Extension writers can
    either link
    'assist.lib' into the AUT (application under test), or dynamically load
    'assist.dll'. If 'assist.lib' is statically linked, then the AUT will
    'assist.dll' to reside on the user's system. In that case, either
    testers must use a
    version of the AUT (the one that links in 'assist.lib') that differs
    from the
    shipped version, or the large 'assist.dll' must be shipped with the AUT.
    it is preferable to dynamically load 'assist.dll'. Dynamically loading
    requires code to be added to the AUT that loads the DLL and creates
    pointers to the
    DLL functions that the extension uses.

    Some Segue customers have created C++ classes that wrap the Extension
    Kit functions.
    They also take care of dynamically loading 'assist.dll' and creating
    pointers to the
    'assist.dll' functions. The class is briefly documented in the SilkTest
    version of the EK manual: Chapter 4, 'Advanced Topics' -> 'Loading
    libraries at
    runtime' -> 'Loading Libraries - Example 2'.

    The class is implemented as 2 files, 'FWxQapDynDll.cpp' and
    'FWxQapDynDll.h'. The
    original version of the functions can be downloaded from the Segue
    public web site:

    (When you are prompted for a username and password, you should enter the
    first word
    of your company
    name as the username and your customer ID as the password. If you have a
    maintenance contract
    with Segue, then you will gain access to this portion of the Segue web

    However, the original files only allow extension functions to accept
    zero or one
    parameter. For functions requiring more than 5 parameters, customers can
    modify the
    files themselves. It should be obvious how to do this from looking at
    the existing
    prototypes and implementations for 'RegisterClassFun' in the .cpp and .h
    files. You
    just need to follow the templating in these headers. Contact Technical
    Support for
    the files that you can use to see this. The .h file can be used as is.
    The .cpp file
    requires modification, since you must add in references to your
    (application-specific) extension functions. Search for '(TODO)' in the
    .cpp file in
    order to customize it for your extension.

    Note that the first part of 'FWxQapDynDll.h' just imports 'qapwinek.h',
    so you do
    not need to include 'qapwinek.h' in your application code.

    The consulting group has also updated the Stingray grid EK demo
    application and
    files to use the C++ approach to the EK. Contact Segue Technical Support
    for these
    support files.

    Here's an excerp from the 5.0.1 EK manual:
    Using the C++ Class Extension and Dynamic Loading for SilkTests
    Extension Kit
    1 Add two files to your project:
    2 Include QapDynDll.h in files referencing the EK facilities
    3 Instantiate an object, probably in the main or startup section of
    application. It may be easiest to make it a class member of an "App"
    object, a
    member pointer in an "App" object or a global pointer created
    on start. For example:
    class myApp
    QAPDynLoadEK* GetQapEK() { return m_pQap; }
    QAPDynLoadEK *m_pQap;// member pointer to QAP
    QAPDynLoadEK m_Qap;// member object of QAP
    (if using the member pointer, the following needs to be done)
    m_pQap = new QAPDynLoadEK();

    4 After compiling your application, ensure the Agent is running and
    assist.dll is on your path.
    Note: Its probably easiest to put assist.dll in your \winnt or
    or \win95 or \win98 directory.
    5 Start your application and try a test example.

    Notes about using Example 2
    * Many of the definitions in the wapwinek were removed or changes, as
    are not needed or may clash with other definitions.
    * Most of the basic EK and documentation remains roughly valid.
    include substituting a '.' for the '_' in functions. For example:
    QAP_RegisterWindowFun() becomes QAP.RegisterWindowFun()
    (assuming QAP is the named identifier).




Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
Search Engine Optimisation provided by DragonByte SEO v2.0.40 (Pro) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.
Resources saved on this page: MySQL 10.00%
vBulletin Optimisation provided by vB Optimise v2.7.1 (Pro) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.
User Alert System provided by Advanced User Tagging v3.3.0 (Pro) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.
vBNominate (Lite) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.
Feedback Buttons provided by Advanced Post Thanks / Like (Pro) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.
Username Changing provided by Username Change (Free) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.
BetaSoft Inc.
Digital Point modules: Sphinx-based search
All times are GMT -8. The time now is 12:18 PM.

Copyright BetaSoft Inc.