-
Notifications
You must be signed in to change notification settings - Fork 239
Presentation how to test super app
Miao, ZhiCheng edited this page Aug 2, 2023
·
6 revisions
⚠ This file is automatically generated from this org file using this script.
The exported presentation can be accessed via this githack link.
REVISIONS:
Date | Notes |
2022-07-05 | Reactor Workshop |
- Having higher confidence of things you built is rewarding.
- Anchoring your confidence in objective metrics is convincing.
- LoC of your testsuite, and test coverage percentages are good metrics.
- positive/happy cases
- negative cases (ownable/access control, bad inputs, etc.)
- non-functional cases (gas requirement e.g.)
- Early detection regression by frequently testing your code.
- Don’t let untested changes pile up.
- Try to create a test case for new bug discovered.
- Always have an end to end testsuite for your quick and dirty project.
- Use test coverage to guide you what needs to be tested more.
- If time allows, do these:
- Unit tests are guided missiles.
- Fuzzing is carpet bombings.
- Consider security as non-functional requirements.
- Different types of these requirements use different tooling for testing.
- Threat Modeling.
- Keeping up with the news.
- Use Echidna/hot-fuzz to discover hidden sequences.
- Agent modeling and simulation.
- Learn idomatic solidity programming styles: https://docs.openzeppelin.com/
- EVM expert knowledge.
- Full coverage of functional requirements
- Development trick: test focus
it.only
- Examine code coverage
- Fuzzing for better unit testing
- Protocol-level invariances and randomized sequences
- Foundry Pros: faster feedback loop, native fuzzing support.
- Foundry Cons: no dapp-side code sharing, lacking mature test-tooling support.
- Truffle/Hardhat Pros: typescript/javascript lower learning curve, similar dapp-side code
- Truffle/Hardhat Cons: much slower, no native fuzzing support.
- Governance Overview
- For Contributors
- Development Process
- Protocol EVMv1 Operations
- Protocol EVMv1 Technical Notes
- Protocol EVMv1 Core Subgraph