Saturday, May 15, 2021

HTTP2 Migration Tests to consider on AWS's ALB

 

Is your team planning to implement HTTP2 and have services hosted on AWS using ALB?  Then you might have to consider the below tests on priority for start

By default, ALB sends requests to targets using HTTP/1.1.  Refer to the Request Version and Protocol Version at https://amzn.to/3uPaxl1for sending the requests to target using HTTP/2 or gRPC.

Here are few tests to consider on priority:

  1. Do all my client interfaces have migrated to HTTP2?
    • If not, having ALB on HTTP2 and few clients on HTTP/1.1 will make ALB use HTTP/1.1
  2. What time it takes to respond if I'm on HTTP2?
  3. What is the traffic pattern i.e. how the frames (frequency & size) delivered to the endpoint on HTT2?
  4. What happens to the client if there is a delay in response?
    • If serving users who have low bandwidth or intermittent networks, what should be the product experience to them?
    • What if you are queuing the requests and it is by the design in the system?
  5. What's happening at the endpoint?
    • What happens when there is a POST and PUT from the client as multi-part and not as multi-part?
    • When a bunch of requests is fired at once what's the size of each batch and frame in it?
    • Does the client still adhere to the HTTP/1.1 style of dealing with requests and response, or upgraded to deal the HTTP2 way?
    • How the timeout is handled on the server & responded to the client it handles?
  6. Do the libraries I use at the client and server end support HTTP2?


Friday, May 14, 2021

Bug Report: Applying the Single Responsibility Principle (SRP) and KISS

 

On completing my test sessions, I started to write bug reports into the tracker. I had this thought coming up again in me: "Should I keep all these problems under one bug report or have a separate one for each?".

  • When we have the test with SRP (Single Responsibility Principle) and KISS (Keep it Simple and Straight), why not the bug reports?
  • What's wrong if each symptom (consequence problems due to the root problem) has an individual bug report but linked to the root problem report?  

At times, I'm said to include all symptoms in one bug report along with the root cause.
  • I have witnessed the symptoms of a bug do not get fixed if it is mentioned collectively in one bug report.
  • Also, the linked bug reports (i.e. symptoms of the root cause) do not get fixed when the root is fixed. It will be marked as Resolved and Fixed as the root is fixed and resolved.

Hardly I have seen the symptoms as well fixed along with the root cause.

That leaves with the questions:
  1. Just one bug report or separate bug reports?
  2. When a test has to be specific with individual responsibility and objective, why not the bug report?
  3. If the root cause is fixed does it resolve the symptoms?
    • And, if the symptoms are resolved does it also resolve the root cause?

I look up to my consciousness should it be the separate bug reports or just in one bug report.  I see, I can apply the SRP and KISS to the bug report effectively.

Looking at the number of bugs is not a wise strategy. But looking at the number of problems that one root problem opens and tracing them, is useful in the engineering of a product.



Tuesday, May 4, 2021

Unsaid Skill embedded in the Code and Tests - Questioning

 

I read this question from Balaji Santhanagopalan in the Telegram group of The Test Chat.  This question is also on Linkedin, here.

A question to my fellow testers. How you are sharpening your questioning skills?


I see the first is to know the need for it.  And the ability to identify the question first.  In this blog post, I'm sharing how I cross through it.

I'm attempting to open my thoughts on questioning in different facets that I see:

  1. Philosophical
  2. Problem Learning and Identification
  3. Binary and Questions
  4. Pausing and Stopping with Questioning
  5. Persuasion and Communication

I understand the word "skill" as:
  • how do I make use of or apply what I practice, what I have or know in learning and solving a problem


Philosophical or Meta Layer Thoughts

  1. When did we not use a question?
  2. To better the questioning skills, we will have to identify the questions first.
  3. How do we identify the questions?


How do we identify the questions?

  • When I communicate
  • When I communicate by showing I belong there and also do not belong there, I identify the questions. 
  • And eventually, I will be identified in it


Decisions and Questions

  • Everything and anything we do is by making a decision
  • To decide, did we make use of the question(s)?  
  • We keep making thousands of decisions every day, and 
  • Each decision will have at least one question to it

For example, the last time you unlocked and locked your mobile screen, you had a question.  But that question went unnoticed.  It was at a subconscious level; it was not noticed by you consciously.  

At times what helped your subconsciousness could be a contextual question, and sometimes it can be a context-free question.  The combination of both is also possible.



Problem Identification, Learning, Understanding, and Solving Thoughts

While I use the questioning to learn, I will have to cross these challenges:
  1. Keeping the questions in conscious order so that I can classify them
  2. Classifying them to record it better in a contextual and context-free section
  3. Will the questions annoy the one at receiving end and how to persuade so I receive a response that helps me?
  4. Keeping the questions aligned with the objective yet we have context-free ones

Using the persuading skills with question and questioning will help much.  Consistently develop self-confidence and courage.



Technical Layers - Binary and Questioning


Binary - true or false.  You see that is a decision.  When I have a decision, I have a question.  The binary execution uses the conditions, states, events, data, and controls at the granular level with all interactions we have with it.

For example,
  1. What happens when you unlock your screen with the fingerprint?
  2. When you sign in to your email, what happens?
  3. Here, internally software executes the set of conditions and the assertions by switching the controls, state, data, and events.
What are contextual questions and context-free questions in this case?  When you have a condition and an assertion in execution, you see a question?

In other words,
  • the execution is an outcome of a question be it in binary or in a human

Internally the software works by asking questions and deciding what to do.  Now, what should my tests do?  Should it ask questions?

We engineers, we work with questions day in and out.  And, we do not know it consciously. 




Pausing and Stopping with Questioning


Have you come across the question
When the testing will be complete?
  
Can the testing be complete?

We would have paused the testing. Or, we would have stopped the testing.  But we never complete or completed the testing.  Testing can go and go on.  But it has to find a stop.  So is the questioning.  The questioning has to find a stop.  It can't go on and on.

When to stop questioning?  Ask when you want to stop or pause the testing.  It is important to know when to stop it.

Questions (tests) keep coming up and they may not be heard by the interfaces or people.  Learning to deal with it is a needed skill.



Art of Persuasion


When I communicate, how I persuade plays a role.  It also applies to questions I ask.
  • Questioning is also communication
  • Practicing the skill of persuasion will help as I continue to question

How to persuade using a question to a binary and human?  I work on this skill to assist my communication and questioning skills.



My Experiences and I


The below is missed to see on the floor by people who interact with the engineers and by the engineers.
  1. A programmer has questions in the code via conditions, states, events, data, and controls.
    • The product responds to do what it is supposed to do with help of these questions.
    • Do you see any contextual and context-free questions here?
  2. A tester has questions in the form of the tests.
    • The question of testers will be to the
      • code, 
      • product, 
      • data, 
      • programmer, 
      • infrastructure, 
      • system, and 
      • anyone who adds value to the product
    • Do you see any contextual and context-free questions here?

Identifying the questions (code and tests) and their layers is one of activity I do in my practice.  I try to understand and identify myself here so we communicate.  

For example, I have to test if the host serves requests coming from the client which is not on TLS v1.2.  What are the layers and their intermediates here?  What questions do I have in my tests here?  When I look into these layers, I see the questions (code) logically?  To question the logic what is my test (question).  Here is the start!

Further, to hone or better the questioning skills, I will identify the questions in the below mentioned:
  • system,
  • design
  • code,
  • product, 
  • business, 
  • technology, 
  • people, 
  • self, and
  • what you are not aware
  • what you know
I will classify the questions into contextual and context-free.  

I persuade my communication and questions by making use of Test Strategy, Test Design, and Testing Techniques to drive me towards value adding questions in the context of testing. 

I will work to develop my skills, self-confidence, and courage to test, communicate, and question.  I will break my ego and hesitation and step up. I initiate the communication.  I will acknowledge the feedback. I review and refine my questions.

To start, I will start first and the rest follows.