Step 1: Identify the problem.
DO NOT, and i repeat, DO NOT try and aim practice before you have identified what the problem is. Many people start aim drills and aim practice, when the gain they personally can get is very marginal. The gain from these drills are also very different from person to person. The reason you have to identify the problem first, is so you don't practice doing something, when it wasn't the problem in the first case. I'd like to split people into two groups here: the ones who actually can't aim and the ones who aren't receiving the right signals from their brain.
Imagine this situation. You're playing Widowmaker, then a Soldier comes running in a zigzag pattern and you start tracking him. You decide to take the shot, but you missed it because he sidestepped it. Now think to yourself, why did you miss this shot? Did you keep expecting him to run forward, or did you overaim/underaim/whatever. This is identifying the problem. If you missed the shot because you aimed too far or too short, your shot was bad, and the aiming is what needs practice. Did you miss the shot because you didn't expect him to sidestep, then your shot is not necessarily bad, but your brain is clearly not reading the movements right.
I believe this is the fundamental problem of at least 60% of people who think they're bad at tracking in Overwatch. Their shot might be fine, but their reading of the opponent's movement isn't. So the next time you play one or two or fifteen games, every time you miss a shot, think, why did i miss? Once you've identified the problem, then you can move on.
Step 2: Begin practicing. Depending on which problem you have, you should start practicing anything that can help improve upon this. If you've decided that your shot was legitimately bad, then you can start practicing your aim and muscle memory. Practice Soldier, Zarya, Widomaker and even someone like McCree depending on how you play with him. You can do it in custom games, quick play, or even competitive if you feel comfortable practicing in that environment. I'm not going to tell you how to do this, as there are 600.000 aim guides discussing exactly this. Just don't start doing it until you've identified that your shot is the problem.
Alternatively; if your movement reading was the problem, I actually don't know any specific drills to help practice this. The best piece of advice I can give is to practice with a friend. Find the highest rated and most annoying Lúcio main on your friends list, pick Zarya, and then just start tracking him. If you can't do this for some reason, do it in quick play, custom games with 6 Lúcios, competitive, anything where you actually track an opponent. I can't personally recommend bots because of their predictable movement, but if it's the only environment you're comfortable practicing this in, go for it. Always ask yourself while practicing if you're achieving the goal you want to achieve by using the methods you're using. By saying this I mean one thing, keep the goal in mind. The goal you want to achieve doing this is maximizing the time your crosshair is on the enemy. If it wasn't, think to yourself why.
And the final step which I've left out is of course profit.
If you have any questions or feel this guide wasn't comprehensive enough or anything else, I will gladly answer any questions or receive any form of constructive criticism in the comment section.
My final statement regarding this is, again, keep the goal in mind. If you don't feel like this method of training is helping you, by all means stop. Some people just have to realize that practicing this way isn't for everyone. Some people just won't benefit from this, and that's okay, maybe theres something in this subreddit that works way better for you.