"Testing is always squeezed to the end of the iteration. What can we as a team do to address that?"
"We misunderstood that requirement. How can we make sure we're on the same page as the customers?"
Your team values light the way.
It might take many months for the team to feel like they've turned the corner and have significantly improved their product's quality, but I bet the customers notice a difference pretty quickly.
One Right Way
I can't tell you the one right way to test and develop software. If you don't have the enlightened management I've described above, try to enlighten them. Ask them to identify the biggest pain points and work with you to experiment with ways to address those. If you don't have the motivated teammates eager to take responsibility for quality and testing, try leading by example. Show what you do with your own passion for doing good work.
The one right way for your team to code and test will continually evolve over the years. In fact, I'm sorry to tell you that you'll never find the one right way; it's a moving target, but you'll get closer and closer to it.
Please read all these blog posts and as many books as you can. Participate in as many online and local user groups as possible. Keep an open mind. Bring the ideas and techniques you learn about back to your team. If one seems likely to help your team overcome a particular obstacle, give it a try. If it doesn't work, you learned something. If it does, celebrate and move on to the next obstacle.