Sem resumo de edição
 
(6 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
== Introdução ==
== Introdução ==
A concepção e a construção de softwares são feitas por humanos e, por isso, é inevitável que não ocorram erros neste processo. São vários os estágios e pessoas participando neste desenvolvimento e a comunicação humana não é perfeita, gerando problemas no processo.  
A produção de novos softwares é sempre um desafio para os programadores, pois exigem uma concepção muito grande em linguagem de programação e essa deve ser escrita de forma coesa e coerente, para que se evite futuros erros e constrangimento para os usuários desse programa. Por esse motivo existe o teste em softwares, onde o programa é analisado de varias formas, testado  para somente depois ser implementado no mercado. Sua importância é tão grande que existem empresas de softwares que gastam cerca de 30% a 40% de seus investimentos em testes. Em casos de produções de software para situações críticas, como voos de aeronovaes ou reatores nucleares, os investimentos em testes é equivalente em três a cinco vezes o gasto total de todas as outras etapas na elaboração do software[Pressman]. Assim o teste é essencial para a qualidade dos softwares, o que é indispensável para o consumidor.
O teste de software aparece para que estes erros e problemas sejam mínimos. Sua importância é tão grande que existem empresas de softwares que gastam cerca de 30% a 40% de seus investimentos em testes. Em casos de produções de software para situações críticas, como voos de aeronovaes ou reatores nucleares, os investimentos em testes é equivalente em três a cinco vezes o gasto total de todas as outras etapas na elaboração do software [Pressman]. Ele é essencial para a qualidade de Software; é algo indispensável para os consumidores.
Mesmo que o Teste de Software seja essencial para esta qualidade, ainda vale o ditado “Antes prevenir do que remediar.”. Devemos sempre ter em mente de que devemos evitar problemas. Corrigi-los, como dissemos anteriormente, pode custar caro e gastar bastante tempo.  


== Tópicos em Teste de Software ==
== Tópicos em Teste de Software ==
O guia SWEBOK(Guide to the Software Engineering Body of Knowledge) [SWEBOK] define que o “Teste de Software consiste na verificação dinâmica do comportamento do programa em um conjunto finito de casos de teste, apropriadamente escolhidos em um domínio usualmente infinito de execuções, contra o comportamento esperado.”  Ele delimitou em certos tópicos o Teste de Software que facilitam o estudo do engenheiro de software. São seis:


'''''Fundamentos em Teste de Software'''''
O guia SWEBOK(Guide to the Software Engineering Body of Knowledge) [SWEBOK] define que o “Teste de Software consiste na verificação dinâmica do comportamento do programa em um conjunto finito de casos de teste, apropriadamente escolhidos em um domínio usualmente infinito de execuções, contra o comportamento esperado.” Ele delimitou em certos tópicos o Teste de Software que facilitam o estudo do engenheiro de software. São seis:
Fundamentos em Teste de Software.


O primeiro passo para o Teste de Software é conhecer os termos e definir o que deve ser feito. Escolhe-se o melhor critério de teste e os objetivos de teste, observam-se as limitações e utiliza-se da Testabilidade. Além disso, é usado o chamado “Problema de Oráculo”, onde um agente, seja humano, seja mecânico, decide se um programa comportou-se de forma correta ou se houve falhas.
Para testar o software é necessário conhecer o que deve ser definido é o que pode ser analisado. Assim deve-se escolher o método mais acessível e que não prejudique a qualidade do teste e garanta o sucesso do programa. No final e necessário saber se o programa se comportou da forma esperada. Abaixo estão listadas algumas forma e etapas de analisar um software.


'''''Níveis de Teste'''''  
'''''Níveis de Teste'''''


Este é um dos tópicos mais importantes e trata-se das estratégias do engenheiro de software sobre os testes que serão feitos. Podemos dividir os testes em três estágios principais:  
Este é um dos tópicos mais importantes e trata-se das estratégias do engenheiro de software sobre os testes que serão feitos. Podemos dividir os testes em três estágios principais:


-O teste de unidade, no qual o software é analisado por partes separadas. Genericamente, este teste é feito sobre o código do programa e podem estar envolvidos os próprios programadores.
-O teste de unidade, no qual o software é analisado por partes separadas. Nesse teste é analisado a coerência da linguagem, onde são analisados a escrita passo a passo.


-O teste de integração é uma técnica para verificar o funcionamento em conjunto dos componentes do software. É necessário observá-lo como um todo, analisando, por exemplo, se há problemas entre interface e código.
-O teste de integração é uma técnica para verificar o funcionamento em conjunto dos componentes do software. Nesse teste é analisado o coesão do programa, onde deve ter uma ligação entre partes do programa o funcionamento ideal desse.


-O teste de sistema é o último estágio e se concentra no teste da ligação entre o software e componentes externos, como o hardware, o local de operação, ferramentas, etc. Além disso, este estágio verifica os requisitos não-funcionais tais como a segurança, a velocidade, etc.
-O teste de sistema é o último estágio e se concentra no teste da ligação entre o software e componentes externos, como o hardware, o local de operação, ferramentas, etc. Além disso, este estágio verifica os requisitos não-funcionais tais como a segurança, a velocidade, etc.
Linha 23: Linha 21:
Neste tópico ainda são destacados os objetivos do teste. São várias as formas de se testar um software e apresentaremos aqui apenas as que são mais citadas na literatura sem grandes explicações sobre cada uma. Algumas delas são:
Neste tópico ainda são destacados os objetivos do teste. São várias as formas de se testar um software e apresentaremos aqui apenas as que são mais citadas na literatura sem grandes explicações sobre cada uma. Algumas delas são:


-Teste de aceitação ou qualificação: Feito para verificar se o software condiz com o desejo do cliente.
-Teste de aceitação ou qualificação: é analisado se corresponde as expectativas do cliente e se resolve suas problemáticas .  
-Teste de instalação: Como o nome sugere. São testados os procedimentos de instalação, além dos requisitos para tal.
-Teste de instalação: são testados nessa etapa a forma de instalação do programa e se ira corresponder adequadamente com o hardware.  
-Teste Alpha e Beta: Os famosos testes Alpha e Beta são distribuições do software antes de seu lançamento para pequenos grupo, seja internamente à empresa(teste Alpha) ou externamente à empresa(teste Beta).
-Teste Alpha e Beta: Os famosos testes Alpha e Beta são distribuições do software antes de seu lançamento para pequenos grupo, seja internamente à empresa(teste Alpha) ou externamente à empresa(teste Beta).


A lista é extensa, porém todos os títulos de testes são auto-explicativos, como: Teste de Performance, Teste de Segurança, Teste de Estresse(software em máxima operação), Teste de Recuperação, Teste de Configuração, Teste de Interatividade, etc.
A lista é extensa, porém todos os títulos de testes são auto-explicativos, como: Teste de Performance, Teste de Segurança, Teste de Estresse(software em máxima operação), Teste de Recuperação, Teste de Configuração, Teste de Interatividade, etc.  


'''''Técnicas de Teste'''''  
'''''Técnicas de Teste'''''


Outro tópico importantíssimo, as técnicas de teste tentam encontrar os erros do programa. Existem várias maneiras de se alcançar estes objetivos. No entanto, não existe uma classificação exata, não são homogêneas na literatura. De qualquer forma, existem algumas técnicas que são padrões e serão explicados mais detalhadamente na seção “Casos de teste”. A base pode vir desde a intuição do engenheiro a técnicas de código.
Outro tópico importantíssimo, as técnicas de teste tentam encontrar os erros do programa. Existem várias maneiras de se alcançar estes objetivos. No entanto, não existe uma classificação exata, não são homogêneas na literatura. De qualquer forma, existem algumas técnicas que são padrões e serão explicados mais detalhadamente na seção “Casos de teste”. A base pode vir desde a intuição do engenheiro a técnicas de código.


''''' Medidas de Teste'''''  
'''''Medidas de Teste'''''


Enquanto todos os testes são feitos é necessário criar-se uma base de dados quantitativos e qualitativos do processo. O programa está sendo corrigido? O planejamento para o teste está funcionando? Quais são os defeitos e erros da plataforma? A técnica usada está funcionando ou deve-se escolher uma nova? Estas perguntas são todas respondidas com as Medidas de Teste. Análises são feitas para monitorar os testes de acordo com a aceitação do cliente, o tempo disponível de produção e também sobre o investimento.
Enquanto todos os testes são feitos é necessário criar-se uma base de dados quantitativos e qualitativos do processo. O programa está sendo corrigido? O planejamento para o teste está funcionando? Quais são os defeitos e erros da plataforma? A técnica usada está funcionando ou deve-se escolher uma nova? Estas perguntas são todas respondidas com as Medidas de Teste. Análises são feitas para monitorar os testes de acordo com a aceitação do cliente, o tempo disponível de produção e também sobre o investimento.


''''' Processo de Teste'''''
'''''Processo de Teste'''''


Seguindo as palavras do último tópico, os testes devem ser organizados corretamente e bem planejados para que os investimentos, sejam de tempo, sejam financeiros, tenham sido compridos. Para isso, o Processo de Teste é feito. Nele são feitos guias de teste, documentação dos testes e da produção, gerenciamento de testes, custos e lucros, planejamento, etc. Enfim, o Processo de Teste é a parte empreendedora do teste de software.
Seguindo as palavras do último tópico, os testes devem ser organizados corretamente e bem planejados para que os investimentos, sejam de tempo, sejam financeiros, tenham sido compridos. Para isso, o Processo de Teste é feito. Nele são feitos guias de teste, documentação dos testes e da produção, gerenciamento de testes, custos e lucros, planejamento, etc. Enfim, o Processo de Teste é a parte empreendedora do teste de software.


''''' Ferramentas de Teste'''''
'''''Ferramentas de Teste'''''


Como os testes demandam tempo e grande trabalho, devem ser escolhidas ferramentas que auxiliem os engenheiros no desenvolvimento. A escolha destas afeta diretamente na eficiência e na efetividade dos testes. Existem algumas mais conhecidas como geradores de teste, ferramentas de repetição, Oráculo, traços, regressões, etc.
Como os testes demandam tempo e grande trabalho, devem ser escolhidas ferramentas que auxiliem os engenheiros no desenvolvimento. A escolha destas afeta diretamente na eficiência e na efetividade dos testes. Existem algumas mais conhecidas como geradores de teste, ferramentas de repetição, Oráculo, traços, regressões, etc.


== Testabilidade ==
== Testabilidade ==
Apesar de estranho, diz-se que o melhor teste é aquele que encontra um erro ainda não descoberto. É comum imaginarmos que o melhor seria não encontrar qualquer defeito. No entanto, o ser humano não consegue ser um programador perfeito e softwares caem facilmente em erros. Então, um dos caminhos para o teste é desmembrar a plataforma; tentar produzir erros e assim corrigi-los. É importante também que os testes sejam adequados. Ou seja, os testadores devem conseguir fazê-los em um tempo possível à desenvolvedora e com os recursos disponíveis.  
Na testabilidade em softwares buscam-se erros cometidos pelos desenvolvedores para que esses sejam corrigidos. Para isso é necessário ter programadores experientes, que já possuam uma grande carga horária nesse ramo e sabiam onde a maioria dos erros em softwares ocorrem, e críticos, pois esses analisam o programa com um olhar critico em busca de erros. Para conseguir alcançar o máximo de desempenho no Teste de Software definiu-se a testabilidade de software, que nada é mais é que a facilidade que ele poderá ser testado. Para isso, James Bach divide a testabilidade em sete atributos que facilitam a configuração do software para testes: Operabilidade, Observabilidade, Controlabilidade, Decomponibilidade, Simplicidade, Estabilidade e Compreensibilidade.
Para conseguir alcançar o máximo de desempenho no Teste de Software definiu-se a testabilidade de software, que nada é mais é que a facilidade que ele poderá ser testado. Para isso, James Bach divide a testabilidade em sete atributos que facilitam a configuração do software para testes: Operabilidade, Observabilidade, Controlabilidade, Decomponibilidade, Simplicidade, Estabilidade e Compreensibilidade.  
 
É bom lembrarmos que, quando criando o software, o engenheiro já deve imaginar o que pode ser testado para que se encontrem erros. Além disso, é mais adequado que não seja esta mesma pessoa quem teste o programa.
Contudo, é necessário ressaltar que a testabilidade em programas ocorram de forma acessível, pois essa gera muitos gastos com uma equipe qualificada, e dentro do prazo estimulado pelo cliente, pois a maioria desses são grandes empresas que necessitam de um software de qualidade para resolverem os problemas decorrentes de forma mais pratica e eficaz. Assim as técnicas estão mais aprimoradas e engenheiros programadores estao se especializando nessa área.


== Casos de Teste ==
== Casos de Teste ==
Para se definir os casos de Teste de Software foram definidas duas maneiras básicas: Teste caixa-preta e Teste caixa-branca. O último tipo é feito através da lógica do software. Tomam-se os caminhos a serem percorridos na execução e tenta-se encontrar erros. o primeiro é feito na interface. São verificados se as funções funcionam corretamente. Se as entradas são enviadas de maneira correta, se não há falhas entre software e fonte externa e se a saída é produzida como se desejava.
Para se definir os casos de Teste de Software foram definidas duas maneiras básicas: Teste caixa-preta e Teste caixa-branca. O último tipo é feito através da lógica do software.  
Para os casos de Teste caixa-branca podemos citar o Teste de caminho básico, no qual se usa a Teoria dos Grafos para se encontrar o melhor caminho dentro do código para se encontrar erros e não cair em testes repetitivos.
 
para o Teste caixa-preta podemos citar a análise de valor-limite que se baseia em testes que exercem valores limítrofes e pode ser usado tanto em casos para entrada quanto para saída.
O primeiro teste é feito analisando a entrada e saídas de dados. Normalmente o programador insere um dado esperado a saída de um resultado já esperando. Contudo, a quantidade de possibilidades de entrada de dados são quase infinitas, assim o programador analisa apenas um subconjunto, normalmente nos limites inferiores e superiores, para maximizar a chance de sucesso do teste.
 
Para os casos de Teste caixa-branca a analise acontece na linguagem do programa, são analisados casos de coesão e coerência, se a conexão com o banco de dados esta correta, se a ligação com as bibliotecas esta correta, se a sintaxe da linguagem esta correta, entre outros casos decorrente de erros do programador.
 
Contudo na maioria dos casos os dois teste são feitos, para minimizar as chances de erro no software e futuras frustrações com o programa desenvolvido.


== Bibliografia ==
== Bibliografia ==
PRESSMAN, Roger S. Engenharia de Software. 5. ed. Rio de Janeiro: Mcgraw Hill, 2002.  
PRESSMAN, Roger S. Engenharia de Software. 5. ed. Rio de Janeiro: Mcgraw Hill, 2002.  
https://computer.centraldesktop.com/home/viewfile?guid=36116515206BF043A33CB08E7EA5717ED2D5C8C87&id=21812001
https://computer.centraldesktop.com/home/viewfile?guid=36116515206BF043A33CB08E7EA5717ED2D5C8C87&id=21812001

Edição atual tal como às 19h25min de 21 de novembro de 2014

Introdução

A produção de novos softwares é sempre um desafio para os programadores, pois exigem uma concepção muito grande em linguagem de programação e essa deve ser escrita de forma coesa e coerente, para que se evite futuros erros e constrangimento para os usuários desse programa. Por esse motivo existe o teste em softwares, onde o programa é analisado de varias formas, testado para somente depois ser implementado no mercado. Sua importância é tão grande que existem empresas de softwares que gastam cerca de 30% a 40% de seus investimentos em testes. Em casos de produções de software para situações críticas, como voos de aeronovaes ou reatores nucleares, os investimentos em testes é equivalente em três a cinco vezes o gasto total de todas as outras etapas na elaboração do software[Pressman]. Assim o teste é essencial para a qualidade dos softwares, o que é indispensável para o consumidor.

Tópicos em Teste de Software

O guia SWEBOK(Guide to the Software Engineering Body of Knowledge) [SWEBOK] define que o “Teste de Software consiste na verificação dinâmica do comportamento do programa em um conjunto finito de casos de teste, apropriadamente escolhidos em um domínio usualmente infinito de execuções, contra o comportamento esperado.” Ele delimitou em certos tópicos o Teste de Software que facilitam o estudo do engenheiro de software. São seis: Fundamentos em Teste de Software.

Para testar o software é necessário conhecer o que deve ser definido é o que pode ser analisado. Assim deve-se escolher o método mais acessível e que não prejudique a qualidade do teste e garanta o sucesso do programa. No final e necessário saber se o programa se comportou da forma esperada. Abaixo estão listadas algumas forma e etapas de analisar um software.

Níveis de Teste

Este é um dos tópicos mais importantes e trata-se das estratégias do engenheiro de software sobre os testes que serão feitos. Podemos dividir os testes em três estágios principais:

-O teste de unidade, no qual o software é analisado por partes separadas. Nesse teste é analisado a coerência da linguagem, onde são analisados a escrita passo a passo.

-O teste de integração é uma técnica para verificar o funcionamento em conjunto dos componentes do software. Nesse teste é analisado o coesão do programa, onde deve ter uma ligação entre partes do programa o funcionamento ideal desse.

-O teste de sistema é o último estágio e se concentra no teste da ligação entre o software e componentes externos, como o hardware, o local de operação, ferramentas, etc. Além disso, este estágio verifica os requisitos não-funcionais tais como a segurança, a velocidade, etc.

Neste tópico ainda são destacados os objetivos do teste. São várias as formas de se testar um software e apresentaremos aqui apenas as que são mais citadas na literatura sem grandes explicações sobre cada uma. Algumas delas são:

-Teste de aceitação ou qualificação: é analisado se corresponde as expectativas do cliente e se resolve suas problemáticas . -Teste de instalação: são testados nessa etapa a forma de instalação do programa e se ira corresponder adequadamente com o hardware. -Teste Alpha e Beta: Os famosos testes Alpha e Beta são distribuições do software antes de seu lançamento para pequenos grupo, seja internamente à empresa(teste Alpha) ou externamente à empresa(teste Beta).

A lista é extensa, porém todos os títulos de testes são auto-explicativos, como: Teste de Performance, Teste de Segurança, Teste de Estresse(software em máxima operação), Teste de Recuperação, Teste de Configuração, Teste de Interatividade, etc.

Técnicas de Teste

Outro tópico importantíssimo, as técnicas de teste tentam encontrar os erros do programa. Existem várias maneiras de se alcançar estes objetivos. No entanto, não existe uma classificação exata, não são homogêneas na literatura. De qualquer forma, existem algumas técnicas que são padrões e serão explicados mais detalhadamente na seção “Casos de teste”. A base pode vir desde a intuição do engenheiro a técnicas de código.

Medidas de Teste

Enquanto todos os testes são feitos é necessário criar-se uma base de dados quantitativos e qualitativos do processo. O programa está sendo corrigido? O planejamento para o teste está funcionando? Quais são os defeitos e erros da plataforma? A técnica usada está funcionando ou deve-se escolher uma nova? Estas perguntas são todas respondidas com as Medidas de Teste. Análises são feitas para monitorar os testes de acordo com a aceitação do cliente, o tempo disponível de produção e também sobre o investimento.

Processo de Teste

Seguindo as palavras do último tópico, os testes devem ser organizados corretamente e bem planejados para que os investimentos, sejam de tempo, sejam financeiros, tenham sido compridos. Para isso, o Processo de Teste é feito. Nele são feitos guias de teste, documentação dos testes e da produção, gerenciamento de testes, custos e lucros, planejamento, etc. Enfim, o Processo de Teste é a parte empreendedora do teste de software.

Ferramentas de Teste

Como os testes demandam tempo e grande trabalho, devem ser escolhidas ferramentas que auxiliem os engenheiros no desenvolvimento. A escolha destas afeta diretamente na eficiência e na efetividade dos testes. Existem algumas mais conhecidas como geradores de teste, ferramentas de repetição, Oráculo, traços, regressões, etc.

Testabilidade

Na testabilidade em softwares buscam-se erros cometidos pelos desenvolvedores para que esses sejam corrigidos. Para isso é necessário ter programadores experientes, que já possuam uma grande carga horária nesse ramo e sabiam onde a maioria dos erros em softwares ocorrem, e críticos, pois esses analisam o programa com um olhar critico em busca de erros. Para conseguir alcançar o máximo de desempenho no Teste de Software definiu-se a testabilidade de software, que nada é mais é que a facilidade que ele poderá ser testado. Para isso, James Bach divide a testabilidade em sete atributos que facilitam a configuração do software para testes: Operabilidade, Observabilidade, Controlabilidade, Decomponibilidade, Simplicidade, Estabilidade e Compreensibilidade.

Contudo, é necessário ressaltar que a testabilidade em programas ocorram de forma acessível, pois essa gera muitos gastos com uma equipe qualificada, e dentro do prazo estimulado pelo cliente, pois a maioria desses são grandes empresas que necessitam de um software de qualidade para resolverem os problemas decorrentes de forma mais pratica e eficaz. Assim as técnicas estão mais aprimoradas e engenheiros programadores estao se especializando nessa área.

Casos de Teste

Para se definir os casos de Teste de Software foram definidas duas maneiras básicas: Teste caixa-preta e Teste caixa-branca. O último tipo é feito através da lógica do software.

O primeiro teste é feito analisando a entrada e saídas de dados. Normalmente o programador insere um dado esperado a saída de um resultado já esperando. Contudo, a quantidade de possibilidades de entrada de dados são quase infinitas, assim o programador analisa apenas um subconjunto, normalmente nos limites inferiores e superiores, para maximizar a chance de sucesso do teste.

Para os casos de Teste caixa-branca a analise acontece na linguagem do programa, são analisados casos de coesão e coerência, se a conexão com o banco de dados esta correta, se a ligação com as bibliotecas esta correta, se a sintaxe da linguagem esta correta, entre outros casos decorrente de erros do programador.

Contudo na maioria dos casos os dois teste são feitos, para minimizar as chances de erro no software e futuras frustrações com o programa desenvolvido.

Bibliografia

PRESSMAN, Roger S. Engenharia de Software. 5. ed. Rio de Janeiro: Mcgraw Hill, 2002.

https://computer.centraldesktop.com/home/viewfile?guid=36116515206BF043A33CB08E7EA5717ED2D5C8C87&id=21812001