Saturday, June 4, 2011

QTP vs Selenium 1.0

QTP vs Selenium 1.0

1. Licence type
QTP - Commercial software (Concurrent and per user licence)
Selenium - Open source.

2. Software size
QTP - Around 1.5GB
Selenium - Set of Libraries, around 20MB (Need to include other supporting software)

3. Software Support
QTP - From HP
Selenium -, Element34 , Commercial Support

4. Identifying objects.
QTP -  Object properties, Repository objects
Selenium - Object properties, xPath, CSS, DOM

5. Spying object
Selenium - There is no option, can record script in Selenium IDE, can spy objects using IE developer tool bar, FireBug and also using

6. Scripting language
QTP - VB Script
Selenium - Any language HTTP library (Java, C#, Python, Ruby...)

7. Environment.
QTP - Windows
Selenium - Windows, OS X, Linux, Solaris...

8. Browsers supported
QTP - IE, Firefox (Run scripts)
Selenium - IE, Firefox, Safari, Opera (selenium 2: Chrome, Android, iPhone)

9. Architecture
QTP - Not known, It makes tight integration with IE browser using Windows API's.
Selenium - It can be written in any language that support HTTP library, corresponding language bindings are sent to Selenium RC designed on Jetty, RC launch the browser by injecting the "BrowserBot" JavaScript into the browser. Screen operation are performed by the "BrowserBot" by communicating with RC using XMLHttp request.

10. Limitations (I mean automation is not possible)
QTP -  As per my understanding nil (I don't want to mention about the Number precision, Text length...)
Selenium - File upload/download, Model dialog ... How to over come these limitations select links?

11. Mapping objects
QTP - Browser.Page.Object.Method for each step.
Selenium - Directly execute methods.
12. Debugging code
QTP - Yes
Selenium - No

13. Control Opened browsers
QTP - Yes (Opened after QTP program)
Selenium - No (Session information is lost) QTP, Selenium interact with the browser differently.

14. Supporting Applications
QTP - Web applications, SAP, Activex, VB, Windows...(Support provided using Addins)
Selenium - Only Web application.

15. As performance testing tool
QTP - No, you can run one QTP application in one CPU.
Selenium - It can open many many browsers using GRID, many companies line PushToTest, BrowserMob, Gomez use selenium technology for running load test.

16. Current Version
QTP - 11
Selenium - 1.0 (2.0 in Beta) Selenium 1.0 vs Selenium 2.0

17. Object not found
QTP - It will wait till the timeout happen.
Selenium - If browser status is Done, it will through exception. In some cases it will wait for time out. I did like this feature.

18. Execute JavaScript
QTP - No (Not required, you can get entire page info directly from QTP)
Selenium - Yes

19. Access page DOM
QTP - Yes
Selenium - Yes

20. Flex objects
QTP - Yes
Selenium - Yes  Selenium Flex

21. Scripting complexity
QTP - Simple, easy to access the file system, Excel. But programming knowledge.
Selenium - Complex. Need to understand Java class, interface and testing framework. Need to know following items for full fledge implementation. You are getting it free entirely, can't you put extra efforts?

22. Cost
QTP - 9K USD per user (Approx) + Annual maintenance charges.
Selenium - FREE (Any number of users...)

23. IDE
Selenium - Any IDE (I prefer Eclipse)

24. Flavors
QTP - Just QTP
Selenium - Selenium core, Selenium IDE, Selenium RC, Selenium GRID, Selenium 2.0 (Webdriver)

25. Extendability
QTP - No
Selenium - Yes, you can customize and implement for new browsers.

26. Exception Handling
QTP - Need to handle manually. Using .Exist, On error resume next, recovery scenarios. Script would stop in the middle by throwing run-time error if not handled properly.
Selenium - Handled automatically when used with TestNG, it will automatically move to next test case.

27. Reporting and Assertions(Checkpoints)
QTP - Reporting and checkpoints are built in the same package.
Selenium - Need to depend on testing frameworks like TestNG or Junit.

Your Choice Now ?


Selenium - Keyword Driven Framework

Selenium - Keyword Driven Framework.

Webdriver - Keyword driven framework using page objects

Having experience in implementing Hybrid framework in QTP, Initially I started converting this existing QTP framework into Selenium framework. Following are my challenges

1. Most of the user test data is stored in the MS excel files, there are open source APIs that can connect to excel files, but I had lot of issues reading and writing data continuously.
2. Test case PASS/FAIL status and summary report creation had custom logic as per the requirement.

As I didn't have enough time to over come above challenges currently, I have taken alternative approach.

I have extended the Selenium interface and written all user methods in that, so that I can create a clean test class. TestNG framework is taking care of test execution summary.

Note: Need to extend all the existing methods before adding new methods.
My intention is to hide the object locater information and user Keyword appear in the auto suggest list(Auto complete) in IDE environment.

Attaching the test class screen shot, where locator information is hidden in the interface methods.

Attaching Eclipse IDE screen shot where user methods are displayed in auto suggest drop down.

Attaching User method screen shot.