alikhalid

About Ali Khalid

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

Automation training start with learning testing

By |2020-07-02T20:09:51+05:00July 2nd, 2020|daily post|

Automation training doesn’t start with learning automation tools,

It start with learning testing fundamentals!

Learn what to test, where in the tech stack to test and how to test.

Next we can talk about what to automate, where and how.

The unfortunate part of many folks lerning automation – their training starts and ends with Selenium

And I say this all the time, you cannot pick a worse place than Selenium with Java to begin with.

Nothing against Selenium or Java, brilliant library & language but that’s not the starting point.

Most people feel what they lack is automation skills, unfortunately often engineers lack “Testing skills”.

If that’s not fixed, you’ll get garbage in and garbage out.

#RedefiningSoftwareQuality #Testing #Automation #TestAutomation #ContinuousTesting

Why flat org structures

By |2020-07-01T19:51:04+05:00July 1st, 2020|daily post|

Some background to ‘flattening the structure’

In the industrial revolution and mass manufacturing era, companies operated with lots of workers doing remedial tasks.

We had hundreds of people doing atomic jobs and funneling up progress & information up the ladder.

After information consolidating across many hierarchical structures, ‘management’ took decisions and sent instructions down the corporate ladder

In the internet age, we don’t have much remedial work left in many places & the speed of operation has phenomenally increased

Workers have been replaced with ‘knowledge workers’

OR ‘Smart creatives’ who are tech savvy, business savvy and are closest to the ground reality

Therefore decisions should not be made at the top, rather by the engineers closest to the situation

Which renders no need to ‘manage’ people and take decisions for engineers, rather just ’empower’ the engineers to take decisions.

Hence the necessity of flatter org hierarchies and Servant leadership

#Transformation #AgileTransformation

#ServantLeadership

Agile Test Strategy Mind Map

By |2020-07-01T11:16:48+05:00July 1st, 2020|Management|

Test strategy Problems

Traditionally test strategy ‘documents’ used to have mountains of information, a lot of which wasn’t really used practically. They were all great writing in theory but hardly followed.

Then sometimes we pivot to not writing a test strategy at all, since these documents aren’t of much use. But we have this feeling of missing we are missing something. Ever had the feeling of a lot of ideas in your head, but since we can’t see them on paper, our sixth sense keep’s telling us ‘we are missing something’.

What was needed

I had always wished to have a test strategy which:

  • Would consolidate all testing related things we need to consider across the STLC
  • What should be the direction and vision of testing
  • What to focus on testing & where?
  • What to automate and how?
  • Some practices / references engineers can refer to in day to day practice

The Agile test strategy mind map

While helping multiple teams transform their ways of working and training them, I came up with a mind map to summarize all key areas of a test strategy which was:

  • Concise – To the point information
  • Complete – Covering important areas teams transforming into DevOps ways of working should consider
  • Easy to read & maintain – In the form of a mind map so readers can see the whole land scape at once

That’s how the “Agile Test Strategy Mind Map” came into being

To get a high-resolution image with finer details click on the link below:

Agile Test Strategy Mind Map

Snapshot of the Agile Test Strategy Mind Map:

Java Or Javascript for automation

By |2020-06-29T19:37:30+05:00June 29th, 2020|daily post|

Which language for automation – Java or JavaScript?

There is NO silver bullet answer and it might not even be these two (Python or Ruby)

Here’s what I have used historically:

  • Browser automation : Javascipt
  • Interacting with the DOM is easier,
  • Using AUT exposed methods is easy
  • Scripting languages quicker to write and lesser code
  • Popular tools: WebDriver, Cypress, NightWatch

Services automation: Java (Where prod code is in Java)

  • Same language as production code – critical for component tests
  • More options for mocks
  • Can reuse prod code (e.g. POJOs)
  • Extensive community support
  • Popular tools: RestAssured, WebTestClient

Again, no silver bullet answer – need to consider various factors to decide for your team.

#TestAutomation #Testing #Programming

PI planning for architecture runway

By |2020-06-28T22:05:05+05:00June 28th, 2020|daily post|

Planning you PIs (Program Increments) is crucial (One PI typically spans for 6 sprints).

While planning architectural road maps for quality initiatives across different teams, I’ve noticed a couple of blind spots:

1. Planning for feature deliveries and enablers / architecture road map are very different, planning them both the same way does not work.

2. Test and learn – I am the planning type, plan so extensively and as soon as the rubber hits the road, all plans go up in the air. Have a long term vision, but how to get there is fluid – plan that for just ONE PI

3. Prioritizing enabler features. Depending on what your structure is, getting tech debt prioritized can be the toughest job. Try to get an agreement around that.

DevOps Enablers

By |2020-06-23T19:16:05+05:00June 23rd, 2020|daily post|

DevOps is a mindset change.. BUT

Also requires a hell lot of enablers:

CI/CD:

  • CI tool in place (Jenkins, TeamCity..) with hooks to SCM, to creating environments, build & deploy the product, run the tests, and quality gates
  • You may need multiple pipelines

Environments:

  • Capability to spin up environments (Docker / OpenShift / Cloud..) on demand with desired configurations & tear them down

Static analysis:

  • E.g. SonarQube or any other static analysis

Test data:

  • Mocks / stubs for tests running on lower levels (unit / component)
  • Synthetic data generation on demand
  • Data creation and clean up routines

Test Automation:

  • Unit tests, component tests
  • API tests, contract tests, UI tests

…to mention just a few high level enablers.

The best part – engineers and product owners need to have confidence in all this.

So if you want to transform the way you release your product, have a plan for both:

  • mindset change and how to develop all the enablers you need
  • INCREMENTALLY (waterfall like DevOps is of no use..)

#RedefiningSoftwareQuality #Transformation #DevOps

Swagger for API documentation

By |2020-06-21T19:35:05+05:00June 21st, 2020|daily post|

Documenting your APIs behavior / contract on a confluence page enough for building common understanding?

In my experience, these pages often remain as static pages. The code keeps changing and the documentation does not.

I prefer using swagger to document workings of the API and use that as a reference.

This way you have a living document and no need to keep updating a static page.

Oh, and just to add, functional & contract tests are going to ensure if your building your services properly.

#RedefiningSoftwareQuality #TestAutomation #APIs #Swagger

Complexity vs configurability

By |2020-06-20T20:07:25+05:00June 20th, 2020|daily post|

A key area to consider while working on automation frameworks:

Complexity vs configurability.. and their inverse relation

To support more and more features, and make a solution scalable you’d want it to be more configurable

However as you make it configurable, it is bound to become more complex.

Sure using design patterns will ‘reduce’ the complexity, but inevitably will become complex as you make it configurable

There’s a balance you want to maintain between the two.

E.g. using libraries like cypress & robot you’d be able to create tests very quickly, but you loose control on certain configurability aspects, if you can live with them these are great

So it’s going to depend on your situation, But the principle remains..

#RedefiningSoftwareQuality #TestAutomation #AutomationArchitecture

Automation engineers skills

By |2020-06-19T19:22:36+05:00June 19th, 2020|daily post|

Hiring for automation engineers / looking for a position?

Here is my list most important skills you consider / learn:

1. Programming aptitude. Can think and design algorithms, language does not matter.

2. Testing Acumen. Practical experience of developing and using heuristics & identifying risks.

3. Attitude. Enjoys solving problems.

4. Automation exposure. Have an understanding of typical pitfalls in automation frameworks and how to fix them.

Importan point: Don’t necessarily look for someone / stick to any one langauge / tool. Technology is bound to change.

#RedefiningSoftwareQuality #TestAutomation #Hiring

Avoid emails

By |2020-06-17T19:51:28+05:00June 17th, 2020|daily post|

Who feels most emails are a waste of time?

FYI emails, cc’ed emails, bcc’ed emails, the long legal contract like emails, the confusing email with half the department copied in…

There are many reasons of this, most have to do with ways of working

Sometime no one wants to make a decision and let the focal point to keep spinning like a merry go round

Build a culture of test and learn, so people safe making decisions – Psychological safety

Also try to connect to people / have a quick group discussion as much as possible instead of long emails with a dozen people copied in.

#Transformation #Agile #HighPerformingTeams