Tuesday, September 11, 2007

WinRunner An Introduction

WinRunner, Mercury Interactive enterprise functional testing tool. It is used to quickly create and run sophisticated automated tests on your application. Winrunner helps you automate the testing process, from test development to execution. You create adaptable and reusable test scripts that challenge the functionality of your application. Prior to a software release, you can run these tests in a single overnight run- enabling you to detect and ensure superior software quality.

NAVIGATIONAL STEPS FOR WINRUNNER LAB-EXERCISES

Using Rapid Test Script wizard

Start->Program Files->Winrunner->winruner
Select the Rapid Test Script Wizard (or) create->Rapid Test Script wizard
Click Next button of welcome to script wizard
Select hand icon and click on Application window and Click Next button
Select the tests and click Next button
Select Navigation controls and Click Next button
Set the Learning Flow(Express or Comprehensive) and click Learn button
Select start application YES or NO, then click Next button
Save the Startup script and GUI map files, click Next button
Save the selected tests, click Next button
Click Ok button
Script will be generated. Then run the scripts. Run->Run from top
Find results of each script and select tools->text report in Winrunner test results.

Using GUI-Map Configuration Tool:

Open an application.
Select Tools-GUI Map Configuration; Windows pops-up.
Click ADD button; Click on hand icon.
Click on the object, which is to be configured. A user-defined class for that object is added to list.
Select User-defined class you added and press ‘Configure’ button.
Mapped to Class ;( Select a corresponding standard class from the combo box).
You can move the properties from available properties to Learned Properties. By selecting Insert button
Select the Selector and recording methods.
Click Ok button
Now, you will observe Winrunner identifying the configured objects.

Using Record-Context Sensitive mode:

Create->Record context Sensitive
Select start->program files->Accessories->Calculator
Do some action on the application.
Stop recording
Run from Top; Press ‘OK’.

Using Record-Analog Mode:

Create->Insert Function->from function generator
Function name:(select ‘invoke application’ from combo box).
Click Args button; File: mspaint.
Click on ‘paste’ button; Click on ‘Execute’ button to open the application; Finally click on ‘Close’.
Create->Record-Analog.
Draw some picture in the paintbrush file.
Stop Recording
Run->Run from Top; Press ‘OK’.

GUI CHECK POINTS-Single Property Check:

Create->Insert function->Function Generator-> (Function name:Invoke_application; File :Flight 1a)
Click on’ paste’ and click on’ execute’ & close the window.
Create->Record Context sensitive.
Do some operations & stop recording.
Create->GUI Check Point->For single Property.
Click on some button whose property to be checked.
Click on paste.
Now close the Flight1a application; Run->Run from top.
Press ‘OK’ it displays results window.
Double click on the result statement. It shows the expected value & actual value window.

GUI CHECK POINTS-For Object/Window Property:

Create->Insert function->Function Generator-> (Function name:Invoke_application; File :Flight 1a)
Click on’ paste’ and click on’ execute’ & close the window.
Create->Record Context sensitive.
Do some operations & stop recording.
Create->GUI Check Point->Object/Window Property.
Click on some button whose property to be checked.
Click on paste.
40Now close the Flight 1a application; Run->Run from top.
Press ‘OK’ it displays results window.
Double click on the result statement. It shows the expected value & actual value window.

GUI CHECK POINTS-For Object/Window Property:

Create->Insert function->Function Generator-> (Function name:Invoke_application; File :Flight 1a)
Click on’ paste’ and click on’ execute’ & close the window.
Create->Record Context sensitive.
Do some operations & stop recording.
Create->GUI Check Point->For Multiple Object.
Click on some button whose property to be checked.
Click on Add button.
Click on few objects & Right click to quit.
Select each object & select corresponding properties to be checked for that object: click ‘OK’.
Run->Run from Top. It displays the results.

BITMAP CHECK POINT:

For object/window.

Create->Insert function->Function Generator-> (Function name:Invoke_application; File :Flight 1a)
Click on’ paste’ and click on’ execute’ & close the window.
Create->Record Context sensitive.
Enter the Username, Password & click ‘OK’ button
Open the Order in Flight Reservation Application
Select File->Fax Order& enter Fax Number, Signature
Press ‘Cancel’ button.
Create->Stop Recording.
Then open Fax Order in Flight Reservation Application
Create->Bitmap Check->For obj.window;
Run->run from top.
The test fails and you can see the difference.

For Screen Area:

Open new Paint Brush file;
Create->Bitmap check point->from screen area.
Paint file pops up; select an image with cross hair pointer.
Do slight modification in the paint file(you can also run on the same paint file);
Run->Run from Top.
The test fails and you can see the difference of images.

DATABASE CHECK POINTS

Using Default check (for MS-Access only)

Create->Database Check Point->Default check
Select the Specify SQL Statement check box
Click Next button
Click Create button
Type New DSN name and Click New button
Then select a driver for which you want to set up a database & double click that driver
Then select Browse button and retype same DSN name and Click save button.
Click Next button & click Finish button
Select database button & set path of the your database name
Click ‘OK’ button & then Click the your DSN window ‘OK’ button
Type the SQL query in SQL box
Then click Finish button Note : same process will be Custom Check Point

Runtime Record Check Point.

Repeat above 10 steps.
Type query of two related tables in SQL box Ex: select Orders.Order_Number, Flights.Flight_Number from Orders, Flights where Flight.Flight_Number=Orders.Flight_Number.
Select Finish Button
Select hand Icon button& select Order No in your Application
Click Next button.
Select hand Icon button& select Flight No in your Application
Click Next button
Select any one of the following check box 1. One match record 2. One or more match records. 3. No match record
select Finish button the script will be generated.

Synchronization Point

For Obj/Win Properties:

Open start->Programs->Win Runner->Sample applications->Flight1A.
Open winrunner window
Create->Record Context Sensitive
Insert information for new Order &click on "insert Order" button
After inserting click on "delete" button
Stop recording& save the file.
Run->Run from top: Gives your results.

Without Synchronization:

settings->General Options->Click on "Run" tab. "Timeout for checkpoints& Cs statements’ value:10000 follow 1 to 7->the test display on "Error Message" that "delete" button is disabled.

With Synchronization:.

Keep Timeout value:1000 only
Go to the Test Script file, insert pointed after "Insert Order" button, press statement.
Create->Synchronization->For Obj/Window Property
Click on” Delete Order" button & select enable property; click on "paste".
It inserts the Synch statement.

For Obj/Win Bitmap:

Create-> Record Context Sensitive.
Insert information for new order & click on "Insert order" button
Stop recording & save the file.
Go to the TSL Script, just before inserting of data into "date of flight" insert pointer.
Create->Synchronization->For Obj/Win Bitmap is selected.
(Make sure flight reservation is empty) click on "data of flight" text box
Run->Run from Top; results are displayed. Note:(Keep "Timeout value" :1000)

Get Text: From Screen Area:

(Note: Checking whether Order no is increasing when ever Order is created)
Open Flight1A; Analysis->graphs(Keep it open)
Create->get text->from screen area
Capture the No of tickets sold; right click &close the graph
Now , insert new order, open the graph(Analysis->graphs)
Go to Winrunner window, create->get text->from screen area
Capture the No of tickets sold and right click; close the graph
Save the script file
Add the following script; If(text2==text1) tl_step("text comparision",0,"updateed"); else tl_step("text comparision",1,"update property");
Run->Run from top to see the results.

Get Text: For Object/Window:

Open a "Calc" application in two windows (Assuming two are two versions)
Create->get text->for Obj/Window
Click on some button in one window
Stop recording
Repeat 1 to 4 for Capture the text of same object from another "Calc" application.
Add the following TSL(Note: Change "text" to text1 & text2 for each statement) if(text1==text2) report_msg("correct" text1); Else report_msg("incorrect" text2);
Run & see the results

Using GUI-Spy:

Using the GUI Spy, you can view and verify the properties of any GUI object on selected application

Tools->Gui Spy…
Select Spy On ( select Object or Window)
Select Hand icon Button
Point the Object or window & Press Ctrl_L + F3.
You can view and verify the properties.

Using Virtual Object Wizard:

Using the Virtual Object wizard, you can assign a bitmap to a standard object class, define the coordinates of that object, and assign it a logical name

tools->Virtual Object Wizard.
Click Next Button
Select standard class object for the virtual object Ex: class: Push_button
Click Next button
Click Mark Object button
Drag the cursor to mark the area of the virtual object.
Click Next button
Assign the Logical Name, This name will appear in the test script when you record object.
Select Yes or No check box
Click Finish button
Go to winrunner window & Create->Start Recording.
Do some operations
Stop Recording

Using Gui Map Editor:

Using the GUI Map Editor, you can view and modify the properties of any GUI object on selected application. To modify an object’s logical name in a GUI map file
Tools->GUI Map Editor
Select Learn button
Select the Application A winrunner message box informs “do you want to learn all objects within the window” & select ‘yes’’ button.
Select particular object and select Modify Button
Change the Logical Name& click ‘OK’ Button
Save the File

To find an object in a GUI map file:

Choose Tools > GUI Map Editor.
Choose View > GUI Files.
Choose File > Open to load the GUI map file.
Click Find. The mouse pointer turns into a pointing hand.
Click the object in the application being tested. The object is highlighted in the GUI map file.

To highlight an object in a Application:.

Choose Tools > GUI Map Editor.
Choose View > GUI Files.
Choose File > Open to load the GUI map file.
Select the object in the GUI map file
Click Show. The object is highlighted in the Application.

Data Driver Wizard

Start->Programs->Wirunner->Sample applications->Flight 1A
Open Flight Reservation Application
Go to Winrunner window
Create->Start recording
Select file->new order, insert the fields; Click the Insert Order
Tools->Data Table; Enter different Customer names in one row and Tickets in another row.
Default that two column names are Noname1 and Noname2.
Tools->Data Driver Wizard
Click Next button &select the data table
Select Parameterize the test; select Line by Line check box
Click Next Button
Parameterize each specific values with column names of tables; Repeat for all
Finally Click finish button.
Run->Run from top;
View the results.

Merge the GUI Files:

Manual Merge

Tools->Merge GUI Map Files A WinRunner message box informs you that all open GUI maps will be closed and all unsaved changes will be discarded & click ‘OK’ button.
Select the Manual Merge. Manual Merge enables you to manually add GUI objects from the source to target files.
To specify the Target GUI map file click the browse button& select GUI map file
To specify the Source GUI map file. Click the add button& select source GUI map file.
Click ‘OK’ button
GUI Map File Manual Merge Tool Opens Select Objects and move Source File to Target File
Close the GUI Map File Manual Merge Tool

Auto Merge

Tools->Merge GUI Map Files A WinRunner message box informs you that all open GUI maps will be closed and all unsaved changes will be discarded & click ‘OK’ button.
Select the Auto Merge in Merge Type. If you chose Auto Merge and the source GUI map files are merged successfully without conflicts,
To specify the Target GUI map file click the browse button& select GUI map file
To specify the Source GUI map file.
Click the add button& select source GUI map file. Click ‘OK’ button A message confirms the merge.

Manually Retrieve the Records form Database

db_connect(query1,DSN=Flight32);
db_execute_query(query1,select * from Orders, rec);
db_get_field_value(query1,#0,#0);
db_get_headers(query1, field_num,headers);
db_get_row(query1,5,row_con);
db_write_records(query1,,c:\\str.txt,TRUE,10);

TSL SCRIPTS FOR WEB TESTING

1. web_browser_invoke ( browser, site );// invokes the browser and opens a specified site. Browser The name of browser (IE or NETSCAPE). site The address of the site.

2. web_cursor_to_image ( image, x, y ); // moves the cursor to an image on a page. image The logical name of the image. x,y The x- and y-coordinates of the mouse pointer when moved to an image

3. web_cursor_to_label (label, x, y); // moves the cursor to a label on a page. Label the name of the label. x,y The x- and y-coordinates of the mouse pointer when moved to a label.

4.web_cursor_to_link ( link, x, y ); // moves the cursor to a link on a page. link The name of the link. x,y The x- and y-coordinates of the mouse pointer when moved to a link.

5.web_cursor_to_obj ( object, x, y );// moves the cursor to an object on a page. object The name of the object. x,y The x- and y-coordinates of the mouse pointer when moved to an object.

6.web_event ( object, event_name [, x , y ] );// uns an event on a specified object. object The logical name of the recorded object. event_name The name of an event handler. x,y The x- and y-coordinates of the mouse pointer when moved to an object

7.web_file_browse ( object ); // clicks a browse button. object A file-type object.

8.web_file_set ( object, value );// sets the text value in a file-type object. object A file-type object. Value A text string.

9. web_find_text ( frame, text_to_find, result_array [, text_before, text_after, index, show ] ); // returns the location of text within a frame.

10. web_frame_get_text ( frame, out_text [, text_before, text_after, index ] );// retrieves the text content of a frame.

11. web_frame_get_text_count ( frame, regex_text_to_find , count );// returns the number of occurrences of a regular expression in a frame.

12. web_frame_text_exists ( frame, text_to_find [, text_before, text_after ] );// returns a text value if it is found in a frame.

13.web_get_run_event_mode ( out_mode ); // returns the current run mode out_mode The run mode in use. If the mode is FALSE, the default parameter, the test runs by mouse operations. If TRUE, is specified, the test runs by events.

14. web_get_timeout ( out_timeout );// returns the maximum time that WinRunner waits for response from the web. out_timeout The maximum interval in seconds

15.web_image_click ( image, x, y ); // clicks a hypergraphic link or an image. image The logical name of the image. x,y The x- and y-coordinates of the mouse pointer when clicked on a hyper graphic link or an image.

16. web_label_click ( label );// clicks the specified label. Label the name of the label.

17. web_link_click ( link ); // clicks a hypertext link. Link the name of link.

18. web_link_valid ( name, valid );// checks whether a URL name of a link is valid (not broken). name The logical name of a link. valid The status of the link may be valid (TRUE) or invalid (FALSE)

19. web_obj_click ( object, x, y );object The logical name of an object. x,y The x- and y-coordinates of the mouse pointer when clicked on an object.

20. web_obj_get_child_item ( object, table_row, table_column, object_type, index, out_object ); // returns the description of the children in an object.

21. function returns the count of the children in an object. web_obj_get_child_item_count ( object, table_row, table_column, object_type, object_count );

22. returns the value of an object property.web_obj_get_info ( object, property_name, property_value );

23. returns a text string from an object.web_obj_get_text ( object, table_row, table_column, out_text [, text_before, text_after, index] );

24. returns the number of occurrences of a regular expression in an object.web_obj_get_text_count ( object, table_row, table_column, regex_text_to_find, count );

25. returns a text value if it is found in an object.web_obj_text_exists ( object, table_row, table_column, text_to_find [, text_before, text_after] );

26. web_restore_event_default ( ); //resets all events to their default settings.

27. web_set_event ( class, event_name, event_type, event_status ); // sets the event status.

28. web_set_run_event_mode ( mode ); //sets the event run mode.

29 web_set_timeout ( timeout );//.sets the maximum time WinRunner waits for a response from the web.

30. web_set_tooltip_color ( fg_color, bg_color );// sets the colors of the WebTest ToolTip.

31. web_sync ( timeout ); //waits for the navigation of a frame to be completed.

32. web_url_valid ( URL, valid );// checks whether a URL is valid.

LoadRunner Interview Questions

1. What is load testing?
Load testing is to test that if the application works fine with the loads that result from large number of simultaneous users, transactions and to determine weather it can handle peak usage periods.

2. What is Performance testing?
Timing for both read and update transactions should be gathered to determine whether system functions are being performed in an acceptable timeframe. This should be done standalone and then in a multi user environment to determine the effect of multiple transactions on the timing of a single transaction.

3. Did u use LoadRunner? What version?
Yes. Version 7.2.

4. Explain the Load testing process?
Step 1: Planning the test. Here, we develop a clearly defined test plan to ensure the test scenarios we develop will accomplish load-testing objectives. Step 2: Creating Vusers. Here, we create Vuser scripts that contain tasks performed by each Vuser, tasks performed by Vusers as a whole, and tasks measured as transactions. Step 3: Creating the scenario. A scenario describes the events that occur during a testing session. It includes a list of machines, scripts, and Vusers that run during the scenario. We create scenarios using LoadRunner Controller. We can create manual scenarios as well as goal-oriented scenarios. In manual scenarios, we define the number of Vusers, the load generator machines, and percentage of Vusers to be assigned to each script. For web tests, we may create a goal-oriented scenario where we define the goal that our test has to achieve. LoadRunner automatically builds a scenario for us. Step 4: Running the scenario.We emulate load on the server by instructing multiple Vusers to perform tasks simultaneously. Before the testing, we set the scenario configuration and scheduling. We can run the entire scenario, Vuser groups, or individual Vusers. Step 5: Monitoring the scenario.We monitor scenario execution using the LoadRunner online runtime, transaction, system resource, Web resource, Web server resource, Web application server resource, database server resource, network delay, streaming media resource, firewall server resource, ERP server resource, and Java performance monitors. Step 6: Analyzing test results. During scenario execution, LoadRunner records the performance of the application under different loads. We use LoadRunner’s graphs and reports to analyze the application’s performance.

5. When do you do load and performance Testing?
We perform load testing once we are done with interface (GUI) testing. Modern system architectures are large and complex. Whereas single user testing primarily on functionality and user interface of a system component, application testing focuses on performance and reliability of an entire system. For example, a typical application-testing scenario might depict 1000 users logging in simultaneously to a system. This gives rise to issues such as what is the response time of the system, does it crash, will it go with different software applications and platforms, can it hold so many hundreds and thousands of users, etc. This is when we set do load and performance testing.

6. What are the components of LoadRunner?
The components of LoadRunner are The Virtual User Generator, Controller, and the Agent process, LoadRunner Analysis and Monitoring, LoadRunner Books Online.

7. What Component of LoadRunner would you use to record a Script?
The Virtual User Generator (VuGen) component is used to record a script. It enables you to develop Vuser scripts for a variety of application types and communication protocols.

8. What Component of LoadRunner would you use to play Back the script in multi user mode?
The Controller component is used to playback the script in multi-user mode. This is done during a scenario run where a vuser script is executed by a number of vusers in a group.

9. What is a rendezvous point?
You insert rendezvous points into Vuser scripts to emulate heavy user load on the server. Rendezvous points instruct Vusers to wait during test execution for multiple Vusers to arrive at a certain point, in order that they may simultaneously perform a task. For example, to emulate peak load on the bank server, you can insert a rendezvous point instructing 100 Vusers to deposit cash into their accounts at the same time.

10. What is a scenario?
A scenario defines the events that occur during each testing session. For example, a scenario defines and controls the number of users to emulate, the actions to be performed, and the machines on which the virtual users run their emulations.

11. Explain the recording mode for web Vuser script?
We use VuGen to develop a Vuser script by recording a user performing typical business processes on a client application. VuGen creates the script by recording the activity between the client and the server. For example, in web based applications, VuGen monitors the client end of the database and traces all the requests sent to, and received from, the database server. We use VuGen to: Monitor the communication between the application and the server; Generate the required function calls; and Insert the generated function calls into a Vuser script.

12. Why do you create parameters?
Parameters are like script variables. They are used to vary input to the server and to emulate real users. Different sets of data are sent to the server each time the script is run. Better simulate the usage model for more accurate testing from the Controller; one script can emulate many different users on the system.

13. What is correlation?
Explain the difference between automatic correlation and manual correlation? - Correlation is used to obtain data which are unique for each run of the script and which are generated by nested queries. Correlation provides the value to avoid errors arising out of duplicate values and also optimizing the code (to avoid nested queries). Automatic correlation is where we set some rules for correlation. It can be application server specific. Here values are replaced by data which are created by these rules. In manual correlation, the value we want to correlate is scanned and create correlation is used to correlate.

14. How do you find out where correlation is required?
Give few examples from your projects? - Two ways: First we can scan for correlations, and see the list of values which can be correlated. From this we can pick a value to be correlated. Secondly, we can record two scripts and compare them. We can look up the difference file to see for the values which needed to be correlated. In my project, there was a unique id developed for each customer, it was nothing but Insurance Number, it was generated automatically and it was sequential and this value was unique. I had to correlate this value, in order to avoid errors while running my script. I did using scan for correlation.

15. Where do you set automatic correlation options?
Automatic correlation from web point of view can be set in recording options and correlation tab. Here we can enable correlation for the entire script and choose either issue online messages or offline actions, where we can define rules for that correlation. Automatic correlation for database can be done using show output window and scan for correlation and picking the correlate query tab and choose which query value we want to correlate. If we know the specific value to be correlated, we just do create correlation for the value and specify how the value to be created.

16. What is a function to capture dynamic values in the web Vuser script? Web_reg_save_param function saves dynamic data information to a parameter.

17. When do you disable log in Virtual User Generator, When do you choose standard and extended logs?
Once we debug our script and verify that it is functional, we can enable logging for errors only. When we add a script to a scenario, logging is automatically disabled. Standard Log Option: When you selectStandard log, it creates a standard log of functions and messages sent during script execution to use for debugging. Disable this option for large load testing scenarios. When you copy a script to a scenario, logging is automatically disabled Extended Log Option: Selectextended log to create an extended log, including warnings and other messages. Disable this option for large load testing scenarios. When you copy a script to a scenario, logging is automatically disabled. We can specify which additional information should be added to the extended log using the Extended log options.

18. How do you debug a LoadRunner script?
VuGen contains two options to help debug Vuser scripts-the Run Step by Step command and breakpoints. The Debug settings in the Options dialog box allow us to determine the extent of the trace to be performed during scenario execution. The debug information is written to the Output window. We can manually set the message class within your script using the lr_set_debug_message function. This is useful if we want to receive debug information about a small section of the script only.

19. How do you write user defined functions in LR?Give me few functions you wrote in your previous project?
Before we create the User Defined functions we need to create the externallibrary (DLL) with the function. We add this library to VuGen bin directory. Once the library is added then we assign user defined function as a parameter. The function should have the following format: __declspec (dllexport) char* (char*, char*)Examples of user defined functions are as follows:GetVersion, GetCurrentTime, GetPltform are some of the user defined functions used in my earlier project.

20. What are the changes you can make in run-time settings?
The Run Time Settings that we make are: a) Pacing - It has iteration count. b) Log - Under this we have Disable Logging Standard Log and c) Extended Think Time - In think time we have two options like Ignore think time and Replay think time. d) General - Under general tab we can set the vusers as process or as multithreading and whether each step as a transaction.

21. How do you perform functional testing under load?
Functionality under load can be tested by running several Vusers concurrently. By increasing the amount of Vusers, we can determine how much load the server can sustain.

22. What is Ramp up? How do you set this?
This option is used to gradually increase the amount of Vusers/load on the server. An initial value is set and a value to wait between intervals can bespecified. To set Ramp Up, go to ‘Scenario Scheduling Options’

23. What is the advantage of running the Vuser as thread?
VuGen provides the facility to use multithreading. This enables more Vusers to be run pergenerator. If the Vuser is run as a process, the same driver program is loaded into memory for each Vuser, thus taking up a large amount of memory. This limits the number of Vusers that can be run on a singlegenerator. If the Vuser is run as a thread, only one instance of the driver program is loaded into memory for the given number ofVusers (say 100). Each thread shares the memory of the parent driver program, thus enabling more Vusers to be run per generator.

24. If you want to stop the execution of your script on error, how do you do that?
The lr_abort function aborts the execution of a Vuser script. It instructs the Vuser to stop executing the Actions section, execute the vuser_end section and end the execution. This function is useful when you need to manually abort a script execution as a result of a specific error condition. When you end a script using this function, the Vuser is assigned the status "Stopped". For this to take effect, we have to first uncheck the “Continue on error” option in Run-Time Settings.

25. What is the relation between Response Time and Throughput?
The Throughput graph shows the amount of data in bytes that the Vusers received from the server in a second. When we compare this with the transaction response time, we will notice that as throughput decreased, the response time also decreased. Similarly, the peak throughput and highest response time would occur approximately at the same time.

26. Explain the Configuration of your systems?
The configuration of our systems refers to that of the client machines on which we run the Vusers. The configuration of any client machine includes its hardware settings, memory, operating system, software applications, development tools, etc. This system component configuration should match with the overall system configuration that would include the network infrastructure, the web server, the database server, and any other components that go with this larger system so as to achieve the load testing objectives.

27. How do you identify the performance bottlenecks?
Performance Bottlenecks can be detected by using monitors. These monitors might be application server monitors, web server monitors, database server monitors and network monitors. They help in finding out the troubled area in our scenario which causes increased response time. The measurements made are usually performance response time, throughput, hits/sec, network delay graphs, etc.

28. If web server, database and Network are all fine where could be the problem?
The problem could be in the system itself or in the application server or in the code written for the application.

29. How did you find web server related issues?
Using Web resource monitors we can find the performance of web servers. Using these monitors we can analyze throughput on the web server, number of hits per second thatoccurred during scenario, the number of http responses per second, the number of downloaded pages per second.

30. How did you find database related issues?
By running “Database” monitor and help of “Data Resource Graph” we can find database related issues. E.g. You can specify the resource you want to measure on before running the controller and than you can see database related issues

31. How did you plan the Load? What are the Criteria?
Load test is planned to decide the number of users, what kind of machines we are going to use and from where they are run. It is based on 2 important documents, Task Distribution Diagram and Transaction profile. Task Distribution Diagram gives us the information on number of users for a particular transaction and the time of the load. The peak usage and off-usage are decided from this Diagram. Transaction profile gives us the information about the transactions name and their priority levels with regard to the scenario we are deciding.

32. What does vuser_init action contain?
Vuser_init action contains procedures to login to a server.

33. What does vuser_end action contain?
Vuser_end section contains log off procedures.

34. What is think time? How do you change the threshold?
Think time is the time that a real user waits between actions. Example: When a user receives data from a server, the user may wait several seconds to review the data before responding. This delay is known as the think time. Changing the Threshold: Threshold level is the level below which the recorded think time will be ignored. The default value is five (5) seconds. We can change the think time threshold in the Recording options of the Vugen.

35. What is the difference between standard log and extended log?
The standard log sends a subset of functions and messages sent during script execution to a log. The subset depends on the Vuser type Extended log sends a detailed script execution messages to the output log. This is mainly used during debugging when we want information about: Parameter substitution. Data returned by the server. Advanced trace.

36. Explain the following functions:
lr_debug_message - The lr_debug_message function sends a debug message to the output log when the specified message class is set. lr_output_message - The lr_output_message function sends notifications to the Controller Output window and the Vuser log file. lr_error_message - The lr_error_message function sends an error message to the LoadRunner Output window. lrd_stmt - The lrd_stmt function associates a character string (usually a SQL statement) with a cursor. This function sets a SQL statement to be processed. lrd_fetch - The lrd_fetch function fetches the next row from the result set.

37. Throughput
If the throughput scales upward as time progresses and the number of Vusers increase, this indicates that the bandwidth is sufficient. If the graph were to remain relatively flat as the number of Vusers increased, it wouldbe reasonable to conclude that the bandwidth is constraining the volume ofdata delivered.

38. Types of Goals in Goal-Oriented Scenario
Load Runner provides you with five different types of goals in a goal oriented scenario:
1. The number of concurrent Vusers
2. The number of hits per second
3. The number of transactions per second
4. The number of pages per minute
5. The transaction response time that you want your scenario

39. Analysis Scenario (Bottlenecks):
In Running Vuser graph correlated with the response time graph you can see that as the number of Vusers increases, the average response time of the check itinerary transaction very gradually increases. In other words, the average response time steadily increases as the loadincreases. At 56 Vusers, there is a sudden, sharp increase in the average responsetime. We say that the test broke the server. That is the mean time before failure (MTBF). The response time clearly began to degrade when there were more than 56 Vusers running simultaneously.

40. What is correlation?
Explain the difference between automatic correlation and manual correlation? - Correlation is used to obtain data which are unique for each run of the script and which are generated by nested queries. Correlation provides the value to avoid errors arising out of duplicate values and also optimizing the code (to avoid nested queries). Automatic correlation is where we set some rules for correlation. It can be application server specific. Here values are replaced by data which are created by these rules. In manual correlation, the value we want to correlate is scanned and create correlation is used to correlate.

41. Where do you set automatic correlation options?
Automatic correlation from web point of view, can be set in recording options and correlation tab. Here we can enable correlation for the entire script and choose either issue online messages or offline actions, where we can define rules for that correlation. Automatic correlation for database, can be done using show output window and scan for correlation and picking the correlate query tab and choose which query value we want to correlate. If we know the specific value to be correlated, we just do create correlation for the value and specify how the value to be created.

42. What is a function to capture dynamic values in the web vuser script?Web_reg_save_param function saves dynamic data information to a parameter.

Counts