static testing explained