1
votes

I am an entry level tester, mainly been doing manual testing for a company in the UK following scripts on a spreadsheet which I have written in the BDD format, however, I have been learning some automation on the side as that's what I want to move into full time. I have some questions though which are as follows.

I've been using Selenium web driver + java bindings to make simple tests such as logging in or filling out a registration form, i've also set up log4j but only basic to record low level recording. I have now come across testNG. My main question is this framework used by testers? or developers? Is testNG only for unit tests? or UI tests?

From what i've learnt so far the developer does the unit and component tests and the tester does the services/ui tests is this correct?

Unfortunately I was put into a team of developers and not testers as this is my first job outside of university. So I haven't had the chance to learn from other testers. There was no plan for me when I started just that I was going to be the first tester in this development team without any prior testing knowledge.

Which is why I need a bit of guidance on these issues.

4

4 Answers

2
votes

My main question is this framework used by testers? or developers? Is testNG only for unit tests? or UI tests?

TestNG can be used for both, developers and automation testers, it is a tool that can operate over and together with Junit, basically in some cases is being used to create the concept of test suite, that allows to split all the test cases based on specific criteria (time, module, complexity). Also this framework can be used in unit testing and integration testing as well as ui-testing.

TestNG also in some cases replaced Junit entirely, whit this approach you will have a framework with some out of the box capabilities as DataProviders, Multi threading support and other, you could check this link, consider this as and powerful option for Junit.

From what i've learnt so far the developer does the unit and component tests and the tester does the services/ui tests is this correct?

Unit testing which I consider very similar as "component test" is being done by the developers. If you have web services or a REST API, developers sometimes are in charge of create some test using integration testing, basically verify that services are working as we expected, returning JSON/XML with the correct format and other kind of validations.

Testers also could check services, using tools such as Jmeter, SOAP-UI, they check more things related to the business logic. Finally I would said UI test is being done in most of the places by the manual and automation testing team, in places where is no QA department this tasks also belongs to the DEV team.

1
votes

TestNG is basically used by developers for doing unit testing, I agree. But it is also widely used by system test automation using Selenium. This framework is inspired by JUnit framework, and most of the automation test developers use this framework because of its advantages and more added features to support reporting.

I can say following advantages I got by using this framework:

1.Support for parameters.

2.Supports dependent methods testing.

3.Test configuration flexible. Supports powerful execution model.

4.Embeds BeanShell for further flexibility.

5.TestNG has a more elegant way of handling parameterized tests with the data-provider concept.

6.For the same test class TestNG support for multiple instances.

7.Extendibility of using different Tools and plug-ins like Eclipse, Maven, IDEA etc.

8.Default JDK functions for runtime and logging (no dependencies).

9.Supported different Annotations like @BeforeSuite, @AfterSuite, @BeforeClass, @AfterClass, @BeforeTest, @AfterTest, @BeforeGroups, @AfterGroups, @BeforeMethod, @AfterMethod, @DataProvider, @Factory, @Listeners, @Parameters, @Test.

The most beautiful part I found in testNG is, using data provider, i can easily read test inputs and expected results from excel. And I can able to see the Results of Pass/Fail and skip test cases in an emailable format.

For testing a system, we don't need any training/extra classes. Just if we know the system requirements, and this as a end user what they want from the system and start testing. If any deviations found in the system behavior and are not as per the expectations of user. Then mark it as an issue and raise a defect and track it until it get resolved. Retest the same and confirm that the system is working as per the expectations. even at the Unit test level this principle holds the same. But only the difference is that we can do Structure based testing there.

0
votes

In order to run tests you need to have a test runner it could be anything, most common in java world is JUnit and TestNG, with those frameworks you can run the tests which annotated by @Test tag, also you can group the tests the way you want it and run them in parallel.

Testers use it to run Selenium tests and do assertions, even though for assertions it is good to have knowledge of hamcrest matchers. Also it providing you reports after tests been completed.

Developers would use same frameworks for unit testing purposes.

Check out guys from toolsqa.com they have pretty comprehensive tutorials on using Selenium with TestNG.

0
votes

To your questions ..

1.My main question is this framework used by testers? or developers? Is testNG only for unit tests? or UI tests?

Answer = Test NG can be used for unit testing as well as UI testing. the advantage of test NG over JUNIT is that you dont need to write code for test result reporting.