You are on page 1of 48

Keyword Driven Testing

Using WRSAFS
By
John Crunk
Agenda
Some information about testing in general
Install Winrunner
Install Engine
Learn how to write scripts
Break
Write some scripts
Solve Problems and discover solutions
Questions
Keyword Driven Testing
Action Word Testing
Data-Driven Testing
Keyword Driven
Testing

Its all the same thing,
a specific set of
actions happen for a
given word.
Why use Keyword Testing
Reusability!!!
Common components
handled by standard
libraries
The details of the scripts
are hidden from the user.
Users dont have to learn
the script language to
write scripts.
Reusability
Standard components
are handled the same
Common screens are
handled with the same
test tables.
Test tables can be
used in many different
applications instead of
creating one for each
application.

What can I test with a
Framework?
Web based applications
Java based applications
Windows based applications
C/C++/C# Applications
VB Applications
.NET Applications
COM (with enhancements)
Oracle (with enhancements)
Delphi (with enhancements)
Looking Beyond The
Project
Is your automated test effort really unique?
Do you really think your problems are novel?
Do you really want to do this all over again?
Generally, a finite set of common components make
up our infinite set of unique applications.

We are all trying to solve the same problems!

Carl Nagle SAS
I dont have time to learn
something new!!!
There is to much to do
Time lines are fast
approaching
I cant add to my
already cramped
workload.
Arent you telling me
I am going to have to
do more?
Advantages of a Framework
Using a framework will
actually give you more time.
Shared test among projects that
dont seem to have anything to
do with each other.
Mundane task no longer need
be manual.
Computers dont forget to do
something once they are told
once.
Boring task are automated.
You look like a hero for
finishing on time!!!
How WRAFS Interfaces with your application
Installing WRAFS
1. Backup any prior installs and uninstall
2. Install Java Virtual Machine (JVM)
from http://java.sun.com/j2se/
3. Run the WRSAFS Install
4. Install SAFS by running Setup.vbs
5. Scripts are installed to C:\WRSAFS
6. Test Tables are installed to C:\Datapool
7. Services are installed to C:\SAFS
8. STAF is installed to C:\STAF
9. Verify c:\staf; c:\safs;c:\staf\bin are
added to the path
10. Verify Classpath additions have been
made for STAF and SAFS jar files
11. Verify registry entries have been made
and are pointed to the correct
directories
Getting down to business with
WRAFS!!!
Cycle Driver
The main script calls Suite
Drivers
.CDD extension
Suite Driver
Intermediate scripts, calls
Step Drivers
.STD Extension
Step Driver
This is where all your work
happens.
.SDD Extension
Some File Structure Information
Datapool
Bench
Cycle
Dif
Logs
Step
Suite
Taborder
Test
Other Settings
Other Settings Continued
;Note: the section name and the Key should not be changed
[STAF]
ENABLED = TRUE
[LOGMODE]
ConsoleLOg = TRUE
SQALog = TRUE
TextLog = TRUE
STAFLog = TRUE
[SAFSLOGS]
JarFile = C:\safs\lib\safslogs.jar
Machine = local
TextLog = TRUE
XMLLog = FALSE
;Directory = S:\test\others\datapool\log
;LogFacility = mylog
[SAFSVARS]
JarFile = C:\safs\lib\safsvars.jar
[SAFSMAPS]
JarFile = C:\safs\lib\safsmaps.jar
[DIFFER]
TOOL_EXE=C:\Documents and Settings\jcrunk\Desktop\UnxUtils\usr\local\wbin\DIFF.EXE
TOOL_OPTIONS="/t"
TOOL_BINARY_OPTIONS="--binary -s"
[DIFFVIEWER]
TOOL_EXE=C:\ExamDiff\ExamDiff.exe
TOOL_OPTIONS=" "
What does a command look
like?
T; Login; Login; Click
T; Login; Username; SetTextValue; jdoe
T; Login; Password; SetUnverifiedTestValue, password
Welcome to the Application Map File
[ApplicationConstants]
FlightApp="C:\Program Files\Mercury Interactive\WinRunner\samples\vb\app\fltvb41a.exe

[Login]
Login={class: "window", label: "Login", MSW_class: "ThunderRT6FormDC"}
Help={class: "push_button", vb_name: "cmdHelp"}
Cancel={class: "push_button", vb_name: "cmdCancel"}
OK={class: "push_button", vb_name: "cmdOK"}
AgentsName={class: "edit", vb_name: "txtAgentsName"}
Password={class: "edit", vb_name: "txtPassword"}

[InvalidPassword]
InvalidPassword={class: "window", label: "Flight Reservation Message", MSW_class: "#32770"}
OK={class: "push_button", label: "OK"}

Creating an Application Map
1. Select Tools|GUI Map Editor in
Winrunner
2. Open the Application to be tested
3. Click on Learn in the Map Editor
4. Select the Window of the
Application
5. Answer Yes to the prompt
6. Navigate to the next screen to learn
7. Go to Step 3 until all application has
been learned
8. Save the GUI Map File
9. Open and run ProcessMapFile Script
10. You Application Map file is saved at
the same place as your GUI Map
File with a similar name.
A little about Variables
Component Names
Window Names
Data Values
Others?

How to use Variables
Can be in the Map File or
the Test Tables
In the test table variables
are preceded by a ^ (carot
sign)
When assigning a value,
simple type ^var=value
or ^var1=^var2
When using a variable
just type in ^variable in
the place you want to use
it.
Where do all these commands
come from?
Coders that have
something to add write
generic code for the
commands
Documentation is updated
and the commands are
tested for all to use.
Documentation is located
at
http://safsdev.sourceforge.net/sqabasic
2000/RRAFSReference.htm
Start Scripting!!!
Keep It Simple Silly (KISS)
T; LaunchApp
T; Flights
Cycle Driver
Flight.CDD
Start Scripting!!!
Keep It Simple Silly (KISS)
T; LaunchFlight
T; login
Suite Driver
LaunchApp.STD
Start Scripting!!!
Keep It Simple Silly (KISS)
T AddFlight
Suite Driver
Flights.STD
Start Scripting!!!
Keep It Simple Silly (KISS)
C; SetApplicationMap; c:\Datapool\FlightReservation.gui
C;LaunchApplication;TestApp;^FlightApp
Step Driver
LaunchApp.SDD
Start Scripting!!!
Keep It Simple Silly (KISS)
C; SetApplicationMap; C:\Datapool\FlightReservation.gui
T;Login; AgentsName; SetTextValue; jdoe
T; Login; Password; SetUnverifiedTextValue; mercury
T; Login; OK; Click
Step Driver
Login.SDD
Start Scripting!!!
Keep It Simple Silly (KISS)
T; FlightReservation; NewFlight; Click
T; FlightReservation; Departures; SelectTextItem; "Los Angeles
T; FlightReservation; Destinations; SelectTextItem; "Portland"
T; FlightReservation; Flights; Click
T; FlightsTable; OK; Click
T; FlightReservation; CustomerName; SetTextValue; "Sue Smith"
T; FlightReservation; FirstClass; Click
T; FlightReservation; TicketsOrdered; SetTextValue; "2"
T; FlightReservation; InsertOrder; Click
Step Driver
AddFlight.SDD
What did we just do???
Started the Application.
Verified the application started.
Set the Text Value of Agent name.
Verified we set the Text Value of
Agent Name.
Verified the value we set to Agent
name is what we sent to it.
Set the Text Value of Password.
Verified that we set the text value
of password.
Clicked the Ok button.
Verified we clicked the OK button.
What Next???
Make it reusable so
we can use the same
script over and over
Make the information
generic
Parameterize names
or variables so they
can change values
How do I do that?
T; LaunchApp
T; Login; ^UserName=jdoe; Password=mercury
T; ExitApp
T; Logoff
T; Login; ^UserName=ssmith; Password=InvalidPassword
T; VerifyInvalidPassword
T; Login; ^UserName=bjones; Password = Mercury

C; SetApplicationMap; C:\Datapool\FlightReservation.gui
T;Login; AgentsName; SetTextValue; ^UserName
T; Login; Password; SetUnverifiedTextValue; ^Password
T; Login; OK; Click

StartApplication.STD
Login.SDD
ExitApp.SDD
C; SetApplicationMap; C:\Datapool\FlightReservation.gui
T, FlightReservation, FlightReservation, SELECTMENUITEM, File;Exit
VerifyInvalidPassword.SDD
C; SetApplicationMap; C:\Datapool\FlightReservation.gui
T; InvalidPassword; InvalidPassword; VerifyProperty; Visible; 1
T; InvalidPassword; OK; Click

What is different about this one?
We do all of the things the first script did, but this time we do a lot
more!
Added test tables for Exit and invalid user
Verify you can login with a valid user
Verify you can exit the application
Verify an invalid user can gain access to the system
Make a login test table that works for most any application that has
a login. Just make sure the name is the same, in the application
map files.
Lets Do some more
Launch Application
"C:\Program Files\Mercury Interactive\WinRunner\samples\vb\app\fltvb41b.exe
"C:\Program Files\Mercury Interactive\WinRunner\samples\vb\app"
Create Reservation
Find Reservation
Update Reservation
Delete Reservation
Your Turn!!!
http://safsdev.sourceforge.net/sqabasic2000/RRAFSReference.htm
Flight.CDD Revisted
T; LaunchApp
T; Flights
LaunchApp.STD
T; LaunchFlight
T; login; ^user.name="jcrunk; ^user.password="mercury"
Flights.STD
C; SetVariableValues; ^Class="FirstClass; ^NbrTickets="2"
T; AddFlight; ^Departure="Los Angeles; ^Destinations="Portland; ^Customer="Sue Smith"
C; SetVariableValues; ^Class="BusinessClass; ^NbrTickets="3
T; AddFlight; ^Departure="Denver; ^Destinations="Los Angeles; ^Customer="John Doe"
C; SetVariableValues; ^Class="EconomyClass; ^NbrTickets="1"
T; AddFlight; ^Departure="Portland; ^Destinations="Seattle; ^Customer="Bob Jones"
T; FindFlight; ^Customer="Sue Smith"
T; UpdateFlight; ^NbrTickets="1; ^Class="BusinessClass"
T; FindFlight; ^Customer="John Doe"
T; UpdateFlight; ^NbrTickets="2; ^Class="EconomyClass"
T; FindFlight; ^Customer="Bob Jones"
T; UpdateFlight; ^NbrTickets="3; ^Class="FirstClass"
T; FindFlight; ^Customer="Sue Smith"
T; DeleteFlight
T; FindFlight; ^Customer="John Doe"
T; DeleteFlight
T; FindFlight; ^Customer="Bob Jones"
T; DeleteFlight
AddFlight.SDD
T; FlightReservation; FlightReservation; SelectMenuItem; File; New Order
T; FlightReservation; Departures; SelectTextItem; Denver
T; FlightReservation; Destinations; SelectTextItem; Portland
T; FlightReservation; Flights; Click
T; FlightsTable; AvailiableFlights; SetSelectedRow; 2
T; FlightsTable; OK; Click
T; FlightReservation; CustomerName; SetTextValue; ^Customer
T; FlightReservation; ^Class; Click
T; FlightREservation; InsertOrder; Click
LaunchFlight.SDD
C; LaunchApplication; Flight; ^FlightApp; ^FlightPath
Login.SDD
T; Login; AgentsName; SetTextValue; ^user.name
T; Login; Password; SetUnverifiedTextValue; ^user.password
T; Login; OK; Click
AddFlight.SDD
T; FlightReservation; NewFlight; Click
T; FlightReservation; Departures; SelectTextItem; ^Departure
T; FlightReservation; Destinations; SelectTextItem; ^Destinations
T; FlightReservation; Flights; Click
T; FlightsTable; OK; Click
T; FlightReservation; CustomerName; SetTextValue; ^Customer
T; FlightReservation; ^Class; Click
T; FlightReservation; TicketsOrdered; SetTextValue; ^NbrTickets
T; FlightReservation; InsertOrder; Click
FindFlight.SDD
T; FlightReservation; FlightReservation; SelectMenuItem; "File;Open Order..."
T; FindOrder; ByCustName; Click
T; FindOrder; CustomerName; SetTextValue; ^Customer
T; FindOrder; OK; Click
UpdateFlight.SDD
T; FlightReservation; ^Class; Click
T; FlightReservation; TicketsOrdered; SetTextValue; ^NbrTickets
T; FlightReservation; UpdateOrder; Click
DeleteFlight.SDD
T; FlightReservation; DeleteOrder; Click
T; ConfirmationMessage; Yes; Click
Where to go from here?
Start experimenting
with other
applications
Read some of the
documentation on
http://safsdev.sourceforge.net
Have
ConfidenceYou can
Do it!!!
References
Nagle, C. Test automation frameworks; 1999
Kit, E. & Prince, S. "A Roadmap for Automating Software Testing" Tutorial presented at
STAR99East Conference, Orlando, Florida, May 10, 1999.
Hayes, L. "Establishing an Automated Testing Framework" Tutorial presented at
STAR99East Conference, Orlando, Florida, May 11, 1999.
Kit, E. "The Third Generation--Integrated Test Design and Automation" Guest presentation at
STAR99East Conference, Orlando, Florida, May 12, 1999.
Mosley, D. & Posey, B. Just Enough Software Test Automation New Jersey: Prentice Hall
PTR, 2002.
Wust, G. "A Model for Successful Software Testing Automation" Paper presented at
STAR99East Conference, Orlando, Florida, May 12, 1999.
Dustin, E. Automated Software Testing: Introduction, Management, and Performance.
New York: Addison Wesley, 1999.
Fewster & Graham Software Test Automation: Effective use of test execution tools New York:
Addison Wesley, 1999.
Dustin, E. "Automated Testing Lifecycle Methodology (ATLM)" Paper presented at STAR
EAST 2000 Conference, Orlando, Florida, May 3, 2000.
References
Kit, E. & Buwalda, H. "Testing and Test Automation: Establishing Effective Architectures"
Presentation at STAR EAST 2000 Conference, Orlando, Florida, May 4, 2000.
Sweeney, M. "Automation Testing Using Visual Basic" Paper presented at STAR EAST 2000
Conference, Orlando, Florida, May 4, 2000.
Buwalda, H. "Soap Opera Testing" Guest presentation at STAR EAST 2000 Conference,
Orlando, Florida, May 5, 2000.
Pollner, A. "Advanced Techniques in Test Automation" Paper presented at STAR EAST 2000
Conference, Orlando, Florida, May 5, 2000.
Cem Kaner, http://www.kaner.com
Zambelich, K. Totally Data-Driven Automated Testing 1998
http://www.sqa-test.com/w_paper1.html
SQA Suite Users, Discussions and Archives, 1999-2000, http://www.dundee.net/sqa/
Nagle, C. Data Driven Test Automation: For Rational Robot V2000 1999-2000
DDE Doc Index

You might also like