Tony Kay, Founder of Fulcrologic and creator of Fulcro
I like the style of his talk because of the tone used. This is not a well established subject and many people seems to just be blinded by the fact that he likes some style and everybody should follow.
Tests are important. This is fact. I think it is mandatory to have good faith that your software is running correctly on a daily basis and specially when changes are needed.
However, there are many situations where you, or don’t need to write test or you simply can’t. As Tony Kay said, usually you are spending time and money on the thing and that is totally valid. Sometimes, who is paying is willing to take the risks of a product without tests which by far, does not mean that your software is wrong.
We usually test a lot during development. We are not leveraging these manual tests into some automated infraestructure. But life is complicated, theory and practice are often very far apart.
We say, "I can make a change because I have tests". Who does that? Who drives their car around banging against the guard rails?
I’m a bad doctor. Homogeneously unqualified.
Some hostile culture around the subject:
You’re the Expert, figure it out!
Why are you writing tests??
Test about behaviors and properties are the way to go, right? Generative testing.
Generative testing is very good for checking invariants
Sometimes we really don’t need tests
What would this look like if you actually practiced automated testing and became good at it?
Learn Haskell [People talk so much about, next mile for me? Maybe next year]
Usefulness: Be critical about what/how you test
Low Cost: Choose a layer of abstraction, and stick to it
Control everything outside of those layers
Lack of descriptive, accurate, and detailed language around tests makes them less useful
Rule of thumb: Name the thing under test, and use a "sentence completion" around it
Clojure Spec: Real input/output can go beyond type system
Design should come first. Good designs are generally easy to test
Tests can help: Pain usually indicates tight couplingg or other poor design elements
Tests can help: Enumerating and describing behaviors encourages more thought