In a project, its program is written in C++, and implements some http service.
The testing program for the project is written in Python. The Python testing program doesn't call the C++ project program at source level, but loads and executes the executable compiled from the C++ project program, and interacts with the project's executable by http request and response.
My question is about what type of testing the python testing program is.
It looks to me that the python testing program tests at executable level not at source level, so it is black-box testing, which is also called functional testing if I am correct.
But I was surprised to hear that someone said it was unit testing and regression testing. I thought it was wrong.
About unit testing, is it correct that,
unit test is to test a function or procedure,
similarly to black-box testing, unit test doesn't care about the implementation of the function or procedure,
but unit testing is to test the function or procedure at source code level but not at executable level,
so unit testing program must be written in the same programming language as the program to be tested?
About regression testing,
the project's C++ program originally had its Python testing program.
Then I started to add new features to the C++ program, and created my own Python testing program to test the new features only.
I heard that the original Python testing program was still run automatically by Jenkins, but I haven't checked it. Does the combination of my new testing program and the original testing program count as regression testing?