The document discusses challenges in testing smart contracts including: - Black box testing is limited and there are many known attack vectors. - Rapid development and bugs in the Solidity compiler make testing difficult. - The unpredictable blockchain environment also poses challenges. The proposed solution is to: - Thoroughly learn blockchain and Solidity. - Write simple contracts that include known exploits. - Use frameworks like Truffle to write comprehensive autotests. - Lock compiler versions unless critical bugs are found. This approach has led to stable applications over 1.5 years, passed two audits with no vulnerabilities found, comprehensive test coverage, reported compiler bugs, and safely processing over $10M through smart