Test suite

While the overall test coverage of the project is good, there are some critical functionalities that have not been fully tested. Specifically, there is a lack of negative test cases, which are essential for ensuring the platform's resilience to unexpected inputs and edge cases. Moreover, some specific functions within the smart contract remain untested. For example:

  • BranchBridgeAgent.sol: callOutSigned, redeemDeposit

  • RootBridgeAgent.sol: forceResumeReceive, redeemDeposit

  • RootPort.sol: fetchVirtualAccount

  • VirtualAccount.sol: call, payableCall

As such, it is recommended that the development team focus on writing test cases for functionalities that have not been fully tested. These test cases can be relatively short and quick to write and execute, but they are essential for identifying potential vulnerabilities and ensuring that the platform is able to handle unexpected situations.

Because correctness is so critically important when developing smart contracts, we recommend that all projects strive for 100% code coverage. Testing should be an essential part of the software development lifecycle. No matter how simple a function may be, untested code is always prone to bugs. Furthermore, it is important to ensure that external contracts are also held to similar level of testing rigor.

The significance of comprehensive testing becomes even more critical given the project's nature as an omnichain liquidity protocol. This multi-chain context amplifies the potential impact of even minor unaddressed issues. Therefore, thorough testing is not just a best practice but an essential safeguard to ensure the robustness and reliability of the platform across various chains.

Several tests have been added to enhance the test suite between commits and .

Zellic © 2024Back to top ↑