functionality meaning in software testing