As you may have guessed by now, ganache-cli is perfect for testing your Dapp locally. It allows you to connect a test blockchain network quickly, and it gives you several accounts with pre-loaded wei balances. However, when you want to test your blockchain with a more realistic network, that's when geth and parity come in.
geth and parity allow you to test your decentralized application on test Ethereum networks such as Ropsten and Rinkeby. The characteristics of these networks are much more similar to the main Ethereum network than the local network when using ganache-cli. So, the formula is simple. For quick, local testing, use ganache-cli.
For testing on a realistic (or real) network, geth, parity, or another fully fledged Ethereum client will do. You can find other fully fledged Ethereum clients here: https://ethereum.stackexchange...