apostila (2)
57 pág.

apostila (2)


DisciplinaEx Metologia Cientifica39 materiais188 seguidores
Pré-visualização18 páginas
de teste automatizado com o JUnit 4
Fonte: http://www.ime.usp.br/~kon/papers/EngSoftMagazine-IntroducaoTestes.pdf
Testes de Software
22
deve se limitar apenas a fazer o trabalho repetitivo e cha-
to. Os casos de testes manuais foram criados num con-
texto em que os testes seriam executados manualmente. 
É muito provável que estes casos de testes manuais não 
sejam muito eficientes em um contexto em que os testes 
serão executados automaticamente.
Na prática, a automação de 100% dos testes manuais 
nem sempre é a melhor estratégia. A automação de testes 
é pouco eficaz quando os testes são complexos e exigem 
interações inter-sistemas ou validações subjetivas. Além 
disso, muitas vezes o custo e o tempo para automatizar os 
testes de um projeto são maiores que o custo e o tempo 
do próprio projeto de desenvolvimento. 
Segundo Lages (2010), quando se deseja aplicar a au-
tomação na etapa de execução de testes das funcionali-
dades de um sistema, vários fatores devem ser avaliados 
para se identificar se é vantagem ou não se automatizarem 
os testes. A automação de testes deve ser feita somente 
quando uma rotina específica de teste for executada vá-
rias vezes, pois a automação também demanda tempo de 
criação e manutenção de scripts. Lages ressalta que \u201c70% 
dos testes do mercado são manuais. O teste automatiza-
do serve basicamente para fazer Teste de Regressão. O 
que acha erro mesmo é o teste manual\u201d.
Existem diversos tipos de testes para detectar a ine-
ficiência de um sistema, e antes de muitos deles serem 
automatizados, são executados por várias vezes em modo 
manual, para depois de comprovado sucesso na sua utili-
zação serem automatizados. Alguns deles são:
\u2022 Teste de desempenho: teste que determina o 
desempenho de um sistema. As ferramentas que 
apoiam os testes de desempenho possuem duas fa-
cilidades: geração de carga e mensuração das tran-
sações do teste. A geração de carga pode simular 
múltiplos usuários ou grandes volumes de dados de 
entrada. Durante a execução, os tempos de respos-
ta para determinadas transações são medidos e re-
gistrados. As ferramentas de teste de desempenho, 
normalmente, fornecem relatórios baseados nos 
registros dos testes e gráficos da carga em função 
dos tempos de resposta. 
\u2022 Teste de carga: teste que mede o comportamento 
de um sistema com uma carga crescente, como por 
exemplo, número de usuários paralelos e/ou nú-
meros de transações, para determinar qual a carga 
que ele pode suportar. Estes testes determinam, 
também, o tempo de resposta de transações e pro-
cessos de negócios com o intuito de determinar se 
a aplicação está de acordo com as expectativas do-
cumentadas e determinadas pelo cliente.
\u2022 Teste de estresse: teste que avalia a execução 
de um sistema ou componente no limite (ou aci-
ma dele) dos requisitos especificados. Estes testes 
determinam a carga necessária para que o sistema 
falhe e avalia seu comportamento em condições 
anormais. Podem incluir, além de cargas de traba-
lho extremas, insuficiência de memória e recursos 
de processamento limitados. Avaliam também a 
capacidade que o software tem de se recuperar de 
uma falha mantendo a integridade dos dados.
\u2022 Teste de longevidade: neste teste é avaliado o 
funcionamento do sistema em médio e longo pra-
zo. Seu objetivo é detectar influências externas ao 
software, principalmente de hardware ou sistema 
operacional. Fatores como grandes volumes arma-
zenados, tamanho ou limpeza do cache podem ser 
decisivos na eficiência em médio e longo prazo de 
um software. 
\u2022 Teste de desempenho: muitos problemas de 
desempenho que podem surgir após o sistema 
ser submetido à carga extrema durante um longo 
período de tempo, só podem ser detectados num 
ambiente controlado. Existem tipos de testes de 
desempenho, como os testes de configuração, que 
da mesma forma que o teste de longevidade, visam 
identificar configurações otimizadas de hardware e 
software para a correta execução da aplicação, e os 
testes de contenção, que avaliam a forma como o 
sistema gerencia demandas para um mesmo recur-
so computacional (memória, dados, processador, 
etc.).
\u2022 Teste de Segurança: os testes de segurança nor-
malmente requerem uma infraestrutura similar ao 
Testes de Software
23
do ambiente de produção, pois se espera que este 
exponha as vulnerabilidades do sistema no am-
biente adequado. Garantem a confidencialidade, 
Integridade e disponibilidade das informações. Um 
dos problemas relacionados a este teste é o buffer 
overflow, ou a necessidade maior de capacidade de 
armazenamento.
\u2022 Teste de correção: os testes de correção (unida-
de, integração, aceitação, etc) não necessitam das 
mesmas dependências.Têm como objetivo revelar 
a presença de erros, e descobrem o maior número 
possível de erros.
Implementação dos Testes
Uma vez que o software tenha sido elaborado é ne-
cessário fazer a implementação de testes manuais ou 
automatizados. Isto pode exigir conhecimento multidisci-
plinar, ou seja, conhecimento de programação, conheci-
mento de testes de software, conhecimento de linguagem 
de negócio e conhecimento de ferramentas específicas. 
Portanto, o profissional responsável pelos testes automa-
tizados normalmente é diferenciado.
Segundo Schach (2007), \u201cimplementação é o processo 
de converter o projeto detalhado em código. Quando isso 
é feito por um único indivíduo, o processo é relativamente 
bem compreendido. Porém, hoje em dia, a maioria dos 
produtos são muito grandes para serem implementados 
por apenas um programador dentro das restrições de 
tempo. Em vez disso, o produto é implementado por uma 
equipe, com todos trabalhando ao mesmo tempo em di-
ferentes componentes do produto.\u201d
O trabalho colaborativo não indica na necessidade 
de todos realizarem tarefas semelhantes, indica apenas 
a integração de ideias que naturalmente ocorre em uma 
equipe integrada. 
De acordo com Pressman (2010), na década de 1970, 
McCall, Richards e Walters categorizaram os fatores que 
afetam a qualidade, relacionados com três áreas distintas: 
operação, transição e revisão. Entre as menções de Mc-
Call encontramos 3 conceitos que são muito importantes 
para o sucesso na implantação e manutenção dos testes 
de software. São elas: comunicação, transparência e cla-
reza.
\u2022 Comunicação: O bom comunicador não é aque-
le que possui o \u201cdom da palavra\u201d, mas sim aquele 
não retém informações a respeito de sua atividade 
dentro de uma equipe. Você já prestou atenção al-
guma vez à atitude de alguns jogadores de futebol 
dentro de campo? É muito comum pegá-los con-
versando todo o tempo de paralisação ou tentando 
prever alguma ação de ataque ou contra-ataque. 
Esta situação faz com que o entrosamento se torne 
constante, mesmo nos jogos mais complicados ou 
difíceis. Portanto, durante um jogo, ou um desen-
volvimento, é extremamente importante que haja 
comunicação durante o desenvolvimento de todas 
as atividades do projeto.
\u2022 Transparência: É um princípio que se exige da-
queles a quem se delegam responsabilidades. Este 
conceito se torna muito mais importante quando 
envolve trabalho em equipe. Portanto, ser colabo-
rativo significa ser transparente ao revelar dados, 
transferir conhecimentos e atuar como uma equipe 
no objetivo comum de elaborar um software com a 
menor quantidade de erros, falhas ou defeitos.
Fonte: 
http://expressaorp.files.wordpress.com/2011/08/comunicacao_
corporativa1.jpg?w=300&h=225
Testes de Software
24
\u2022 Clareza: Ser claro é ser simples e objetivo. Muito 
embora tenha relação com transparência, a clareza 
está relacionada não apenas com a divulgação cor-
reta da informação, mas a não deixar margem para 
um entendimento dúbio. Ser claro