User_Name() returns the database account for the currently connected user.
Suser_Name() returns the login account for the currently connected user.
When you connect to SQL Server, your Server login (suser_name) doesn't necessarily have to the same account name as the database account you are using (user_name). Case in point: sa login account becomes dbo on each database it's connected to.
If you aren't a member of sysadmin or logged in as sa, or aren't a db_owner, then you won't become dbo in the database account.
Create an account on the database, call it Tom ;-) for example, connect using that account via SQL Server authentication, then select User_Name(). It should come back as Tom.
Tom