Saturday, March 25, 2023

Black Box in Every Other Box of Software Testing

 

Modeling Software Testing With Boxes


The fact is something that is not put to scrutiny or questioned much and often.

As a fact, the Software Testing is explained to us using boxes.  That is,

  • Black Box
  • White Box
  • Grey Box

Is this wrong? No, it is not wrong.

There was a need to explain for one how to visualize -- how a person would interact and interpret the software system when testing.  The analogy of these boxes helped and helps.  These boxes are mindsets.  In a way, these boxes are like models to interpret the different ways and approaches we take in Software Testing.

I see, we are seeing Black Box in every other box.  Maybe, this is limiting one not to think to learn software testing in other than a black box mindset.

If you ask, are we not automating? Is not that a Grey Box?  Very much, we are a black box mindset when writing automation as well.  I include myself here.  I'm exploring how to break out of this and see the Software Testing.

Do programmers think of their code as different boxes?

  • A programmer reads, writes, deletes, and views the data. events and state
  • The programmer as well cannot see what's happening between the binaries on the electric circuits
  • The programmer evaluates her/his code's testing via logs, debugger, and assertion for the data, state, and events
    • Is this a white layer or box?
      • Is it called white because one can see through the logs, debugger, and assertion?
        • But that is still not a sight of binaries on the electric circuit, right?
        • If one could see through the binaries, we should not be having race conditions, out-of-memory, and unhandled exceptions
          • Isn't so?

This makes me feel, there is a Black Box in every box and we are largely confined to this Black Box.  

Exploring to step outside this box helps to understand the testing, software testing, system [and software] under test, and what is needed to test better.


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.