Software Testing

Learn methods to improve software quality
-reliability, security, performance
-Become a better software developer

Security Vulnerabilities
-Exploits of errors in programs

Dynamic, static, hyprid

An invariant at the end of the program

int p(int x){ return x * x; }
void main(){
	int z;
	if(getc() == 'a')
		z = p(6) + 6;
	else
		z = p(-7) -7;

	if (z != 42)
		disaster();
}
void main(){
	z = 3;
	while (true){
 	 if(x == 1)
 	 	y = 7;
 	 else
 	 	y = z + 4;
 	 assert (y == 7);
	}
}