We are currently having multiple scrum teams with 3 to 6 developers and 1 dedicated tester in each team.
Should we have scrum team like this OR have all the developers and they can share testing responsibility mutually?
In a Scrum team it is best to distinguish between roles and capabilities.
Every Scrum team needs a testing capability, but it does not necessarily need tester roles.
The whole Scrum team takes responsibility for quality. This means more than just testing, it also means:
There are undoubted skills to being a good tester and some will be better at it than others. However, we can look to share this knowledge around the Scrum team using mentoring and training. This is why we talk about having t-shaped skill profiles in a Scrum team.
Agile methodology looks to the development process as a "Collaborative Process", so every role has to participate in development process.
The testers look at the product in a different way that the developers look: in general, the testers try to make the software product fail. In contrast, developers try to make the software product pass. This difference in the methodology of thinking increase possibility of discovering bugs early.
Sharing dedicated testing members from the beginning life of the product gives them a good understanding about the business and technical aspects of the product.
The only solution is to hire a one-armed project manager. That way he can't say "on the other hand..."
Obviously having "developers" also being "testers" leads to a conflict of interest.
On the other hand, let's assume a big release has now finished coding. The "developers" have no work and the "testers" are overloaded. So should the developers play solitaire on their computers until the testers are done?
So there just isn't absolute solution to the dilemma.