KWWidgets/GUI Testing/Squish: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
Line 59: | Line 59: | ||
** Select "[http://www.froglogic.com/download/book/tgs-firsttest-tk.html Create New Test Suite]" at the Welcome page. | ** Select "[http://www.froglogic.com/download/book/tgs-firsttest-tk.html Create New Test Suite]" at the Welcome page. | ||
** Enter a Suite Name (say <tt>kwcallbacksexample</tt>). Select where the test suite and its files shall be saved (say <tt>~/tmp/kww_test/</tt>). Hit "Next". | ** Enter a Suite Name (say <tt>kwcallbacksexample</tt>). Select where the test suite and its files shall be saved (say <tt>~/tmp/kww_test/</tt>). Hit "Next". | ||
** Specify | ** Specify which toolkit the application is using. KWWidgets uses Tcl/Tk under the hood, therefore select the Tk radiobutton. Hit "Next". NOTE: this page will *only* show up if Squish was built to support *several* toolkits; if only one toolkit is available (hopefully, Tk), this page will not be displayed and the appropriate toolkit will be picked automatically. | ||
** Select Tcl as the scripting language (if it isn't available, Squish was not able to find or use your Tcl/Tk distribution at build time). Hit "Next". | ** Select Tcl as the scripting language (if it isn't available, Squish was not able to find or use your Tcl/Tk distribution at build time). Hit "Next". | ||
** Select the Application Under Test (AUT): pick the the <tt>./bin/KWCallbacksExample</tt> application found in your KWWidgets build tree. | ** Select the Application Under Test (AUT): pick the the <tt>./bin/KWCallbacksExample</tt> application found in your KWWidgets build tree. Notat that even though we are using Squish for Tk, we are actually exercising a KWWidgets *binary application*, not a Tcl/Tk *script*. Hit "Finish". | ||
* Create a new Test Case | * Create a new Test Case | ||
** Select "Create New Test Case" or right-click on <tt>suite_kwcallbacksexample</tt> in the left tree and select "New Test Case...". Name it, say, <tt>Test1</tt>. This should create | ** Select "Create New Test Case" or right-click on <tt>suite_kwcallbacksexample</tt> in the left tree and select "New Test Case...". Name it, say, <tt>Test1</tt>. This should create a <tt>tst_Test1</tt> case in the left tree and a <tt>test.tcl</tt> file in your test suite directory. | ||
{| class="wikitable" style="margin: 1em auto 1em auto" | {| class="wikitable" style="margin: 1em auto 1em auto" | ||
|- | |- | ||
Line 69: | Line 69: | ||
|} | |} | ||
* Record the Test Case | * Record the Test Case | ||
** Right-click on <tt>tst_Test1</tt> and select "Record...". Accept the defaults and click "Record". This should launch the <tt>KWCallbacksExample</tt>. Note the "Squish Control Bar" window | ** Right-click on <tt>tst_Test1</tt> and select "Record...". Accept the defaults and click "Record". This should launch the <tt>KWCallbacksExample</tt>. Note the "Squish Control Bar" window displaying "Recording test case 'tst_Test1'. | ||
** Move the slider in the <tt>KWCallbacksExample</tt> window from 10.0 to a different value, say, 50.0. Note a new (and lengthy) entry in the "Squish Control Bar" window: <tt>"scrollTo KWCallbacksExample.vtkKWWindow0.vtkKWFrame3.[...].vtkKWMyWidget0.vtkKWScale0 50000"</tt>. | ** Move the slider in the <tt>KWCallbacksExample</tt> window from 10.0 to a different value, say, 50.0. Note a new (and lengthy) entry in the "Squish Control Bar" window: <tt>"scrollTo KWCallbacksExample.vtkKWWindow0.vtkKWFrame3.[...].vtkKWMyWidget0.vtkKWScale0 50000"</tt>. | ||
** Exit "Recording" mode by closing or exiting the <tt>KWCallbacksExample</tt> window, or hitting the "End Recording" button in the "Squish Control Bar" window. | ** Exit "Recording" mode by closing or exiting the <tt>KWCallbacksExample</tt> window, or hitting the "End Recording" button in the "Squish Control Bar" window. | ||
** Back to the Squish IDE, note that the script has been updated to reflect your interaction with the AUT: | |||
*** <tt>waitForObject</tt> makes sure a widget is ready and has been mapped on-screen. | |||
*** The widget name itself is often very long as it reflects the hierarchy of parent-child widgets in a typical KWWidgets application. The name of each child in this chain is created at run-time by concatenating the name of the C++ class for that widget to a unique ID among its siblings. The last child in this specific example should be <tt>vtkKWScale0</tt>, which is the de-facto KWWidgets C++ class used to wrap the Tcl/Tk <tt>scale</tt> widget we just interacted with. | |||
*** <tt>invoke scrollTo</tt> is a Squish command that will act on a widget. In this case, this will scroll the scale slider to its new value, 50.0. | |||
*** <tt>invoke closeWindow</tt> is another Squish command that should close the application window (depending on how you stopped recording). | |||
{| class="wikitable" style="margin: 1em auto 1em auto" | {| class="wikitable" style="margin: 1em auto 1em auto" | ||
|- | |- |
Revision as of 19:07, 6 November 2008
Squish
- Squish Home
- Squish for Tk, only for Unix
- about €2500
- Win32/Qt/Java/Web/Tk, scripting in Tcl/Python/JavaScript/Perl, recorder, window inspector, breakpoints/verification
Prerequisites
- Qt3. Squish for Tk will not work with Qt4. Make sure you install all Qt3 development packages. On a Ubuntu OS, this (most likely) involve: libqt3-headers, libqt3-mt, libqt3-mt-dev, qt3-apps-dev, qt3-assistant, qt3-designer, qt3-dev-tools, qt3-linguist, qt3-qtconfig, etc.
- Tcl/Tk 8.4 or 8.5
Download
- Download a Squish for Tk evaluation license
-rwxr--r-- 1 barre barre 6587889 2008-09-04 13:08 squish-3.4.1-eval-tk-src.tar.gz* -rwxr--r-- 1 barre barre 19 2008-09-04 13:08 squish-3-license*
Installation
- Reference: Squish Installation
- Unpack the archive
barre@tetsuo:~/build$ tar -xzf /home/barre/tmp/squish/squish-3.4.1-eval-tk-src.tar.gz
- Configure Squish
barre@tetsuo:~/build$ cd squish-3.4.1-eval-tk-src barre@tetsuo:~/build/squish-3.4.1-eval-tk-src$ ./configure "--with-qtdir=/usr/share/qt3" "--with-tclconfig=/opt/tcltk8.5.2/lib/tclConfig.sh" "--with-tkconfig=/opt/tcltk8.5.2/lib/tkConfig.sh"
Note that the configure script may not find your Qt3 distribution correctly: use --with-qtdir to point to the appropriate directory. Use --with-tclconfig and --with-tkconfig to point to your own Tcl/Tk distribution, if any (here /opt/tcltk8.5.2)
- Enter your license key (found in squish-3-license)
Configuring Squish. For license information please read the LICENSE file. By configuring and building Squish you are accepting the terms of this license. Enter license key: ***-*****-*****-*** Checking for C++ compiler ......... g++ Checking for g++'s version ......... 4 [...] Done with configuring. Full log in config.log. Now type './build'. * Build <pre> barre@tetsuo:~/build/squish-3.4.1-eval-tk-src$ ./build
Testing KWCallbacksExample
In this section, we will exercise KWWidgets' KWCallbacksExample example.
- If you are new to Squish you may want to read: Squish Concepts, Creating the First Test. The Squish for Tk documentation is located offline in your build directory at squish-3.4.1-eval-tk-src/doc/book/index.html, or online at http://www.froglogic.com/download/book/.
- Build KWWidgets examples (make sure KWWidgets_BUILD_EXAMPLES is set to ON), make sure the ./bin/KWCallbacksExample example has been built and is working properly.
- Start the Squish IDE
barre@tetsuo:~/build/squish-3.4.1-eval-tk-src$ ./bin/squish
- Create a new Test Suite
- Select "Create New Test Suite" at the Welcome page.
- Enter a Suite Name (say kwcallbacksexample). Select where the test suite and its files shall be saved (say ~/tmp/kww_test/). Hit "Next".
- Specify which toolkit the application is using. KWWidgets uses Tcl/Tk under the hood, therefore select the Tk radiobutton. Hit "Next". NOTE: this page will *only* show up if Squish was built to support *several* toolkits; if only one toolkit is available (hopefully, Tk), this page will not be displayed and the appropriate toolkit will be picked automatically.
- Select Tcl as the scripting language (if it isn't available, Squish was not able to find or use your Tcl/Tk distribution at build time). Hit "Next".
- Select the Application Under Test (AUT): pick the the ./bin/KWCallbacksExample application found in your KWWidgets build tree. Notat that even though we are using Squish for Tk, we are actually exercising a KWWidgets *binary application*, not a Tcl/Tk *script*. Hit "Finish".
- Create a new Test Case
- Select "Create New Test Case" or right-click on suite_kwcallbacksexample in the left tree and select "New Test Case...". Name it, say, Test1. This should create a tst_Test1 case in the left tree and a test.tcl file in your test suite directory.
- Record the Test Case
- Right-click on tst_Test1 and select "Record...". Accept the defaults and click "Record". This should launch the KWCallbacksExample. Note the "Squish Control Bar" window displaying "Recording test case 'tst_Test1'.
- Move the slider in the KWCallbacksExample window from 10.0 to a different value, say, 50.0. Note a new (and lengthy) entry in the "Squish Control Bar" window: "scrollTo KWCallbacksExample.vtkKWWindow0.vtkKWFrame3.[...].vtkKWMyWidget0.vtkKWScale0 50000".
- Exit "Recording" mode by closing or exiting the KWCallbacksExample window, or hitting the "End Recording" button in the "Squish Control Bar" window.
- Back to the Squish IDE, note that the script has been updated to reflect your interaction with the AUT:
- waitForObject makes sure a widget is ready and has been mapped on-screen.
- The widget name itself is often very long as it reflects the hierarchy of parent-child widgets in a typical KWWidgets application. The name of each child in this chain is created at run-time by concatenating the name of the C++ class for that widget to a unique ID among its siblings. The last child in this specific example should be vtkKWScale0, which is the de-facto KWWidgets C++ class used to wrap the Tcl/Tk scale widget we just interacted with.
- invoke scrollTo is a Squish command that will act on a widget. In this case, this will scroll the scale slider to its new value, 50.0.
- invoke closeWindow is another Squish command that should close the application window (depending on how you stopped recording).
Issues
- Can't find Qt
Checking Qt version ......... Can't find Qt includes in /usr/include and /usr/src
=> Make sure you installed Qt3
- New Test Suite: Scripting Language, No Tcl
If the Tcl option is not available in the Scripting Language page when creating a new Test Suite, then Squish was not build with proper Tcl support. Make sure you specified the path to your Tcl/Tk distribution and re-build.