alikhalid

About Ali Khalid

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

User Journey testing instead of End to End testing

By | September 23rd, 2019|daily post|

I very much dislike the word end to end testing,

It means different things to different people, instead I use testing the ‘user journey’…

End to end can mean:

1. From the UI to the DB level and back (ends of the tech stack)
2. Can mean a user story executed from the UI
3. A feature (group of stories) demo over the UI
4. The end user’s complete journey which cuts across multiple applications

For me, only no. 4 is end to end, but it’s so hard to explain to certain people.

I find testing the ‘user journey’ much easier to get across to the audience.

And this part of testing is the most neglected, where a user flow is going through multiple systems,

Each team’s feels responsible from the start and end of their product only..

#QsDaily, #testing #softwarequality

Reorgs and centralizing decision making

By | September 19th, 2019|daily post|

Many re-orgs are done to change the culture and how decisions are made,

Often I’ve noticed in the process they end up centralizing decision making even more,

This notion of a select group of people having enough background to make right decisions has to go away,

The typical old management style of information flowing up and decisions coming down, like in the military just does not work.

The complexity of today’s work place is far too much for any select group to be able to make all decisions.

Although the re-orgs mean to decentralize but letting go is just so hard,

Ultimately going even further way from the goal of gaining efficiencies by reducing waste in decision making

If we stick to the fundamentals of reducing waste, making these structural changes might become more easier.

For more, refer “scrum” By Jeff Sutherland

#QsDaily #agiletransformation #scrum

Waterfall from NASA

By | September 11th, 2019|daily post|

Did you know ‘phased program’ – (waterfall SDLC) was developed by NASA

And inspecting the failed programs, this process was found to be extremely inefficient

The phased program / gated development process / waterfall model was said to be very good at trying to show an over-glorified picture of the software

The focus was on documenting rigorously and proof.

I guess that’s where the Agile manifesto said – we value working product over comprehensive documentation

Many of our teams might have moved into an ‘agile’ model, but this idea of valuing working software over documentation still has not gone away

We insist on over documenting nonsense stuff, and under-documenting where needed.

Classic example – still maintaining those long test cases, and having very less context around stories or importantly writing feature files to agree on the product’s ‘behavior’ with the team

#QsDaily #agile #testing

You are paid what you are worth

By | September 10th, 2019|daily post|

A guru of mine once said – You are paid exactly what you are worth – I thought he was joking

Looking back, I can say he was right, at least in the long run, here’s one reason why..

I was having a chat with fellow testers the other day talking about tester’s career progression.

The biggest mistake IMHO people make is to not learn how to solve problems..

In today’s world, all businesses are focused on solving their customer’s problems, especially in tech.

Folks hired in these tech firms primary role is to develop solutions to solve these problems.

A few people find this very taxing and unexciting, because they never trained themselves in problem solving.

If you are working in tech, regardless of your position in the org, your primary role is to develop solutions for the target market’s problems.

If you can’t handle that job, you have no place in tech, and let’s then stop talking about career progression (or griping about it).

If you are solving problems, and your organization is not treating you well, you can get a better opportunity and leave.

So, in the end, you are paid what you are worth..

 

Most Important KPI for Software Quality

By | September 4th, 2019|daily post|

I figured it out.. the first and most important KPI for software quality..

Can you guess?.
.
Time from ‘prioritizing a feature’ to the time it is ‘ready for deployment’ in production.

Now some might say testers don’t have control over the whole process, that is true but we should be working to develop that maturity

Or we might say time to market is not as important as quality of the product,

My answer would be – Quality is subjective, best to get feedback from people spending money determine quality

That does not mean we ship crappy stuff, some things are no brainier, seeing exceptions, basic functionality not working are obvious

The part which is subjective is, certain features we might feel are very helpful, or as the user expected and therefore give the product a higher quality,

In the end customer’s experience, they might see that as a hindrance in using the product and would have a different perspective of the level of quality here

So, anyone working towards developing software (including testers), the foremost measure should be: How quickly we can go from ideation to deployment.

Thoughts?

#QsDaily #testingmetrics #transformation

Quality Metrics Headings

By | September 1st, 2019|daily post|

After years of going around in circles, I’m going to get it done.

A set of quality metrics that help improve productivity, and I need our community to pitch in..

I’ve gone through relevant content I could find, and to be honest there is just so much on this topic, both good and bad content.

The mistake I have done and see other do is, we measure things we ‘think’ will generate value, like automation coverage, but never the actual outcome we want – time to market and product quality.

Also there are some process factors which usually get skipped, which are also responsible for hitting these goals

In lieu of these, want to classify the metrics in three categories with some “SAMPLE” metrics, not an exhaustive list, just to explain the heading better.:

  • Practices maturity
    • g. Scrum ceremonies and best practices in them
    • Three amigo sessions
    • Defining the complete user journey for each epic & feature
  • Continuous testing
    • Automation pyramid
  • Business value
    • Time taken from pull request to ready for demo
    • Trend of issues coming from support which have to be fixed

Under these three headings will be a list for each.

Thoughts?

Learning Vs Money

By | August 31st, 2019|daily post|

Tech stack, money, growth or company culture, what is most important when accepting a new position?

From this list I’d say tech stack and company culture.

Technology stack is an important factor. Working on a platform which has demand in the industry certainly is more lucrative.

Company culture – Learning better ways of working is often not given due importance.

Being exposed to better ways of working where taking an idea from concept to implementation in the shortest possible time is vital. This is the core of a DevOps culture.

Money and growth are by products IMHO,

As one matures technically and learns efficient ways of working, money and growth should follow.

Leaders and transformation

By | August 29th, 2019|daily post|

To transform your organization you need leaders.

And leaders are those who expect higher standards, from themselves (and others)!

The key in any transformation is to change behavior.

That requires leaders leading by example and demonstrating change.,

Then can the rest of the organization be expected to change.

Therefore leaders should put themselves to a much higher standard than others.

#QsDaily #transformation #agiletransformation #leadership101

Daily stand up

By | August 15th, 2019|daily post|

What are daily stand ups for? giving status..

Actually, that’s not the main purpose.

The main purpose is to actively remove any impediments the team is facing.

Secondly, for the team to actively work towards a single goal, the sprint’s goal.

A stand up ran done correctly, helps in aligning purpose and gives a boost of optimism.

In Jeff Sutherland’s point of view, it’s a ceremony to create harmony between the team, what he calls ‘transcendence’

The three activities to discuss therefore are:

  1. What did you yesterday “to help the team finish the sprint”
  2. What will you do today “to help the team finish the sprint”
  3. Any obstacles in the “teams” way

Keep stand ups inspiring, people walking out should feel ‘hell yeah, let’s do this’..

Reference “Scrum” by Jeff Sutherland

#QsDaily #scrum #motivation #agiletransformation

 

The Next Generation Tester Skill Set

By | August 10th, 2019|Management|

What would be the skill set you’d like the people driving the quality culture in an organization have? I’ve always been excited to find out what would be the skill set of a veteran tester. Who can interface with senior executives and at the same time lead and mentor quality best practices in testers. This is an attempt to classify the skills on a very high level I’d like to see.

This certainly will be subjective from person / organization to another, and I can’t imagine any person who would be an expert in all these skills. But helps to draw out the important skills.

Quality Engineering

Ways of working

  • Understanding of what a DevOps culture is
  • Designing and developing quality practices which are efficient and effective
  • Understands the practical implementation of Agile principles and implementing them in a team
  • Implementing scrum best practices
  • Experience in driving desired behavior in teams
  • Leading by example / servant leadership

KPIs, Reporting, Metrics

  • Designing quality metrics which provide indication of a build’s health
  • Developing team KPIs
  • Pitfalls in metrics and how to mitigate them
  • Expose and report risks in large product solutions

Facilitating Product Development

  1. Understanding core problem the product is solving
  2. Building and communicating product context for testers
  3. Make sure testing activities are in line with the core problem to solve
  4. Facilitate UAT and collaborate to making the process effective

Enterprise Management

  1. Socialize & collaborate with Senior Execs
  2. Voice quality related concerns
  3. Ability to make a point and get agreement from C-level executives
  4. Oral and written communication skills

Vendor management

  • Designing vendor contracts
  • Acceptance of test schedules
  • Managing offshore vendors goals and day to day activities

Testing

Test Strategy

  • Design test strategy in line with Tech stack, product / business use case & project constraints
  • Identify test coverage gaps / unexplored potential risky areas
  • How to push tests down to lower levels of tech stack
  • Strategy to leverage automation
  • Prioritize test scenarios
  • Design bug reporting flow

BDD

  • Using BDD to increase collaboration
  • Best practices for writing feature files
  • Cucumber / Serenity
  • Any other BDD tool

Exploratory Testing

  • Questioning requirements and assumptions
  • Developing testing heuristics
  • Using developed testing heuristics
  • Teaching testing heuristics
  • Usage of effective documentation methods (e.g. Mind Maps)

Test Cases

  • Writing test cases (efficient and easily maintainable)
  • Understanding of which test to automate
  • Using testing heuristics to develop test scenarios
  • Test management tools

Automation in test

Automation architecture design

  • Designing API automation frameworks
  • Designing UI automation frameworks
  • Developing test harnesses
  • Test data creation tools / programs
  • Developing synergies between automation teams
  • Automation best practices, design patterns and anti-patterns

Fundamentals of framework design

  • Develop Maintainability in framework design
  • Develop Reusability in framework design
  • Develop Scalability in framework design
  • Develop Robustness in framework design

Programming

  • Writing clean and professional code
  • Seasoned practitioner of coding patterns
  • Developed coding guidelines and principles for teams to follow
  • Usage of static analysis tools (e.g. SonarQube)
  • Skilled in any one strongly typed language (Java, C# etc.)
  • Skilled in any one loosely typed language (JavaScript, Python etc.)

Operational Acceptance Testing

  • Performance testing
  • JMeter
  • Gatling
  • Security testing
  • OWASP

API Automation

  • Hands on experience solving API automation challenges
  • In depth understanding of HTML methods
  • RestAssured
  • WebDriverIo
  • Any other API automation tools
  • JSON
  • XML

UI Automation

  • Hands on experience solving typical UI automation challenges
  • In depth understanding of how browser automation tools work
  • Open source browser automation tools / libraries (e.g. Selenium, Webdriver.io etc.)
  • Enterprise tools (e.g. UFT / TestComplete)
  • Junit, TestNG
  • Allure
  • Maven / Gradle

Mobile Automation

  • Experience solving typical mobile automation challenges
  • Understanding of how Android and iOS work and interactions during native apps automation
  • Appium
  • XCUITest

Continuous Integration

Git

  • Worked with Git using proper branching and merging strategies (e.g. BitBucket, GitHub etc..)
  • Raising and approving pull request
  • Collaborating on code reviews

Jenkins

  • Setting up Jenkins
  • Creating pipeline jobs
  • Configuring automation framework hooks in Jenkins (using maven, ant etc..)
  • Configure to generate telemetry
  • Troubleshoot jobs and familiarity with Jenkins logs
  • Configure and troubleshoot automation reports
  • Gather metrics from execution data in the pipeline

Environment management – Containers

  • How containers work
  • Docker – creating and using containers
  • Orchestration tools (e.g. Kubernetes)

Environment management – VMs

  • Setting up VMs
  • Worked with configuring OS & tools to setup test environments
  • Provisioning Network access etc.

Environment management – Cloud

  • Usage of test environment SaaS tools (e.g. Sauce Labs)
  • Setting up these tools (e.g. Sauce Labs)

Technical & Test leadership

Team Leadership

  • Leading by example / servant leadership
  • Developing an open culture where people are free to share their thoughts and fail fast
  • Developing confidence in team members
  • Leading teams under 10 people
  • Leading teams from an enterprise level
  • Provide positive and constructive feedback respectfully
  • Build positive relationships with team members
  • Planning, organizing, and follow-up skills
  • Hire and mentor Software Quality Engineers

Thought leadership

  • Sharing and learning in the testing community
  • Collaborating with other thought leaders
  • Familiar with latest trends in the software and testing community

Technical Acumen

  • How technology stack works – Presentation, business, persistence and database layers
  • Micro services architecture
  • Front end platforms architecture (e.g. Angualr, Node JS)
  • Web development fundamentals – HTML, CSS and JS
  • Back end platforms architecture (e.g. Spring boots, .Net)
  • HTTP messages
  • MVC architecture
  • SQL fundamentals and schema design

Collaborating with Architects / Senior devs

  • Ability to understand complex product design
  • Review product architecture and provide feedback related to quality and stability
  • Ensure product architecture allows for testability

I’d love to hear your thoughts and what skills you would add / edit in the list.