Nice explanation by Thanigai Kumaran. Really great................

On Wed, Aug 17, 2011 at 8:18 AM, Roman Zilber <[email protected]> wrote:

> There is one thing, which bothers me in all standard QTP/Winrunner
> frameworks. All of them somehow doesn't follow standard frameworks used in
> programming.
> There are different terminology, technique  and standards.
>
> for example googling: "Keyword driven programming" gives links to QTP
> forums (I expected links to Lisp, but I found it only, when removed
> 'driven')
>
> 'data/table-driven programming' gives some interesting links:
> http://en.wikipedia.org/wiki/Data-driven_programming
>
>> *Data-driven programming has been argued to lead to bad object-oriented
>>> design <http://en.wikipedia.org/wiki/Object-oriented_design>, with 
>>> responsibility-driven
>>> design <http://en.wikipedia.org/wiki/Responsibility-driven_design>promoted 
>>> as a better approach.
>>> *
>>>
>> http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31
> http://www.toofishes.net/blog/applying-data-driven-programming/
>
> but looks like that not a mainstream.
>
> Also the standard *-driven QTP Excels looks like:
>
> object, action, parameter
> 'home page' navigate 'http:www.google.com'
> input['q'] fill 'framefork qtp'
> 'Search' click btnLeft
>
> And here we see data separated from code, but there is no functional
> decomposition (not talking about encapsulation, responsibility, etc)
>
> comapare:
>
> function search(engine, search_string){
>     returns staus;
> }
>
> or
> Function search(site, str)
>    select site:
>                   case 'google':
> oPage.navigate(href)
> oPage.edit(name).set(str)
> oPage.button(name).click()
> ....
>    search = status
> End Function
>
> Roman
>
>
> On Fri, Aug 12, 2011 at 4:23 AM, Mohan Gowda <[email protected]>wrote:
>
>> thanks for patience and time.........
>>
>>
>>
>>  On Mon, Aug 8, 2011 at 11:32 AM, Thanigai kumaran 
>> <[email protected]>wrote:
>>
>>> Instead of providing a bookish definition of a framework, lets consider
>>> an example.
>>>
>>> I am sure you have attended a seminar / lecture / conference where the
>>> participants was asked to observe the following guidelines -
>>>
>>>
>>> Participants should occupy their seat 5 minutes before start of lecture
>>> Bring along a notebook and pen for note taking.
>>> Read the abstract so you have an idea of what the presentation will be
>>> about.
>>> Mobile Phones should be set on silent
>>> Use the exit gates at opposite end to the speaker should you require to
>>> leave in middle of the lecture.
>>> Questions will be taken at the end of the session
>>>
>>>
>>>
>>>
>>>
>>>
>>> Do you think you can conduct a seminar WITHOUT observing these
>>> guidelines????
>>>
>>> The answer is a big YES! Certainly you can conduct a seminar / lecture /
>>> conference / demonstration without above guidelines (in fact some of us will
>>> not follow them even though there are laid ... )
>>>
>>>
>>>
>>> But if the guidelines are followed it will result in beneficial outcome
>>> like reduced audience distraction during lecture and increased participant
>>> retention and understanding of the subject matter.
>>>
>>> Based on above, a Framework can be defined as a set of guidelines which
>>> when followed produce beneficial results.
>>>
>>>
>>>
>>> Now what is a TEST Automation Framework ?
>>>
>>> A set of guidelines like coding standards , test-data handling , object
>>> repository treatment etc... which when followed during automation scripting
>>> produce beneficial outcomes like increase code re-usage , higher portability
>>> , reduced script maintenance cost etc. Mind you these are just guidelines
>>> and not rules; they are not mandatory and you can still script without
>>> following the guidelines. But you will miss out on the advantages of having
>>> a Framework.
>>>
>>>
>>>
>>> What are the various Automation Frameworks available?
>>>
>>> 1) Linear Scripting
>>> 2)The Test Library Architecture Framework.
>>> 3)The Data-Driven Testing Framework.
>>> 4)The Keyword-Driven or Table-Driven Testing Framework.
>>> 5)The Hybrid Test Automation Framework.
>>>
>>>
>>> Lets look at them in detail -
>>>
>>> 1) Linear Scripting - Record & Playback
>>>
>>> It is the simplest of all Frameworks and also know as "Record &
>>> Playback".In this Framework , Tester manually records each step ( Navigation
>>> and User Inputs), Inserts Checkpoints ( Validation Steps) in the first round
>>> . He then , Plays back the recorded script in the subsequent rounds.
>>>
>>>
>>>
>>> Ex : Consider logging into Flight Reservation Application and checking
>>> wether the application has loaded on successful log-on. Here , the tester
>>> will simply record the steps and add validation steps.
>>>
>>>
>>> SystemUtil.Run "flight4a.exe","","","open"
>>>
>>> Dialog("Login").WinEdit("Agent Name:").Set "Guru99"
>>>
>>> Dialog("Login").WinEdit("Password:").Set "Mercury"
>>>
>>> Dialog("Login").WinButton("OK").Click
>>>
>>> 'Check Flight Reservation Window has loaded after successful log-on
>>>
>>>
>>> Window("Flight Reservation").Check CheckPoint("Flight Reservation")
>>>
>>>
>>>
>>> Advantages
>>>
>>> Fastest way to generate script
>>> Automation expertise not required
>>> Easiest way to learn the features of the Testing Tool
>>>
>>>
>>> Disadvantages
>>>
>>> Little reuse of scripts
>>> Test data is hard coded into the script
>>> Maintenance Nightmare
>>>
>>>
>>>
>>>
>>> 2)The Test Library Architecture Framework.
>>>
>>>
>>>
>>> It is also know as "Structured Scripting" or "Functional Decomposition".
>>>
>>> In this Framework , test scripts are initially recorded by “Record &
>>> Playback” method. Later, common tasks inside the scripts are identified and
>>> grouped into Functions. These Functions are called by main test script
>>> called Driver in different ways to create test cases.
>>>
>>> Ex: Using the same example as above, the function for logging in to
>>> Flight Reservation will look like .
>>>
>>>
>>> Function Login()
>>>
>>> SystemUtil.Run "flight4a.exe","","","open"
>>>
>>> Dialog("Login").WinEdit("Agent Name:").Set "Guru99"
>>>
>>> Dialog("Login").WinEdit("Password:").Set "Mercury"
>>>
>>> Dialog("Login").WinButton("OK").Click
>>>
>>> End Function
>>>
>>>
>>> Now, you will call this function in the main script as follows
>>>
>>> 'Driver Script
>>>
>>>
>>> Call Login()
>>>
>>> ---------------------------
>>>
>>> Other Function calls / Test Steps.
>>>
>>> ---------------------------
>>>
>>>
>>>
>>>
>>> Advantages
>>>
>>> Higher level of code reuse is achieved in Structured Scripting as
>>> compared to “Record & Playback”
>>> The automation scripts are less costly to develop due to higher code
>>> re-use
>>> Easier Script Maintenance
>>>
>>>
>>> Disadvantages
>>>
>>> Technical expertise is necessary to write Scripts using Test Library
>>> Framework.
>>> More time is needed to plan and prepare test scripts.
>>> Test Data is hard coded within the scripts
>>>
>>>
>>>
>>>
>>> 3)The Data-Driven Testing Framework.
>>>
>>> In this Framework , while Test case logic resides in Test Scripts, the
>>> Test Data is separated and kept outside the Test Scripts.Test Data is read
>>> from the external files (Excel Files, Text Files, CSV Files, ODBC Sources,
>>> DAO Objects, ADO Objects) and are loaded into the variables inside the Test
>>> Script. Variables are used both for Input values and for Verification
>>> values. Test Scripts themselves are prepared either using Linear Scripting
>>> or Test Library Framework.
>>>
>>>
>>>
>>> Ex: Developing the Flight Reservation Login script using this method will
>>> involve two steps.
>>>
>>>
>>>
>>> Step 1) Create a Test - Data file which could be Excel , CSV , or any
>>> other database source.
>>>
>>>
>>>
>>> AgentName
>>> Password
>>>
>>> Jimmy
>>> Mercury
>>>
>>> Tina
>>> MERCURY
>>>
>>> Bill
>>> MerCURY
>>>
>>>
>>>
>>>
>>> Step 2) Develop Test Script and make references to your Test- Data
>>> source.
>>>
>>>
>>>
>>> SystemUtil.Run "flight4a.exe","","","open"
>>>
>>> Dialog("Login").WinEdit("Agent Name:").Set DataTable("AgentName",
>>> dtGlobalSheet)
>>>
>>> Dialog("Login").WinEdit("Password:").Set DataTable("Password",
>>> dtGlobalSheet)
>>>
>>> Dialog("Login").WinButton("OK").Click
>>>
>>> 'Check Flight Reservation Window has loaded
>>>
>>> Window("Flight Reservation").Check CheckPoint("Flight Reservation")
>>>
>>> **Note “dtGlobalSheet” is the default excel sheet provided by QTP.
>>>
>>>
>>>
>>> Advantages
>>>
>>> Changes to the Test Scripts do not affect the Test Data
>>> Test Cases can be executed with multiple Sets of Data
>>> A Variety of Test Scenarios can be executed by just varying the Test Data
>>> in the External Data File
>>>
>>>
>>> DisAdvantages
>>>
>>> More time is needed to plan and prepare both Test Scripts and Test Data
>>>
>>>
>>> 4)The Keyword-Driven or Table-Driven Testing Framework.
>>>
>>> The Keyword-Driven or Table-Driven framework requires the development of
>>> data tables and keywords, independent of the test automation tool used to
>>> execute them . Tests can be designed with or without the Application. In a
>>> keyword-driven test, the functionality of the application-under-test is
>>> documented in a table as well as in step-by-step instructions for each test.
>>>
>>> There are 3 basis components of a Keyword Driven Framework viz. Keyword ,
>>> Application Map , Component Function.
>>>
>>>
>>>
>>> What is a Keyword ?
>>>
>>> Keyword is an Action that can be performed on a GUI Component. Ex . For
>>> GUI Component Textbox some Keywords ( Action) would be InputText,
>>> VerifyValue, VerifyProperty and so on.
>>>
>>>
>>>
>>> What is Application Map?
>>>
>>> An Application Map Provides Named References for GUI Components.
>>> Application Maps are nothing but “Object Repositry’
>>>
>>>
>>>
>>> What is Component Function?
>>>
>>> Component Functions are those functions that actively manipulate or
>>> interrogate GUI component. An example of a function would be click on web
>>> button with all error handling , enter data in a Web Edit with all error
>>> handling. Component functions could be application dependent or independent.
>>>
>>>
>>>
>>> Ex: To understand Keyword View lets take the same example. It invovles 2
>>> steps
>>>
>>>
>>>
>>> Step 1: Creating Data Table (Different from Test-Data Table created in
>>> Data Driven Framework). This Data Table contains Action to be performed on
>>> GUI Objects and correspoding arguments if any. Each row respresents one Test
>>> Step.
>>>
>>>
>>> Object
>>>
>>> (Application MAP)
>>>
>>> Action
>>>
>>> (KEYWORDS)
>>>
>>> Argument
>>>
>>> WinEdit(Agent Name)
>>> Set
>>> Guru99
>>>
>>> WinEdit(Password)
>>> Set
>>> Mercury
>>>
>>> WinButton(OK)
>>> Click
>>>
>>> Window(Flight Reservation)
>>> Verify
>>> Exists
>>>
>>>
>>>
>>>
>>>
>>>
>>> Step 2: Writing Code in the form of Component Functions.
>>>
>>> Once you've created your data table(s), you simply write a program or a
>>> set of scripts that reads in each step, executes the step based on the
>>> keyword contained the Action field, performs error checking, and logs any
>>> relevant information. This program or set of scripts would look similar to
>>> the pseudo code below:
>>>
>>>
>>>
>>> Function main()
>>>
>>> {
>>>
>>> Call ConnectTable(Name of the Table) { //Calling Function for connecting
>>> to the table.
>>>
>>> while (Call TableParser() != -1) //Calling function for Parsing and
>>> extracting values from the table.
>>>
>>> {
>>>
>>> Pass values to appropriate COMPONENT functions. Like Set(Object Name ,
>>> Argument) ex. Set( Agent Name , Guru99).
>>>
>>> }
>>>
>>> }
>>>
>>>
>>> Call CloseConnection() //Function for Closing connection after all the
>>> operation has been performed.
>>>
>>> } //End of main
>>>
>>>
>>>
>>> Thats all to Keyword Driven Framework.
>>>
>>>
>>>
>>> The advantage of Keyword Driven Framework is that the Keywords are
>>> re-usable. To understand this consider you want to verify login operation
>>> for a Website say YAHOO MAIL. The table will look like this -
>>>
>>>
>>>
>>> Object
>>>
>>> (APPLICATION MAP)
>>>
>>> Action
>>>
>>> (KEYWORD)
>>>
>>> Argument
>>>
>>> WebEdit(UserName)
>>> Set
>>> [email protected] This e-mail address is being protected from spambots. You
>>> need JavaScript enabled to view it
>>>
>>> WebEdit(Password)
>>> Set
>>> xxxxx
>>>
>>> WebButton(OK)
>>> Click
>>>
>>> Window(Yahoo Mail)
>>> Verify
>>> Loads
>>>
>>>
>>>
>>>
>>> If you observe in this case the Keywords Set , Click , Verify remain the
>>> same for which corresponding component functions are already developed. All
>>> you need to do is change the Application Mapping (Object Repository) from
>>> earlier Flight Reservation to Yahoo Mail , with change in argument values
>>> and the same script will work!
>>>
>>>
>>>
>>> Advantages
>>>
>>> Provides high code re-usability
>>> Test Tool Independent
>>> Independent of Application Under Test, same script works for AUT (with
>>> some limitations)
>>> Tests can be designed with or without AUT
>>>
>>>
>>> Disadvantages
>>>
>>> Initial investment being pretty high, the benefits of this can only be
>>> realized if the application is considerably big and the test scripts are to
>>> be maintained for quite a few years.
>>> High Automation expertise is required to create the Keyword Driven
>>> Framework.
>>>
>>>
>>>
>>>
>>> NOTE : Even though QTP advertises itself as KeyWord Driven Framework, you
>>> can not achieve complete test tool and application idependence using QTP.
>>>
>>>
>>>
>>> 5)The Hybrid Test Automation Framework.
>>>
>>> As the name suggests this framework is the combination of one or more
>>> frameworks discussed above pulling from their strengths and trying to
>>> mitigate their weaknesses. This hybrid test automation framework is what
>>> most frameworks evolve into over time and multiple projects. Maximum
>>> industry uses Keyword Framework in combination of Function decomposition
>>> method.
>>>
>>>
>>>
>>> PS: Other Frameworks worth a mention are
>>>
>>>
>>>
>>>
>>> 1) Test Modularity Framework
>>>
>>> In this framework common task in test script are grouped together as
>>> Modules.
>>>
>>> Ex:Using Actions in QTP use can create a Modualr Scripts
>>>
>>> ‘Sample Script for Login
>>> SystemUtil.Run "flight4a.exe","","","open"
>>>
>>> Dialog("Login").WinEdit("Agent Name:").Set "Guru99"
>>>
>>> Dialog("Login").WinEdit("Password:").Set "Mercury"
>>>
>>> Dialog("Login").WinButton("OK").Click
>>>
>>> ‘End of Script
>>>
>>>
>>>
>>> Now you can call this Action in the main script as follows -
>>>
>>> RunAction ("Login[Argument]", oneIteration)
>>>
>>> ==========================================
>>>
>>> --
>>> *
>>> Thanks & Regards
>>> **Thanigai Kumaran*
>>>
>>>
>>>
>>>
>>>
>>> On Mon, Aug 8, 2011 at 10:58 AM, saravanan u <[email protected]> wrote:
>>>
>>>> Hai All,
>>>>            Can anyone tell me "What is Framework and how to create it in
>>>> qtp..
>>>>
>>>> Thanks
>>>> Saravanan U
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> "QTP - HP Quick Test Professional - Automated Software Testing"
>>>> group.
>>>> To post to this group, send email to [email protected]
>>>> To unsubscribe from this group, send email to
>>>> [email protected]
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/MercuryQTP?hl=en
>>>
>>>
>>>
>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> "QTP - HP Quick Test Professional - Automated Software Testing"
>>> group.
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> For more options, visit this group at
>>> http://groups.google.com/group/MercuryQTP?hl=en
>>>
>>
>>
>>
>> --
>>
>> kind Regards
>> Mohan
>>
>> --
>> You received this message because you are subscribed to the Google
>> "QTP - HP Quick Test Professional - Automated Software Testing"
>> group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/MercuryQTP?hl=en
>>
>
> --
> You received this message because you are subscribed to the Google
> "QTP - HP Quick Test Professional - Automated Software Testing"
> group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/MercuryQTP?hl=en
>

-- 
You received this message because you are subscribed to the Google
"QTP - HP Quick Test Professional - Automated Software Testing"
group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/MercuryQTP?hl=en

Reply via email to