I should not have to write this, but testing your web application is very important, especially if you care about your brand being perceived as premium.
And by testing, I don’t mean “does my homepage load fine?”. I mean the comprehensive end-to-end testing and stress tests to ensure your app still works when that marketing campaign hits.
Even though good tests are essential in the quality assurance process, I have seen websites and applications that do not fail gracefully, with a friendly error message that explains what happened and offers a way to move forward.
Many software workflows attempt to convince the developer to test first or make sure their code is testable, but most developers do not use them.
I thought about it, and I believe I found the reasons.
Nobody likes tests because:
- they are boring to write
- it is not easy to write code that is testable – you need a specific mindset
- they offer zero visual feedback to the paying customer – so in that sense, it is invisible thankless work
- they need to be maintained along with the code base that does something
Tests are a tough sell to both developers and their clients. Most often than not, we proceed with the attitude: “we will fix it when someone complains!”
On this blog, I care a lot about value. And from that perspective, I will say this: no client will ever come to you and say, “I need a website that will require about 20,000 tests for a code coverage of 90%”. Tests have zero value to them. Instead, they need a solution to a real problem, like:
- They need to build a premium brand.
- They want to sleep well at night, having confidence that the vast majority of the app functionality works and will continue to work even under stress.
- They need actionable data to help them decide where to move next with their web application: what is the bottleneck in performance? What is hurting conversions?
These are all items the client cares about, and a possible solution is to write tests. But what you are selling is peace of mind, not code coverage.
And yes, in some cases, especially for MVPs, tests are not essential for the bottom line, and so even if you know they are important in the QA process, that may come later once the product proved to be a hit.
As a developer, I would get into the practice of doing tests and writing testable code. It is an excellent skill to have when things change faster and faster, and interoperability creates more complex systems.
And as a client, I would put some monetary value on my peace of mind and knowing the app won’t break and see what solutions I can buy for that budget.