Daily Posts

1710, 2018

Non-verbal communication

By | October 17th, 2018|

Around 60 – 96% of communication is non-verbal as per different researches

What does that mean for us testers?

The impact of this is VERY LARGE, however here was one lesson I learned and shared with my team today:

We humans are communicating or sending messages to one another all the time

Even when we are not talking to someone, we still are communicating.

Can you guess how and why?

Most communication is ‘NON-VERBAL’,60 – 90% communication is still going on depending on the circumstance.

And we do this all the time, when we someone pass by, we do instantly create an impression of that person in our head, willingly or unwillingly

That’s non-verbal, and its far more important than I used to think about it.

A tester’s job revolves around (or should revolve around) A LOT of communication, and we NEED to be on speed terms with others

To come across as an open and welcoming person will go a long way in communicating effectively with developers, support and other people in the company.

It will set the tone to a very favorable condition helping the exchange of information and ideas.

#QsDaily, #testers #communication

1610, 2018

Object life cycle – Waits

By | October 16th, 2018|

The object life cycle and waits

Firstly, here’s what I call the ‘object life cycle’:

In UI automation objects we use have a specific pattern that keeps repeating.

These steps are 1) Wait for object, 2) Find object, 3 Perform action on object – Repeat.

I call this the object life cycle, and it is the lifeline for a UI automation framework.

The first step wait is – Wait before ‘finding’ EVERY object.

Web communication is asynchronous, which means it all depends on the timings of user actions and responses,

That means, we can never be sure of timings for any interaction.

Therefore, according to Murphy’s law, ‘What can go wrong will go wrong’, prepare for the worst.

In our context, the object we want to work with will NOT be there, so be prepared for it.

BTW – Adding a 5 second delay (static delay) is BAD, because it’s always going to be less than needed or more than needed

Delays have to be dynamic (based on a condition), to wait for the precise time you want them to.

#QsDaily #automation #framework

1510, 2018

What is your management style

By | October 15th, 2018|

I was asked a very interesting question today, ‘what is your management style?’

While I could go the leadership route, there is something else also equally valuable..

Each person is knowingly (or unknowingly) working towards some goal.

It’s like every object on earth is absorbing and exerting energy in some shape or form.

So when we say a team is not effective, it’s not the ‘absence’ of energy,

It’s more about energies being dispersed in different directions instead of one direction!

Just like the difference between an ‘unmagnetized’ object and a ‘magentized’ object (or a magnet)

When not magnetized, the atoms are not exerting force in the same direction giving a net effect of zero.

When the object is ‘magnetized’, as per ‘domain theory’ all atoms exert force in one specific direction, creating the desired net effect of pulling objects.

Bottom line, ‘align the energies’ of the team members to get the desired results.

The goals should be clear and they should have stake in achieving the goals.

I know it’s easier said than done, but IMHO ultimately will pay off many times more.

#QsDaily #leadership #teammanagement

1010, 2018

Importance of encapsulation

By | October 10th, 2018|

The importance of encapsulation / wrapper layer

A question I asked the participants in last week’s training:

Usually encapsulation is understood as a way to hide the implementation details.

While that is true, there are a lot of other great benefits as well.

I learned of these working with Embedded systems and seeing ‘wrapper’ layers implemented.

Just like encapsulation, add your own ‘wrapper’ on top of the library(ies) you want to use.

In trainings and designing frameworks, one of the fundamentals I teach / use is to NEVER use ANY library directly

EVERYTHING used by the POM layer should come from the framework’s own helper library

Which in turn would call any external library / API you want to use.

This way if anything changes / needs to be changed in the way outside libraries are used, the change has to be done in only one method

Also adds portability to your framework, helps a long way in maintainability and scalability of the framework.

#QsDaily #automation #training

810, 2018

Selenium Locator tips

By | October 8th, 2018|

Discussed a lot of topics including ‘Advanced Selenium’ locators today

And here are a few tips I gave the class:

Tip 1:

– I always try to find a parent for the area of the page I want to use,
– Then within that area find the exact object I am looking for.
– The parent reduces a lot the possibility of capturing similar elements

Tip 2:

– Test your locators in chrome developer tools first before using them in your code
– Makes debugging a lot easier knowing you are using the right locators.

Image from the class today.

510, 2018

What Automation trainings miss?

By | October 5th, 2018|

What most automation trainings are missing?

Explaining the fundamentals, and that’s where I like to start..

Starting with installing the tool is not a great way

With automation the ‘why’ is far more important than the how

Automation done well is time intensive and requires by-in from many departments

Going in for the wrong reason is the main cause of failure

I’ll be talking about this concept a couple of times in different ways over the course of the training

(Image from the previous week sessions)

210, 2018

Spreading knowledge

By | October 2nd, 2018|

“The smallest good deed is better than the grandest intention.” John Burroughs

Don’t shy away from spreading knowledge (more in the video – Testing Heroes)

I know how hard it can be to create content in your spare time

After a 9 – 5, spending time creating content without expectation of return is not easy

But the return is always many times more

I felt this very deeply when doing the ‘yearly’ tour of independence hall (PA) last month.

So to those who have something to share, please step up, every good deed counts..

#QsDaily #testing #automation

110, 2018

Web automation training – Pseudo code

By | October 1st, 2018|

“Web automation training” and pseudo code – The missing piece of the puzzle

From an automation training session I was conducting last week..

In most automation trainings the course content starts directly from installing the software

While setting up selenium surely is a basic step, but a very important prior step is usually missing

I call this the algorithm design process, where the trainees learn about how to think about algorithms

The human mind works very differently than a machine,

A to-be programmer should train to think in terms of programming blocks

This is where pseudo code comes in.

Image below showing me discussing a game ‘help the robo’ to think in terms of logic building and writing pseudo code

3009, 2018

Testing Heroes

By | September 30th, 2018|

Drivers of the testing community ?

Are (IMHO) the testing heroes..

In my recent visit to Philadelphia I realized something new, importance of heroes

Every idea, change needs a change agent, a leader or group of leaders

Without those leaders the movement / change dies

Our testing community is no different, our thought leaders (heroes) have been one of the main cause of evolution in the field

Linked video in the comments has a few of my thoughts around why they are important..

2909, 2018

Exploring TestProject

By | September 29th, 2018|

I recently explored TestProject

And here’s my experience:

Every tool focuses to solve certain problems in automation

While the scope can be wider, most tools have a specific few problems they are really focusing on

With TestProject, a platform for developing automation scripts, one problem is setup time

They have tried to make the setup for automation very easy and quick

While there are other features of the tool as well, this is one which might benefit the most for beginner users.

More in the article linked in comments.

2809, 2018

Foundation of relationships

By | September 28th, 2018|

The foundation of relationships

Building trust..

In some industries measuring success is very easy

The ‘work done’ is quantifiable, which makes managing the job easier

In other cases, like the software industry, most of the work we (are supposed to) do is intellectual

Quantifying the ‘work done’ in such cases is quite bewildering and confusing

While the end success will be measured in dollars and cents, tying every activity to those sales is sometimes impossible

While as a community we are trying to find great measures to quantify ‘work done’, trust will remain the most valuable currency

By the way, these measures too eventually generate trust, which is what the economic system is built on

A brand can charge many times more for the same product just because of trust

And many of us would gladly pay the extra price

Learn how to build ‘genuine’ trust, this would ensure long lasting success

2709, 2018

Automation framework and cars analogy

By | September 27th, 2018|

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

2609, 2018

Law of reciprocity

By | September 26th, 2018|

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.

2509, 2018

Browser automation vs Automation in test

By | September 25th, 2018|

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’,

2409, 2018

Structure of a program

By | September 24th, 2018|

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..

2309, 2018

Strongly typed vs loosely types

By | September 23rd, 2018|

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

2209, 2018

Never give up

By | September 22nd, 2018|

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’

2109, 2018

What is programming

By | September 21st, 2018|

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)

2009, 2018

Automation batch issues

By | September 20th, 2018|

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?

1609, 2018

Standardized platforms for evolution

By | September 16th, 2018|

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

1509, 2018

Community building

By | September 15th, 2018|

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

1409, 2018

Define Leadership

By | September 14th, 2018|

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:

 

1309, 2018

Learning automation steps

By | September 13th, 2018|

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

1209, 2018

Automation supporting different application versions

By | September 12th, 2018|

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

1109, 2018

Adding test data choices and our journey

By | September 11th, 2018|

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.

Thoughts?

#QsDaily #Automation #testdata

Load More Posts