(29 revisões intermediárias por 3 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]]


O exercício de efetuar testes em softwares durante muitos anos foi considerada secundaria, pois era um trabalho tedioso e os programadores não há viam com muito interesse, pois o mercado não exigia. O tema de efetuar testes em programas surgiu graças a globalização e há necessidade de o mercado produzir softwares melhores e sem erros.
Essa necessidade levou a produzir melhores produtos e abriu novos mercados, tal como o mercado Indiano, que graças a terceirização feita por empresas do primeiro mundo, como a Microsoft, propiciou a cidade de Bangolore a tornar-se o principal polo de programadores responsáveis por testes, gerando uma movimentação de 16 milhões por ano e gerando 500 mil empregos.
Há muitas vantagens no uso de ferramentas CASE de testes, tais como uma melhor qualidade final do programa, melhor produtividade, aumento do poder de tomada de decisão do programa, diminuição da quantidade de linhas de código e redução dos custos de manutenção do mesmo. É importante também diferenciarmos, teste de depuração, pois o teste tem o intuito de mostrar os erros do software enquanto a depuração pega os resultados do teste afim de corrigi-los.


*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.


TESTES
*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 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.  
*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 =


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.  
*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.
[[Arquivo:imagem1.jpg]]


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.
*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;


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.
= 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:'''
'''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++)''';


ref:
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.


http://www.macoratti.net/tst_sw1.htm
= Benefícios =


http://informatica.terra.com.br/interna/0,,OI501471-EI553,00.html
* 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;


http://pt.wikipedia.org/wiki/Teste_de_software
= Interface gráfica =


http://imasters.com.br/artigo/9572/des_de_software/teste_de_software/
*'''Eclipse:'''


[[Arquivo:eclipse.jpg]]


<br>


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


Descrever as funções do software, ou seja, detalhes do que ele faz.
[[Arquivo:JUnit.png]]


Exemplo:
= Sistema Operacional =
<br>
* 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>


= Benefícios =
*JUnit é acessível em qualquer Sistema Operacional desde que este possua acesso a Java;


* Para quem usa, quais as vantagens que terá em usar
* O que a pessoa/profissional pode ganhar usando esta ferramenta
<br>


= Interface gráfica =
*Os outros softwares também não dependem do Sistema Operacional, desde que no Sistema Operacional haja plataforma para programação em tal linguagem.


* Inserir uma imagem da interface gráfica do software.
=Referências=
<br>
 
= Custos =
 
* Se software pago: tentar descobrir  valor de aquisição
* Se free: em que condições é fornecido [licença GPL, BSD, ...]
<br>
 
= Fornecedor =
 
* Que empresa desenvolveu o software?
<br>
 
= Sistema Operacional =


* Roda em quais sistemas operacionais?
    http://www.junit.org/
<br>
    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