- Static analysis tools like gosec, go-vet, and staticcheck can help catch low hanging fruits not included in compiler errors & warnings.
- Dynamic analysis techniques like fuzzing, property testing & fault injection should be used for deeper results.
- Dynamic testing tools like dvyukov/go-fuzz let you quickly & effectively implement mutational fuzzing.
- google/gofuzz can help by initializing structures with random value.
- For property testing, the leanovate/gopter framework addresses the shortcomings of other testers.
- The build directives of the compiler can be used to perform name linking, and avoid renaming while getting testable access to desired functions.
Full post here, 15 mins read