One of the most important task in software development is testing. Without testing developers would not know about certain bugs that they themselves might not be encountering. It is also very important in large projects such as Operating Systems where regresions can often crop up un noticed. It is important to find and quickly deal with regressions as these are easier to fix when their cause is known(ie. a recent commit). Up ahead well start of with the basics.