Well, lets start from the top and work down I guess.
Have your friend start the server.
Have your friend connect to the server using localhost as ip address <-makes sure the server behaves normally
Have your friend connect to the server using his normal ip address <-makes sure the ip is correct
Have your friend connect to the server using the outside ip address <-makes sure the outside ip is indeed what he thinks it is
Have your friend use
http://www.canyouseeme.org/ to make sure he indeed openened the correct port <-makes sure the port is indeed set open
Let minecraft ping your friends server (go to the multiplayer screen and add the server to the list without connecting to it.) <-lets us see if it may be something else then a connection issue
Try and join the server. <-what you want to accomplish
Work this list from the top to bottom. If everything works except the last then give us the log of both the client and the server (put it on pastebin and give us the link)