I'm beginner in testing and I need advice. What tool or generally what level of tests is the best to start with? I think about high level testing with selenium or low level unit test with JUNIT or TestNG. Which one give me more fun, experience etc?
I would say that every kind of testing will give you a lot of experience. Unit tests will help you to write better code (better encapsulated, loosely coupled etc.), integration and end-to-end tests will teach you about tools (e.g. build tools, servers and databases) and automation, while end-to-end tests will add to this also a lot of experience with the technology you use to implement the interface of your application (be it HTML or webservices). Whichever path you choose there is plenty to learn - no doubts about it.
And the "fun factor" ...well, I feel great to see my whole application being automatically "clicked" by some GUI testing tool (like Selenium). But what makes you tick? I don't know.
Regarding the tools. The question is what language(s), tools and technologies you already use. How much freedom of choice do you have? Are you a lonely coder or is there a team that you should consult your decisions with?
Are you coding Java? Then maybe you could start with the tools that I have described in the book - mainly Mockito, TestNG (but also FEST Fluent Assertions and some other). Are you into other languages of JVM? Then maybe Spock or some Scala tools will be what you should start with. There are many good answers to your questions, but it all depends.
Book author: Practical Unit Testing with TestNG and Mockito