Testnet is the best way to test smart contracts. Configure the deployment tool (truffle for example) to connect to the testnet and deploy new code without having to worry about fees.
For investors and enthusiasts
The Testnet is the exact same ecosystem as that on the actual Mainnet.