That’s right, I truly believe that when it comes to automated functional web testing, Selenium WebDriver annihilates HP’s web testing tool, QuickTest Pro (QTP), aka Unified Functional Testing (UFT).
If you disagree, that’s cool –– I welcome your thoughts and counter arguments. However, I am going to explain why I believe that Selenium WebDriver is superior when compared to its HP competitor.
Please feel free to voice your counterarguments in the comments section.
VBScript Is Dead
I spent years and thousands of hours learning and using VBScript with UFT and QTP. I never realized how miserable this experience was until I used a different programming language. VBScript requires at least 100 lines of code to be able to dynamically locate an element. I thought this is normal.
Furthermore, Microsoft doesn’t even support VBScript any more. Basically, VBScript has no future. Now, the part of my brain that has been storing the thousands of lines required to manage an Excel object is now occupied with useless information.
I was unaware of other possibilities, until I was forced out of my comfort zone. Then I came to the realization that there are amazing libraries that exist in the world that can help you do exactly what you want. I assume that if you are a proponent of UFT, then you are probably in the same situation that I was in many years ago.
To prove my point, take a look at something like PowerShell, where you only need one line of code to send a web request. Or a single line of code to write to a file.
In contrast, here is a sample of how to write to a file using VBScript:
See the difference?
By the way, PowerShell is the replacement of VBScript by Microsoft. PowerShell has been around for about 10 years and has made some amazing advances. Performing any kind of Microsoft system operations is extremely easy. There is a simple and powerful IDE that comes with PowerShell called PowerShell ISE. This IDE allows you to easily write and test code, just like any modern IDE.
But you wouldn’t know about any of that because VBScript and its evil siblings have sucked you into a black hole. I have been there, too. I feel your pain.
Nobody Wants Your VBScript Skills
Here is the honest truth:
If your only skills are UFT and VBScript, you are really going to hurt next time you go out looking for a job. That’s one of the main reasons why I am so against UFT. By learning it and its programming language, you are forced into an outdated technology, which ultimately limits your options.
On the other hand, Selenium WebDriver can plug into all of the most popular programming languages such as Java, C#, JavaScript, Ruby, and so on. Do a job search for any of those languages, and then compare those results to VBScript. They will scare you.
This is an example from Dice.com:
That’s right, there are 38 times more Java positions than VBScript based on the results from Washington, D.C., and this disparity will only increase over time.
Nobody is looking for VBScript jobs, that’s true. But this image conveys the immanent death of the single language that supports the whole tool…
10X less UFT jobs than Selenium jobs
Are you looking for a UFT job? Well, this is your outlook in DC from Dice.com
As you can see, there are ten times less UFT/QTP jobs than there are Selenium jobs.
There is a reason for this… Think about it? What is that reason?
Here is the deal:
If you perform a search in Google Trends to see the interest in a topic over time, you can know if there is more or less interest. Take a look at this .gif below.
HP UFT Costs Too Much
Recently, I was shocked to learn the price of a single license. It’s between $10,000 to $15,000 per license. This is how much it used to cost 5 years ago. I thought for sure HPE would change that. This is an absurd amount of money for a piece of software that isn’t all that good. I could spin up an entire infrastructure for a website including multiple load balanced Virtual Machines with databases for a fraction of that cost in Azure.
Furthermore, it is extremely impractical to only have one automation license. A typical environment requires you to be able to run functional GUI tests on at least Dev, Test, and Production. If your team has one QA Engineer for the entire project, that’s $30,000 in only software costs for that Test Automation Engineer.
This price is even more absurd when you compare UFT to its top competitors, Selenium WebDriver, Telerik Test Studio, or Smart Bear TestComplete. Selenium WebDriver is free, Telerik and Smart Bear costing around $2500 and $2000 respectively. Granted, learning Selenium Webdriver has a bit of a steeper learning curve. However, learning an Object Oriented Programming language is the reason for this steeper curve. If you go with a scripting language like Python or Ruby, then you can be doing Test Automation much faster than if you had to pick up VBScript.
QTP aka UFT made a horrible mistake. They got too tightly coupled to a technology. VBScript, the technology, became obsolete. Therefore, they either had to reinvent 10 years of a tool or maintain the obsolete dinosaur, which is usually the less painful option in the short term.
Other functional testing tools like Selenium WebDriver didn’t make the same mistake by allowing users to choose which programming language or technology they want to use to interact with the WebDriver API. If a user already knows Ruby, they can seamlessly pick up Selenium WebDriver just by understanding the WebDriver API. Same thing goes for Java, C#, Python, and JavaScript.
The users of all of these technologies probably account for 95 percent of all programmers (not a fact, that’s just my observation). Therefore, assuming that’s true, if most of the market wants to use a functional testing tool, they can easily plug into Selenium WebDriver without needing to learn another language. If anyone wants to use UFT, they must learn VBScript. This not only creates a bigger barrier to entry, but also doesn’t make sense from a career perspective. Therefore, UFT is doomed.
Tight Coupling
UFT and other HPE products are so tightly coupled. By coding UFT tests, you are missing out on amazing tools like Git, Sauce Labs, BrowserStack, Appium, and much more. Basically, HPE decides what a Test Engineer should and should not use for automation.
The industry is booming and expanding amazing technologies like Git source control. However, the UFT Engineer is stuck using HPEs horrible source control system. This source control software is certainly going to sink with the UFT Titanic.
Did you know that it is possible to execute automated functional web tests in the cloud, on as many virtual machines as you can pay for, and have a video recorded for you as the test runs? Did you also know that you can execute your automated functional tests immediately after the Developers build their code? You can do this in an automated manner using a Continuous Integration tool like Jenkins. It’s not because I was clueless, but simply because I was stuck in the outdated black box created by HPE technology. I only saw the possibilities inside of that box.
When an entity allows others to plug into their functional testing tool and use it as needed, you create a technical masterpiece of integrated technologies, working together for a common goal: to provide the most robust and efficient functional test automation on the planet.
UFT Positives
Yes, I’ve said a lot of painful truths about Unified Functional Testing. However, for now, it continues to offer us some useful assets. For instance, it is actually a pretty good tool when it comes to automation that doesn’t apply to the web. UFT can test APIs, SAP, Siebel, Windows applications, and many other technologies.
The Internet of Things is rapidly expanding how many APIs exist in today’s world. Therefore, the fact that UFT has positioned itself to be able to test APIs is excellent. Furthermore, you can combine all of the other technologies that it can automate with API testing to make a nice end-to-end automation solution. With its competitors, you normally need to create such integrations from scratch, making life a bit tougher.
Finally, HP has recently come out with what they call LeanFT. You can think of LeanFT as Selenium WebDriver combined with UFT. You can simply plug int LeanFT your IDE such as Visual Studio or Eclipse. Now, you can use a programming language of your choice along with the cool features of UFT like the Object Spy. Also, you can plug into all of the amazing open source tools.
It’s Sinking, Grab a Selenium Lifeboat
My goal here is to help individuals that are using UFT to migrate to a better solution. I am 100 percent certain that there are still poor QA Engineers that are using UFT. These UFT Engineers are ignorant to how the Selenium community has drastically changed the way people do functional web automation.
It’s not your fault…
You were given a rock and asked to build a boat with it. No matter how amazing you are as a boat builder, there is only so much you can do with limited tools. I’ve tried, really hard, trust me.
Now, I am happily spreading knowledge about Selenium WebDriver through my blog and my free video courses. Do yourself a serious favor and forget about UFT for web automation. You will open up a lot more doors for your career. You will be able to have more options when it comes to jobs, and you will even enjoy better automation results. I truly guarantee this! If you have any trouble, let me know and I will work with you to reach a better level of test automation.
Sadly, I know that some of you are stuck using HP Products. Your managers have bought a few UFT licenses for $15,000 to $75,000. Therefore, you need to make lemonade from lemons. The great news is that you get a free access to HP LeanFT with your UFT licenses. Therefore, definitely use it.
First, you will be able to move to a modern programming language and IDE. This alone will quadruple your job opportunities. Second, you can learn a plethora of open source tools that will drastically improve your functional test automation. Finally, when time allows, you will be able to seamlessly switch to Selenium WebDriver. Leaving you with just a bad taste in your mouth for HP UFT.
Here’s the truth:
I am not here to support a technology simply because it has some users…
My purpose on this planet is to help automation engineers become the best possible engineers that they can.
I want to take my knowledge and teach you so that you avoid my years of mistakes and start at a higher level…
This means that I will say things that hurt others.
Please understand that I have nothing against UFT users. I simply believe that UFT for web automation is a bad product that hinders the potential of web automation for all users.
And I want you to stop using UFT.
Finally, please let me know your thoughts, if you used UFT, and what you thought about it?
[Tweet “QTP Sucks, Selenium Rocks. @nikolay_A00.”]
great article, I do agree with you on most points on this article. I have over the years used UFT quite extensively and over the recent past also used more of the latest automation tools and coding languages. Currently I am using both UFT and Selenium, along with other tools for API and Performance testing. I would like to point out some oversights in your article, especially in the ‘Tight coupling’ section. You mention that engineers will be missing out on GIT and Jenkins if they use UFT. Then further below you mention that one would be stuck with HPE’s source control system. This is not correct. UFT integrates fine with GIT (making GIT the source control system instead of QC/ALM) and also works great with Jenkins for script execution etc for CI/CD. I have and currently using this solution for one of my projects. Google these concepts and you will find handy info on how these are used in conjunction with UFT.
Hi Nikolay,
Here’s a couple counterpoints to your rant…
It’s not very insightful that VBScript sucks. I guess when you invent an industry and bring in 20 years of backwards compatibility the best language to use might change too. I’m sure HP knows this and that’s why they’ve got LeanFT and LeanFT for Selenium. For dynamically finding an object you should use UFT’s “Descriptive Programming” feature. Descriptive programming lets you start a line with the object repository and then switch to dynamic identification. All in the same line. Here’s a sample:
Set objTest = Description.Create objTest(“micClass”).Value = “Link” objTest(“name”).value = “Click Here”
UFT licenses are concurrent, not named. Using your example, 1 license could be ported between the automation guy’s desk, dev, test, and prod environments. Not $30k, but $15.
You can also buy cheaper licenses for runtime or LeanFT. How much does it cost in labor to maintain your Se framework? Up front it’s more expensive than Selenium but that includes a lot of capability out of the box. Did I mention with LeanFT you can use the object repo in your preferred Se test?
Your “painful truths” aren’t well researched or accurate. There’s lots of places that Se is the right tool. There’s many others where it isn’t. There’s a lot of people out there who understand testing and like using UFT. So why are you taking a dump on them? What did UFT do to you?
PS: Who in their right mind would ever search of “VBScript” as a job keyword? C’mon man!
Oh, this is awesome! I’m so happy that finally someone got back to me with an answer 🙂
First, I wanted to say that I’m totally open to having a good discussion about this. I’m always looking for a UFT Engineer that can convince me otherwise. That’s why I’m a bit appalled when I see a statement like this, “There’s a lot of people out there who understand testing and like using UFT”.
Are you implying that because I don’t like an automation tool, that I don’t understand testing? Furthermore, I have the utmost respect for every single QA individual. I respect the QA profession in its entirety from manual testing to automation to security testing. All of it is essential and a critical skill in the IT world. Therefore, nobody is “… taking a dump on them” here. I am simply taking a dump on UFT because it’s a garbage tool. I insulted no individual here, so don’t make this personal, as if I’m attacking anyone.
Now, on to the arguments…
First, my article is titled “QTP Sucks, Selenium Rocks”. I did not draw a comparison between LeanFT and Selenium anywhere. It’s UFT formerly known as QTP vs Selenium. So can we agree that any arguments using LeanFT are invalid, as that is not my argument here? I’ll get to my points about LeanFT in a minute though.
Second, let’s talk about Descriptive Programming. Why is it that an individual needs to write a minimum of 4 lines of code to locate an object? Like this:
Set Testdesc=description.create
Testdesc(“micClass”).value= “webButton”
Testdesc(“name”).value= “ButtonName”
Testdesc.Click()
In Selenium, you can do this, with 1 line:
Driver.FindElement(By.Name(“ButtonName”)).Click()
That’s the ridiculously burdensome nature of UFT that killed all of the test automation teams that I worked with. Something so simple is so complex for no reason.
Third, let’s talk about this, “Using your example, 1 license could be ported between the automation guy’s desk, dev, test, and prod environments. Not $30k, but $15.”.
So, now you need to go and install a single instance of UFT on 3 environments, right? which means at least 30 minutes of work, correct?
So with your tests running on Test environment and using the UFT licence, do they maybe take a couple of hours? What is the team of Automation Engineers doing during that time? There’s only 1 license, you’re definitely not writing any new tests. So either you need another license, or the Automation Team is doing no new automation while the tests run.
Also, how are you kicking off these tests on these environments? Are you having to login and manually run the tests? Or have you advanced enough to have a VBScript file that can automatically launch UFT? If so, you probably wrote 50 – 75 lines of code in order to do that, correct?
Here is how we used to do it with QTP and UFT ========================================================================
‘***************************************************************************
‘***************************************************************************
‘AUTHOR: Nikolay
‘DESCRIPTION: A kick-off file of Mercury Tours Framework
‘***************************************************************************
‘***************************************************************************
‘============== INITIALIZATION ===============================
Dim arrEnvironmentVariableName(2),arrValue(2),arrTestPath(2)
arrTestPath(0) = “C:\Users\Nikolay\Desktop\UFT Framework\MercuryTours\_Common\Scripts\MT_DriverScript”
‘ Usage samples:”N” (Debug OFF,use for production execution)
‘ 2.”S” (Stop the script on error)
‘ 3.”” (Debug ON)
arrEnvironmentVariableName(0) = “onErrorAction”
arrValue(0) = “N”
‘============== PROCESSING ===================================
fn_runScriptBatch arrEnvironmentVariableName,arrValue,arrTestPath
‘============== FUNCTIONS ====================================
Function fn_runScriptBatch(arrEnvironmentVariableName,arrValue,arrTestPath)
Dim qtpApp,script,k
Set qtpApp = createobject(“quicktest.application”)
‘Check to see if QTP is launched, if not, then we can proceed with the rest of the actions
If Not qtpApp.Launched Then
qtpApp.Launch
qtpApp.Visible = True
qtpApp.WindowState = “Maximized”
‘Run through every single script that is in the array
For each script in arrTestPath
If script <> “” Then ‘Check to make sure that the script is not empty
qtpApp.Open script ‘Open the script
For k = lbound(arrEnvironmentVariableName) to ubound(arrValue) ‘Run from the lowest bounds of the array to the upper bounds of the array
If arrEnvironmentVariableName(k) <> “” Then ‘Check to make sure that the variable name is not empty
qtpApp.Test.Environment.value(arrEnvironmentVariableName(k)) = arrValue(k) ‘Set that value to a specific environmental variable name
End If
Next
qtpApp.Test.Run ‘Run the test
End If
Next
Else ‘If qtp is open, then quit it
qtpApp.Quit
End If
‘Clean Up
Set qtpApp = nothing
End Function
==============================================================================================================================
Here is how I can do it now:
Nunit-console “c://myTests.dll” –test=”myTestName”
or, if I want to use a where clause:
Nunit-console “c://myTests.dll” –where=”Cat==Regression”
Please, explain to me how the UFT method of running automation make the job of an Automation Engineer better?
Finally, this argument, “How much does it cost in labor to maintain your Se framework? Up front it’s more expensive than Selenium but that includes a lot of capability out of the box “, is an argument that has somehow been planted into people’s mind that has absolutely 0 evidence to back it up. It’s one that I hear most frequently from UFT Engineers and it’s completely invalid.
If you watch my Complete Selenium WebDriver Course, my students are capable of writing an automated functional test and have a working framework in place within 2 hours max. When I say “working”, I actually mean that it can run in production and start testing the application, within 2 hours! That’s 1 individual.
When I worked with UFT and QTP, we had 5 AUtomation Engineers that could barely keep 3 tests running on 2 environments. It wasn’t the Automation Engineers fault. They were some of the brightest Automation Engineers that I ever worked with! It was the garbage tool!
One of my latest automation solutions is capable of running 5,000+ functional GUI tests. It has screenshot capture, video capture, visual validation testing, logging, reporting. It’s kicked off automatically every time there is a code check in from the automation team. It’s kicked off at different intervals by Developers. It runs multiple times per day on 4 different environments. All, 100% automated without our team doing a single thing. In the near future, we will be able to run up to 100 automated tests at the same time, in parallel. That means that it will take 100 tests, 30 seconds to finish!!
How long do you think that all of this took and how many resources?
Less than 1 year with 2 resources 🙂 Does that answer your question of labor and maintenance?
Let me be straight with you…
I’m always looking for someone to prove me wrong. So if you created anything similar to what I talked about above, using UFT, please let me know. Email me at admin@ultimateqa.com and I will get on a screen share with you immediately to see this masterpiece. And if it’s capable of what I have mentioned above, I will retract this whole article. And, I will even write an article about your UFT solution and how you created something amazing.
Look Tom:
I don’t think it’s possible, we struggled with it for years. And it’s not your fault nor any Automation Engineers fault. You were given a rock and asked to build a Lamborghini. There’s only so much that you can do with that rock, no matter how awesome you are.
But prove me wrong man, I’m always excited to learn 🙂