I Decided to Write this Post
I thought over a few months, should I write this post. I said, yes to myself for writing this post. Before, I proceed, I want to express this:
Hello Mike Cohn, thanks for giving Test Automation Pyramid visualization to the software engineering community. I see your thought process, experience, and work, in this model. This model's assistance to understand software systems is evident today.
Again, thanks for giving this model as a metaphor for us.
What I See?
I see a risk for the Software Testing community especially when we use the word The Test Pyramid without knowing what it is and does it make sense.
To keep you till the end of this post so that you get what is my point, I tell you this:
One of the common entities among Testing and Automation is the tests. How the test's intent is expressed and executed in the testing and automation, is not similar; they are different and have to be different. If similar, then it leads to misunderstanding -- automation as the only way of testing; or, the execution of tests by a human as the only way of testing.
Why did I Say "Yes" to Myself?
- The metaphor which Mike Cohn came up with is helpful
- I see, Mike Cohn knew what he is trying to say and it makes very much sense in today's Software Engineering
- His book Succeeding With Agile got published in 2010
- It has a chapter with title Quality
- I insist, that anyone who is involved in software development should read this chapter if cannot make the time to read this book
- This chapter talks about the pyramid
- The Test Automation Pyramid
- Mike Cohn came up with this concept
- This acts as a helpful metaphor and a heuristic
- In 2010, I don't know how much did it help then; but this model is a beautiful and simplistic explanation of how to categorize the software system's layers for test code
- In 2023, it helps everyone who is involved in the development of software system
- I have witnessed how software engineering has grown in the last 23 years
- Reading what Mike Cohn has to say about it, helps to clear the misunderstanding of The Test Automation Pyramid to The Test Pyramid, for first
- I strongly see the software engineering community and importantly the software testing community need to know it
Quality Is a Team Effort
Acquiring new testing skills, learning how to apply them within the strict timeboxes of Scrum, and paying off technical debts are the responsibility of the whole team. These are not challenges to be sloughed off onto the testers.
Test Automation Pyramid
- Which are repeatable and can be asserted
- Which are run to setup, tear down, configure, create, edit, read, and delete the resource
- Which are monitoring to inform the change in state/event/data
- Whose execution is in a defined order and trying to assert the expected outcome
- Both are important and necessary in today's Software Engineering and Software Development
- That we are about to understand, and
- Figure out the strategy for testing using automation in respective layers
Benefits of Test Automation Pyramid
- It helps to relook into the automation strategy
- It says, we need a better strategy to automate by showing us to categorize the tests in a layered pattern
- It helps to learn how the two different layers can communicate and can be used together in automation
- For example, the service and UI
- So that tests are isolated and maintenance is manageable, while the deterministic feedback obtained from the tests automated is value-adding.
Is This a Test Pyramid?
- The Software Engineering and Software Testing communities are learning that automation is the only testing and the only way to test.
- No, it is not the only way to test and it is not what is testing all about
- Automation is one of the ways we do our testing and has its limitations
- Automation is a subset and a part of Software Testing
- Automation exists to assist Software Testing and to do better testing as a whole; not to replace the testing; not to claim it is the only testing and way to test in every dimension and context
- This is a problem for the upcoming generation of software engineers, and those engineers who take Software Testing as their full-time practice and job
- This sends a message that automation is testing and testing is automation
- This will be the problem to the practices of automation and testing in Software Testing
- For example, when I talk to test engineers and say, Test Automation Pyramid, I hear they are not aware of it; all they are aware of is The Test Pyramid of three layers used for automation
- As a result, there will be shallow results and benefits from both automation and testing with costs and short of value
- Here, automation and testing cannot complement each other effectively when used together
- No! We, humans, test at the service layer as well and also automate here
- At the unit layer,
- a human manages to setup/configure at the seam or/and use test doubles, stubs, mocks, and what is needed to execute the tests via code
- If you see, one pyramid, misinterpreted and misrepresented in multiple ways.
It is Test Automation Pyramid
- The code of a software system is one of the byproducts of developing a Software System
- So are the tests.
- The test code is one of the byproducts of automation and not the whole software system
- It depends on how I express my test with its intent
- So that I will know which part and aspect of a test can be automated
- We cannot identify
- The differences between Testing and Automation
- The differences between the tests identified for Testing through Automation and Testing by human
- The values each offer along with its limitations.
- Yes, we can and a model is not fit for all contexts
- Showing the same model picture along with the same name for its attributes and expressing a different thought is a problem
- It misleads one if she/he takes this model as a reference
- This will have chains and it continues
- Embrace programming
- Practice programming
- Embrace automation
- Practice automation
- Implement automation
- Call and refer to automation as automation
- Know what is testing in automation
- Know what is testing
- Call and refer to testing as testing
- Practice testing
- Know your testing in Software Test Engineering
- Call and refer to the model with its name given by its creator/author
- That name has a purpose and intent
- Know it; understand it; learn it
References
- The book "Succeeding With Agile: Software Development Using Scrum" by Mike Cohn
- https://www.mountaingoatsoftware.com/blog/the-forgotten-layer-of-the-test-automation-pyramid
- https://martinfowler.com/articles/practical-test-pyramid.html
- https://medium.com/tide-engineering-team/the-practical-test-pyramid-c4fcdbc8b497
[[..Pingback..]]
ReplyDeleteThis article was curated as a part of #80th Issue of Software Testing Notes Newsletter.
https://softwaretestingnotes.substack.com/p/issue-80-software-testing-notes
Web: https://softwaretestingnotes.com
Hello Pritesh, Software Testing Notes,
DeleteThanks for including this blog post in the 80th edition of the Software Testing Notes Newsletter.
-
Ravisuriya