Deprecated: Function create_function() is deprecated in /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php on line 258
Ali Khalid, Author at Quality Spectrum - Page 22 of 43

alikhalid

About Ali Khalid

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

Automation framework and cars analogy

By |2018-10-02T19:14:24+05:00September 27th, 2018|daily post|

An automation framework analogy

Thanks to Ryan Bedino for reminding a slide a prepared 4 years ago

If we give the analogy of a car, Selenium WebDriver would be the engine

An engine alone does not do the job,

You need a lot of other parts for the car to run

And a lot more to make the ride smoother and more comfortable

And that’s what an automation framework will do for you,

Add a lot of essential features on top of the core functionality (browser automation)

Image illustrating the concept

Law of reciprocity

By |2018-10-02T19:15:44+05:00September 26th, 2018|daily post|

The law of reciprocity and office relationships

Here’s what I have learned:

Sometimes office relationships can be tricky to deal with

But mostly they become as tricky ‘as you make them’

At one point in my career I had to make a decision,

Should I keep my own interest the first and only priority? Or keep giving my only priority, and my interests second?

That was the turning point, and thank God I decided to make sharing my highest priority

Since then I have received many folds in return from places I never expected

And that’s my philosophy on office relationships too,

Spread the good without expectation of return, great things will eventually come your way

The only important thing is to keep your faith, it’s easier said than done,

But that’s price you have to pay.

Browser automation vs Automation in test

By |2018-10-02T19:16:57+05:00September 25th, 2018|daily post|

Browser automation vs Automation in test (Test Automation)

What is the difference?

In many cases folks assume both are the same, wherein the real problem lies.

Automation of tests can be done in MANY different ways,

One of them being ‘browser automation’.

On those same lines, Selenium is a ‘browser automation’ tool,

I might not classify the WebDriver library as an ‘automation tool’.

Once the difference is understood, then the inquisitive mind will ask for:

What else do I need beside a ‘browser automation’ tool even if I’m doing just UI automation..

And that’s where the fun begins.. ‘Automation Framework design’,

Structure of a program

By |2018-10-02T19:19:09+05:00September 24th, 2018|daily post|

Explaining structure of a program

Here’s an analogy I like to use in training:

Software programs are grouped in different layers to give them structure

It also makes them easy to maintain, port to other platforms and many other benefits

An analogy I give is about a library of books and a software program ‘library’

The analogy might not fit 100%, but is a good start

The screenshot is a picture from a training session I am in the process of preparing for Web Automation

But before I talk about automation, I discuss the fundamentals of programming

This section specifically comes under ‘Introduction to Java’

More fun stuff coming up..

Strongly typed vs loosely types

By |2018-10-02T19:20:10+05:00September 23rd, 2018|daily post|

Strongly typed vs loosely typed languages

What is it and what’s the difference

Some programming languages have more checks at the compile time (while building the code), and have checks on method calling, data types, return types and so on

In short you cannot ‘loosely’ use variable types and change them on the go

Examples of such languages would be Java and C#, each variable must be declared with a specific datatype

The opposite off course is loosely typed, where there are no such checks on the compile time

A major reason for that is some languages don’t have to be ‘compiled’ to build code

Such an example would be JavaScript, these languages are called ‘interpreted’ languages

In JavaScript’s example, it’s code is mostly used in browsers, and that’s one of the reasons why some websites look different

They can ‘interpret’ the same JavaScript code differently.

So, mostly ‘compile time’ languages (e.g. Java, C#..) would be ‘Strongly typed’, and ‘interpreted’ languages (e.g. JavaScript) would be ‘loosely’ typed

Never give up

By |2018-10-02T19:21:03+05:00September 22nd, 2018|daily post|

Never give up

You are defeated only when you give up

I always give an example of a little kid and a wrestler

If the kid keeps coming back to fight, no matter what happens, or how long it takes, eventually he will win

Persistence and being tenacious are fine qualities

A quality of ‘Winners’

In the words of the Great Muhammad Ali:

“I don’t count my sit-ups; I only start counting when it starts hurting because they’re the only ones that count.”

As he said, ‘float like a butterfly and sting like a bee’

What is programming

By |2018-10-02T19:25:49+05:00September 21st, 2018|daily post|

While learning automation, I feel it’s important to learn:

What is programming?

While there are many metaphors people give, most cannot fit 100%

I am too confused (was confused) how to define programming

A LOT of people just run away from learning to code

One reason is, IMHO, we don’t necessarily teach it in the best way

And a good place to start it, what is programming?

The best answer I found is:

It’s like writing, you take an idea in your head and you write it down

Similarly, in programming you think of an algorithm and write it down

If we broaden this definition, I even call playing Real Time Strategy games ‘programming’

Sure, you’re not writing code, but you are thinking of an ‘algorithm’ to beat another person or ‘algorithm’ (Computer as a player)

A link to a GREAT video I watched on the subject (added in the links)

Automation batch issues

By |2018-10-02T19:27:40+05:00September 20th, 2018|daily post|

Automation batch issues

Passes individually but fails in the batch..

This would be an all too common for anyone who has worked in automation

While the reasons for this can be ‘infinite’, here are some common ones I’ve observed on top of my head:

– Dependent test data. When running individually no other script can change the data, in a batch run that is a possibility

– Tool / browser reset. If the previous script failed, the browser was still in error state and the next script starts executing, resulting in failure

– Delay. Browser response time can change when running in a batch, must have dynamic delays before interacting with EVERY object

– Application down. While this might seem a remote possibility, in some cases this does happen in very sbtle ways.

Any other ‘very common’ factor you have noticed?

Standardized platforms for evolution

By |2018-09-16T19:34:33+05:00September 16th, 2018|daily post|

A key ingredient in my observation for evolution in technology:

A standard platform, here’s why

When a new technology emerges, it takes more than a few people to evolve it

A very large group of people collectively working with it helps in pushing boundaries

Take the PC for example, having a standardized OS on PC (Windows) was one of the main causes that fueled advancement in software development

On the other and, embedded devices (IoT) has been out there around since the PC, but we are far behind there

Embedded platforms were very fragmented and challenging to develop, therefore layers of abstraction were not built there as rapidly

Only in recent years we have seen things like Raspberry pi and so on

The same would go for automation, having a standard platform and building layers of abstraction on top of it would make the difference

The same way standardized JavaScript execution on all browsers has fueled front end platforms like Angular, Sencha and so on.

 

Thoughts?

 

#QsDaily #platforms #automation

TestProject – An Automation Platform

By |2018-09-27T11:17:35+05:00September 16th, 2018|Uncategorized|

Sponsored

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.

 

Collaboration

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.

 

Setup

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.

 

Accessibility

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.

 

Architecture

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.

Go to Top