I've been investigating about the double checked locking idiom and from what I understood, your code could lead to the problem of reading a partially constructed instance UNLESS your Test class is immutable:
The Java Memory Model offers a special guarantee of initialization safety for sharing immutable objects.
They can be safely accessed even when synchronization is not used to publish the object reference.
(Quotations from the very advisable book Java Concurrency in Practice)
So in that case, the double checked locking idiom would work.
But, if that is not the case, observe that you are returning the variable instance without synchronization, so the instance variable may not be completely constructed (you would see the default values of the attributes instead of the values provided in the constructor).
The boolean variable doesn't add anything to avoid the problem, because it may be set to true before the Test class is initialized (the synchronized keyword doesn't avoid reordering completely, some sencences may change the order). There is no happens-before rule in the Java Memory Model to guarantee that.
And making the boolean volatile wouldn't add anything either, because 32 bits variables are created atomically in Java. The double checked locking idiom would work with them as well.
Since Java 5, you can fix that problem declaring the instance variable as volatile.
You can read more about the double checked idiom in this very interesting article.
Finally, some recommendations I've read:
Consider if you should use the singleton pattern. It is considered an anti-pattern by many people. Dependency Injection is preferred where possible. Check this.
Consider carefully if the double checked locking optimization is really necessary before implementing it, because in most cases, that wouldn't be worth the effort. Also, consider constructing the Test class in the static field, because lazy loading is only useful when constructing a class takes a lot of resources and in most of the times, it is not the case.
If you still need to perform this optimization, check this link which provides some alternatives for achieving a similar effect to what you are trying.