Balancing testing in object oriented design is not an easy task, as it depends on many factors such as complexity, size, scope of the system, resources and constraints of the project, standards and expectations of the industry, and preferences and skills of the team. However, there are some general principles and practices that can help you find a reasonable and effective balance between testing and development. For instance, you can apply test-driven development (TDD) approach which involves writing tests before writing code and then writing code that passes the tests. This can help clarify requirements, design objects, refactor code, reduce debugging time, and increase code coverage. Additionally, you should use different levels and types of testing such as unit testing, integration testing, system testing, acceptance testing; white-box testing, black-box testing, functional testing, non-functional testing; to cover different aspects and scenarios of your system. Automating your testing process is also a great way to save time and effort while improving the consistency and accuracy of your results. You may use tools like xUnit, JUnit, TestNG, Selenium, Cucumber or Jenkins for this purpose. Moreover, following SOLID principles can help create objects that are cohesive, decoupled, polymorphic abstracted and inverted. Lastly reviewing and refactoring your code can help improve quality and readability while eliminating any errors or bugs that may have escaped your testing process. You can use tools like code reviews, pair programming code analysis code metrics or design patterns for this purpose.