Here are some of the things that I have experienced in the past (and present):
We had a team of 2-3 testers. One tester would not touch the code (tangent: he is now a coder), but had the most domain knowledge of anyone in the team. I would create simple test scripts in Python, but nothing which would pass as automation. This worked for us, even if one or both of us were away. It seemed that we communicated our testing efforts well enough that, if needed (and gladly wasn’t needed much), other team members could step in.
We had a team of 2 testers in a huge company. We were supposed to “follow the script”, but neither of us did. We both worked on automation, had code reviews, maintained the repositories (even for the production code), explored the systems, and logged the results. This also worked well because we constantly communicated our testing stories with the rest of the team.
We had a “team” of 1 tester (me). I split my time between exploring, creating regression test scripts, creating automated tests, and communicating the results of my testing. It worked well because the communication helps keep both myself and the team on the same page. (Are we seeing a theme here?)
The need for constant communication in teams leads me to believe that the word “separate” is extremely loaded. The whole team doesn’t have to work on the code itself, but they should really work together on defining the test strategy and test ideas. In this way, you aren’t stepping on toes, and more hands may make easier work. (But beware, as too many cooks may also spoil the broth)
Having all testers responsible for all tests can also be a fallacy, since someone may have a huge depth of domain knowledge, but little skill in coding, or vice-versa. This could lead to a non-optimal use of the team’s time.
Ideally, everyone is T-shaped and can do all of the roles. Then you could have a “leader” and split roles evenly. But in the real world, that is never the case. Therefore, you may want to build your team based on the abilities, desires and goals of the team members rather than a pre-built model.