shift-left testing fundamentals