Re:Ask HN: For a startup, when should I begin writing tests?
by SkyPuncher on Monday November 25, 2019 @09:11AM
(#21628217)
We wrote tests from day 1, but I have mixed opinions about the value of it. It certainly has helped at times, but it also adds a huge tax to everything.
Pros
* Established the proper culture from day one. If you end up being successful, this is extremely valuable. Culture is very, very hard to change.
* Eliminated a lot of bugs and regressions.
* Gave us confidence working in a regulated space.
Cons
* Adds a lot of time to initial development
* Product complexity doesn't really require testing in the early stages.
* Slows down ability to pivot
-----
If I were to do it again. I'd write fewer tests, but establish milestones for requiring changing/additions to be tested.
* My rule of thumb would be: If you can't easily test it in the UI, write a test. Or, if it's business critical, write a test.
* Verify authorization and authentication. It's very important.
* Test anything that makes/loses money (for example, Strip, Recurly, etc).
* Jest snapshots are quick and easy. Use them.
* Write tests for utility functions
Don't test:
* Database migrations
* UI interactions (unless critical). They take a lot of time to write and UI changes frequently.
* Vendor/3rd party API integrations beyond surface level. In my experience, quick implementations always involve a bunch of mocking/stubbing - making these types of tests less useful.
Pros
* Established the proper culture from day one. If you end up being successful, this is extremely valuable. Culture is very, very hard to change.
* Eliminated a lot of bugs and regressions.
* Gave us confidence working in a regulated space.
Cons
* Adds a lot of time to initial development
* Product complexity doesn't really require testing in the early stages.
* Slows down ability to pivot
-----
If I were to do it again. I'd write fewer tests, but establish milestones for requiring changing/additions to be tested.
* My rule of thumb would be: If you can't easily test it in the UI, write a test. Or, if it's business critical, write a test.
* Verify authorization and authentication. It's very important.
* Test anything that makes/loses money (for example, Strip, Recurly, etc).
* Jest snapshots are quick and easy. Use them.
* Write tests for utility functions
Don't test:
* Database migrations
* UI interactions (unless critical). They take a lot of time to write and UI changes frequently.
* Vendor/3rd party API integrations beyond surface level. In my experience, quick implementations always involve a bunch of mocking/stubbing - making these types of tests less useful.