Here's how I evaluate this if I was evaluating you:
1. I already have a salary budget already allocated for this role based on industry average for position and location (but location _could_ be irrelevant depending on skill mostly).
2. I look at your skillset and put you at the bucket for the position where you are at: low-med-high
3. I make my offer based on my evaluation.
4. If you are "worth it", meaning in the high bucket, then I would go out of my way to give you a good offer, up to max of my budget or to match how much you are asking. Else, I would say the offer is where it stands and either you take it or don't.
But to answer your question, it doesn't hurt to push back as long as you are confident in your skills and know your value is worth more. That one you have to make up for yourself by evaluating yourself with peers and other factors.
Oh. And if you do push back, make sure to give a good reason why it is so. For example, if I happened to put you in the low bucket, I might have evaluated you wrong or the tests did not show much of your skill, then make sure to outline why you deserve that salary increase with good reason. As a quick example, if the industry average in where you are is $50,000 and you are offered $30,000 which is the starting for a junior, you can say that you've been developing for awhile with at least 5 years experience and that $50,000 would be a fair salary etc etc.