squirrel eating cone in forest

Como fazer fuzz test em requests HTTP (parte 1)

Na edição de 2022 da GopherCon Brasil, tive o prazer de palestrar sobre Fuzz Test. Foi muito bacana, pois durante a palestra, assim como nos corredores do evento, fizeram vários questionamentos que eu ainda não tinha feito sobre essa feature do Go.

Se você ainda não conhece esse tipo de teste, convido você a ler um post que publicamos aqui no blog (link para o post) onde explicamos melhor o assunto.

O que vou tratar nesse post é o resultado das perguntas feitas no evento mais um link que o Ricardo Maricato me enviou.

Para ver uma das formas de implementar o Fuzz Test para requests HTTP, vamos implementar um endpoint para validação dos dados de uma pessoa.

Vamos começar criando uma struct com um método de validação, e algumas variáveis para armazenar os erros de validação que podemos ter.

Leia mais »

Fuzzy testing

Adicionado ao Go 1.18, essa nova feature para testes promete ajudar a melhorar muito nosso código, já que com ela conseguimos testar inputs diferentes do que adicionamos em nossos testes, cobrindo assim uma gama muito maior de possibilidades.

Antes de continuar, se você caiu aqui mas prefere ver esse tutorial em vídeo, vou deixar aqui o link para um vídeo do nosso canal no YouTube onde mostramos essa belezinha em ação => Como implementar Fuzzy Test em Go.

Continuando….

Vamos imaginar que temos a seguinte função implementada.

Leia mais »

Tudo o que você precisa saber sobre Go 1.18

Já com sua primeira Release Candidate nas ruas, a versão mais aguardada dos últimos tempos está cada vez mais próxima de ser lançada.

Nesse post vou abordar as principais mudanças que essa versão irá trazer.

Any

Na nova versão da linguagem, foi adicionado o novo tipo de dado, o any. Esse tipo nada mais é do que uma alias para interface{}.

Isso não impede ou quebra nenhum código que utilizar interface{}, porém é recomendado mudar para any por questões de leitura.

Se você achar estranho, não se esqueça que o tipo byte é só um alias para uint8.

Leia mais »