January 2, 2020

Testing Made Simple

Speaker

Tony Kay, Founder of Fulcrologic and creator of Fulcro

Thoughts

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.

Quotes

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

Recomendations

  1. What would this look like if you actually practiced automated testing and became good at it?

  2. Learn Haskell [People talk so much about, next mile for me? Maybe next year]

  3. Usefulness: Be critical about what/how you test

  4. Low Cost: Choose a layer of abstraction, and stick to it

  5. Control everything outside of those layers

  6. Lack of descriptive, accurate, and detailed language around tests makes them less useful

  7. Rule of thumb: Name the thing under test, and use a "sentence completion" around it

  8. Clojure Spec: Real input/output can go beyond type system

  9. Design should come first. Good designs are generally easy to test

  10. Tests can help: Pain usually indicates tight couplingg or other poor design elements

  11. Tests can help: Enumerating and describing behaviors encourages more thought

Tags: testing