Recentemente, tenho pressionado meu grupo a incluir mais testes ao escrever seu código. Houve vários bugs importantes que levaram muito mais tempo para serem detectados do que provavelmente era necessário falar, porque não tínhamos um bom regime de teste.
No entanto, suspeito que ter as ferramentas apropriadas para automatizar (ou ajudar a otimizar) o processo certamente seria útil. Por outro lado, não conheço as várias opções para os conjuntos de testes em C ++ e como decidir entre eles?
Existem diretrizes para o que procurar - e existem algumas especificamente voltadas para aplicativos numéricos?
Recentemente, tenho usado o googletest para testar algumas bibliotecas numéricas nas quais trabalho e fiquei muito feliz com isso. Você pode escrever testes bastante simples com muita rapidez ou testes complicados que requerem inicialização de dados e assim por diante. Ele também fornece (como eu tenho certeza que muitos outros fazem) maneiras de fazer comparações de ponto flutuante com facilidade, em vez de bit a bit.
fonte
Se você estiver criando seu código com o CMake, o mecanismo ctest seria a escolha óbvia. Ele permite que você teste seu código manualmente por meio do comando
ctest
e também oferece suporte a testes noturnos extensos via CDash .fonte
Para nossa biblioteca C ++ de biologia computacional ( Chaste ), usamos http://cxxtest.com/ . Isso é bastante simples de usar, funciona bem, fornece algumas macros para testar com
assert()
instruções de estilo. Para a computação científica, essas geralmente são comparações diretas simplesTS_ASSERT_EQUALS(a,b)
ou comparações numéricas comTS_ASSERT_DELTA(a,b,tolerance)
.Macros extras podem ser facilmente escritas usando esses básicos para comparar também seus próprios vetores / matrizes de escolha. De maneira útil, você também pode verificar se o seu código lança avisos e mensagens de erro apropriados em determinadas situações. Você pode procurar alguns exemplos nas
test
pastas do nosso código-fonte aqui: https://chaste.cs.ox.ac.uk/trac/browser/trunkfonte