Can I use the test dataset to select a model? I'm trying to understand if the test dataset can be used to select a final trained model. Let's assume this scenario:
I first split the whole dataset: 70% training, 30% test. Then I fit several models (let's say NN, RandomForest, AdaBoost,..) on the training dataset with cross-validation and tune the hyperparameters to get the best performance on the train data. I know that these scores are biased, since I was tuning the hyperparameters on this data.
Then I use the test dataset to get the true performance on the unbiased data and select which model performs the best.
Is this a correct way to use the test dataset? Some confusion comes from the internet definition of the test dataset:

The sample of data used to provide an unbiased evaluation of a final model fit on the training dataset.

It seems like it should only be used to get the performance of the one final trained model. My teacher told me I can't select a trained model based on the scores of the test dataset and quoted the definition above. I'm struggling to believe that she is correct. Which dataset should be used to select the model then?
Your teacher is correct. The test dataset is unseen data. You could not select the final model using the test set. In competitions, to be fair, the test dataset is not revealed until you submit the final trained model.

To select the hyperparameters of the final model (e.g., activation functions, the number of hidden layers, the number of units, learning rate, dropout, ...), you should use the validation set.