(32 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]]




A tarefa de efetuar testes em software foi considerada secundária por muito tempo. Era vista como um castigo para o programador, um trabalho tedioso e cansativo, uma tarefa onde não se deveria gastar muito tempo e investimentos. O tema esteve em segundo plano e até alguns anos atrás não se encontrava muitos documentos sobre o assunto. Agora mudou um pouco, com a globalização e o acirramento da competição entre as empresas de software esta havendo uma grande preocupação em aprimorar e aperfeiçoar os processos de testes em desenvolvimento de software com metas a reduzir custos com manutenção e em produzir um produto de melhor qualidade.
*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.


Mas a necessidade de garantir a qualidade dos produtos eletrônicos deflagrou a mais recente onda de contratações no setor de terceirização, que movimenta US$ 16 bilhões por ano e emprega cerca de 500 mil pessoas na capital tecnológica indiana.
*Uma das Ferramentas CASE mais usadas são as de teste, que como o próprio nome indica são utilizadas na realização de testes em softwares que estão sendo trabalhados.
Por muito tempo, empresas grandes como a Microsoft realizavam seus testes por conta própria. Mas os analistas dizem que especialistas independentes vêm sendo cada vez mais procurados para garantir a neutralidade do processo e manter os custos sob controle. E hoje em dia existem cursos para pessoas q queiram saber como fazer testes.


É de conhecimento geral entre os analistas de software que nunca se elimina o último bug de um programa, espera-se eliminar todos, um por um, mas nunca consegue se livrar deles. O caso de teste deve definir a saída esperada, de forma a reduzir a interpretação do critério de sucesso. A saída da execução do teste deve ser exaustivamente analisada. Os casos de teste devem verificar não somente as condições inválidas de execução, como também as condições válidas. Outro conceito apresentado é utilizar pessoas e organizações diferentes para a implementação e para a verificação, assim cmo utilizar pessoas com baixo, medio e alto nivel de conhecimento de softuare a fim de verificar diferentes abordagens do programa.
*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).


''Importante diferenciar Teste e depuração:''
= CASE Teste: Explicação =
''Teste:'' mostrar que o software tem erros.
''Depuração:'' encontrar a causa do erro detectado no teste, e projetar e implementar as modificações no programa para correção do erro.


'''Vantagens do uso de ferramentas CASE'''
*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.
*Qualidade no produto final;
[[Arquivo:imagem1.jpg]]
*Produtividade;
*Agilizar o tempo para tomada de decisão;
*Menor quantidade de códigos de programação;
*Melhoria e redução de custos na manutenção;


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


A qualidade da aplicação pode, e normalmente, varia significativamente de sistema para sistema, mas os atributos qualitativos previstos na norma ISO 9126 que são: ''funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade''.
= 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 Estrutural (Caixa Branca):''' Essa técnica trabalha diretamente sobre o código-fonte do componente de software para avaliar aspectos tais como: teste de condição, teste de fluxo de dados, teste de ciclos e teste de caminhos lógicos, exercita as estruturas de dados, entre outros. Os aspectos avaliados nesta técnica de teste dependerão da complexidade e da tecnologia que determinarem à construção do componente de software. Um exemplo bem prático desta técnica de teste é o uso da ferramenta livre '''JUnit''' para desenvolvimento de classes de teste (test cases) para testar classes ou métodos desenvolvidos em Java. Também se enquadram nessa técnica testes manuais ou testes efetuados com apoio de ferramentas. A técnica de teste de Caixa-Branca é recomendada para as fases de Teste da Unidade e Teste da Integração, cuja responsabilidade principal fica a cargo dos desenvolvedores do software, que por sua vez 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 funcional (caixa preta):''' O componente de software a ser testado é abordado como se fosse uma caixa-preta, ou seja, não se considera o comportamento interno do mesmo. Dados de entrada são fornecidos, o teste é executado e o resultado obtido é comparado a um resultado esperado previamente conhecido. A integridade das informações externas é mantida e são atividade complementares aos testes de caixa  branca, com a finalidade de descobrir tipos/classes de erros tais como: funções incorretas ou ausentes, erros de interface, erros de desempenho, erro de inicialização e término, entre outros.
*'''Teste de Unidade:'''  
**Identifica erros de lógica e de implementação em cada módulo do software, separadamente.


'''Teste de Unidade:'''  
*'''Teste de Integração:'''
Também conhecida como Teste Unitário. É a fase do processo de teste em que se testam as menores unidades de software desenvolvidas ( pequenas partes ou unidades do sistema). O universo alvo desse tipo de teste são os métodos dos objetos ou mesmo pequenos trechos de código. Assim, o objetivo é o de encontrar falhas de funcionamento dentro de uma pequena parte do sistema funcionando independentemente do todo.
**Identifica erros associados às interfaces entre os módulos do software.
*Deve ser escrito pelo mesmo programador que desenvolveu o código a ser testado
*Serve como documentação do sistema
*Essencial para análise de desempenho


'''Teste de Integração:'''
*'''Teste de Sistema:'''
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..
**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 Sistema:'''
*'''Teste de Aceitação:'''
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.
**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.
*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:'''
= Softwares de teste =
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.
*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:'''
*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.
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.
*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++)''';


'''Teste de Regressão:'''
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.
É 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.
*Teste necessário para assegurar que modificações no programa não causaram novos erros
*Baseado em arquivo de 'log'


= 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;


ref:
= Interface gráfica =


http://www.macoratti.net/tst_sw1.htm
*'''Eclipse:'''


http://informatica.terra.com.br/interna/0,,OI501471-EI553,00.html
[[Arquivo:eclipse.jpg]]


http://pt.wikipedia.org/wiki/Teste_de_software


http://imasters.com.br/artigo/9572/des_de_software/teste_de_software/
*'''Resultado do teste realizado pelo JUnit:'''


[[Arquivo:JUnit.png]]


<br>
= Sistema Operacional =
 
= Funcionalidades =
 
Descrever as funções do software, ou seja, detalhes do que ele faz.
 
Exemplo:
<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 =
 
* Para quem usa, quais as vantagens que terá em usar
* O que a pessoa/profissional pode ganhar usando esta ferramenta
<br>
 
= Interface gráfica =


* Inserir uma imagem da interface gráfica do software.
*JUnit é acessível em qualquer Sistema Operacional desde que este possua acesso a Java;
<br>


= Custos =


* Se software pago: tentar descobrir  valor de aquisição
*Os outros softwares também não dependem do Sistema Operacional, desde que no Sistema Operacional haja plataforma para programação em tal linguagem.
* Se free: em que condições é fornecido [licença GPL, BSD, ...]
<br>


= Fornecedor =
=Referências=
 
* 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