Jump to content
Fórum Script Brasil

Kevin Guimarães

Membros
  • Content Count

    1
  • Joined

  • Last visited

Community Reputation

0 Neutro

About Kevin Guimarães

  1. Com intuito de compreender e entender sobre o Frameworks de testes, nós acadêmicos do curso de Engenharia de computação a pedido do professor fomos em busca de ferramentas para serem exploradas. Escolhemos o CuTest por ser open source e por trabalhar com a linguagem C, linguagem a qual utilizamos diariamente em nosso dia a dia do nosso curso. Apesar de open source nos deparamos com uma grande falta de informação sobre o mesmo, sendo que todo conteúdo oficial se encontra em (http://cutest.sourceforge.net/) para tentar auxiliar as pessoas que possam se interessar pela ferramenta traduzimos o README e inserimos os códigos que usamos para utilizar a ferramenta, espero que a experiencia que tivemos ajude de certa forma e que possa ser acrescentada mais informações sobre o mesmo. COMO USAR Você pode usar o CuTest para criar testes de unidade para impulsionar seu desenvolvimento no estilo de Extreme Programming. Você também pode adicionar testes de unidade, em código existente para garantir que funcione como você deseja. Seus testes de unidade são um investimento. Eles permitem que você mude o seu modo de codificar, podendo adicionar novos recursos com confiança sem se preocupar em acidentalmente quebrando recursos anteriores. LICENCIAMENTO Para detalhes sobre licenciamento, veja license.txt. COMEÇANDO Para adicionar testes unitários ao seu código C, os únicos arquivos que você precisa são CuTest.c e CuTest.h. CuTestTest.c e AllTests.c foram incluídos para fornecer uma exemplo de como escrever testes de unidade e, em seguida, como agregá-los em suítes e em um único arquivo AllTests.c. Suites permitem que você possa colocar testes de grupo em conjuntos lógicos. AllTests.c combina todas as suites e os executa. Você não deveria ter que olhar para dentro do CuTest.c. Procurando em CuTestTest.c e AllTests.c (por exemplo, uso) devem ser suficiente. Depois de baixar os fontes, execute seu compilador para criar um executável chamado AllTests.exe. Por exemplo, se você estiver usando Windows com o compilador cl.exe que você digitaria: cl.exe AllTests.c CuTest.c CuTestTest.c AllTests.exe Isto irá executar todos os testes unitários associados ao CuTest e imprimir a saída no console. Você pode substituir o cl.exe pelo gcc ou seu compilador favorito no comando acima. EXEMPLO DETALHADO Aqui está um exemplo mais detalhado. Vamos trabalhar através de um simples teste, um primeiro exercício. O objetivo é criar uma biblioteca de string. Serviços de utilidade pública. Primeiro, vamos escrever uma função que converta string terminada em null todas as letras em maiúsculas. Assegure-se de que CuTest.c e CuTest.h sejam acessíveis a partir do seu projeto. Em seguida, crie um arquivo chamado StrUtil.c com estes conteúdo: #include "CuTest.h" char * StrToUpper (char * str) { return str; } void TestStrToUpper (CuTest * tc) { char * input = strdup ("hello world"); char * actual = StrToUpper (entrada); char * esperado = "OLÁ MUNDO"; CuAssertStrEquals (tc, esperado, real); } CuSuite * StrUtilGetSuite () { CuSuite * suite = CuSuiteNovo (); SUITE_ADD_TEST (suite, TestStrToUpper); return suite; } Crie outro arquivo chamado AllTests.c com estes conteúdos: #include "CuTest.h" CuSuite * StrUtilGetSuite (); void RunAllTests (void) { CuString * output = CuStringNew (); CuSuite * suite = CuSuiteNovo (); CuSuiteAddSuite (suite, StrUtilGetSuite ()); CuSuiteRun (suite); CuSuiteSummary (suite, saída); CuSuiteDetails (suite, saída); printf ("% s \ n", saída-> buffer); } int main (void) { RunAllTests (); } Então digite isto na linha de comando: gcc AllTests.c CuTest.c StrUtil.c Para compilar. Você pode substituir o gcc pelo seu compilador favorito. O CuTest deve ser portátil o suficiente para lidar com todas as versões do Windows e do Unix. Então, para executar o tipo de testes: a.out Isso imprimirá um erro porque não implementamos o StrToUpper corretamente. Estamos apenas retornando a string sem alterá-lo para maiúsculas. char * StrToUpper (char * str) { return str; } Reescreva isto da seguinte forma: char * StrToUpper (char * str) { char * p; para (p = str; * p; ++ p) * p = toupeira (* p); return str; } Recompile e execute os testes novamente. O teste deve passar este Tempo. O QUE FAZER A SEGUIR Neste ponto, você pode querer escrever mais testes para o Função StrToUpper. Aqui estão algumas ideias: TestStrToUpper_EmptyString: passar em "" TestStrToUpper_UpperCase: passar em "HELLO WORLD" TestStrToUpper_MixedCase: passe em "HELLO world" TestStrToUpper_Numbers: passe em "1234 hello" Enquanto você escreve cada um desses testes, adicione-o ao StrUtilGetSuite função. Se você não fizer, os testes não serão executados. Mais tarde, enquanto você escreve outras funções e escrever testes para eles não se esqueça de incluir os em StrUtilGetSuite também. A função StrUtilGetSuite deve inclua todos os testes no StrUtil.c Com o tempo, você criará outro arquivo chamado FunkyStuff.c contendo outras funções não relacionadas ao StrUtil. Siga o mesmo padronizar. Crie uma função FunkyStuffGetSuite no FunkyStuff.c. E adicione FunkyStuffGetSuite a AllTests.c. O framework é projetado da maneira que é para que seja fácil organize muitos testes. A GRANDE IMAGEM Cada teste individual corresponde a um CuTest. Estes são agrupados para formar um CuSuite. CuSuites pode realizar CuTests ou outros CuSuites. AllTests.c coleta todos os CuSuites no programa em um único CuSuite que então funciona como um único CuSuite. O projeto é open source então sinta-se livre para dar uma espiada capô no arquivo CuTest.c para ver como funciona. CuTestTest.c contém testes para CuTest.c. Então o CuTest testa ele mesmo. Desde AllTests.c tem um main () você precisará excluir isso quando você está construindo seu produto. Aqui está uma maneira mais agradável de fazer isso se você quer evitar mexer com várias construções. Remova o principal () em AllTests.c. Note que apenas chama RunAllTests (). Em vez de vamos chamar isso diretamente do programa principal. Agora no main () do programa atual, verifique se o opção de linha de comando "- teste" foi passada. Se foi então eu chamo RunAllTests () de AllTests.c. Caso contrário, execute o programa real. O envio dos testes com o código pode ser útil. Se você clientes queixar-se de um problema, você pode pedir-lhes para executar os testes de unidade e enviar-lhe a saída. Isso pode ajudá-lo a isolar rapidamente o peça do seu sistema que está com defeito no cliente meio Ambiente. CuTest oferece um rico conjunto de funções CuAssert. Aqui está uma lista: void CuAssert (CuTest * tc, mensagem char *, condição int); void CuAssertTrue (CuTest * tc, int condição); void CuAssertStrEquals (CuTest * tc, char * esperado, char * real); void CuAssertIntEquals (CuTest * tc, int esperado, int real); void CuAssertPtrEquals (CuTest * tc, void * esperado, void * actual); void CuAssertPtrNotNull (CuTest * tc, void * pointer); O projeto é open source e assim você pode adicionar outros mais poderosos afirma para tornar seus testes mais fáceis de escrever e mais concisos. Por favor, sinta-se livre para me enviar as alterações que você faz para que eu possa incorporá-los em lançamentos futuros. Se você encontrar algum erro neste documento, entre em contato comigo [email protected] GERAÇÃO AUTOMATIZADA DO SUITE DE TESTE make-tests.sh irá percorrer todos os arquivos .c no atual diretório e gerar o código para executar todos os testes contidos eles. Usando este script você não precisa se preocupar em escrever AllTests.c ou lidar com qualquer um dos outros códigos de suite. CRÉDITOS Essas pessoas contribuíram com mudanças de código úteis para o projeto CuTest. Obrigado! - [02.23.2003] Dave Glowacki <[email protected]> - [04.17.2009] Tobias Lippert <[email protected]> - [11.11.2009] Eli Bendersky <[email protected]> - [12.14.2009] Andrew Brown <[email protected]>
×
×
  • Create New...