static testing strategies in software engineering