We have a requirement to automate Test Cases for a Web based application.
We have to use only open source tools.
Total Test Cases would be around 600-700.
As you have the Web Application so going with Selenium and TestNg is a better approach as there are lot or reference points available over the internet for same. Also since you have mentioned you have 600-700 test cases then i am assuming you must be doing some sought Data Driven Testing as well. You can design your framework with below approach :
Since you team is not expert and you will be training them hence Cucumber Feature file writing is something to start with and then you can gradually introduce them to coding concepts.
Try to use Page Object Model while designing the framework as its separates the logical implementation with the functional implementation.
How can you know in advance the amount of test cases you have to automate? Of course you can use selenium and testng if you’re targeting only ui tests but you should start at a lower layer instead, trying to validate the logic layer for example. UI can easily change and thus break.
Pedantic Answer: Using Selenium and Test NG is an approach. It is not possible to say what is the best approach.
Practical Answer: Hell yes. Use what everyone else uses to automate basic web applications. Code isn't complicated. Plenty of documentation, help, and examples around - especially on stackoverflow.
Selenium and Test NG is a good approach, you might consider spending some more time to consider Automation Testing Design Pattern. Here is link to a good overview: 4 Top Automation Testing Design Patterns
From our experience we when from Page Object Design Pattern to Screenplay Pattern. Again, here is link to good discussion of both options: Screen Play vs Page Object pattern
Our final solution is Selenium, Cucumber & TestNG.