I did two or more task creation with same taskfunction and different taskname for xTaskCreate();.
And it seems work OK. But I wonder is it OK or are there any potential bugs.
void TestTask(void *pvParameters)
Each task has its own stack and its own (virtual) set of processor registers - so provided you are not using function scope static variables, what you are doing is fine, and in fact common practice. You can see an example here where three simple LED flash tasks are created from the same function - and the function. The LED to flash could have been passed into the task function using the function parameter: https://sourceforge.net/p/freertos/code/HEAD/tree/trunk/FreeRTOS/Demo/Common/Minimal/flash.c