http://tohtml.com/asp.vb/
On Wed, Aug 17, 2011 at 5:12 AM, dvpbandaru <[email protected]> wrote: > 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 > -- 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
