What is Software Testing and How Does it Work?