Structural testing evaluates code coverage based on its structure. It is stronger than other testing methodologies. There are several categories of structural testing including statement coverage, branch coverage, condition coverage, and path coverage. Statement coverage requires that every statement in the code is executed at least once. Branch coverage generates test cases to test each branch condition as true or false. Condition coverage checks all possible combinations of conditions. Path coverage executes each independent path in the program at least once.