Software Testing - Test Pyramid
Software development is an art if not craft! There are several methodologies available today that promotes quality software development. Each methodology takes a unique approach to deliver a quality product. While some methodologies arguably adds more overhead while others stay lean and focus on value delivery in highly competitive and aggressive marketplace.
Regardless of methodology an organization choses, software quality remains a huge challenge to overcome!
“Quality is never an accident; it is always the result of high intention, sincere effort, intelligent direction and skillful execution; it represents the wise choice of many alternatives.” - William A. Foster
Having Clarity in product requirements, architecture, technology, customer usage are right steps towards achieving quality product at the end.
You must be thinking which world I’ve came from! Clarity is difficult if not impossible to achieve. In reality, everything can change in today’s dynamic marketplace. You must have heard “the only constant is change” - by Heraclitus.
The mantra "Agility" at macro to micro level is the only option that organizations have in order to stay competitive in marketplace. Organizations choses development methodologies that suits their dynamics with the hope of achieving ultimate agility and stay competitive.
Producing quality software require thorough testing of all aspects of software. Aspects include both functional and non-functional features of software.
Testing came a long way in software industry, manual testing is being completely replaced with complete test automation. Complete test automation means unit tests, service tests, integration tests, UI tests, etc.. But what is the right composition of your tests?
Unit tests, service tests, integration tests, and UI tests are all important functional tests. Each has its own importance and value in achieving software quality. But, what percentages are considered as industry standard?
One solid recommendation I’ve come across is Test Pyramid by Martin Fowler.
The test pyramid is a way of thinking about different kinds of automated tests should be used to create a balanced portfolio
- Unit Tests are fast and gives fast feedback to developers and you need lots of them.
- Service Tests takes little longer because they exercise from public interfaces
- UI Tests takes even longer as they could exercise many services before serving the user
It’s easy to agree that, no single suite of tests are more important than others. Testing is a cross cutting discipline and one must take a balanced approach to achieve ultimate software quality.
What challenges does your organization facing to have balanced portfolio of tests?