Functional testing validates that application functions as specified by feeding inputs and examining outputs without considering internal structure. It assesses features against specifications. Good test cases are specific, measurable, achievable, relevant and time-bound. They initially focus on typical happy paths without exceptions. Test cases communicate expectations and allow engineers to verify functionality from the perspective of specification holders.