Text this: Formal Approaches to Software Testing and Runtime Verification