verification

7 posts

Execução Simbólica Encontrou um Integer Overflow que Meus 94% de Cobertura de Testes Deixaram Passar

Seus unit tests verificam entradas específicas. A execução simbólica verifica todas as entradas possíveis. Veja como funciona, o que custa e por onde começar.

Sua test suite tem 94% de cobertura e zero falhas. Um motor de execução simbólica encontra um crash no seu código em menos de três segundos. O teste não está…

Como provar que seu código não tem erros de execução (e por que você provavelmente desistirá de tentar)

A interpretação abstrata permite provar que erros de execução são impossíveis antes da execução. Veja como ela funciona na prática, por que é difícil e onde se encaixa na sua cadeia de ferramentas.

Sua suíte de testes passa. Seu verificador de tipos está verde. Você faz o deploy. Duas horas depois, a produção lança um em um caso extremo que ninguém pensou…

Alguém realmente verificou 10.000 linhas com zero defeitos? A IBM fez isso, e a metodologia é mais estranha que o resultado.

Cleanroom software engineering prometeu incrementos zero-defect através de mathematical verification em vez de debugging. Analisamos os dados reais do projeto da IBM para ver se a afirmação se sustentou.

A média da indústria de software na década de 1980 era de 30 a 60 defeitos por mil linhas de código. A equipe Cleanroom da IBM entregou um incremento de…

AutoVerus transforma 40 horas de escrita de proof em 3 chamadas de LLM. O truque é saber quando desistir.

AutoVerus utiliza uma rede de agents LLM para gerar proofs de correção Verus para código Rust, automatizando mais de 90% das proof obligations por meio de um loop gerar-reparar-discharge impulsionado pelo feedback do solver SMT.

A parte mais difícil da verificação formal nunca foi o verificador. É escrever o proof. Dê a um engenheiro sênior de Rust o Verus, o verificador baseado em SMT…

Você pode verificar código com model checking sem aprender temporal logic

Bounded model checkers como Kani e relational model finders como Alloy permitem verificar propriedades com assertions e constraints ordinários. Você abre mão de provas de liveness por uma curva de aprendizado medida em horas, não em semanas.

Você não precisa aprender lógica temporal linear para usar um model checker. Ferramentas como Kani, CBMC e Alloy permitem verificar propriedades com assertions…

Você pode provar que seu código Rust está correto sem escrever uma única prova, mas o espaço de estados é a conta

Ferramentas de model checking como Kani permitem verificar propriedades de Rust com assertions em vez de provas formais. O problema é o que acontece quando seus loops não têm limites pequenos.

Você pode provar que seu código Rust está correto sem escrever uma única prova. A ferramenta que faz isso se chama model checker, e para Rust o mais prático no…

Testes Não Provarão Que Duas Funções São Equivalentes. Veja o Que Vai.

A programação N-version assume que suas implementações concordam. Veja por que os testes não são suficientes, como os solvers SMT podem de fato provar equivalência, e onde traçar a linha entre bom o suficiente e formalmente verificado.

Você construiu um sistema n-version. Três implementações independentes da mesma função crítica, um voter que escolhe o resultado da maioria, e uma sensação de…