2 What is software testing?
It’s not finding every single defect. 
It’s not randomly pressing buttons, hoping that something will break. 
It’s not hoping that something will break, period. 
It’s not something you do after all the programming is complete. 
It’s really, REALLY not something you postpone until users start complaining. 

It IS a way to an estimate of software quality 
It IS a way to estimate the risk of malfunctions
It is SUPPOSED to be independent of programming.
(Most are too nice to the programs THEY write; your children can do no wrong.)
(Square root example; character, negative, irrational, perfect squares, not perfect squares, accuracy)

verification is ensuring that the system doesn’t crash, that it meets the requirements, that it handles failures gracefully, etc. (Well written and working)
Validation is ensuring that the requirements meet the actual needs of the customer (acceptable)
Easier (and cheaper) to get it right the first time; repairs can be ugly and expensive.

Defect: doesn;t work or doesn't meet requirements.
Enhancement: adding cool stuff
May need to have priorities

lowerify(): encoding, length, language, ctrl-C, network failure
Come up with tests: all caps, all lower case, non-alphabetic, mixed,
special chars, empty string, LONG string, executable or binary code,EOF
system runs out of memory, system is slow, connection is lost....

Cannot do exhaustive testing
Need a strategy
level of acceptable risk