I am self learning Selenium and know quite a bit about creation of Classes, Interfaces, Objects, Inheritance, Arrays, Loops in Java. And aAs far as Selenium is concerned, I'm able to test web pages by writing the code in Java by locating elements using Firebug/Firepath tool. But I always come across these terms TestNG and JUnit..What do they do? What are they? Are they related to selenium? And is it compulsary to learn them?