test expr VS [ expr ]

What is the difference between test expr VS [ expr ].
For example :

if test 5 -eq 6
echo "Wrong"

and

if [ 5 -eq 6 ]
echo "Wrong"

bot will give the same output as Wrong.
Now, what is the difference between these two? though they are producing the same result why we need two?

Any answer will be appreciated,

In terms of functionality, they're both the same. Mostly.

test is a program, you can find it with 'which test'.
The bracket expression is a shell builtin in POSIX shells. Both basically do the same, but sometimes functionality can differ.

Thats really a great information. Thank you,