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
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!