About Ali Khalid

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

Automate BDD scenarios on the service layer

By |2020-06-04T19:33:31+05:00June 4th, 2020|daily post|

Should a BDD test scenario only be automated on the UI?

Commonly the answer is yes, I have a different opinion.

Let’s say feature is to show total cost of items in a shopping cart along with the shopping cart icon.

Implementation changes will be at the front end & service layer.

I’d personally want to have unit tests for new methods, component tests on the end point and:

Service integration tests for the BDD scenario – Adding / removing products to the cart and seeing if the cart total gets changed – or whatever the scenario may be

No harm in adding an extra check to an existing UI test, but I’d refrain from having a whole new UI script just for this, rather have an exclusive one on the API.


Combining Web & Mobile framework

By |2020-05-23T19:23:32+05:00May 23rd, 2020|daily post|

A recent question I got asked:

How to combine Web & mobile UI automation frameworks together?

Now there will be no one size fits all answer here, but here’s what my experience has been:

1. Most teams try to run every test through selenium, and then the same through mobile (Appium, XCUITest etc..)

And that is the biggest problem – don’t have a lot of tests running there, most of you testing should be completed on your services level

2. Depending on your product, there might not be a lot of synergies between the tests you have on web & mobile, keep an eye out

3. Keep your frameworks very modularized, every component can be reusable

4. The utils layer can be shared across both frameworks, can have it as a separate project, added to the web & UI ones

5. Similarly test data / configs should be in sharable format. My favorite is JSON structures & config files

6. Having both web & mobile tests within the same project might not be a bad idea either.

FYI – Google maintains one code repo for all products. But be careful, if you don;t structure your product well you’ll run into trouble – Make sure everything is loosely coupled

These are few on top of my head, anything else you can think of?

#RedefiningSoftwareQuality #TestAutomation #MobileAutomation #WebAutomation

Definition of Shift Left

By |2020-05-22T19:40:06+05:00May 22nd, 2020|daily post|

What does shift left really mean?

Here’s my understanding and what it means to implement it:

Any activity to help us prevent or identify issues BEFORE someone spends dedicated time testing the change – Shift identification of issues & risks as early as possible.

I’d implement this by doing the following:

1. Have three amigo sessions before coding

2. Practice TDD & have decent unit test coverage

3. The developer and any other person on the team together test the change on the developers machine

4. Have quality gates on the pull request pipeline including static analysis, unit tests & component test

By the time engineers testing the feature start exploring in detail, most of the issues should have been fixed already.

#RedefiningSoftwareQuality #ShiftLeft #ContinuousTesting #DevOps

Digital workplace

By |2020-05-21T19:45:53+05:00May 21st, 2020|daily post|

An important part of transformations is building technical enablers.

Initiatives around Digital Workspace were been worked on with a lot of vigor at Emirates Group IT for some time

As a result of all that effort we were able to transition smoothly to working from home across the landscape

I had always taken this for granted, being IT professionals lot of these things are common place us

However the magnitude and scale at which large scale enterprises operates, ability to pull this off on such a short notice is an achievement.

Realized this today in a CTO listening session where Microsoft’s head UAE region was sharing his experiences post COVID19.

Bottom line, if you want to truly transform your team, you’ll have to build the technical enablers they need.

#Transformation #DigitalWorkplace

Competence & clarity

By |2020-05-18T19:36:49+05:00May 18th, 2020|daily post|

Building self autonomous teams is a key change in transformations,

And a key element in there is how to delegate decision making?

Typically enterprises have large groups of people with layers upon layers of decision makers

Decisions and actual hands on work are done in two different groups

As mush possible, decision making has to be delegated, and here are the two key components:

1. Competency. Develop the teams technical skills to have the background to make those decisions.

2. Clarity. Access to information and ability to process, to allow teams to have all the background information they need to make decisions.

Both are easier said than done, but without them the transformation will fail.

#RedefiningSoftwareQuality #QualityTransformation #Transformation #HighPerformingTeams

Technical and inter personal skills

By |2020-05-14T19:38:37+05:00May 14th, 2020|daily post|

For engineers technical skills are vital,

Unfortunately so are people skills, because ultimately we have to deal with humans.

And you’ll find every kind of them in a work environment.

Problems occur when an individual or organization neglects any one of these skills

Less technical skills will lead to weaker products with lots of issues,

Inadequate people skills will also lead to weaker products with lots of issues..

Because products are not built by one person, a group of ‘teams’ build them.

And successful teams have people who are good technical and inter-personal skills

And this will drive product quality.

#RedefiningSoftwareQuality #QualityTransformation

Automation framework

By |2020-05-13T19:52:45+05:00May 13th, 2020|daily post|

The word automation “framework” is sometimes used incorrectly.

Would you classify Selenium, RestAssured etc. as framework?

IMHO these are libraries, using which we develop frameworks.

Frameworks are built using a number of libraries like the ones mentioned.

There might be some common utilities of your own, some additional reporting you’d add along with a reporting library etc.

In general, a ‘framework’ IMHO will be something you build for your product using a number of libraries.

Linked article for further details:

Add automation ti your Definition of Done

By |2020-05-09T19:38:03+05:00May 9th, 2020|daily post|

Have you faced problems like not having enough time to test, or automation not being prioritized?

That means you don’t have your Definition of Done set right..

A story should be considered ‘Done’ only if the ‘Definition of Done’ has been completed.

Enough time to do exploratory tests & automating the important scenarios (Unit, API & UI) should be part of your definition of done.

If these activities are not taken up as part of delivery, then your accumulating technical debt

As your tech debt grows, so will your problems with delivery & quality.

And after some time, your product will be in a heap of mess with everyone scratching their heads about how to fix it.

#RedefiningSoftwareQuality #TestAutomation #Testing #Agile #DefinitionOfDone

Focus on important skills while hiring

By |2020-05-03T19:18:28+05:00May 3rd, 2020|daily post|

Hiring automation engineers has always been a trick thing.

And the worst thing you can do is to add all the buzz words you know of around automation.

Finally when the candidate comes on board they end up doing exploratory testing only!

Here are few pointers for hiring:

  • Look for programming aptitude.
    • If your framework is in java, not necessary to hire someone with 10 years of Java experience
  • Testing acumen.
    • Are good in identifying risks
    • While a can-do attitude is a must, for automation positions someone who ‘enjoys’ problem solving is required

More pointers in the linked article below

#RedefiningSoftwareQuality #TestAutomation #Automation #Hiring

Test case writing the Agile way

By |2020-05-03T19:19:07+05:00May 2nd, 2020|daily post|

Have you felt writing and maintaining test case documents a drag?

Because they are…

The old school thinking was, dev write code, testers write test cases

I talk about:

  • Why the traditional way of doing test case management is inefficient
  • What is a better approach?
  • How will this save more time

#RedefiningSoftwareQuality #QualityTransformation #Testing #TestCaseWriting