Showing posts with label 101. Show all posts
Showing posts with label 101. Show all posts

Saturday, November 4, 2023

Exploring to know the Web API - 101

 

Here is what I look when I'm exploring to learn an end point of web API for first.  I'm talking of the Web API that uses HTTP protocol.

  1. What is the purpose of this end point?
    • How it helps and to whom?
  2. Who uses this end point?
  3. Identify the host of the end point
  4. Identify the path of the end point
  5. Identify the API's end point
  6. Identify the version of the end point
    • Know the different version that are available for an end point
      • What are active?
      • What are inactive?
      • Who are the consumers using these different versions of this end point?
      • What's the difference between these versions?
  7. Identify the HTTP method of the end point
    • Know the different HTTP methods this end point supports
  8. Identify the resources the end point interact with for CRUD activity
  9. Know the HTTP Request headers it needs, uses and good to have
  10. Know the HTTP Request payload or data and its format
  11. Know the HTTP Response headers and good to have
  12. Know the HTTP Response Status Code and what actually it should be returning
  13. Know the HTTP Response content and format returned
  14. Does this end point enforces any contract with the consumer?
  15. Know the intent of your test on this end point
    • One test in one request is useful unless the context demands otherwise
  16. Is there anything cacheable in the end point's response?
  17. How the request payload is?
  18. How the response payload is?
  19. What is the language in which the end point is written?
  20. What is the language in which the resources that end point updates is written?
  21. Any framework used to build this end point?

On learning this, I continue to next phase in exploring and knowing the web API.



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.



Saturday, March 25, 2023

JSON for Software Test Engineers - 101

 

In the practice of Software Testing & Engineering, I became aware of the below:

  • UI (User Interface) is not just GUI (Graphical User Interface)
  • UI is an interface through which a user interacts with a system
    • UI is one of the touchpoints
  • Data we exchange between the two systems is also a UI
    • This data can take different formats
      • Text
      • HTML
      • Image
      • Video
      • Audio
      • XML
      • JSON
      • YAML
      • PDF
      • custom-defined data format
      • and, more
Note: Refer to the MIME types and know what type of media is supported and used in the system you are testing and automating.


Testing Through Data


When the data can be used as a UI, it also means one can do the testing and automation through data using data.  From this perspective, it is important to know the data format.

I see JSON is one of the common data formats we use to store and exchange data between two systems.  Understanding how the data is structured in JSON is important for a software test engineer to think and evaluate the testing and automation through the data.



JSON For Test Engineers - 101


I documented my understanding of JSON and how to interpret it in the gist here. This markdown file has my learning.



Tuesday, March 14, 2023

Maven For Software Test Engineers - 101

 

Why 101s?

In the initial days of my career, I looked and referred to multiple sources to understand the technology stack.  As I progressed, I looked for someone who can help me in understanding what I'm reading and to clarify the questions I witnessed.  The understanding of concepts took time when I actually started using it and especially when debugging.

Today, if I look at that, I ask myself

  • How can I make my learning experience a happy one?
  • How can I capture the fundamentals and have a smooth revision of it when in need?
  • What can I have for my reference when I'm implementing the fundamentals?
  • How can I increase the speed in which I do all these?
If seen, I want to help myself to be better and effective when solving a problem by implementing what I'm learning.

Maybe, other software test engineers too have same question.  Don't you?

I'm learning new stuffs, and also unlearning what I'm learning.  I create the 101s for myself.  I see the software testing community can also make use of these 101s that I'm building.


Why You Need Maven 101?


  • Today, it is a common sight that one quickly picks up a boilerplate code and run it
  • Especially with the software test engineers, who wants to start/practice automation
    • Pick a framework and run a command
    • Execute the program successfully
      • Or, get stuck in between and do not know why is that command
      • Or, see an error with that command and not sure what that command is doing
      • What is the difference between these commands and what does it do?
    • As this, one can get into different contexts where one gets trapped; not blocked
      • How to help self to navigate out from here?
      • I see this 101s can come to help

Anytime, you picked a Maven project and built it?  For example, a Selenium code written as a Maven project.  Do we know what Maven is and why the Maven project here?  And, what these different Maven command means and what it does?  For having this understanding, this Maven 101 comes to your help.


Maven for Software Test Engineers 101


I have my Maven 101 here.  I refer to this source when I revise my fundamentals.  This can be of help to you as well and also can be a start point.

This has helped me to understand the different build life cycles and how a Maven command is all about the plugins.

I have provided the Reference section which is also a credit that I give them for helping me to unlearn and learn better.