Monday, October 16, 2023

Performance & Tests: Getting Started and Data Analysis

 

On running tests,

  • We will have data (information) as one of the byproduct.
  • Analyzing the data of the integrated sub-systems in isolation and correlation,
    • It will lead us to a technical analysis on each integrated system.
In the report, we draft this analysis along with actions to be taken.

Note: When said sub-systems do not ignore or skip the client or consumer; the system does not comprise just server.


No Golden Rule

There is no one way to do a testing.  Likewise, there is no one way or the golden rule to test for performance.  It is contextual and depends on what I want to learn.

In fact, in few contexts, we can have a value adding performance test with just one request.  Just, I should be well aware of -- what is that I want to know and learn from this test.

That said, there are multiple interfaces where we can observe, analyze and learn from the performance data collected.

The fourth question from season two of 100 Days of Skilled Testing, is:

What are your favorite hacks to analyze performance testing results and find anomalies?

Well, this question do not mention explicitly if it is for server or client or database or caching or messaging or for what interface of a system.  It is a question; but, to me it looks too generic and at a point it looks vague.  Having said this, that is how the learning journey and curve starts! 


Result vs Report

What is a result?

  • Is it an evaluation after a data [information] is put to scrutiny?
  • Or, the result is a data that is collected and not yet interpreted?

It depends on individual or team and how it being practiced.

The result is different from a report.


Getting Started and Data Analysis


I should know how the system architecture is designed and orchestrated with its boundaries and interfaces.  This helps a lot.  What kind of architecture is this?  Is it a monolith?  If it is monolith, my approach to test for performance differs.

If I'm asked to start the analysis of data for a system that I'm not aware of,
  • I will start by analyzing the below indicators on knowing the architecture and the orchestration of the sub-systems for critical business workflows
    1. CPU usage
    2. RAM usage
    3. Data I/O
    4. Network usage
    5. The Heat and sound dissipated from the hardware which holds and binds
      • CPU, RAM, Data I/O, Network and tech stacks installed and configured

It hints me to look further and test investigate, when I observe:
  • Having a steady consumption
    • What is steady consumption in this context?
  • Having a low consumption
    • What is low consumption in this context?
  • Having a unusual consumption spike and fall of it
    • I follow the pattern to study further
    • What is considered as knee, spike and fall, in this context?
  • Having a zero consumption
  • Having a maximum consumption
    • What is maximum consumption in this context?
Having a high consumption doesn't mean a problem.  Likewise, having a low consumption does not mean all is well.  I have to uncover them to learn what it means in the given context.

In each of this, there will be a pattern.  I will learn them.  I will correlate with other sub-systems and learn what they were doing in the said timeline.

Do you recollect this line -- "the architecture should provide the Testability"?
  • I wrote about it in one of the blog posts of Performance Engineering.

I refer to the below by traversing with the timeline,
  • The logs by asking for it
  • Data recorded
  • Any APMs that are in place
I correlate all these with above said indicators.

This gives me a start. It is one of easiest start that I can have to get started with analysis.


Well this is to analyze at the server end.  What about the client [consumer] end?  It is simpler and will share in the coming blog posts.



Do you want to know more on this and other strategies that can be used contextually?  Let us get connected and converse.  I'm happy to share and learn on listening to you.  It is fun and awareness!



Wednesday, October 11, 2023

Prioritizing Performance & Its Requirements - The Two Engineering Tasks

  

How do I gather and prioritize the performance requirements of a student from schools, colleges, universities and society? 

Note that, I said performance.  What do performance mean in schools, colleges, universities and society?

  • Any time, you asked this question to self?
  • If you are living with children, did this question cross your mind, no matter in what class the children are studying?

This is not the question which can be ignored.  Also, this question is not precise and to the context.  It is the question that is resonated but has no acceptable rational base for whatever context from which it arises.  The same when it comes to performance requirements of a software system.

If you observe closely, the system in which we live, it pushes towards performance for what it thinks as a performance.  Isn't it?


The third question in season two of 100 Days of Skilled Testing is:

How do you gather and prioritize performance requirements from stakeholders and project documentation?



Prioritizing Performance & Its Requirements


If you read attentively, the title of this section says - prioritizing performance and its requirements.  I did not say, prioritize performance requirements.

That said, what is performance for Netflix is not same for the  Aadhar system.  But, both have prioritized the performance and looks to be aggressive in knowing the requirements for same.  Don't you think so?

We're in the timeline of Shift Left.

  • How to shift with performance to left? 
  • What all in the system should focus on the performance in the Shift Left?


MVP & Performance Engineering Story


When we are going to take MVP as early as possible to market, there is a tradeoff.  What are considered in subsequent priorities which will be compromised on negotiation by engineering and business?

The context matters when prioritizing!  Be it for performance or functionality or security or any quality criteria.

I will interpret the question asked from the point view of a MVP's deployment or publishing.

  • Are you asking why I have picked MVP?
    • The performance is contextual and it is based out on multiple touchpoints, its boundaries and interfaces of a system.
    • I cannot talk on all those in this blog post.
    • Neither, I want to talk about the KPIs and metrics.  
  • I want to share which you can pick, consume, and apply in your work.


Now, we have prioritized performance for a MVP.  Aren't we?  Prioritized means, it matters, it concerns us and we are okay to compromise on few for it.  Let us jump to Left with MVP in our hands to identify the requirements of business.

As a business, we will have a rough idea on how we are pitching and selling our services and to whom.  As a test engineer, you can sense what is the key transaction [business work flow] in the MVP.  You will know the touchpoints, interfaces and boundaries in the architecture that communicates and work together to keep MVP delivering the value.  Don't you?

Say the business wants the MVP to support and serve 500 requests per second.  I should know about the 500 requests here.

Is it,

  • Concurrent Requests?
  • Active Concurrent Requests?

This matters!  Both are not the same.  Have you asked this question?  It is a requirement we miss to capture.



Capturing Performance Questions for a MVP

It is about the awareness for first!  How much am I opening up myself to the awareness?  This brings an energy and it is contagious.

How do I bring the performance awareness in my team so that it is engineered into the system we develop?  This is a culture drive to an organization.

Now, I know, the MVP has to serve 500 concurrent active users in a second per business's expectation to meet its reach and target.  If I do not know this, I have to capture this data, for first.  How do you capture?



A Use Case to Ponder

One use case which would trigger the spark of thinking is - How should Disney+ Hotstar's services perform to live stream the India vs Pakistan Cricket World Cup 2023 on 14th Oct 2023?

  • How should it capture the performance and its requirement for this day?
    • How should this system scale to crores of viewers streaming the live video of the match?
    • How should this system scale for the gamification - emoji, chat and other viewers engagement during the crores of viewers making requests from client interface?
Try to play the past 30 minutes of this live video? What did you see? Why? That is part of the performance engineering strategy!

This use case opens up the different topics of Architecture and Performance Engineering. Be aware of it and explore on them.  This is not what we want to talk, now.  We want to talk on a MVP and how to capture its requirements for having better performance experience.



Step Up by 5% Heuristic


On having a test environment which is close to the production context and the test data that looks realistic, I get started.

I framed this "Step Up by 5% Heuristic" after few months on starting the practice of Performance Engineering and Testing.  I failed, and I learned. I'm learning.

I know, the expectation is 500 active concurrent users per second.

I will start to evaluate the integrated systems of the MVP for the 5 percent of 500.
  • What is the 5% of 500?
    • I will start with 25 concurrent active users requests for the MVP.
      • I will observe the emotional experience of when using the MVP during this time.
      • I will monitor and record the KPIs, and other needed data.
    • Does it fail to serve 5% of concurrent active users?
      • If failed, I know what to do now.  It helped me.
        • This helps me to draw the requirements better and rationally for the existing system's architecture.
      • If it succeeds, it helped me partially in knowing what actually I wanted to know.
        • I will raise the active concurrent users to 10%
        • That is, increasing it by 5%
          • I repeat these tests until the MVP architecture lets me know about the requirement it needs for the performance of serving 500 active concurrent users in  a second
            • Read the above sentence, again
            • The tests on MVP will let me learn what are its performance requirements for serving active concurrent 500 users in a given architecture, infrastructure, and tech stacks


Beyond by 37% Heuristic


I framed this "Beyond by 37% Heuristic" after I failed in framing the tests for performance.  Talking the rationale of this heuristic is not the purpose this blog post.  Let us catch up if you are curious and interested, we will discuss on this.

Do a salary hike of 30% indicate a high performance?  I don't know!  But 30% hike is something not commonly given to all, is what I see in my career so far.

That said, this 37% has worked for me in the contexts I'm testing.  Did it serve 685 (500 + 185) active concurrent users in a second?  It helps me to draw a requirement analysis of the MVP system for this volume of concurrent active users.

Now, I will step up by another 37% of concurrent active users. That is, 870 (685 + 185) active concurrent users in a second.
  • If seen, I have 1.5x traffic now.  Did it serve?
    • If yes, how many active concurrent users were served in a second?  
    • I will correlate the KPIs of other integrated systems of a MVP.
      •  With the captured data and emotions
        • This will tell, what should we expect despite what is the expectation from business
        • This difference will let us know "the requirements"
          • How to gather information on -- what has to be optimized, changed, reorchestrated, eliminated, included, and more.
          • We start technically in establishing and framing the Performance SLAs and SLOs between the tech team and business.
          • Now the performance & its requirements will appear in the dots that are,
            • Being connected
            • To be connected
            • To be disconnected
            • That does not exist


To conclude, shift wherever, take the performance engineering together! Revive its requirements to be healthier!



Note: You should read these blog posts if you have not:
  1. Performance Testing: Unspoken KPIs and The Missing Correlation
  2. Architecture: The Common Shared Understanding -- Part 1
  3. Architecture: Its Aid in Performance Engineering -- Part 2


Thursday, October 5, 2023

Architecture: The Common Shared Understanding -- Part 1

 

When we are developing a software system, the requirement from a stakeholder is not 'Fast' or 'Scalable'  or  'Responsive'.  But, the stakeholder needs it and expects it.  If you see, on a larger picture, the software system development and maintenance is a job of balancing too.


When a Software Architect [Technical Architect and Test Architect], works on architecting the software system and testing for the same,

  • It is about balancing the technical aspects with the business's requirements from stakeholders.  
    • Do you see that?


Knowing the architecture of a software system and testing of same is one of a primary task for engineers on the project.  Because, we software engineers have to balance it well.  Balance, what? Balancing the technical aspects together with business's requirements from stakeholders.


This blog post is part of 100 Days of Skilled Testing series.  The second question posted for season 2 is,

How important is the understanding of application architecture to do performance testing better?

 

What is an Architecture?

In context of Software Development & Engineering, the word "architecture" is one of the ambiguous words among the teams in a project and an organization. 

As a test engineer,

  • Did you ever had a discussion or arguments or debate with programmer and architect?
  • I had such discussions and I continue to have it today as well in the projects that I work.
    • This is to know and understand
      • What I should be doing as an engineer for first and as a Test Architect in the role?


The outcome of this discussion showed me,

  • We all did not have a common understanding of it
    • We did not share,
      • "What I understood for the architecture and this architecture?"

The primary goal of a Software System's Architecture is,
  • We all engineers on a project have a same understanding of it, in the aspects it exists for.
  • This understanding is arrived after we have put our thoughts into scrutiny and decided that we stick on to it, so that,
    • We can balance well between the technical requirements and business expectation.
Are you with me, so far?



A Software System's Architecture is,
  1. A common shared understanding of what we all have for,
    •  What we are developing, testing, and to about maintain?
      • And, Why? Who? When? Where? How?
  2. Represents the boundaries and interfaces of what matters,
    • That is [to be] orchestrated, designed, implemented, how it communicates, and what it will have, and not.
    • It also can show how the teams are structured and how the team and organization is organized.
      • For example, in the Service Oriented Architecture, the teams are built and structured with respect to the service they offer.
    • It is a model that is better than other models in a given context of technical requirements and business needs
  3. The context and awareness for,
    • Why it is the way it is?
      • The cost and value for being so.
    • What to do when it has to be changed? Where to change?
      • How simple and quick to change?
        • What are the cost and value for being so?
    • How can I monitor and observe all these consistently?
  4. The Gateway of Testability - it tells what is the Testability available for,
    • Letting know what is critical and priority to test
    • Where, How, When, and What tests can be framed, designed, and executed? To what extent?
      • Why these tests?
      • If an architecture does not talk about and do not have the Testability, we have a serious problem!  This has to be fixed for first on priority.
        • An architecture has to provide the Testability and Programmability scope and opportunities to develop a software system that is of value!

For today, this is my understanding for the "Architecture".

I'm a Test Architect in the role and I expect myself to be an hands-on engineer for first.  It is a necessity for an architect to be an hands-on engineer.




Note: Read the Part 2 of this blog post here.


Architecture: Its Aid in Performance Engineering -- Part 2

 

I hope, you and I have the common shared understanding for the word "architecture".  If not read this blog post and come here to know about the dots.


Do I Know the Dots?

Before connecting the dots, I should know,

  • What are the dots and how to identify them, where and when? 
  • Who can help me in doing so?

In Software Security & Engineering, we use a Threat Model to,
  • Identify the risks, surface area, tests and to develop the payloads. 
  • A software system's architecture will help in developing and improvising the Threat Model consistently.

I see, the same for software system's Performance Engineering & Testing.  To test better for the performance,
  • I need to identify the dots, risks, surface area, tests, payloads, monitoring aid and correlation of all these.
  • The understanding of software system's Architecture is a necessity to do so.
    • But, what are the dots here?

The dots can be identified when I know how to use the Testability provided by the architecture.  This leads me to evaluate the performance for the boundaries and interfaces in isolation and as a whole, and then correlate.


With this, it puts me to question - What is the performance of this architecture?
  • I did not say the performance of software system; I said, the architecture.  
  • There should be some characteristics to identify and evaluate the performance engineering models offered by the architecture. 
    • What are they?  

The architecture's characteristics helps,
  • To identify and distinguish the dots in ease and to test better.
    • How can I test for the performance aspects of a software system using the architecture's characteristics?
    • How do I identify these characteristics in the architecture of software system?



The Characteristics of an Architecture


Last year I read an article from ByteByteGo System Alliance.  This article flashed in my mind as I read the question,
How important is the understanding of application architecture to do performance testing better?
This is one of the article which I refer to identify the performance characteristics of the architecture.  I refer to the cheatsheet shared in this article for my references.

In few projects and organizations that I have worked, most of these characteristics were put into practice and production environment.  I monitored them in usual traffic and unexpected traffic.  The feel is something that I cannot describe in words; I want to experience it.



Performance Engineering Aided by Architecture


Which characteristics of architecture is associated to the which boundaries and interfaces of a software system?  Knowing this, helps you and me in thinking - What has to be tested in performance for this interface in this boundary?

I want to share my work experience here.  But, I see, if I share something which we all can relate to, it will be of help in knowing - Why it is important to know about the architecture to do the performance testing?

Below one is a recent use cases from software industry for the same.
  • I will not explain in detail; but, I will bring the key points to the context of this blog post


Amazon Prime's Audio-Video Monitoring Service Moving to Monolith Architecture

What I and You Should Know:
  • The complete Amazon Prime system did not move to Monolith.
    • The Prime Video's Audio-Video Monitoring Service moved to Monolith.
      • Why?
        • This monitoring system which was orchestrated with a Microservice architecture did not scale after a limit
        • Problem Statement:
          • Say, the Prime Audio Video Monitoring Service expected a load of active 100 concurrent users streaming movie Kantara in Kannada audio.
          • After the 6th user started streaming the same video [in the same audio or different audio language], this monitoring system did not scale to include other 95% of concurrent user. 
          • As a result, the Prime Audio Video Monitoring Service slows down [or stops,] and eventually the video streaming to the active concurrent users will take a hit. 
          • This monitoring service is important so that each user gets a video and audio of the agreed upon quality and streaming.
What I understand is,
  • This monitoring service was continued in production while the team looked for better solution in performance with the given architecture.
  • While it did so, the cost of having this architecture was high when it had to scale up.
  • Looks like Prime Video business beared this cost for sometime is what I see.
But, the online streaming business cannot settle and agree to pay high cost, while it is planning to stream the live sports action in coming days.  A need came to look into performance characteristics in the being used monitoring service's architecture.

It eventually re-orchestrated the existing components with a new architecture in place.
  • It moved from the distributed microservice system to a monolith system, where the spawning of Amazon Step Function (error detector clusters) happened vertically.
  • Along with this, the architecture of this monitoring service was placed in a way, such that, most of its components came into one process.
  • Thus, eliminating the S3 bucket as immediate storage for video frames (as images) and audio files.
  • This architecture helped the creational, behavioral, structural and functional characteristics of Prime Video's Audio-Video Monitoring service.

Prime Video says upon testing for performance and changing to monolith by rearranging the existing components,
  • It saved 90% of the cost.
  • 90% of cost for Amazon, is what in the numbers if it is in Indian Rupees? 
  • How much a tester gets paid if just 1.5% of this 90% is paid as a salary per month?
    • I will leave this to your thoughts and calculation.

If I know the architecture and where to look for what characteristics, it helps me to think of right performance tests for the context.  

The Hostar's emoji introduction in live cricket matches during 2018 and its consistent improvisation in processing for performance is a good use case, to the question -- Why it is important to know about the architecture to do the performance testing?




To conclude, architecture cannot be ignored in Testing.  It plays a critical role for aiding and identifying the testability and BCFS (behavior, creational, functional and structural) characteristics of a software system.


Wednesday, October 4, 2023

Performance Testing: Unspoken KPIs and The Missing Correlation

 

I love Performance Engineering!  In a nutshell, the performance is all about capability in a given capacity,  in a context.  The context is critical element in Test Engineering.  In the common language of a workplace context, the performance it is about the productivity expected and delivered.

This blog post is part of 100 Days of Skilled Testing series.  The first question posted for season 2 is,

What key performance metrics or KPIs (Key Performance Indicators) do you consider when defining performance requirements?  Do you use the same metrics for client and server-side performance testing?  If not, these differ in what way?


KPI Classification

On a high level, irrespective of a boundary and interface of a software system, the Performance KPIs can be classified into two:

  1. Service Oriented
    • It helps to learn by correlating,
      • How well a system is providing the service to the intended users in a given context?
      • How a system is not providing the service to the intended users in a given context?
      • For example, Response Time, Availability, etc.
  2. Efficiency Oriented 
    • It helps to learn by correlating,
      • How well an application uses its features and resources in a given context?
      • How an application is having trouble in making use of its features and resources in a given context?
      • For example, Utilization of Resources, Throughput with the resources available in the context, etc.


Performance Engineering & Metrics

You will be aware of the other commonly spoken or written metrics that a performance tool offers or has it in its glossary.  I want to focus on KPIs what we are not aware or not exposed to in the communication or Performance Engineering & Testing Report.

The metrics in Performance Engineering & Testing depends on what in the system, I'm putting to an evaluation.  

For example, we do not consider how a feature is implemented and how many threads it can spawn and use in a given point of time.  Further, this leads to CPU and its logical cores, RAM, Disk I/O, and types of server or machine used.  Also, another important data is how the OS is setup with configurations where the different tiers of a system is deployed or installed.  These metrics are common either when I'm facing a client end or serve end, yet it is missed.

If you notice, these are hardly spoken or heard metrics.  But it plays a crucial role.  A performance report compiled should have this data so that the technical people can correlate with other commonly heard metrics.

Being aware of the KPIs that are commonly seen in the Performance Report is a must.  But, knowing what we are not aware or/and missing besides the known is a necessity!  This is missing in the correlation when evaluating the performance's perspective of a system.


The Missing Correlation

Identify what in your report is a need to correlate.  The statistics or numbers are representation and not a derivation.  It is of no use until I derive out of it with a correlation.

I have to derive the correlation by including and also by eliminating the representations.  For doing so, the missing correlation representation is a must so that KPIs look rational, technical, logical and analytical.

Uncover what is being missed in your correlation so the KPIs representation look senseful!



Wednesday, August 16, 2023

When I Questioned My Learning -- What is Automation?



I'm questioning, revising, refining, and versioning to update my learning and practice with Automation in Software Testing & Engineering.  This blog post is about how do I define and understand the Automation and Software Testing.


Automatic and Ation

I started by breaking it into classes (words).  I see the better picture of what it does and what it means.

  • Automatic
    • which runs on its own with little human intervention where it is needed.  
  • Ation 
    • means an action
When put together, Automatic + Ation = Automation.

I do not want get into from which language did it come from.  I got what I need here.



Automation and Software Engineering


Today, the context, area, scope and subject of Software Engineering has grown when compared to last two decade.  This is a immense change, progress, and growth.  I can think of automation in each area of Software Engineering, today.

I will stick on to context of programming the code, testing of this code, and what to automate by learning how and why.  My work and practice is here for last one decade.

I unlearn and learn by redefining to myself:
Automation is the use of technology to execute a task with reduced human efforts.


I said, reduced human efforts and not elimination of human, and human efforts.
 



What is Software Testing?


It is a parallel engineering that is engineered in Software Engineering.  When said engineering, it is about civilization, learning the [actual] problem and solving the [priority] problem.

Then, Testing is about learning how well it is being engineered.  It is an exploration, study, execution, evaluation and connecting all these to know the differences if any with its value and cost.

Testing is part of Engineering without which  Engineering cannot exist.  Testing goes in parallel as an engineering to the engineering.

That said, Software Testing is an engineering that runs in parallel to Software Engineering.  To me, the definition of Dr. Cem Kaner for Software Testing looks to be closer as a engineering practice.  It says,
  • Software Testing is an
    • empirical
    • technical
    • investigation activity
    • carried out to provide quality related information
    • to stakeholders
    • so that they make informed decision

With the help of Software Testing, to an extent I will learn:
  • In what all ways the Software System appears to work - how, why & when
  • In what all ways the Software System fails - how, why & when
I will have a technical data that is rational and empirical to present my learning from the testing I do.



Automation in Software Testing


I'm learning consistently for over a decade now that automation in software testing is one of the ways to test and this has its own constraints and limitations.   It exists to assist the Software Testing & Engineering, and not to replace the Software Testing & Engineering.

When said automation, I use to think of Programming Language and executing a test via the code where the intent of the test is expressed.

But, today I learn, I can automate in multiple ways and in few context even without using any programming language.  Yet it is still an Automation in Software Testing.

I used a toy train to automate a use case of payment via card and NFC.  This worked very well in fact with actual card and POS equipment.

Most times, one equates Automation to the code.  It is not wrong!  But it does not have to be code of a programming language always, either. 

As I said, if Software Testing is an engineering, then, Automation in Software Testing is also an engineering.



What About You?


Did you redefine your understanding by unlearning?  Be it yes or no, I'm curious to listen you.  Let us catch up!


Tuesday, August 8, 2023

How To Start Learning The Automation?

 

I had this question.  I figured it out how to help myself.  I figure out better ways every day.  I read this question by other Test Engineers on forum and communities.

Hi everyone

I want to start learning automation testing.  Where to start and how start?  Can anyone guide please? 


You might have across the similar question.  And, you might as well have this question. Do you?

I share here in the way I say it to myself!


How Do I Start Learning Automation?

  • Find all the ways you can for how to fall in love with Programming
  • Fall in love with Programming
    • Choose a language to express your love
      • You have to express and practice better ways to express each day
        • You will get better in proposing as you express it each day
    • Is it one way love?
      • Don't worry! It will be two way soon
      • Let Programming understand you, and you understand the programming
        • Love at first sight is not for all
        • Some will take enough sights to fall in love
          • And after that, you know; if not, you will know
          • Do not give up! One small step at a time
  • See the Testing in your work
    • Improvise your Testing each day while you are in love with Programming
      • Testing will help in getting you and programming to love each other
        • Take help of this friend very well by understanding who is this friend
  • Learn consistently how to express the intent of your test via the code you program
    • Know the limit of the test intent you have expressed via the code that you have programmed

If you noticed there is no automation libraries, tools and Test Runners mentioned here.  All that is mentioned to get started is:
  • Programming and love for it
  • Understand and seek the help from friend -- Testing
  • Know the test intent expressed in your programming and its limitations

I want to do better and effective automation in testing to help myself and my testing.



Tuesday, May 2, 2023

Business and Software Testing: The Top 5 Challenges I See For Today -- Part 4B

 

I offer my skills, expertise, and time in exchange for the pay I get from a business [employer].  You too do that, right?  That's how I make a livelihood and take care of myself and my family.

That means the business is a critical entity to me!

If I do not understand the business, 

  • I cannot do software testing and automation that adds value
  • I will not be in a position to lead and deliver
  • I cannot help myself to grow in the professional and competing world

This blog post is a sub-part of the blog post "The Common Challenges as a Software Tester and How I Overcome -- Part 4".


The business and its service as a software solution are in need of software testing
  • But, what the software testing is supposed to be and what it has to do, is mostly driven from the project management and decision to the business
  • That way it looks like a business problem
  • It is a project management and decision problem that is made to appear as a business expectation
    • This is a different and unique problem statement; the business carries it 
    • I will share my experiences and learning on this in the next blog post -- Project and Software Test Engineering: The Top 5 Challenges I See Today -- Part 4C


In Software Testing,
  • We focus on the risks as well
  • With the help of my testing, I try to learn the risks and help the stakeholders to know about them

The same here!
  • I try to learn the risks of the below five challenges
    • Because, it impacts me, my team members with whom I work, and my family members
    • By learning the risks, I will be better informed to make decisions so I can deal with the impact and have control of the situation


Here are the first few challenges that I witness in Software Testing around the Business context

  1. My Work, My Fit, and Company Goals
  2. Whose Opinion of Me Weighs and Influences My Growth?
  3. Understanding the Decisions and Moves in a Project and Org
  4. Sighting and Understanding the Dynamics of Changes
  5. Being Hard to Replace -- The Myth






My Work, My Fit, and Company Goals


Why it is a challenge?
  • I can get easily deceived here
    • By believing I'm adding value to the organization
      • And, get into thought I and my work is valued and needed
    • But the manager and organization may have a different opinion
      • It does not get communicated until one day when I'm called into a meeting that includes the HR staff

How I'm solving it?
  • Read this blog post
    • It is about learning how my work fits the company's goals
      • I evaluate this consistently with my manager and her/his stakeholders
      • Yet, there will be differences and mismatches based on multiple factors
        • The business is one such critical factor



Whose Opinion of Me Weighs and Influences My Growth?


Why it is a challenge?
  • Of course, how I see myself stands first and it is more important
    • This is a challenge I have to balance throughout my lifetime
  • In the business and political world, to be in a better position for what I earn, it is important for me to know -- How am I perceived by the one who is more authoritative, powerful, and influential in the decision?
    • There is a person above my manager and all other managers, whose decision matters and maybe final
      • Do I, my work, and the value addition from my work to the organization, are visible to this person?
      • How does she/he perceive my work?
        • How will my work be rewarded?
  • This matters to me because my growth in the company and what I earn, depend on it
    • I work for this!
    • We all work for this, right?
    • Yet not all get what one wishes for! Why?


How I'm solving it?
  • To be honest, for most of the years, I said to myself  -- "My work speaks for itself, and no need to bring visibility to it"
    • But, in reality, it does not go that way always
    • Most times the manager who does One-on-One regularly will not have a clue about what I'm doing though we meet every month to discuss
    • Then how someone else will know?
      • This is the reality!
  • Today,
    • I step up and talk about my testing team's work and value
      • Also I talk about the work and value added by other teams with whom I work as a team
    • I step up and talk about my work and its value
    • I step up and say how we are solving it as a team
    • I step up and say what's my contribution to the team's work
    • I find ways to bring visibility into my work, my role, and my value addition
      • I advocate for it
      • In a way, I'm a sales and marketing person for my work and presence
      • If I do not sell and market my work and presence, no one will do it unless I have a supporting and strong manager
    • I show how fit I'm to the equation of the organization's goals and plan of execution
      • Yet, this is a challenge of [for] everyday
      • I will be evaluated every day by different stakeholders
      • My past accomplishments are history and it does not work in the long run
        • What I do today and how I'm doing it, matters in alignment with the organization's goal
        • Do I make a fit with my work and the value I bring and add? How?
          • I will have to balance myself here in the business and political space

I ask and discuss with my manager -- How I and my work are perceived by the person who has the authoritative decision?  This helps me to see how I and my work are interpreted by different people. It helps me to discuss and clarify if it is being perceived in other ways.

I also talk and discuss with the authoritative person about
  • My work
  • The value being added from my work and my role
  • My fit to the organization's goals and how I'm aligning with it



Understanding the Decisions and Moves in a Project and Org


Why it is a challenge?

  • The decisions and moves that happen in a project and organization will have an influence on everyone
  • Sometimes we will not be said why the decision is made, or, we will not even know a decision is made
    • I will be annoyed and uncomfortable with the outcome and happenings from the decision made
    • The decision can be in terms of
      • What one draws as a salary and benefits
      • The termination of certain roles and people
      • Cut down on benefits and compensations
      • How we work and deliver
      • And, more
    • This can make me be off trail and not align with the goals and decisions of project management and organization
      • This sends a different perception about me to the project management and business
      • This will surely not do good to me

We tend to talk or be annoyed about certain decisions.  But there will be some reason behind it; just we are not said or we do not see it



How I'm solving it?
  • There will be reasons behind the decision made and changes happening or to happen
  • My manager will also not be aware of why certain decisions are made
    • I have to accept it
  • I talk to my manager asking why a decision and change in the priorities when I observe it
    • This is important to know
    • Sometimes my manager may not share about it if it is not disclosable to my role and I respect it
      • Talking and conveying the direction with what can be shared and cannot be shared is a skill!
  • As I say, awareness is a skill
    • When we are involved in the work we do, we lose sight and attention to what is happening outside the work on the floor and organization
      • There are certain heuristics that we can use to identify the changes happening
        • With whom we work
        • With operations that are executed in our work
        • For example,
          • the number of meetings [increased or decreased],
          • the calendar of my manager and of the authoritative person,
          • the project and business tabulation,
          • and more

The functioning of a service company is different from a tech product company.  Be it an enterprise or a start-up or a mid-sized setup, how the floor runs, is different.  I will have to tune myself to be a better observer and spot the changes.  The quicker I do it and discuss about it with my manager and the authoritative person, it helps me.

Figure out ways to know why certain decisions and changes are done in priority.  I do the same!  I use to get lost in my work and practice.  I would be unaware of what's happening in project management and business decision.

I'm learning and building the skills here for the last seven years.




Sighting and Understanding the Dynamics of Changes


Why it is a challenge?
  • The outcome of decisions, changes, and changed priorities need not be bad always
    • But, certain decisions and changes affect badly and it will be unexpected
    • This will have long-term effects on mental health and physical health
  • Being a leader, I should help my team to navigate through it with awareness
    • At least, I should be in a position to give the heads-up
      • This may not be possible always, but my team trusts me and I need to keep it practical and in the business orientation
    • I should be in a position to handle it with my emotions in control
  • The growth of my team people, my growth, and the benefits we earn can be impacted
  • Business and its dynamics are so unpredictable, it changes and it brings an impact on people who are with it
    • I have been impacted by it!
    • In a way it is good that it happens
      • But, can it be prevented and get off from being impacted?
      • How to spot and understand the change and the dynamics of the change?


How I'm solving it?
  • For first, I need to remain calm and not in the anxiety when there is an impact or when I spot the changes
  • The floor reflects the changes; just I have to be observant
  • I share the same with my team and tell them to spot a few heuristics
    • For example
      • If someone on your team who did not bother about what you are doing comes all of a sudden and asks for a demo of your testing, automation, and any of your work
      • The regular catch-up or one-on-one is no more done or its frequency has increased
      • The type of questions coming to you and what is expected in an explicitly said time period
      • The body language
      • How I'm included in the project and team for my role?
      • Is my work appreciated in public on the floor?
      • Did I get a personal message or email as appreciation and not as public as others in the team receive?
      • And, more
  • I should be in a place where I can spot it if something of this kind is happening
  • Talking to people helps
    • This is okay if it is something to do with me; that way I can fix it
    • What if it is nothing to do with me or my work, but happening?
      • I seek clarity from the person whose opinion matters and from my manager
      • I see nothing can be done in much
      • All is, I need to be skilled and be aware so that I don't put myself into the worst situation
      • Today, I work to be a better observer in these areas each day
        • I have not done it in the past as I was lost very much in my work and practice
        • I missed the indicators which I could have used for my benefits and the team's benefits

As I said, know your organization and its business. Know your team and its people.  It is different from other organizations, businesses, and people.



Being Hard to Replace -- The Myth


Why it is a challenge?
  • We are said and expected -- to be skilled and be so skilled it is hard to replace
    • This is a myth!
    • Software Testing is also helpful to break illusions and know the myths to which we are blind and biased
      • When the software versions we build are replaceable, we, who are developing it are also replaceable
      • If not by another version, the competitor will come up to replace
        • It is about serving value that is needed and building the strengths to sustain being resilient enough
  • I was in assumption, it is hard to replace if I'm skilled
    • 10 years back, I learned, that's not actually the story
    • I'm easily replaceable given the context demands it
    • I saw my fellow team members being replaced
    • I saw myself getting replaced
  • We all are replaceable
    • It is a norm in business, competitive and political space
    • There is always a valid reason and necessity for business to do so
  • It is easy to fall into the illusion that I'm contributing and adding value
    • Well, I will be actually contributing and adding value
      • But, it may not be needed anymore for the business and organization
    • If not needed, what's next?  I need not say that to you, right?


How I'm solving it?
  • I accept, I'm replaceable no matter
    • what are my skills, expertise, personality, and 
    • what value I bring and add to the board, organization, business, team, and product
  • I keep myself in a position to not spoil my mental health and physical health
  • I'm learning and being much more courageous than yesterday
  • I ask for help when I need it with my network and communities
  • I find alternative ways to have an income so that I help my family with the basic needs
  • I also replace, what I see -- it has to be replaced
  • By being better in
    • Awareness
    • Being contemporary
    • Upskilling
    • Being "the match and approachable"
    • Being focused




Click here for returning to the blog posts:


Software Testing Practice: The Top 5 Challenges I See Today -- Part 4A

 

The practice is one of the areas where I dwell, fall, and rise again.  I'm part of the practice. I'm, what I practice.  It redefines me every day.  This blog post is a sub-part of the blog post "The Common Challenges as a Software Tester and How I Overcome -- Part 4".


Here are the first few challenges that I witness in the Practice context

  1. Awareness
  2. Being Contemporary
  3. Upskilling
  4. Being "the match and approachable"
  5. Being Focused



Awareness


Why it is a challenge?
  • If I'm not aware
    • I cannot be contemporary
    • I will not know why it is the way it is
    • Without the awareness of what's happening,
      • I cannot help myself with what to unlearn, learn and upskill
  • Multiple sources exist that "appear" as an awareness source


How I'm trying to be aware?
  • I find the sources that help me to be aware
  • I get involved with the sources
  • I learn and understand what these sources have to say and offer
  • I keep asking myself
    • What I'm aware of here?
    • What should I be aware of here?
    • What I'm not aware of here?
  • Being aware of the different ideologies, thoughts, and schools in
    • Software Testing & Engineering
    • Software Engineering
    • and, its businesses ...




Being Contemporary


Why it is a challenge?
  • If I'm not contemporary
    • I may not fit well for the needs of today's industry and business
    • I will have content, experience, and skills
      • But, I may not be able to offer them in a way it is expected
        • My practice, thoughts, and mindset will appear as not matching or not aligning with the organization or/and stakeholders
  • To an engineer,
    • This is an everyday challenge!
      • The landscape of technology changes so fast, that upskilling is a necessity
      • Being adaptive and upskilling is a necessity for remaining contemporary
    • How to be a specialist? How to remain a specialist while being a generalist?
      • How to be the contemporary and T-shaped full-stack engineer that the industry looks for?


How I'm trying to be contemporary?
  • I don't see the programming languages, tools, platforms, libraries, architecture patterns, and business as contemporary
    • But these are byproducts of what defines -- being contemporary
    • And these changes with time and problems to be solved
  • There are no defined and particular ways to be contemporary
    • Hence it is a challenge!
  • For today, in my opinion, there is no solution to be contemporary in Software Engineering
    • And, being contemporary is not a problem to solve
      • It cannot be solved
    • Being contemporary means evolving, adapting, and growing in the environment -- to the need or to the need created and manifested
      • It is a context
      • Who is fit to the context with the value expected to add, will have a better opportunity
  • Growing and adapting with time by learning the day's engineering problem and drawing a solution, is a headlight in the journey which shows what is contemporary
    • I focus here
    • I will try to be aware and upskill consistently here
  • Being aware and evaluating how the business and money are getting tabulated in the balance sheet at the workplace
    • It is a critical detail and skill needed after certain years in the industry for one
    • If not known, one may not pivot to a better position and opportunities for being contemporary and see [and get] its benefits
  • Being contemporary in what area?
    • One has to figure out what are her/his areas to be aware of to be contemporary
    • This is another set of problems to identify
  • Is the T-shaped full-stack engineer a contemporary term today?
    • I do not think so!
    • What fills in the T-Shape and the Stack changes consistently for the need and to the need created
  • Meet people in your areas; network with them
    • Also meet people who are not part of your area
    • Talk! Network
      • See what you can catch here and learn



Upskilling


Why it is a challenge?
  • I do not want to remain in the same learning, role, and earning
    • Status Quo is not possible here
    • All who are on the payroll need consistent and pragmatic upskilling, today
  • Upskilling in Software Testing & Engineering has always been under debate in my last 17 years
    • The practice is different within teams in an organization
    • The understanding and practice between two testers in a team are not close, forget being the same
    • What to practice in Software Testing?
      • Testing?
      • Automation?
      • The blend of every role in Software Development?
      • This confusion is being fostered here
      • This confuses and gives the space for arguments and not a healthy discussion
      • Eventually who are getting better identity and benefit, her/his thoughts get promoted in that place
        • And, more likely these thoughts and practices get followed
        • Does this influences the people who are practicing Software Testing?
      • Information is abundant today on the web for Software Testing
        • As said whose content gets better likes, reposts, and shared, that information gets more visibility
          • How I consume this, influences my upskilling
  • Few of my friends moved from Software Testing to different roles
    • Maybe your friends too in your org and team
    • Does this challenge your aspiration to continue in Software Testing & upskilling here?
  • I get calls from the training startups asking to switch to other roles saying Software Testing has hit the roof
    • Further, they try to influence me by saying
      • No career progression in Software Testing
      • I cannot make money
      • I can make money if I move to different roles where I do full-time coding
        • I can grow in my career and move to different positions
        • And more ...
    • We have the people who say to not choose software testing
    • This influences those who are fresh, experienced, and finding rough times in the practice of Software Testing
  • For example, how many times do I speak and hear about the Test Design?
    • It is one of the most ignored, unaware, and unspoken areas of Software Testing
    • This is one example of where to upskill


How I'm trying to upskill?
  • One of the strengths of a Software Test Engineer is to not get easily influenced
    • I get lots of factors and people who influence me to their interests and intents
    • As a Software Test Engineer, I have to pick anything upon questioning and scrutiny
    • This is one skill that I try to upskill everyday
  • To upskill, I see a determined self as a need for the first
    • The key area of upskilling is the unlearning part
    • Knowing what to unlearn is not evident most of the time
    • In the journey, I discover what I should unlearn
      • The faster I discover, I help myself to save time
  • I evaluate where I stand on the path of -- where I want to continue my journey
    • I do it consistently
  • While I do this, I classify the areas of my upskilling
  • I observe,
    • For every 18 months the list in this area gets outdated and updated as well
      • This is like the tests getting retired or taken off the execution list, while the new ones are added
  • I collaborate with the community and people who can help me to upskill
  • This is not a straight and simple task
    • I unlearn a lot
    • I fail a lot
    • But, importantly I learn in this journey and it builds me with an experience
    • I share the learning I make here with the software testing communities
  • I have a map, territory, and details of where should I be upskilling for the next 6 months
    • I refer to Open Source works which is consumed by the tech organizations
    • I refer to how tech organizations are building their services
    • I identify the layer of testabilities in the technologies
    • I refer to tech blogs and books, and I relate them with the help of programming
    • I do more here
    • My map, territory, and what to explore keep refining and get updated every 6 months



Being "the match and approachable"


Why is it a challenge?
  • For first I should be visible and identifiable that I'm a match
    • How to be so?
  • How do I build myself to be approachable?
    • After a certain point in the career, 
      • One can navigate further only if she or he is seen as approachable
      • My words, thoughts, what I speak and write, and how I respond, all of these can set a different tone and personality for the stakeholders
        • This can give an image of me that I'm actually not
        • In fact, those who are with me  at work and in communities for years can frame a different image of me
    • This is a tough ask
      • Perceptions of stakeholders and what stakeholders need, influences in what and how they perceive me for -- Am I approachable?
        • We will have a gap here no matter what
        • How do I bridge the approachability with the people with whom I want to associate and work? This matters!
      • Whether it is a job or association or organization, what primarily differs are
        • The people, culture, and how I associate with them and their expectations
          • This changes the dimensions of how approachable and visible I'm in their perceptions


How I'm trying to be "the match and approachable"?
  • I try to understand the expectations and needs of the stakeholders
    • The needs and expectations are two different sets in my experience
  • I consistently work on my communication and how I share my thoughts
    • Also, I keep watch on the words I use in a given context knowing who all are in the discussion
    • Communication is not just spoken and written words and language
    • Being practical, pragmatic, and empathetic helps to an extent
  • By upskilling, I try to balance the equation of "the match"
  • By being approachable and contemporary
    • I learn to know the people, organizations, and communities with whom I want to associate, work and grow
  • I learn to be aware and have awareness so that I'm focused
    • This is not a cycle; all these happen in parallel and drive each other
      • Awareness
      • Being Contemporary
      • Upskilling
      • Being "the match and approachable"
      • Being focused



Being Focused


Why it is a challenge?
  • There are distractions outside and inside
    • We want to fulfill and meet someone's perception and expectation

  • The changes that we see every day in the space where we work and at the family end
    • It will have an impact on the focus and awareness I want to be with
      • Every day I work to keep my focus and awareness to be fit and healthy
      • So that I can identify and mitigate the distractions
    • Having mental and physical health balanced is crucial


How I'm trying to be focused?
  • I'm learning to prioritize and decide what I have to work upon
  • By improvising and developing the skills of having and using:
    • The clarity, decision-making, and accomplishing the milestones that I set
  • Goals with the timelines and milestones
  • Not skipping or postponing my priorities and losing sight of what I should be focusing
    • I have a daily check on my focus on what I have gotten into
    • I evaluate and align with it
    • I use multiple and ideate with the strategies to be focused and evaluate the same
  • And, I tell myself it is okay when I fail
    • But, I look for the lessons when I fail and why I failed
    • I do not give up unless it is a necessity




Click here for returning to the blog post:
  • The Common Challenges as a Software Tester and How I Overcome -- Part 4
  • Business and Software Testing: The Top 5 Challenges I See Today -- Part 4B
  • Project and Software Test Engineering: The Top 5 Challenges I See Today -- Part 4C