I've been working on a variety of projects lately that are staffed very differently. One project has a dedicated test team, and a development team. One project has no dedicated tester, and the development team is terrified that they "don't know how to test any of this". Yet another team has no dedicated testers, and they figure they're doing all right without it.
Why such different teams? And why such different reactions?
I suggest that it is entirely to do with testers versus testing.
Testers are people filling roles.
Testing is an activity.
A tester is (ideally) someone who is dedicated to the study of testing, and to doing the testing activity better, more efficiently, more effectively, etc. That doesn't mean that only testers can do testing. That doesn't mean that testers must only do testing. It mostly means that someone who is a tester is more likely to do testing activities more thoroughly and efficiently than someone who is not a tester. It's a simple analogy to a database architect. Sure, they're probably going to build you a better data model faster, but you could also have another engineer create a data model. It's up to you to decide whether that activity (the data model, or the testing) is worth having a dedicated resource.
Be careful not to conflate the role (tester) with the activity (testing). It's perfectly acceptable for all the testing activities to be done by people with the formal role of developer, or project manager, or client. It's completely all right if a person with the formal role of tester does testing activities.
The important thing for a successful project is not that there is a dedicated tester. The important thing is that the testing activity is occurring.
As with any software development activity, decide how important it is, and staff accordingly. Don't build a team based on roles; build a team based on activities.