So I can tell you, when you play a matchmaking game (the ranked games) and a player drops (you get a bot) the bots are basically bad on purpose. They get random statistics in things like aim, reaction time, etc., but never very high. Also they buy somewhat random things on purpose (negev, no kit/armor, one flash, still has $7k... wut). Also, one of the random stats they get is something like obedience, meaning they are more or less likely to listen to a command ("Hold this position"). The reason for all this randomness and intentional badness is because Valve doesn't want kicking a bad player to ever be a viable strategy. Kicking players is really only reserved for toxic players (in theory).
As for DM bots, they're pretty realistic actually, they basically hold W (forward) and shoot at the first things they see, which is pretty much what humans do. Their skills are also random, but usually much worse than the average human so that they're basically just targets (DM is for practice after all).
As for a team of bots, I can't comment. I have never played against them since 1.6 and at that point I think all bots were made by 3rd party developers. Right now I think Valve just doesn't care enough to make "good" AI (good meaning human-like, not god like) since almost no one plays against only bots.
From what I can tell they're designed to be targets, not pass the CS:GO Turing test (which would be an interesting project actually).