Sem resumo de edição
 
(25 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
= Introdução =
=Introdução=


* [[Descrever a finalidade do sistema, ou seja, para que serve.]]
* [[Destacar os nomes dos softwares disponíveis no mercado]]
* [[Escolher um para detalhar]]
* [[Explicar o motivo da escolha]]




*Considerada por muito tempo secundaria;
*Devido à intensa aplicação de softwares nas diversas áreas da tecnologia a Engenharia de Software vem sendo altamente desenvolvida e as principais ferramentas de auxílio no desenvolvimento desses projetos são as Ferramentas CASE.
*Microsoft em Bangalore;
*Visa:
      - Uma melhor qualidade final do programa;
      - Melhor produtividade;
      - Aumento do poder de tomada de decisão do programa;
      - Diminuição do tamanho fisico do programa;
      - Redução de custos;


*Alguns Softwares de teste:
*Uma das Ferramentas CASE mais usadas são as de teste, que como o próprio nome já indica são utilizadas na realização de testes em softwares que estão sendo trabalhados.
      - Asset;
      -Proteste (Pascal);
� xSuds – programas em C, C++ e Cobol
� Poke-Tool – programas em C, Cobol e Fortran


= Funcionalidades =
*Os testes em softwares podem ser realizados de maneira manual (o programador reavalia o código manualmente e verifica erros), ou de maneira automatizada (o programa reavalia o código procurando por possíveis erros).


Descrever as funções do software, ou seja, detalhes do que ele faz.
= CASE Teste: Explicação =


Exemplo:
*As Ferramentas CASE de Teste na realidade não são softwares que realizão testes de código de programas, mas sim bibliotecas com rotinas de testes que são implementadas em softwares de desenvolvimento e a medida em que uma rotina do programa é terminada é possivel executar um teste dessa rotina juntamente com a "compilação" do programa.
<br>
[[Arquivo:imagem1.jpg]]
* Funcionalidades do Word:
** Edição de documentos
** Formatação de parágrafos
** Contagem de palavras
** Verificação gramatical
** Numeração de páginas
** Divisão em colunas
** Exportação para PDF
** Procura e alteração de palavras
** Etc
<br>
<br>
<br>


*Estes testes realizados no programa visam melhorar o programa como um todo e varias outras características como:
**Uma melhor qualidade final do programa;
**Melhor classificação da qualidade do programa;
**Melhor produtividade;
**Aumento do poder de tomada de decisão do programa;
**Diminuição do tamanho fisico do programa;
**Redução de custos;


TESTES
= Tipos de Testes =


Os softwares de testes trabalham afim de realizar  teste de condição, teste de fluxo de dados, teste de ciclos e teste de caminhos lógicos, exercitar as estruturas de dados, entre outros. Os aspectos avaliados dependerão da complexidade e da tecnologia que determinarem à construção do componente de software. Um exemplo de ferramenta livre de teste é o JUnit que testa classes ou métodos desenvolvidos em Java.
*'''Teste Estrutural :'''  
<br>
**A técnica de teste Estrutural, de “Caixa-Branca”, é recomendada para as fases de Teste da Unidade e Teste da Integração e é realizada pelos desenvolvedores do software, que conhecem bem o código-fonte produzido.
<br>
'''Teste Estrutural (Caixa Branca)''': A técnica de teste de Caixa-Branca é recomendada para as fases de Teste da Unidade e Teste da Integração e é realizada pelos desenvolvedores do software, que conhecem bem o código-fonte produzido.  
<br>
<br>
'''Teste funcional (caixa preta)''': O software a ser testado é abordado como uma “caixa-preta”, ou seja, as linhas de código não são analisadas. São fornecidos dados de entrada e então o teste é executado e a resposta obtida é comparada ao resultado esperado.
<br>
<br>
'''Teste de Unidade:''' É a fase de teste em que se testam as menores partes do software. O alvo desse tipo de teste são os pequenos objetos e/ou pequenos trechos de código. Com o objetivo de encontrar falhas de funcionamento dentro dessas partes. Normalmente é escrito pelo mesmo programador que desenvolveu o código a ser testado e serve como documentação do sistema, fazendo-se essencial para análise do desempenho do sistema.
<br>
----------------------------------------------------------------------------------------------------------------------------------------------


*'''Teste Funcional:'''
'''Teste de Integração:'''
**O software a ser testado é abordado como uma “caixa-preta”, ou seja, as linhas de código não são analisadas. São fornecidos dados de entrada e então o teste é executado e a resposta obtida é comparada ao resultado esperado.
Na fase de teste de integração o objetivo é encontrar falhas provenientes da integração interna dos componentes de um sistema. Geralmente os tipos de falhas encontradas são de envio e recebimento de dados. Por exemplo, um objeto A pode estar aguardando o retorno de um valor X ao executar um método do objeto B, porém este objeto B pode retornar um valor Y, desta forma gerando uma falha. Não faz parte do escopo dessa fase de teste o tratamento de interfaces com outros sistemas (integração entre sistemas). Essas interfaces são testadas na fase de teste de sistema, apesar de, a critério do gerente de projeto, estas interfaces podem ser testadas mesmo antes de o sistema estar plenamente construído..


'''Teste de Sistema:'''
*'''Teste de Unidade:'''  
Na fase de Teste de Sistema o objetivo é executar o sistema sob ponto de vista de seu usuário final, varrendo as funcionalidades em busca de falhas. Os testes são executados em condições similares - de ambiente, interfaces sistêmicas e massas de dados - àquelas que um usuário utilizará no seu dia-a-dia de manipulação do sistema. De acordo com a política de uma organização podem ser utilizadas condições reais de ambiente, interfaces sistêmicas e massas de dados.
**Identifica erros de lógica e de implementação em cada módulo do software, separadamente.
*Comparar o sistema com seus objetivos originais
*Enfatizar a análise do comportamento da estrutura hierárquica de chamadas de módulos
*Fase mais complexa, devido à quantidade de informações envolvidas


'''Teste de Aceitação:'''
*'''Teste de Integração:'''
Fase de Teste em que o teste é conduzido por usuários finais do sistema. Os testes são realizados, geralmente, por um grupo restrito de usuários finais do sistema. Esses simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado. Teste formal conduzido para determinar se um sistema satisfaz ou não seus critérios de aceitação e para permitir ao cliente determinar se aceita ou não o sistema. Validação de um software pelo comprador, pelo usuário ou por terceira parte, com o uso de dados ou cenários especificados ou reais. Pode incluir testes funcionais, de configuração, de recuperação de falhas, de segurança e de desempenho.
**Identifica erros associados às interfaces entre os módulos do software.
*A validação é bem sucedida quando o software funciona de uma maneira razoavelmente esperada pelo cliente . Pressman , 1995
*Expectativas dos clientes documentadas
*Uso da documentação do usuário


'''Teste de Operação:'''
*'''Teste de Sistema:'''
Fase de Teste em que o teste é conduzido pelos administradores do ambiente final onde o sistema ou software entrará em ambiente produtivo. Vale ressaltar que essa fase é aplicável somente a sistemas de informação próprios de uma organização, cujo acesso pode ser feito interna e/ou externamente a essa organização. Nessa fase de teste devem ser feitas simulações para garantir que a entrada em produção do sistema será bem sucedida. Envolve testes de instalação, simulações com backup e restore das bases de dados, etc. Em alguns casos um sistema entrará em produção para substituir outro e é necessário garantir que o novo sistema continuará garantindo o suporte ao negócio.
**Verifica se as funções estão de acordo com a especificação e se todos os elementos do sistema combinam-se adequadamente.


'''Teste de Regressão:'''
*'''Teste de Aceitação:'''
É uma fase de teste aplicável a uma nova versão de software ou à necessidade de se executar um novo ciclo de teste durante o processo de desenvolvimento. Consiste em se aplicar, a cada nova versão do software ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema. Inclui-se nesse contexto a observação de fases e técnicas de teste de acordo com o impacto de alterações provocado pela nova versão ou ciclo de teste. Para efeito de aumento de produtividade e de viabilidade dos testes, é recomendada a utilização de ferramentas de automação de testes, de forma que, sobre a nova versão ou ciclo de teste, todos os testes anteriores possam ser reexecutados com maior agilidade.
**O teste é conduzido por usuários finais do sistema. Os testes são realizados, geralmente, por um grupo restrito de usuários finais do sistema. Esses simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado.
*Teste necessário para assegurar que modificações no programa não causaram novos erros
 
*Baseado em arquivo de 'log'
= Softwares de teste =
 
*Como dito não existe um software que realiza os testes em um código de programa mas sim uma biblioteca de funções de testes.
*As mais usadas são as seguintes:
**'''JUnit (Java)''';
**'''NUnit (C#)''';
**'''CUnit (C/C++)''';
*Todas as apresentadas são open-source, ou seja, gratuitas.
*Além disso, o JUnit é '''GPL''', ou seja, possui '''Licença Pública Geral'''.
*Entretanto, alto custo de '''Planejamento de casos de testes'''.
*E para que sejam usadas essas bibliotecas são nescessários programas de criação de código, como:
**'''Eclipse (Java)''';
**'''Visual Studio (C#)''';
**'''PIC C Compiler (C/C++)''';
 
O Software escolhido pelo grupo é o '''JUnit''' que atua na linguagem '''JAVA''', e sendo utilizado no programa de edição chamado '''Eclipse'''. Este foi escolhido por ser a mais divulgada biblioteca e portanto com as rotinas de testes mais utilizadas em testes em códigos-fontes.


= Benefícios =
= Benefícios =


* Para quem usa, quais as vantagens que terá em usar
* Diminuição de custos;
* O que a pessoa/profissional pode ganhar usando esta ferramenta
* Melhor: serviço, programa, manutenção;
<br>
* Maior confiabilidade e segurança;
* Maior qualidade;
* Software mais preparado;
* Diminuição dos erros humanos;


= Interface gráfica =
= Interface gráfica =


* Inserir uma imagem da interface gráfica do software.
*'''Eclipse:'''
<br>


= Custos =
[[Arquivo:eclipse.jpg]]


* Se software pago: tentar descobrir  valor de aquisição
* Se free: em que condições é fornecido [licença GPL, BSD, ...]
<br>


= Fornecedor =
*'''Resultado do teste realizado pelo JUnit:'''


* Que empresa desenvolveu o software?
[[Arquivo:JUnit.png]]
<br>


= Sistema Operacional =
= Sistema Operacional =


* Roda em quais sistemas operacionais?
*JUnit é acessível em qualquer Sistema Operacional desde que este possua acesso a Java;
<br>
 
 
*Os outros softwares também não dependem do Sistema Operacional, desde que no Sistema Operacional haja plataforma para programação em tal linguagem.
 
=Referências=
 
    http://www.junit.org/
    http://pt.wikipedia.org/wiki/JUnit
    http://junit.wikidot.com/
    http://javafree.uol.com.br/dependencias/tutoriais/testes_junit.pdf
    http://www.eclipse.org/
    http://pt.wikipedia.org/wiki/Teste_de_software
    http://www.macoratti.net/tst_sw1.htm
    http://imasters.com.br/artigo/9572/des_de_software/teste_de_software/
    http://en.wikipedia.org/wiki/Code_coverage
    http://www.wthreex.com/rup/process/modguide/md_tstcs.htm

Edição atual tal como às 02h15min de 30 de março de 2011

Introdução

  • Devido à intensa aplicação de softwares nas diversas áreas da tecnologia a Engenharia de Software vem sendo altamente desenvolvida e as principais ferramentas de auxílio no desenvolvimento desses projetos são as Ferramentas CASE.
  • Uma das Ferramentas CASE mais usadas são as de teste, que como o próprio nome já indica são utilizadas na realização de testes em softwares que estão sendo trabalhados.
  • Os testes em softwares podem ser realizados de maneira manual (o programador reavalia o código manualmente e verifica erros), ou de maneira automatizada (o programa reavalia o código procurando por possíveis erros).

CASE Teste: Explicação

  • As Ferramentas CASE de Teste na realidade não são softwares que realizão testes de código de programas, mas sim bibliotecas com rotinas de testes que são implementadas em softwares de desenvolvimento e a medida em que uma rotina do programa é terminada é possivel executar um teste dessa rotina juntamente com a "compilação" do programa.

  • Estes testes realizados no programa visam melhorar o programa como um todo e varias outras características como:
    • Uma melhor qualidade final do programa;
    • Melhor classificação da qualidade do programa;
    • Melhor produtividade;
    • Aumento do poder de tomada de decisão do programa;
    • Diminuição do tamanho fisico do programa;
    • Redução de custos;

Tipos de Testes

  • Teste Estrutural :
    • A técnica de teste Estrutural, de “Caixa-Branca”, é recomendada para as fases de Teste da Unidade e Teste da Integração e é realizada pelos desenvolvedores do software, que conhecem bem o código-fonte produzido.
  • Teste Funcional:
    • O software a ser testado é abordado como uma “caixa-preta”, ou seja, as linhas de código não são analisadas. São fornecidos dados de entrada e então o teste é executado e a resposta obtida é comparada ao resultado esperado.
  • Teste de Unidade:
    • Identifica erros de lógica e de implementação em cada módulo do software, separadamente.
  • Teste de Integração:
    • Identifica erros associados às interfaces entre os módulos do software.
  • Teste de Sistema:
    • Verifica se as funções estão de acordo com a especificação e se todos os elementos do sistema combinam-se adequadamente.
  • Teste de Aceitação:
    • O teste é conduzido por usuários finais do sistema. Os testes são realizados, geralmente, por um grupo restrito de usuários finais do sistema. Esses simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado.

Softwares de teste

  • Como dito não existe um software que realiza os testes em um código de programa mas sim uma biblioteca de funções de testes.
  • As mais usadas são as seguintes:
    • JUnit (Java);
    • NUnit (C#);
    • CUnit (C/C++);
  • Todas as apresentadas são open-source, ou seja, gratuitas.
  • Além disso, o JUnit é GPL, ou seja, possui Licença Pública Geral.
  • Entretanto, alto custo de Planejamento de casos de testes.
  • E para que sejam usadas essas bibliotecas são nescessários programas de criação de código, como:
    • Eclipse (Java);
    • Visual Studio (C#);
    • PIC C Compiler (C/C++);

O Software escolhido pelo grupo é o JUnit que atua na linguagem JAVA, e sendo utilizado no programa de edição chamado Eclipse. Este foi escolhido por ser a mais divulgada biblioteca e portanto com as rotinas de testes mais utilizadas em testes em códigos-fontes.

Benefícios

  • Diminuição de custos;
  • Melhor: serviço, programa, manutenção;
  • Maior confiabilidade e segurança;
  • Maior qualidade;
  • Software mais preparado;
  • Diminuição dos erros humanos;

Interface gráfica

  • Eclipse:


  • Resultado do teste realizado pelo JUnit:

Sistema Operacional

  • JUnit é acessível em qualquer Sistema Operacional desde que este possua acesso a Java;


  • Os outros softwares também não dependem do Sistema Operacional, desde que no Sistema Operacional haja plataforma para programação em tal linguagem.

Referências

   http://www.junit.org/
   http://pt.wikipedia.org/wiki/JUnit
   http://junit.wikidot.com/
   http://javafree.uol.com.br/dependencias/tutoriais/testes_junit.pdf
   http://www.eclipse.org/
   http://pt.wikipedia.org/wiki/Teste_de_software
   http://www.macoratti.net/tst_sw1.htm
   http://imasters.com.br/artigo/9572/des_de_software/teste_de_software/
   http://en.wikipedia.org/wiki/Code_coverage
   http://www.wthreex.com/rup/process/modguide/md_tstcs.htm