Ir para conteúdo
Fórum Script Brasil

Kevin Guimarães

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por 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

    asimjalis@peakprogramming.com.

     

     

    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 <dglo@hyde.ssec.wisc.edu>

    - [04.17.2009] Tobias Lippert <herrmarder@googlemail.com>

    - [11.11.2009] Eli Bendersky <eliben@gmail.com>

    - [12.14.2009] Andrew Brown <abrown@datasci.com>

     

     

     

×
×
  • Criar Novo...