• Nenhum resultado encontrado

T11 - Teste de Software

N/A
N/A
Protected

Academic year: 2021

Share "T11 - Teste de Software"

Copied!
5
0
0

Texto

(1)

PROCESSOS DA ENGENHARIA DE SOFTWARE

2

11 3 Técnicas de Teste de Software: Fundamentos do teste de software. -Alfa, Beta, Caixa branca e Caixa-preta

TÓPICO 11 Técnicas de Teste de Software: Fundamentos do teste de software.

-Alfa, Beta, Caixa branca e Caixa-preta

Teste de Software

É um processo da investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. Isto inclui, mas no limitado ao processo de executar um programa ou uma aplicação com a intenção de encontrar erros.

A validação do software tem como objetivo mostrar que um sistema encontra-se conforme sua especificação e satisfaz os requisitos do cliente. Envolve processos de verificação, reviso e testes do sistema.

O processo de teste voltado para o alcance de um nível de qualidade de produto, que durante o processo de desenvolvimento, o software muda conforme avanço das atividades, requisitos, protótipos, modelo de dados lógico, modelo de dados físico, código-fonte, módulos funcionais e finalmente um sistema. O objetivo principal desta tarefa encontrar o número máximo de erros dispondo do mínimo de esforço, ou seja, mostrar aos que desenvolvem se os resultados estão ou no de acordo com os padres estabelecidos.

H diversos objetivos para a realização de testes: Encontrar falhas que comprometam a confiabilidade Encontrar diferenças da especificação original Analisar se o sistema está adequado ao uso Analisar se o desempenho do sistema satisfatório Encontrar problemas nas interfaces com outros sistemas Encontrar problemas nas interfaces com equipamentos

Pode se pensar que seja obrigação exclusiva dos programadores, garantir que todos os programas funcionem corretamente. Infelizmente esta no a realidade. Isso porque os programas possuem um grande número de estados contendo fórmulas complexas, atividades e algoritmos. O tamanho do projeto a ser desenvolvido e a quantidade de pessoas envolvidas no processo aumentam ainda mais a complexidade. Assim, a presença de falhas inevitável. Por exemplo, quando um usuário da linha de produto efetua consultas no sistema das quais só a gerência deveria ter acesso.

Esse tipo de falha pode ser originado por diversos motivos, como os listados abaixo:

?

A especificação pode estar errada ou incompleta.

?

A especificação pode conter requisitos impossíveis de serem implementados, devido a limitações de hardware ou software.

?

Talvez a base de dados esteja organizada de forma que no seja permitido distinguir os tipos de usuário.

?

Pode ser que haja um erro no algoritmo de controle dos usuários.

?

Pode ser que haja erros no código, o algoritmo pode estar implementado de forma errada ou incompleta. Todos os processos de teste se baseiam em:

(2)

Determinar os resultados esperados dos casos de teste Rever os casos de teste e seus resultados esperados Comparar os resultados do teste com o resultado esperado

Explicar os problemas encontrados de forma que possam ser corrigidos no sistema EXEMPLOS DE TIPOS DE FALHAS:

Especificação dos requisitos

Especificação do projeto e da arquitetura Projeto

Interface com o usuário

Interface com outros sistemas ou hardwares Interfaces entre módulos e classes

Modelos de dados Comunicação de dados Validação de dados

Sincronização em processos distribuídos Conformidade com padres

Código Lógica Cálculo Manipulação de dados Implementação de interfaces Aspectos temporais

Documentação incompleta ou incompreensível ou inconsistente

0

Técnicas de Teste

Atualmente há muitas maneiras de se testar um software. Mesmo assim, há técnicas que sempre foram muito utilizadas em sistemas desenvolvidos sobre linguagens estruturadas Abaixo estão descritas as 2 técnicas mais conhecidas.

Caixa Branca

Técnica de teste que avalia o comportamento interno do componente de software. Essa técnica trabalha diretamente sobre o código-fonte do componente de software para avaliar aspetos tais como: teste de condição, teste de fluxo de dados, teste de ciclos e teste de caminhos lógicos. Os aspetos avaliados nesta técnica de teste dependerão da complexidade e da tecnologia que determinarem a construção do componente de software. O desenvolvedor responsável pelos testes tem acesso ao código fonte da aplicação e pode construir códigos para efetuar a ligação de bibliotecas e componentes. 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 para verificação de aderência a boas práticas

de codificação, reconhecidas pelo mercado de software. 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.

Caixa-Preta

Técnica de teste em que 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 (código-fonte). Dados de entrada são fornecidos, o teste é executado e o resultado obtido é comparado a um resultado esperado previamente conhecido. O componente de software a ser testado pode ser um método, uma função interna, um programa, um componente, um conjunto de programas ou componentes ou mesmo uma funcionalidade. A

(3)

técnica de teste de Caixa-preta é aplicável a todas as fases de teste: teste de unidade (ou teste unitário), teste de integração, teste de sistema e teste de aceitação.

0

Fases de Teste

0

0

Teste de Unidade

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). Os alvos desse tipo de teste são os métodos dos objetos ou mesmo pequenos trechos de código. Assim, o objetivo é encontrar falhas de funcionamento dentro de uma pequena parte do sistema funcionando independentemente do todo. Cada parte do programa é isolada e testada afim de mostrar que funciona individualmente.

O teste de unidade não detecta todos os erros de um programa, como por exemplo, erros de integração e problemas de performance. Além disso, pode não ser fácil antecipar todos os casos especiais de input que a “unidade” do programa pode vir a receber. Esse tipo de teste é eficaz apenas se for usado conjuntamente com outras atividades de teste do software.

Teste de Integração

Na fase de teste de integração, o objetivo é encontrar falhas provenientes da integração interna das unidades 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, 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 poderem ser testadas mesmo antes de o sistema estar plenamente construído.

Teste de Sistema

Na fase de Teste de Sistema o objetivo é executar o sistema sob o ponto de vista do 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 sistemáticas e massas de dados.

Teste de Aceitaçã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. Estes simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado.

É um 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. É utilizado para a validação de um software pelo comprador, pelo usuário ou por terceira parte, com o uso de dados ou cenários específicos ou reais. Pode incluir testes funcionais, de configuração, de recuperação de falhas, de segurança e de desempenho.

O teste de aceitação pode de dar em dois momentos:

?

Teste Alfa - É levado a efeito por um cliente nas instalações do desenvolvedor. O software é usado num ambiente controlado com o desenvolvedor "olhando sobre os ombros" do usuário e registrando erros e problemas de uso.

(4)

?

Teste Beta - é realizado nas instalações do cliente pelo usuário final do software. O desenvolvedor não está presente. O cliente registra os problemas (reais ou imaginários) que são encontrados e relata-os ao desenvolvedor a intervalos regulares.

Teste de Regressão

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 nesInclui-se contexto a obInclui-servação de faInclui-ses 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.

0

Ferramentas de Teste

As ferramentas fornecem apoio automatizado às atividades de teste. Dão suporte ao processo de melhoria contínua dos processos para aumentar a qualidade do processo de desenvolvimento e, conseqüentemente, aumentar a qualidade do produto final, suportando todas as atividades relacionadas ao ciclo de vida de desenvolvimento de software: da concepção à implantação.

Exemplos de ferramentas

Gesto de projetos

ProjectKoach

http://www.projectkoach.com/

php-collab

http://www.php-collab.org

GanttProject

http://ganttproject.biz/

]project-open[

http://www.project-open.com/

OpenWorkbench

http://www.openworkbench.org/

XPlanner

http://www.xplanner.org/

WebCollab

http://webcollab.sourceforge.net/

Mindquarry

http://www.mindquarry.com/

Testes de

performance

OpenSTA

http://www.opensta.org/

JMeter

http://jakarta.apache.org/jmeter/index.html

WEBLOAD

http://www.WEBload.org/

The Grinder

http://grinder.sourceforge.net/

Gesto de testes

TestLink

http://www.teamst.org/

QaManager

http://qamanager.sourceforge.net/

rth

http://www.rth-is-quality.com

TestMaster

http://testmaster.sourceforge.net/

Testitool

http://majordojo.com/testitool/

Test Case Web (TCW)

http://tcw.sourceforge.net/

Testopia

http://www.mozilla.org/projects/testopia/

Gesto de defeitos

Mantis

http://www.mantisbt.org/

Bugzilla

http://www.bugzilla.org/

Scarab

http://scarab.tigris.org/

BugNET

http://www.bugnetproject.com/

TRAC http://trac.edgewall.org/

Gesto de

Requisitos

OSRMT

http://www.osrmt.com/

Tiger PRO

http://www.seecforum.unisa.edu.au/SEECTools.html

(5)

REM (REquisite Management)

http://www.lsi.us.es/descargas/descarga_programas.php?id=3

TRUC

http://sourceforge.net/projects/truc

Plandora

http://plandora.sourceforge.net/

Jeremia

http://jeremia.sourceforge.net/

Testes

Funcionais

Selenium (WEB)

http://www.openqa.org/selenium/

actiWATE (WEB)

http://www.actiwate.com/

Marathon (Java Swing)

http://www.marathontesting.com/marathon/

Watir (WEB)

http://wtr.rubyforge.org/

Canoo WEBTest (WEB)

http://WEBtest.canoo.com/

Apodora (WEB)

http://www.apodora.org/

Abbot (Java Swing)

http://abbot.sourceforge.net

SoapUI (WEBServices)

http://www.soapui.org/

SOAPSonar Personal Edition (WEBServices)

http://www.crosschecknet.com/

LISA WS-Testing (WEBServices)

http://www.itko.com/site/products/lisa/ws_testing.jsp

Squish for KDE (Linux)

http://www.froglogic.com

SharpRobo (WinForm .NET)

http://confluence.public.thoughtworks.org/display/SHRO/Home

FitNesse

http://fitnesse.org/

Controle de

verses

TortoiseCVS

http://www.tortoisecvs.org/

WinCVS

http://www.wincvs.org/

Subversion

http://subversion.tigris.org/

darcs

http://darcs.net/

http://www.linhadecodigo.com.br/EBook.aspx?id=2951

Referências

Documentos relacionados

O diagnóstico da arquitetura institucional compreendeu uma análise dos convênios e contratos firmados pela Fundação SEADE e pelo DIEESE com as

No Amapá as comunidades tradicionais conquistaram a força política para a criação pelo governo estadual do Programa de Desenvolvimento Sustentável do Amapá (PDSA), um programa

Traçar um perfil do conteúdo veiculado nas manhãs brasileiras identificando categorias e gêneros utilizados por estes cinco importantes canais e suas afiliadas locais, é

principais experiências profissionais durante os últimos 5 anos, indicando: nome e setor de atividade da empresa, cargo e se a empresa integra (i) o grupo econômico do

No dia 29 de maio (quinta-feira), às 21 horas, a ACBJ realiza o Concerto Comemorativo do Centenário da Imigração Japonesa no Brasil, com a Orquestra Aliança Cultural

Indicadores e Metas de Desempenho Prioritários Importância para o cliente Oportunidade Competitiva Direção Estratégica Requisitos prioritários para melhoria Processos

Mova o prendedor de amostras até a posição limite superior e trave a roda de mão. Retire a lâmina ou a navalha do porta-navalha e insira no recipiente para lâminas usadas na base

Em todas as vezes, nossos olhos devem ser fixados, não em uma promessa apenas, mas sobre Ele, o único fundamento da nossa esperança, e em e através de quem sozinho todas as