About Ali Khalid

This author has not yet filled in any details.
So far Ali Khalid has created 227 blog entries.

TestProject – An Automation Platform

By | September 16th, 2018|Uncategorized|


Automation projects have a lot of problems which are common across the board. With the open source world of Selenium and others, there are many common areas where every new person struggles with. A group of people working in the industry for years tried to solve some of these challenges in their own way and named it ‘TestProject.

What is it

In a nutshell I understood it to be kind of a cross breed between keyword driven and record play back but very different in terms of how it codifies the steps, how it interacts with the browser, saving and retrieving test data and so on. While this is an important feature of the ‘platform’, it’s not the main one from what I see. An execution and reporting engine is separate and different than traditional ones we see. Lastly the feature I liked the most, ‘Addons’ which is which is more like Chrome’s ‘Web Store’ where folks can build components and share them.



I feel the challenges automation faces today are very real and complex, and about to become extremely problematic which new technologies surfacing where we are not sure even how to test those in person! It might be impossible for any individual company / team to have breakthrough and will have to be a collaborative effort. The pace of change in technology, fragmented industries and changing market dynamics for software products all are very surreal threats which bog down evolutionary process of automation.

The part which resonated the most with me about TestProject was it’s a platform, not a tool. It allows you to have your individual code base and a very easy mechanism to share any libraries you develop which might help others through ‘Addons’. This should make it easy for teams to create solutions which can not only be shared across teams, but also across the complete platform.

While libraries are the most commonly shared ‘reusable’ resource, the platform allows to share elements (for object recognition), applications, data sources and parameters as well. Something I preach a lot under the ‘reusability’ pillars of framework design is to make not only your methods reusable, also leverage every other aspect of the framework.



With open source tools running scripts on multiple platforms (different browsers, different OS combinations), different execution environments can be difficult to manage. To make things easy, we usually have pre-defined test environments (machines, VMs, SaaS like Sauce Labs, Docker) and port our code in those prepared environments.

While this in theory sounds great, at times takes a lot of resources to setup new environments. Not only that, there is an upkeep cost associated with it. Automation is juggling between AUT versions, platform versions (browser, mobile OS), and the automation tool versions. Not to mention other tools you might have integrated for CI and others. At the end of the day all of this takes its toll and can mount into a sizeable effort if not managed properly.

In TestProject setting a new environment for any desired platform is easy, like how vendor-based tools do it. Install their executor and it takes care of the rest. The difference there is in the process of the setup. This being a SaaS product, can open, compile and run on any environment which makes it very easy.

This means you can flip the situation. Instead of making execution environments at the center of the equation, make your code base the center of the equation and you can easily change any environment into an execution environment for automation.



Eluded in the previous point, code access becomes very easy. Not just code access, but accessing the whole eco-system is very easy. Typically for someone wishing to investigate the automation code base, they’d have to log into an automation developers or execution environment. Trying to do it on ‘any’ environment is not possible and often needs some setup to be done first (IDE, Pre-reqs, SCM and so on) Since TestProject is a SaaS product, you just log in from anywhere and you can see everything. The code base, test suites, test execution results, all in one place accessible everywhere.



The keyword plus record and playback architecture is something the industry has struggled with for decades, and we still do. While almost every automation tool has a keyword driven or record / playback mechanism, which is mostly the focal selling point, there is a lot of snake oil in the industry around this.

The need for such a framework in an organization is a valid one, however creating one which can be plug and play for any product is impossible. In TestProject, there is an opportunity where experienced folks can ‘create’ components which core testers can use as building blocks. While this still might not be fool proof, I think it might be a step in the right direction and would help teams looking to create such a solution for their product.


It’s the start

While there are some fundamental shifts in the way TestProject is designed, it’s just the start. The success may hinge on how well it solves the fundamental issues it was designed to overcome along with adapting to the changing environment.

Community building

By | September 15th, 2018|daily post|

Community building, the reason why humanity survived

And a core factor in any idea’s success.

One person alone is weak and fragile compared to other species walking the earth

But one of the reason why we went from the bottom of the food chain to the top is community building

For any idea to gain success, there must be a community around it.

And make no mistake, there is an idea / story behind everything,

Every product, every service and every person is telling a story (weather they know it or not)

So, if you are building a product, build a ‘tribe’ around the idea your product serves

Or whatever you are willing to accomplish, the idea should be worthwhile for at least a few select people

Then build a tribe around it.

Reference “Tribe” by Seth Godin

#QsDaily #community #tribe

Define Leadership

By | September 14th, 2018|daily post|

My favorite interview question and answer:

Q: “How do you define leadership”? Ans:

“Leading by example”

This was asked to me when I was interviewing for my current role

I always felt a leader was the one who sacrificed his wishes and wants for his/her tribe

Probably why Simon Sinek’s book: “Leaders eat last” resonated with me so much

I was reminded of this answer yesterday when Tom Bilyeu asked LeVar Burton the same question,

His answer: the EXACT same words I gave my ‘to be’ manager 4 years ago ‘Leading by example’

And BTW, you don’t need to have a ‘lead’/’manager’ title to be a leader

‘Genuinely’ help solve people’s problems, the law of reciprocity will make you a leader

Most leaders in history were a ‘leader’ long before they ever got the ‘title’.

#QsDaily #leadership #interviews #LeadByExample #inspiration #hiring


LeVar Burton video:


Learning automation steps

By | September 13th, 2018|daily post|

Step 1: Install Selenium and implement POM? ABSOLUTELY NOT..

Step 1: Un-learn the crap which is holding you back

Step 2: Learn how software works

Step 3: Lean how to develop algorithms

Step 4: Understand what automation’s goal is and what to achieve from it

Step 5: Install the tool, libraries etc..

Step 6: Take algorithms from Pseudo code to actual running code

Step 7: Develop a simple and messy framework

Step 8: Learn programming best practices

Step 9: Revamp the framework and script a neat one

I know this might be longer and not as easy, but IMHO the right way to do it

I’d rather spend TWICE the time on WHY than on HOW

#QsDaily #automation #learning

Automation supporting different application versions

By | September 12th, 2018|daily post|

How to manage your code for different UI?

Our automation is reaching yet another level of complexity hence the question..

Elaborating the question:

If we have an application with different versions we support

And there are UI differences across versions (off course), which means different automation code needed,

How to structure your automation code base?

Now off course it would depend on the kind of changes we are seeing.

Here are a few strategies I’ve used / seen / read aboout:

1. Automation code residing alongside production code, in the same repo (@Angie Jones).
– Sounds awesome, never used it. But Angie says it works so I will surely take her word for it!

2. Separate code branches for different versions.
– E.g. for product version 1.0, 2.0 & 3.0, automation code base with a trunk and branches: 1.0, 2.0 and 3.0
– I’ve seen this for prod code, it can get messy, but works

3. Conditions / variables within same branch
– Have conditions within the framework, data selection and POM classes to run based on app version
– I don’t like this. should work in few cases. But things can get out of control fairly quickly and become WAY complex.

Any other ideas you might have?

#QsDaily #automation #branching

Adding test data choices and our journey

By | September 11th, 2018|daily post|

From add on the fly, to using random data to saving seed data in DB (Link to the story in first comment)

After using seed data which resides in a baseline DB and restoring it when needed,

Now we’ve moved on to the next problem:

How to add data to ‘Six’ baselines, that’s right, one test which has to run on 6 different environments needs the same seed data

We have been adding seed data manually, but for 6 it’s not going to be easy

Since it does not have to be created just 6 times, but every time before we create the seed data on baseline, we test it by creating on the ‘restoring’ DB,

So the number jumps to ’12’ times

The few options we talked about to help with this:
– Use UI scripts to create seed data (for data which is simple)
– Improve the API automation and use it to create seed data, just like UI above
– Finally (which I don’t want to do AT ALL), create data to the DB directly

The last option has many problems, schema across versions is not the same, data creation is not the same, existing data might not be exactly same either..

The brainstorming is going on, but an interesting challenge to have.


#QsDaily #Automation #testdata

Philly visit and the rocky Stairs

By | September 10th, 2018|daily post|

With Rocky motivation..

The two week long Philly visit ended few days ago.

And like each year, did the ‘Rocky thing’ again.

What fascinates me the most about Rocky is persistence.

No one can compete with sheer hard work and persistence

And there is no substitute for it,

No short cuts, no hacks, tricks, jacks, inside edges, cutting corners,

Plain and simple hard work and persistence will ALWAYS take the day.

Because it tells the God / the universe you are willing and ready to pay the price.

And you are granted success.

#persistence #inspiration

(Photo: At the rocky stairs, Philadelphia)

Handling and becoming unicorn employees

By | September 7th, 2018|daily post|

Now you know what a ‘Unicorn’ employee is (See previous two posts)

What to do about it…

For employers:
– If you have a Unicorn on your team or someone who has the potential to become one
– Go out of the way to take care of their interests
– That’s what happens in sports, extraodrinaty talent is paid extraordinarily, and have an extraordinary impact on results
– So the extra mile you go will get returned back many folds

– If you don’t have unicorns (or any) on your team, you are far away from success
– This is the information economy, you can’t muscle your way to success anymore

For employees:
– If you are a unicorn, know your value
– You should not be working for anything less than ‘changing the world’, and be treated as such

– If you are not a unicorn yet
– Put in the effort to become one, it will be all the worth while

Who are ‘Unicorn’ employees

By | September 6th, 2018|daily post|

If you guessed unicorn’s don’t exist, well that’s true, but..

Unicorn employees DO exist, and here’s (IMHO) who they are:

0. Attitude – This is a given (hence point 0)
– If this is not understood already, then we have a big problem

1. Technical skills – Skills that will do today’s job.
– They know (or potential to learn) the tool, language, platform you want them to work on.
– Have demonstrated competence in similar areas.

2. The Architect mindset – They don’t think about JUST the current problem
– When developing solutions they solve problem they foresee in coming years.

These two skills are hard to find, now let’s move on..

3. Communication – They talk like a marketing / sales pro
– Can communicate their point of view effectively and are good listeners
– They are social and pros at building relationships

A good software engineer who communicates well is like a singing tree, you don’t see them very often..

And lastly..

4. Leadership – Not a manager, a leader
– Can inspire, instill purpose and drive in their team
– Develop ‘psychological safety’

Now THAT is a unicorn!

The engineers hiring dilemma

By | September 5th, 2018|daily post|

Mostly ideal candidates don’t know how to sell themselves, and the ‘not so ideal’ ones sometimes know exactly how to..

Ideal candidates are good with technical skills, they know the’re stuff and are passionate about it

Since they spend more time polishing their skill, might not be as great communicators or leaders

Hence don’t know how to sell, and are difficult to find and persuade

Not so ideal ones lack technical skills, and sometimes make it up by being good at selling

They know how to up-sell and might be good communicators as well

They come up easily in the net, but can be hard to fish out,

And, IMHO, can be equally destructive for your team

So the trick I use is to stick to the few fundamental traits/skills only, and do not compromise on them.

Tomorrow I’ll talk about the candidates I call ‘unicorns’. Want to guess..?