You could start with unit tests, while the application is being developed. In Java you can use JUnit for this.
If you don't have a fully functioning system yet, you can use mocking to mock objects. In Java this is done with Mockito or JMockit.
Look into unit testing and TDD (Test Driven Development).
Once you are ready to integrate different components, look at integration tests. You can do those at lower levels than UI. If there are API's available you could test through rest endpoints, for which again there are plenty of tools available. For instance: RestAssured, Karate, Postman.
Have a look here for the difference between unit and integration tests.
Once those tests are in place, you might add a few UI tests on top. As those are generally slow and brittle, try not to have too many.
Have a look at the Test Pyramid.
Finally, if you are a UI tester and need to test through the UI only, you can still start designing and implementing your tests while the application is being developed. You could use Page Object pattern to describe the expected interaction with the system, declare the elements you will interact with and the methods to do so, and fill the locators once these are available. This is often how I develop Front End tests.