The best way to go about achieving this is through a Test Driven Development process.
The focus is heavily skewed towards integration tests. The smart contracts are tested with TypeScript and are the most important to be 100% covered