Showing posts with label framework planning.. Show all posts
Showing posts with label framework planning.. Show all posts

Friday, 15 June 2012

Entry point in your Automation Framework

*getGlobalDataxlsPath()shall return the complete path of "GlobalData.xls" file

This is a small part to understand  getGlobalDataxlsPath()


Now the logic behind having an entry point for your Automation framework is whenever you execute any script, your framework structure should be available in Execution QTP environment. Since "GlobalData.xls" itself contain the structure, how you gonna access this excel sheet seamlessly.

One Idea, let's leverage QTP's Enviroment("TestDir") variable.

So your function called getGlobalDataxlsPath() Should return a path like for example 
"C:\\whereveryouhaveplaced\GlobalData.xls"
Colored path is what we need to extract.

Look at below code

Function  getGlobalDataxlsPath()
                 getGlobalDataxlsPath = Mid(Environment("TestDir"), 1, instr(1,Environment("TestDir"), "Framework")+10)
End Function

I hope you got dat!!!

Notice the dependency, your Framework Base folder should contain the word "Framework".

-Pankaj Dhapola
Let's Think on it

Monday, 23 April 2012

Automation Framework Architecture using QTP

Automation Framework Architecture using QTP

Every one knows about the different types of framework
I'm not going to explain you about these framework (Many Authors have done that), I would like to visualize you how you can start off with designing of your framework . . .
I'll try my best to share with clarity and understanding


Well first off all, you should make a mind map (or simply draw a DFD) of the structure of your framework, for example
1) The flow of input data from a storage into your application
2) How you will arrange the output of the application and display/store results?
3) How your execution of scripts would be arranged both locally and in QC?
4) How is your reporting and logger functionality will work?

All this questions definitely come after experience, but people with great Visualization would grasp it easily.

Now their are some aspects of any framework

1) Library files:- which is bundle of functions in .qfl, .vbs, and/or .txt files.
2) Test Data: - The required inputs in your application, which may be stored in excel(mostly), txt, CSV etc
3) Test Scripts: - A place where all Scripts are stored functional and sub functional wise.
4) Results:- A place where your application results/output will be generated. Note that this place can be different in QC and Local folder structure
5) Object Repository: - A place where Global OR is placed if any.
6) Recovery Scenario: - A place to store recovery scenario.
7) Re-Usable Actions: - A place to keep your re-usable actions, if any.

you may also have some other folder to include depending on project.

And now . . . Bundle these aspects under one roof, i.e your framework like below folder structure


Now the layout is ready, how do you let QTP know about these folder structure path, how will you keep this folder called "MyFramework" independent of a place, where-ever you put, it should run seamlessly, either in Company Shared Drive or your desktop, etc.

In short how will you make it Portable or keep integrity of relevant aspects intact.

I have a solution ("GlobalData.xls"), write down the path name of all this structure in an excel file.

See below screenshots.











The Cell formula for "BasePath" is
"=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1),1)-1)"

Now you might have question why did I Named this excel file as "GlobalData.xls"
I think I gotcha!!!

Put all your data which will be used across your script execution, the data which you would need persistent throughout your script execution like AUT URL, User-ID, Password, all function library file path, etc

See what is the advantage . . .
Put this folder wherever you want, your excel file keep the integrity of the Framework Structure path. I have seen some framework which have many configuration issues if it is migrated to another PC for execution, and time is lost while debugging.

I came up with this intact solution.

Up to me A framework should leverage Re-Usability and should be good in maintenance.

I will tell you how you will bring these data in your QTP "Environment" ;)

Taking about next thing . . . . .
LibraryFiles

What do you think about Managing Object Repository

What kind of Results/Logs do you Generate?

-Pankaj Dhapola

Friday, 9 December 2011

QTP - Why Analysis and Planning is important before you start with framework designing.

Of course everyone knows why planning is important.

Now The question is what shall I do for framework designing. What are the points do I need to remember while designing a framework?
Well well well . . .
Framework designing is not a simple thing where you learn this blog or learn material from internet and you start off with it. It require work experience in various framework, but this is not the end.

Their is a great saying I heard from one my close friend Srimaya Mahapatra
"Wise people are those who learn from their mistakes and Wisest people are those who learn from other's mistake."
Seems to be a powerful statement enough to change one's life.

Coming back to business . . .

Before you start designing a framework in QTP, below are the question you need to ask yourself.
1) Do I know the functionality of each module for AUT?
2) Do I know what are the input data into this application and what are the outputs?
3) What would be my design flow right from initialization of script to result display?
4) What kind of framework I shall use? Mostly people use hybrid one.
5) Whether to use DataTable or ADODB or both?
5) Whether to use OR or DP or both?
6) Whether to use Reporter object for reporting or Custom based results?
7) Whether to Multiple actions or Function library?
8) What kind of recovery scenario, error handling should I need to include?
9) How about synchronization?

All this question can only be answered by YOU.

To decide all these, you must have experience enough to understand usage of all these concepts.
It is advisable to go over these once, so that you could be familiar with these concepts.
It's long journey my frnds, but don't worry each journey would be refreshing. :)

I shall Go over these with an understanding where novice people can understand and people with astonishment will ask themselves "Oooooo! QTP aisa kaam karta hai kya!!!" i.e. Do really QTP work internally like this?

Thanks and Warm Regards
Pankaj Dhapola