Test code is total: we require it to always terminate or it's a failure! It also typically has 100% line and branch coverage.
I feel way less nervous about refactoring tests, you can always just run them.
"Example Driven Development" using Glamorous and Pharo Smalltalk:
https://medium.com/feenk/an-example-of-example-driven-development-4dea0d995920
Tests returning values and composing is a really interesting model. It establishes structure and shows which test failure is the most 'fundamental'.
Normally I don't like segfaults: they usually mean something low in the stack is broken and it'll be a pain to debug.
Writing assembly, segfaults are a good thing! They're a well-defined error state, whilst there are a whole range of messy failure states that are worse.