Important
For more details about the Trident, check the Trident documentation Tridetn docs
Important
Check the Part I of Fuzzing with Trident for more better introduction into Fuzzing Fuzzing with Trident I
- Invariant Checks
- Instruction Sequences
- Custom Error Handler
- Well Structure Data
- Client Methods
- Trident Manifest
Important
For all of the following features implemented in the Fuzz Test, check the trident-lesson-part-ii
Trident provides ability to define Invariant checks, this add opportunity to check how the Accounts were updated within the corresponding Instruction and if the updates were performed as expected.
Trident allows you to specify desired Instruction Sequences. You can specify
- Expected Instruction/s executed at the start of Fuzzing iteration, In the Middle, or in the End.
- Whole Instruction Sequence that you want the Fuzzer should execute within each fuzzing iteration.
In case of Instruction failure, Trident allows you to implement Custom Error Handler to check (and compare) or even intersect the Instruction Sequence and define behavior in case of specific error occured.
Using the Arbitrary crate, Trident allows you to give better structure to the random data generated by the underlying Fuzzing Engine. In this case Instruction parameters can be well structured with some dependencies instead of completely random and independant instruction inputs.
Trident specifies multiple methods to communicate with the Testing Environment. For this purpose it is possible to for example set completely custom account manually instead of calling specific Initialize instruction.
Initialization of Trident generates also the Trident.toml. Parameters specified in this file can be use to increase the Fuzzing Experience,