Thanks for your interest in Software Testing. I just like to discuss about your questions.
Question#1.
We need to stop testing in a certain time. It may be depends on the following conditions:
- Stop the testing when the committed testing deadlines are expiring.
- Stop the testing when we are not able to detect any more errors even after execution of all the planned test Cases.
- Stop the Testing when deadlines like release deadlines or testing deadlines have reached.
- Stop the Testing when the test cases have been completed with some prescribed pass percentage.
- Stop the Testing when the testing budget comes to its end.
- Stop the Testing when the code coverage and functionality requirements come to a desired level.
- Stop the Testing when bug rate drops below a prescribed level.
- Stop the Testing when the period of beta testing / alpha testing gets over.
Also, Testing metrics can help the Test Engineer to take better and accurate decisions; like when to stop testing or when the application is ready for release; like, Percentage Completion, Percentage Test cases Passed, Percentage Test cases Failed etc.
Question#2
Yes, It is very important for a testing engineer to have experience in software development. You need to write script for test automation that is a coding. Also, you need to understand code while performing white-box testing or code inspection. You need to perform re-engineering over the developer code. So, you need software development knowledge.
Question#3
Yes, Communication is a very important skill for any tester. Tester need to describe bugs clearly for the better understand. Sometimes testers and developers are mot located in same office; on that case very good written communication is must. Also, tester needs to perform defect advocacy based on situation. So, tester should have need a very good communication skill.
Question#4
It is depends on your team structure.
You may also visit my blogs to more clarification of your questions. Please click on
http://modern-testing.blogspot.com/[
^]