I did many investigation on many virtualization software, and VMware is the best to me, at least up to now
VirtualBox, through the website, what it says is so impressive, and it is open-source as well
I will try to use it, and report the comparision later
http://virtualbox.org/wiki/Downloads
Leadership & Project Management
Monday, September 29, 2008
Saturday, September 27, 2008
Experience: If you want to find some document, software
Beside using Google, if you want to find software, you can go to sourceforge.net to find, even you don't intent to develop it, just download/compile and use
And for document, you can go to some document hosting site like: slideshare.net, youtube (video hosting), scribd.com (document hosting) to find your needed documents
With me, ACM, IEEE for standard
And for document, you can go to some document hosting site like: slideshare.net, youtube (video hosting), scribd.com (document hosting) to find your needed documents
With me, ACM, IEEE for standard
vnc2swf is an open source program runs on Linux to
convert VNC sesssion into swf - flash file, the idea is to implement it on Windows then convert VNC to avi file or something like that. So I can capture movie, automation running to file, instead of using some other tools, or VMware
Using "Tag' to tag 'Human Resource Information', local filesystem
This is my idea, is there any software to allow us to help us manage Word documents, Excel, etc. pictures, jpg, then we can tag them, like: travel, cambodia, san diego, etc.
Then later on, we can find any related documents on our file system, base on those tag/keyword Does it seem like Google Desktop?
Another idea, we have a lot of Human Resource Resume, for each CV, they describe there skill sets in diffrent way, so it is little bit hard for us to search appropriate candidate, my idea is to attach their CV in an application, and tag their name with appropriate skill sets, then later on, I can query any candidates that has the required skill sets. Can be done by Google Desktop, Windows Search
OK!!!! GOOD, I will put Google Desktop to search my CV folders, Put Windows to run index service for CV folder, so I can approach any candidate easier
Then later on, we can find any related documents on our file system, base on those tag/keyword Does it seem like Google Desktop?
Another idea, we have a lot of Human Resource Resume, for each CV, they describe there skill sets in diffrent way, so it is little bit hard for us to search appropriate candidate, my idea is to attach their CV in an application, and tag their name with appropriate skill sets, then later on, I can query any candidates that has the required skill sets. Can be done by Google Desktop, Windows Search
OK!!!! GOOD, I will put Google Desktop to search my CV folders, Put Windows to run index service for CV folder, so I can approach any candidate easier
New Object Repository Interface in QuickTest Pro 9
This is very informative
http://www.softwareinquisition.com/2006/04/new-object-repository-interface-in-quicktest-pro-9#comment-21844
New Object Repository Interface in QuickTest Pro 9
The changes to the management of the Object Repository are among the most significant in the new version, and though I haven’t been through enough with the product to have a comprehensive opinion, I wanted to post my initial thoughts, and to invite comments from anyone whose experience is similar or different.
First off, let me say that on our team, where possible, we use programmatic descriptions. We minimize our interaction with the OR because we find that this is usually the first area that breaks when something changes in the interface. But we still do use the OR, and we rely on having an easy way to interact with it. I’m happy to report that they have made improvements in version 9, but there are still cases where they didn’t go far enough.
The Set Up
In the description below, I opened a new test and associated my AUT’s shared repository with the default action. My first inclination was to remove the association between the action’s default Local Repository, but then I found that you can’t remove the association. In an initial fit of consternation I talked it over with Will, and he was happy about the new behavior.
The Team-Oriented Object Repository
The local vs shared OR is their solution for how to make a team repository easier to manage: during test development, you have read-only access to the objects currently in the repository, but new objects are added to the local repository for that action. At some point later, one test developer goes back in and merges all the objects that should be shared, and either trims the rest from the local, or leaves them there if there’s no chance of them being used outside that action.
I’m undecided about this method, but I understand why they’ve done it. One thing is for sure: this beats the heck out of trying to run the external merge tool every few days, not having any idea when new objects are being created, and all the other stuff we had to do in 8.2 to get it working.
The New Object Repository Interface
When you open the new Object Repository, the first thing you’ll notice (besides the fact that it now takes about 5 seconds on my machine, as opposed to less than half a second for version 8.2), is the tree view on the left and the properties frame on the right. Further, the default size for the OR is more like what you’d expect: with the hierarchy collapsed to 3-deep, you can really see things well. The frame is big, and you probably don’t have to scroll around much. When you click on an object, the properties frame on the right automatically refreshes to show the selected object’s properties.
You’ll further notice that the tree is mostly grayed out - that’s the shared repository in read-only mode. Local objects are read-write, and any new objects you add go into that. The nice thing about this is how the trees merge seamlessly - if you’re adding a new WebElement under a particular browser/page object, one that exists in the shared OR, its hierarchy is copied into the local rep so that it looks like your new WebElement is actually under the same parent as all the other WebElements on that page. This allows you to view the OR the way you always have, and since the files are separated, you won’t be stepping on someone else’s code, forcing a merge.
Here’s the BIG problem with the interface: For the read-only objects (in the shared OR), you can’t get extended attribute properties. You can’t view them at all. The only properties you can see are the Description Properties, used to identify the object, the Ordinal Identifier, and whatever Additional Details you have turned on with Smart Identification for that object type. Now, I believe 8.2 worked in the same way if you were working with a read-only repository, but since that’s the rule now and not the exception (on our team, anyway), it becomes tiresome to go through the steps necessary to view the additional details.
This probably wouldn’t gall me so much if I didn’t see all that space below the properties that are listed… space where they could have put reams and reams of information, separating TO Properties and Method calls, allowing you to view anything and everything at will. It’s a missed opportunity to put all that good information right there on the page.
So what do you have to do to see the properties? Well, you have two options, one easy, one hard. The easy one is this: select the object whose properties you want to view, then click ObjectsCopy to Local from the menu bar (there’s no hot key), then click the plus + sign in the Properties frame… this will allow you to CRUD all the TO properties. The side effect of this is that, if you end up making a change to the object, the change will only be made in your local repository, and will not be carried back to the shared OR.
The other option is to open up the Object Manager, a standalone app that allows you to merge ORs, edit properties, reparent, etc., independently from the main QTP interface. I’ll be doing a separate write-up about the new OM, because though it’s similar to the OR editor, it has its own set of features, annoyances, and tricky behaviors.
Locate in Repository - the Coolest New Feature
This is the coolest thing in the new OR - the ability to click on an object in the AUT, and have it highlighted in the OR. Was it just me, or did everyone else spend an awful lot of time searching for objects in the OR, navingating through trees and trees of crap, when the object on the page was just sitting there laughing at you? Now you click the “Locate in Repository” button, click on the object in the AUT, and it goes right there - if it can find it. It’s a safe bet that if QTP can locate the object during a test run, it can locate it in an OR. It doesn’t always work, but it’s better than the nothing we had before.
Update from Application
Another cool feature: Select an object in the OR hierarchy, then click on its counterpart in the AUT, and its properties will be updated from the AUT. This is useful for when something is out of date, but I can see it being a pain if a whole page’s worth of objects has changed and you have to update them all one-by-one. I don’t know if there’s an effecient way out of this yet, but it’s possible that I’ve missed it. At any rate, I like the fact that it’s there.
…and the Bad
They didn’t put the “Locate in Application”, “Copy to Local”, “Highlight in Application”, or any of the other object-specific functions in the right-click menu when these objects are highlighted… and it makes me want to scream. There are no appreciable hot keys, no ways to make management of these things more efficient, and you end up getting just about as frustrated as you did in version 8.2.
A really big problem, one that I’m afraid is going to cause many headaches for some really smart people, is that under the File Menu there’s an option called “Export Local Objects”. When my eye first hit that, I read it the same way I read “Copy to Local” from earlier, that it would perform some sort of merge with the shared OR. So, I could copy the objects to the local OR, edit them at will, then export them back out to the shared OR. No problem, right? Well, this options actually creates a new OR (the binary .tsr file format, not an XML file, by the way), containing the objects from the Local Repository. The intent is that you can create a standalone OR, and maybe use that as a shared OR for other actions. The actuality is that I once overwrote my humongous shared OR with objects from a local one, because like most normal people, I didn’t read the warning message that said “this will replace the selected OR!!”, clicked OK, and immediately heard groaning coming from a cube or two away. We’re all version controlled here, so it was fine, but I’ll bet dollars to donuts that someone less organized is going to lose a Lot Of Work as a result of this little detail.
Overall
In the end I haven’t worked with the new OR enough to have a firm grasp of what’s great and what’s bad about it. These are my initial impressions, and I would invite anyone (even from Mercury, since we know you’re reading ;) ) to help me to understand if I’m wrong on the new features. I’ve tried to stick mainly to the in situ OR dialog, because this is already long enough, so next time I’ll cover the standalone Object Manager application.
http://www.softwareinquisition.com/2006/04/new-object-repository-interface-in-quicktest-pro-9#comment-21844
New Object Repository Interface in QuickTest Pro 9
The changes to the management of the Object Repository are among the most significant in the new version, and though I haven’t been through enough with the product to have a comprehensive opinion, I wanted to post my initial thoughts, and to invite comments from anyone whose experience is similar or different.
First off, let me say that on our team, where possible, we use programmatic descriptions. We minimize our interaction with the OR because we find that this is usually the first area that breaks when something changes in the interface. But we still do use the OR, and we rely on having an easy way to interact with it. I’m happy to report that they have made improvements in version 9, but there are still cases where they didn’t go far enough.
The Set Up
In the description below, I opened a new test and associated my AUT’s shared repository with the default action. My first inclination was to remove the association between the action’s default Local Repository, but then I found that you can’t remove the association. In an initial fit of consternation I talked it over with Will, and he was happy about the new behavior.
The Team-Oriented Object Repository
The local vs shared OR is their solution for how to make a team repository easier to manage: during test development, you have read-only access to the objects currently in the repository, but new objects are added to the local repository for that action. At some point later, one test developer goes back in and merges all the objects that should be shared, and either trims the rest from the local, or leaves them there if there’s no chance of them being used outside that action.
I’m undecided about this method, but I understand why they’ve done it. One thing is for sure: this beats the heck out of trying to run the external merge tool every few days, not having any idea when new objects are being created, and all the other stuff we had to do in 8.2 to get it working.
The New Object Repository Interface
When you open the new Object Repository, the first thing you’ll notice (besides the fact that it now takes about 5 seconds on my machine, as opposed to less than half a second for version 8.2), is the tree view on the left and the properties frame on the right. Further, the default size for the OR is more like what you’d expect: with the hierarchy collapsed to 3-deep, you can really see things well. The frame is big, and you probably don’t have to scroll around much. When you click on an object, the properties frame on the right automatically refreshes to show the selected object’s properties.
You’ll further notice that the tree is mostly grayed out - that’s the shared repository in read-only mode. Local objects are read-write, and any new objects you add go into that. The nice thing about this is how the trees merge seamlessly - if you’re adding a new WebElement under a particular browser/page object, one that exists in the shared OR, its hierarchy is copied into the local rep so that it looks like your new WebElement is actually under the same parent as all the other WebElements on that page. This allows you to view the OR the way you always have, and since the files are separated, you won’t be stepping on someone else’s code, forcing a merge.
Here’s the BIG problem with the interface: For the read-only objects (in the shared OR), you can’t get extended attribute properties. You can’t view them at all. The only properties you can see are the Description Properties, used to identify the object, the Ordinal Identifier, and whatever Additional Details you have turned on with Smart Identification for that object type. Now, I believe 8.2 worked in the same way if you were working with a read-only repository, but since that’s the rule now and not the exception (on our team, anyway), it becomes tiresome to go through the steps necessary to view the additional details.
This probably wouldn’t gall me so much if I didn’t see all that space below the properties that are listed… space where they could have put reams and reams of information, separating TO Properties and Method calls, allowing you to view anything and everything at will. It’s a missed opportunity to put all that good information right there on the page.
So what do you have to do to see the properties? Well, you have two options, one easy, one hard. The easy one is this: select the object whose properties you want to view, then click ObjectsCopy to Local from the menu bar (there’s no hot key), then click the plus + sign in the Properties frame… this will allow you to CRUD all the TO properties. The side effect of this is that, if you end up making a change to the object, the change will only be made in your local repository, and will not be carried back to the shared OR.
The other option is to open up the Object Manager, a standalone app that allows you to merge ORs, edit properties, reparent, etc., independently from the main QTP interface. I’ll be doing a separate write-up about the new OM, because though it’s similar to the OR editor, it has its own set of features, annoyances, and tricky behaviors.
Locate in Repository - the Coolest New Feature
This is the coolest thing in the new OR - the ability to click on an object in the AUT, and have it highlighted in the OR. Was it just me, or did everyone else spend an awful lot of time searching for objects in the OR, navingating through trees and trees of crap, when the object on the page was just sitting there laughing at you? Now you click the “Locate in Repository” button, click on the object in the AUT, and it goes right there - if it can find it. It’s a safe bet that if QTP can locate the object during a test run, it can locate it in an OR. It doesn’t always work, but it’s better than the nothing we had before.
Update from Application
Another cool feature: Select an object in the OR hierarchy, then click on its counterpart in the AUT, and its properties will be updated from the AUT. This is useful for when something is out of date, but I can see it being a pain if a whole page’s worth of objects has changed and you have to update them all one-by-one. I don’t know if there’s an effecient way out of this yet, but it’s possible that I’ve missed it. At any rate, I like the fact that it’s there.
…and the Bad
They didn’t put the “Locate in Application”, “Copy to Local”, “Highlight in Application”, or any of the other object-specific functions in the right-click menu when these objects are highlighted… and it makes me want to scream. There are no appreciable hot keys, no ways to make management of these things more efficient, and you end up getting just about as frustrated as you did in version 8.2.
A really big problem, one that I’m afraid is going to cause many headaches for some really smart people, is that under the File Menu there’s an option called “Export Local Objects”. When my eye first hit that, I read it the same way I read “Copy to Local” from earlier, that it would perform some sort of merge with the shared OR. So, I could copy the objects to the local OR, edit them at will, then export them back out to the shared OR. No problem, right? Well, this options actually creates a new OR (the binary .tsr file format, not an XML file, by the way), containing the objects from the Local Repository. The intent is that you can create a standalone OR, and maybe use that as a shared OR for other actions. The actuality is that I once overwrote my humongous shared OR with objects from a local one, because like most normal people, I didn’t read the warning message that said “this will replace the selected OR!!”, clicked OK, and immediately heard groaning coming from a cube or two away. We’re all version controlled here, so it was fine, but I’ll bet dollars to donuts that someone less organized is going to lose a Lot Of Work as a result of this little detail.
Overall
In the end I haven’t worked with the new OR enough to have a firm grasp of what’s great and what’s bad about it. These are my initial impressions, and I would invite anyone (even from Mercury, since we know you’re reading ;) ) to help me to understand if I’m wrong on the new features. I’ve tried to stick mainly to the in situ OR dialog, because this is already long enough, so next time I’ll cover the standalone Object Manager application.
Some improvement for QTP in my project
I'm sorry, this is my brainstorming, not for publishing purpose
The most important idea: (as my experience in developing web crawler, apply artificial interllienge)
-If we use too much properties to identify an object, obviously, we assume that object identify will more accurately. But in some case, if the object in real life, sometime, miss some properties, our application cannot recognize the object (html object is rarely the same all the time). And this process is a result of training object identifier in a 'too large environment' where we have many object, and the application always try the best to unique the object (in test automation is a large set of test case that use the same object repository, and object in repository absolutely has many properties, and cause sometime it cannot recognize the object)
=> increase of number properties to identify object
Another case, if there are too much object has the same properties so to unique the object QTP will reject any duplicated properties, lead to
=> reduce number of properties to identify object. So QTP cannot identify any object (even in small environment)
==>This all is a result of training QTP in a large environment
-1/ too many object, window on the desktop at the time of training
-2/ you train QTP to recognize objects (then store in the same OBJECT REPOSITORY) but you train it many times, each time is of another Application (another test case)
-But, what if we use less properties to identify the object? In the small environment where there are several objects only, it is very easy to unique an object. But when we put the test in to large environment (where there are many test case that open many windows/object) the it will be very hard to unique an object
=> So, we are tester, developer, we understand much, which case will use which type of object. We can leverage dynamic object repository load functionality of QTP to:
1/ For each test case, we know exactly which object we would like to interact, so we can load exactly OR file of that object only. So if we have 2 more objects that similiar in different test cases, but we are testing 1 test case only, we can elimiate 1 remain test case,
2/ For each OR file, we will try to get as much unique properties as possible
Compose two above, we will have a good solution to avoid any duplicated object on the system by elimiate each OR / test case, interact objects/windows in sequence
3/ We need to get investigation, graph to balance, how many properties is good enough for our application to identify? for each test case if possible
1/ Separate our test case into small piece, to limit, and increase object identify performance, increase accurate
2/ Dynamic load object repository for each set of test case
- One more thing, there are some guys around the world, they use programatic to identify object, not relay on Object Repository anymore. That is perfect, so they how to identify their object clearly and to avoid any impact from the change of interface GUI , coding, what if developer, and sudently add some very funny properties into you object?
Ref: http://www.softwareinquisition.com/2006/04/new-object-repository-interface-in-quicktest-pro-9#comment-21844
Below is the detail:
-Dynamic load Object Repository, separate object repository by screen, test case, to increase performace, accurately identify
-In some case, update the object property in object repository to reflect the actually object that known by tester
-Try to understand and have good use of QTP Object properties
Objects Properties:
-Try to understand and have good use of QTP checkpoint functionalities
"
Mandatory Properties: Predefined sets of properties QuickTest learns for each test object.
Assistive Properties: Assistive properties are properties that QuickTest learns only if the mandatory properties are NOT sufficient to create a unique description.
Ordinal Identifier: The Ordinal Identifier assigns the object a numerical value that indicates its order relative to other objects for those have same values for all properties specified in the mandatory and Assistive property lists. This ordered value enables QuickTest to create a unique description when the mandatory and Assistive properties are not sufficient to do so.
SmartTesting @ January 28, 2008"
"
ISSUE: How to set a property value of an object in the Object Repository during runtime?
Issues, Quick Test Pro, Test Automation
Solution: We can modify the properties of the temporary version of the object during the run session without affecting the permanent values in the object repository by adding a SetTOProperty method. The SetTOProperty method can be inserted from the Keyword view using step generator or inserted to the expert view.
How?
The regular expression checkbox needs to be selected for the specified object .
Either through the Object Repository or through the Object Properties window, the regular expression checkbox needs to be selected before running the test.
To go through the Object Repository:
1. Select Resources -> Object Repository.
2. Select the object that will be used with the SetTOProperty method.
3. Select the property that will be used with the SetTOProperty method.
4. Select the “Edit Constant Value Options” button, which is to the right of the Constant field.
5. Select the “Regular expression” checkbox.
6. Click.
7. Click.
After modifying the setting, you can specify the regular expression using the SetTOProperty method.
Example:
Window(”Notepad”).WinEditor(”Edit”).SetTOProperty “text”, “test.*” "
The most important idea: (as my experience in developing web crawler, apply artificial interllienge)
-If we use too much properties to identify an object, obviously, we assume that object identify will more accurately. But in some case, if the object in real life, sometime, miss some properties, our application cannot recognize the object (html object is rarely the same all the time). And this process is a result of training object identifier in a 'too large environment' where we have many object, and the application always try the best to unique the object (in test automation is a large set of test case that use the same object repository, and object in repository absolutely has many properties, and cause sometime it cannot recognize the object)
=> increase of number properties to identify object
Another case, if there are too much object has the same properties so to unique the object QTP will reject any duplicated properties, lead to
=> reduce number of properties to identify object. So QTP cannot identify any object (even in small environment)
==>This all is a result of training QTP in a large environment
-1/ too many object, window on the desktop at the time of training
-2/ you train QTP to recognize objects (then store in the same OBJECT REPOSITORY) but you train it many times, each time is of another Application (another test case)
-But, what if we use less properties to identify the object? In the small environment where there are several objects only, it is very easy to unique an object. But when we put the test in to large environment (where there are many test case that open many windows/object) the it will be very hard to unique an object
=> So, we are tester, developer, we understand much, which case will use which type of object. We can leverage dynamic object repository load functionality of QTP to:
1/ For each test case, we know exactly which object we would like to interact, so we can load exactly OR file of that object only. So if we have 2 more objects that similiar in different test cases, but we are testing 1 test case only, we can elimiate 1 remain test case,
2/ For each OR file, we will try to get as much unique properties as possible
Compose two above, we will have a good solution to avoid any duplicated object on the system by elimiate each OR / test case, interact objects/windows in sequence
3/ We need to get investigation, graph to balance, how many properties is good enough for our application to identify? for each test case if possible
1/ Separate our test case into small piece, to limit, and increase object identify performance, increase accurate
2/ Dynamic load object repository for each set of test case
- One more thing, there are some guys around the world, they use programatic to identify object, not relay on Object Repository anymore. That is perfect, so they how to identify their object clearly and to avoid any impact from the change of interface GUI , coding, what if developer, and sudently add some very funny properties into you object?
Ref: http://www.softwareinquisition.com/2006/04/new-object-repository-interface-in-quicktest-pro-9#comment-21844
Below is the detail:
-Dynamic load Object Repository, separate object repository by screen, test case, to increase performace, accurately identify
-In some case, update the object property in object repository to reflect the actually object that known by tester
-Try to understand and have good use of QTP Object properties
Objects Properties:
-Try to understand and have good use of QTP checkpoint functionalities
"
Mandatory Properties: Predefined sets of properties QuickTest learns for each test object.
Assistive Properties: Assistive properties are properties that QuickTest learns only if the mandatory properties are NOT sufficient to create a unique description.
Ordinal Identifier: The Ordinal Identifier assigns the object a numerical value that indicates its order relative to other objects for those have same values for all properties specified in the mandatory and Assistive property lists. This ordered value enables QuickTest to create a unique description when the mandatory and Assistive properties are not sufficient to do so.
SmartTesting @ January 28, 2008"
"
ISSUE: How to set a property value of an object in the Object Repository during runtime?
Issues, Quick Test Pro, Test Automation
Solution: We can modify the properties of the temporary version of the object during the run session without affecting the permanent values in the object repository by adding a SetTOProperty method. The SetTOProperty method can be inserted from the Keyword view using step generator or inserted to the expert view.
How?
The regular expression checkbox needs to be selected for the specified object .
Either through the Object Repository or through the Object Properties window, the regular expression checkbox needs to be selected before running the test.
To go through the Object Repository:
1. Select Resources -> Object Repository.
2. Select the object that will be used with the SetTOProperty method.
3. Select the property that will be used with the SetTOProperty method.
4. Select the “Edit Constant Value Options” button, which is to the right of the Constant field.
5. Select the “Regular expression” checkbox.
6. Click
7. Click
After modifying the setting, you can specify the regular expression using the SetTOProperty method.
Example:
Window(”Notepad”).WinEditor(”Edit”).SetTOProperty “text”, “test.*”
Subscribe to:
Posts (Atom)