Mudanças entre as edições de "Testes unitários"
(→Desenvolvimento dos testes unitários) |
(→Desenvolvimento dos testes unitários) |
||
Linha 13: | Linha 13: | ||
A equipe de desenvolvimento concluiu pela criação de uma classe abstrata (OperacaoFundamental) que define a interface de uma operação que recebe dois elementos do tipo '''double''' e retorna uma resultado também '''double'''. Esta definição de interface é essencial para que o desenvolvedor conheça os as características do problema a ser resolvido. | A equipe de desenvolvimento concluiu pela criação de uma classe abstrata (OperacaoFundamental) que define a interface de uma operação que recebe dois elementos do tipo '''double''' e retorna uma resultado também '''double'''. Esta definição de interface é essencial para que o desenvolvedor conheça os as características do problema a ser resolvido. | ||
− | === ''' | + | === '''Projeto dos testes unitários''' === |
Com base no TDD, antes de iniciar a construção da solução o desenvolvedor deve dominar (ou ter acesso a quem domine) o comportamento esperado das operações que devem ser implementadas. Isso é importante para que possam ser desenhados os testes antes da construção da funcionalidade que deve ser testada. Com este conhecimento podem ser construídos casos de teste para cada uma das operações. Para a funcionalidade solicitada o desenvolvedor projetou os casos de teste descritos na figura abaixo. | Com base no TDD, antes de iniciar a construção da solução o desenvolvedor deve dominar (ou ter acesso a quem domine) o comportamento esperado das operações que devem ser implementadas. Isso é importante para que possam ser desenhados os testes antes da construção da funcionalidade que deve ser testada. Com este conhecimento podem ser construídos casos de teste para cada uma das operações. Para a funcionalidade solicitada o desenvolvedor projetou os casos de teste descritos na figura abaixo. | ||
Linha 20: | Linha 20: | ||
Conforme apresentado na imagem, o desenvolvedor conhece os valores que fazem cada uma das operações executarem com sucesso e com falha. Com base nisso poder ser construídos os testes unitários. | Conforme apresentado na imagem, o desenvolvedor conhece os valores que fazem cada uma das operações executarem com sucesso e com falha. Com base nisso poder ser construídos os testes unitários. | ||
+ | |||
+ | === '''Criação dos testes unitários''' === |
Edição das 14h41min de 25 de maio de 2015
Conteúdo |
INTRODUÇÃO
O processo de desenvolvimento do PJE 2 é baseado no Test Driven Development (TDD) ou em português Desenvolvimento guiado por testes. Este modelo inicia o desenvolvimento de funcionalidades a partir da criação de testes para o código a ser construído. Para tanto o desenvolvedor deve ter o domínio da fucionalidade a ser construída: ele deve conhecer seus parâmetros de entrada e as saídas esperadas, incluindo eventuais exceções. Este documento descreve um exemplo simples de desenvolvimento de uma nova funcionalidade solicitada por um usuário baseado no modelo TDD.
REQUISITO DO USUÁRIO
O usuário solicitou que a equipe de desenvolvimento criasse uma calculadora para as 4 operações matemáticas fundamentais: soma, subtração, multiplicação e divisão. A calculadora deve trabalhar sempre com dois números reais, realizando a operação sobre eles e devolvendo um resultado real.
Solução proposta
Para resolver o problema a equipe de desenvolvimento modelou a solução conforme ilustração do diagrama abaixo.
A equipe de desenvolvimento concluiu pela criação de uma classe abstrata (OperacaoFundamental) que define a interface de uma operação que recebe dois elementos do tipo double e retorna uma resultado também double. Esta definição de interface é essencial para que o desenvolvedor conheça os as características do problema a ser resolvido.
Projeto dos testes unitários
Com base no TDD, antes de iniciar a construção da solução o desenvolvedor deve dominar (ou ter acesso a quem domine) o comportamento esperado das operações que devem ser implementadas. Isso é importante para que possam ser desenhados os testes antes da construção da funcionalidade que deve ser testada. Com este conhecimento podem ser construídos casos de teste para cada uma das operações. Para a funcionalidade solicitada o desenvolvedor projetou os casos de teste descritos na figura abaixo.
Conforme apresentado na imagem, o desenvolvedor conhece os valores que fazem cada uma das operações executarem com sucesso e com falha. Com base nisso poder ser construídos os testes unitários.