bytecodealliance / bytecodealliance/wit-bindgen

Test Suggestion: Add Fuzzing Tests

Abierto
#780 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

help wanted
Lenguaje dominante
Rust
Estrellas
1.5k
Forks
288
Merge medio
6 h 32 min
PR fusionados (30 d)
19

Descripción

Fuzz testing is testing mechanism that involves providing pseudo-random data as input into the generators to find correctness issues. There are multiple Bytecode Alliance projects that heavily leverage fuzz testing to improve code quality and find security and correctness issues (e.g. wasmtime and wasm-tools). So far, there is no fuzz testing existing in this repo. Part of the reasons applying fuzz testing against wit-bindgen repo is to raise the bar for generator code quality across multiple languages.

The goal of this issue is to suggest a fuzz framework adding to this repo. It could be as simply as feeding generated valid WIT packages to each wit-bindgen generator and check if the generated code are buildable. As the wit-bindgen-go maintainer, I hope there is a continuous fuzzing running in the background and invokes TinyGo compiler to compile generated WIT bindings. It could go as difficult as making sure the generated code is "correct" - the compiled Wasm modules / components are correct to our expectations.

To get started, I propose to use wit-smith and libfuzzer-sys crate and cargo-fuzz tool for fuzz testing.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza revisando el enfoque propuesto con wit-smith, libfuzzer-sys y cargo-fuzz; después, inspecciona cómo este repositorio ejecuta cada generador de wit-bindgen y sus comprobaciones de compilación existentes. Define un alcance inicial centrado, como generar paquetes WIT válidos y compilar los bindings generados con TinyGo; la finalización debe incluir un objetivo de fuzzing reproducible y una ejecución continua.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
go, rust
Área
compilers, testing-qa
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.