software testability characteristics