Why to engage into using Automatic Testing
cookingsource.wordpress.com
cookingsource.wordpress.com
If you are a plumber, please don't tell me that you offer solutions. Please tell me you are a plumber so I don't have to get confused about what it is you are actually offering.
This is a classic case of what happened in the pest termination industry. You have two types of terminating companies: the solution-based (a.k.a. recurring revenue) companies, and the one-shot companies that you pay to come kill the pests in your house. There's room in the world for both, depending on your specific desires and needs when you see a roach in your bedroom.
I think we both agree in most of the terms. Maybe I should have expressed myself better in the post. I meant to say, solve problems in the domains we have knowledge about. I’ll update it in the post. Thanks for your feedback
I'm not being jerked-around being told to make sandwiches. I'm being told, the water-operated sandwich making machine is too slow/doesnt work properly. I might just as easily recommend a sandwich catering service, or pick up a manual on building fancy electric sandwich makers, as repair/enhance the water pipes.
Disclaimer: I'm a young software engineer who, perhaps naively thinks I will always be able to join interesting projects and learn new things while being treated like a partner instead of a technician. This has been my experience so far, but perhaps you reach a point where, having specialized, you churn out the same solution for company after company in a niche for efficiency reasons.
The down side of end-to-end tests is that it's slow to develop and slow to run. Because in many cases, end-to-end tests should be sequential and involves network calls and browser rendering. In general it's worth it.
So, I've been trying to adopt "property" based testing where you test invariants of the output with pseudorandom inputs, a-la quick check in haskell. Big shoutout to http://jsverify.github.io/#jsverify :)
While it can certainly be hard to apply to problems or find some useful invariants, It's been enormously successful in finding bugs I didn't think of, and shrinking is an elegant solution to making failures more easily diagnosable.