A importância do teste de software para garantir a qualidade do sistema: um estudo de caso a partir de empresas do ramo

Tipo de documento:TCC

Área de estudo:Tecnologia da informação

Documento 1

Orientadora Profº. XXXXXXXX A banca examinadora dos Trabalhos de Conclusão, em sessão pública realizada em / / , considerou o(a) candidato(a): 1) Examinador(a) 2) Examinador(a) 3) Presidente RESUMO O processo para o desenvolvimento de software, engloba várias ações, onde, embora sejam técnicas, métodos e ferramentas utilizadas, pode ainda ocorrer erros. As ações que envolvam a Garantia de Qualidade de Software são utilizadas durante o processo de desenvolvimento, onde se encontram as atividades de Verificação, Validação e Teste (VVT), para que se alcance o mínimo de erros e riscos possíveis. Assim, a atividade de teste é uma das técnicas de verificação e validação mais utilizadas, tratando-se portanto, de um dos elementos fornecedores de evidências diante da confiabilidade de software em conjunto com outras atividades, como as revisões e uso de técnicas formalizadas e rígidas especificadas e ainda, de verificação.

Com base nisto, nota-se que torna-se cada vez maior a importância da realização de teste de qualidade de software, sendo que, cada vez mais são encontrados produtos de software no mercado e o teste de software atualmente é o mais utilizado na manutenção destes. BR Melhoria do Processo de Software Brasileiro ISSO Organização Internacional de Padronização VVT Verificação Validação e Teste SUMÁRIO 1 INTRODUÇÃO 11 1. Tema 12 1. Justificativa 12 1. Objetivos 12 1. Objetivo Geral 12 1. Resultados e discussão 33 6 CONSIDERAÇÕES FINAIS 41 REFERÊNCIAS 43 APÊNDICE A – QUESTIONÁRIO 46 1 introdução De acordo com Sommerville (2003, p. “software são os programas de computador e a documentação associada”. Diante da importância do software, a busca tecnológica que vem sido moldada ao longo dos anos, tem como objetivo o alcance de software ideais e seguros (DELAMARO, JINO e MALDONATO, 2017).

Atualmente, “existe uma demanda não satisfeita por qualidade de software” (CRESPO et al. p. As técnicas e critérios de teste fornecem ao desenvolvedor uma abordagem sistemática e teoricamente fundamentada, além de constituírem um mecanismo que pode auxiliar a avaliar a qualidade e a adequação da atividade de teste. Critérios de teste podem ser utilizados tanto para auxiliar na geração de conjunto de casos de teste como para auxiliar na avaliação da adequação desses conjuntos (BARBOSA et al. p. Ainda, “a metodologia do teste de software se reflete atualmente no comportamento das empresas na busca em implantar ou mesmo melhorar o processo de teste utilizado” (CRESPO et al. p. Problema de Pesquisa Atualmente o mercado de software ainda encontra falta de profissionais capacitados para atuarem na área.

Por outro lado, existe ainda, a falta de condições e recursos suficientes para que o profissional possa desenvolver suas funções com melhores condições e critérios. Delimitação do Problema de Pesquisa Falta de pessoal capacitado e condições de trabalho, podem causar faltas no processo de teste de software. Metodologia Para o desenvolvimento deste estudo, foi realizado um estudo de caso. De acordo com (YIN, 2015 p. A figura abaixo apresenta os requisitos de qualidade (Figura 2). Figura 2 - Requisitos de qualidade Fonte: Tsukumo et al. Neste sentido, Tsukumo et al. apresenta a noção de qualidade através do envolvimento e esforço de toda a empresa (Figura 3). Figura 3 - Evolução a partir da aplicação de métodos de qualidade Fonte: Tsukumo et al. Embora eles sejam apoiados por várias ferramentas, ainda restam problemas sérios sem tal suporte” (TSUKUMO et al.

p. Desta forma, Cordeiro e Freitas (2011), afirmam que é preciso ainda, ressaltar que existe a diferença entre a qualidade indicada para o produto e a indicada para o processo de desenvolvimento, sendo que: • A qualidade de software indicada para o produto, refere-se sobre avaliar o software assim que estiver sido desenvolvido Cordeiro e Freitas (2011). • A qualidade de software indicada para o processo, busca a qualidade do produto final alcançando qualidade em cada uma de suas etapas no processo de desenvolvimento Cordeiro e Freitas (2011). As empresas que prestam este tipo de serviço, são ainda, regulamentadas pela Organização Internacional de Padronização (ISO), onde é confirmada “a relação entre o grau de qualidade e a satisfação do cliente, em termos de expectativas atendidas” (VASCONCELOS et al. afirmam que apesar de todas as definições, sejam elas de maneira intuitiva ou de maneira formal, chegam ao mesmo conceito.

Portanto, “teste de software é o processo de executar o software de uma maneira controlada com o objetivo de avaliar se o mesmo se comporta conforme o especificado” (CRESPO et al. p. Muitas outras definições poderiam ser ainda citadas, porém em essência, teste de software é o processo que visa a sua execução de forma controlada, com o objetivo de avaliar o seu comportamento baseado no que foi especificado. A execução dos testes é considerada um tipo de validação (RIOS e MOREIRA, 2006, p. Teste de unidade: identifica erros de lógica, bem como os de implementação de seus módulos individualmente. Teste de integração: identifica erros voltados às interfaces entre os módulos testados, construindo a parti disso, a estrutura do programa determinada no projeto. Teste de sistema: identifica erros provenientes de função e desempenho.

Com base nisto, Dias Neto (2007), afirma que este processo tem ainda que ocorrer de cima para baixo. A figura abaixo (Figura 6), ilustra este esquema criado por Craig e Jaskiel (2002). As técnicas são classificadas conforme a origem das informações vão estabelecendo os requisitos dos testes (DIAS NETO, 2006). Neste sentido, Dias Neto (2006, p. afirma que “elas contemplam diferentes perspectivas do software e impõe-se a necessidade de se estabelecer uma estratégia de teste que contemple as vantagens e os aspectos complementares dessas técnicas”. A escolha da técnica de teste depende também da fase de desenvolvimento em que o teste será aplicado. Uma técnica de teste direciona a escolha de critérios para geração de casos de teste que, ao serem executados, vão exercitar os elementos requeridos pela abordagem do teste (CRESPO, 2004, p.

A figura abaixo (Figura 8), representa o Grafo de Programa gerado do Viewgraph do identifier (função main) (MALDONATO et al. VILELA e MALDONATO, 1997; BARBOSA et al. Figura 8 - Grafo de Programa Fonte: Maldontato et al. A partir disso, os componentes que tem de serem executados podem ser escolhidos e com isto, caracteriza-se o teste estrutural (MALDONATO et al. Assim, o caminho não é executável, portanto, todos os caminhos completos que esteja incluso não serão executáveis também, ou seja, o dado de entrada não existe para que seja conduzido à execução do caminho (MALDONATO et al. Seguindo estas definições, a figura abaixo representa este tipo de técnica (Figura 9). Figura 9 - Técnica de Teste Funcional Fonte: Dias Neto (2006) Entende-se portanto, que esta técnica visa “simular todos os cenários de negócios e garantir que todos os requisitos funcionais sejam implementados” (BARTIÉ, 2002, p.

De acordo com Bartié (2002), é preciso de conhecimento aprofundado das regras dos negócios de determinada aplicação para a realização destas simulações e assim, alcançar para os cenários de negócio, o máximo de cobertura. Pressman (2005), afirma que esta técnica aplica-se a todos os níveis do teste. Ainda, o componente a ser testado pode ser um conjunto de programas, a função interna ou o método, determinado componente ou programa (PRESSMAN, 2005). afirmam que para auxiliar a identificar as partições, são notadas a especificação, buscando termos do tipo “intervalo” e “conjunto” ou ainda palavras semelhantes indicando que, o processamento dos dados, são todos da mesma forma. Para gerar os testes através desta técnica, os critérios são ainda definidos por Dias Neto (2007, p.

em: 1. Identificar classes de equivalência (é um processo heurístico) 1. condição de entrada 2. Pressman (2005), define que o elevado número de erros está propicio a ocorrer dentro dos limites do domínio de entrada e não no centro, este fato ocorre por razões que não são identificadas totalmente. De acordo com Barbosa et al. p. “o espaço de saída do programa também é particionado e são exigidos casos de teste que produzam resultados nos limites dessas classes de saída”. Portanto, “se uma condição de entrada especifica uma faixa de valores limitada em a e b, casos de teste devem ser projetados com valores a e b e imediatamente acima e abaixo de a e b. Usar a intuição para definir outras condições limites.

Grafo de Causa-Efeito Este tipo de teste busca analisar o efeito das combinações dos dados de entrada (DIAS NETO, 2007). De acordo com Delamaro, Jino e Maldonato (2017, p. o critério adotado por esta técnica auxilia a definir “um conjunto de casos de teste que explora ambiguidades e incompletude nas especificações”, ou seja, trata-se de uma linguagem formal, onde é traduzida sua especificação. Neste sentido, os autores resumem o processo para derivar nos casos de teste em: 1. Figura 10 - Árvore de decisão (Grafo de Causa-Efeito) Fonte: Dias Neto (2007) A partir disso, os casos de teste devem ainda, seguirem as regras apresentadas na tabela a seguir (Tabela 2). Desta forma, entende-se que “para a elaboração dos casos de teste, devemos seguir todas as regras extraídas da tabela” (DIAS NETO, 2007, p.

Tabela 2 - Tabela de decisão para o programa de compra pela Internet Causa Valor da compra > 60 > 60 < = 60 #Produtos < 3 > = 3 - Efeito Cobrar frete V V Frete grátis V Fonte: Dias Neto (2007) Outras Técnicas Existem ainda outras técnicas de teste que são utilizadas conforme a necessidade diante do negócio ou alguma restrição tecnológica (DIAS NETO, 2007). Sendo assim, o testador ao seguir os passos da estratégia, pode definir aplicar primeiro os critérios independentes de exceção e em seguida, os critérios dependentes de exceção, de acordo o com tempo e o custo disponível (DELAMARO, JINO e MALDONATO, 2017). Desta forma, podem ainda serem consideradas as seguintes técnicas: teste de desempenho, o de usabilidade, carga, stress, confiabilidade e também, o teste de recuperação (DIAS NETO, 2007).

No critério de Análise de Mutantes, é utilizado um grupo de programas rapidamente modificados, ou seja, mutantes, sendo que são alcançados através de um programa P onde, avalia quão o conjunto de casos de teste T adequa-se para o teste de P (MALDONATO et al. testes automatizados Segundo Bernardo (2011, p. os testes automatizados são “a prática de tornar os testes de software independentes de intervenção humana”. Desta forma, este tipo de teste, são definidos como programas ou ainda, como scripts simples, onde realizam funções no sistema testado, fazendo ainda verificações de maneira automática nos resultados identificados (BERNARDO e KON, 2008). Para os autores Bernardo e Kon (2008, p. A figura abaixo (Figura 11) apresenta um exemplo de teste automatizado, utilizando a versão 4 do popular JUnit (BERNARDO e KON, 2008).

Figura 11 - Exemplo de teste automatizado com o JUnit 4 Fonte: Bernardo e Kon (2008) Sendo assim, seu objetivo principal trata-se de melhorar a qualidade do software, embora o termo qualidade seja muito amplo que pode indicar inúmeros aspectos em determinadas especifidade (SPINELLIS, 2006). Embora a qualidade tenha uma definição elusiva e de difícil medição, os testes automatizados viabilizam a melhora o sistema (DEL BIANCO et al. estudo de caso A partir do levantamento realizado no referencial teórico, foi realizado um estudo de caso, no qual, foi elaborado e aplicado um questionário (APÊNDICE A) sobre o tema do estudo. Com isto, o objetivo do questionário, foi o de identificar os principais métodos de testes de software e suas dificuldades de desenvolvimento diante das empresas de software.

Empresa C Oferece sistemas para cartórios em diversos estados. Os sistemas são desktops, mas oferece também um site para cada cliente que comprar o sistema. A empresa está no mercado desde 1991 e no momento está implementando o processo de aquisição da certificação ISO voltada para a qualidade de software. Empresa D Trata-se de uma fábrica de software, onde, oferece sistemas variados, sendo ainda, possível solicitar um sistema específico a ser adquirido. A empresa é de médio porte e sua equipe de teste é composta por quatro colaboradores. A figura abaixo indica o número de profissionais certificados a atuarem com teste de qualidade em cada uma das empresas participantes do estudo (Figura 12). Figura 12 - Número de profissionais certificados na área de teste de software Fonte: Dados da pesquisa Desta forma, a metade das empresas possuem no mínimo dois funcionários certificados na área, sendo que a outra metade não possui nenhum profissional certificado.

Para Case e Botelho (2004, p. o mercado de trabalho tem sido cada vez mais competitivo, sendo que, “[. diferenciar-se é fundamental para que o profissional obtenha mais chances de se manter no mercado”. A figura abaixo apresenta os dados das empresas entrevistadas de acordo com as informações obtidas (Figura 13). Figura 13 - Vantagens de custo-benefício da atividade de teste Fonte: Dados da pesquisa Resultados alcançados Com relação a vantagem obtida após a identificação do erro, as empresas relataram a redução de erros. Ao longo dos anos, “os erros parecem estar por toda parte, como uma epidemia que não conseguimos controlar depois de décadas de trabalho e pesquisas” (KINSCIANSKI e SOARES, 2007, p. Sabe-se ainda que, os “erros de software já foram responsáveis por prejuízos milionários e mesmo a perda de vidas humanas” (KINSCIANSKI e SOARES, 2007, p.

Portanto, Pressman (2002), afirma que assegurar a importância da qualidade de software engloba vários sistemas como o de transportes, a área médica, a de telecomunicações e de processos industriais, ainda a área militar e até mesmo a de produtos de escritório, entre tantas outras. Desta forma, os resultados obtidos foram: Empresa A: Os testes de regressão e de funcionalidade são realizados de maneira automatizada utilizando a ferramenta Selenium Web Driver. Os testes unitários são realizados através da ferramenta Junit. Os testes de usabilidade são realizados através de checklists criados pela própria empresa. Empresa B: Os desenvolvedores utilizam ferramentas específicas como Junit para os testes unitários e jMeter para os testes de performance e stress. Os testes funcionais são realizados pela equipe de teste de forma manual.

Os testes de segurança são realizados por profissionais especialistas nesse tipo de teste. Com isto, nota-se que as empresas procuram realizar os testes de acordo com o que as técnicas necessitam e também de acordo com o trabalho a ser realizado. Desta forma, “a técnica é utilizada para identificar as causas de um problema e, de preferência, deve ser utilizada durante uma reunião em que todos os envolvidos discutam livremente, sem sanções” (KOSCIANSKI e SOARES, 2007, p. Os autores Koscianski e Soares (2007), ainda afirmam que é necessário obter perspectiva técnica de forma que seja considerado inúmeros fatores influenciadores da formação do produto, como sendo: • tamanho e complexidade do software sendo construído; • número de pessoas envolvidas no projeto; • ferramentas utilizadas; • custos associados à existência de erros; • custos associados à detecção e à remoção de erros (KOSCIANSKI e SOARES, 2007, p.

Martins (2007, p. A utilização de documentos são de extrema importância diante dos projetos. De acordo com Paula Filho (2000), podem ocorrer mal-entendidos e até mesmo a perda de informações ainda mais se a equipe de trabalho for grande. Tabela 4 - Tipos de documentos utilizados na atividade de teste DOCUMENTO/EMPRESA A B C D E F Checklists X Documentos de requisitos X X X Casos de testes X X X X Matriz de rastreabilidade X Requisitos funcionais e não funcionais X X Regulamentações externas X Regras de negócio X X TOTAL 3 3 1 2 1 4 Fonte: Dados da pesquisa Para que isto seja “combatido”, o autor afirma que, “é preciso fazer documentos mais detalhados, e usar ferramentas e métodos mais padronizados; em suma, tornar os processos mais formais” (PAULA FILHO, 2000, p.

Desta forma, a documentação é definida como: Consiste da aplicação de uma técnica para a criação de documentos que serão utilizados para a gerência do processo de teste, tanto na fase de preparação para a atividade de teste quanto na fase de registro dos resultados do teste. Este componente da metodologia está baseado na Norma IEEE 829-1998, que descreve um conjunto de 8 documentos que cobrem as tarefas de planejamento, especificação e registro das atividades de teste de um produto de software. Estas dificuldades vão de encontro com as especificações de Basili e Zelkowitz (1978), onde, segundo os autores, há cinco fatores influenciadores na execução do software, sendo elas os fatores humanos, os causados pelo problema, os provenientes do produto e do processo e ainda, os voltados aos recursos.

Gráfico 1 - Principais dificuldades encontradas para a realização de teste de software Fonte: Dados da pesquisa Estas dificuldades, podem ter como premissa, vários fatores. Neste sentido, Audy e Prikladnicki (2007, p. afirmam que: • É difícil, e às vezes impossível, rastrear a evolução através de muitas versões ou lançamentos. As mudanças não estão corretamente documentadas. sugere que, “para que se obtenha a qualidade desejada de produtos de software, fazem-se necessários modelos que viabilizem a avaliação da qualidade desses produtos”. A partir disso, entende-se que apesar dos avanços já conquistados pelo setor de testes de qualidade de software, ainda existem lacunas para que seu processo possa ser gerado com mais eficiência. considerações finais Com base nos resultados encontrados neste estudo, pode-se constatar que, embora exista grande avanço e preocupação voltada com a qualidade software e os testes de software, a área ainda carece de profissionais certificados.

Sabe-se que a exigência e produção de softwares têm aumentado constantemente no mercado atual, tornando assim, uma área com grandes perspectivas e necessidades de qualificações do pessoal envolvido. A partir da realização de testes de software, inúmeras áreas que depende disso é, por assim dizer, envolvida e beneficiada de maneira direta. Pode-se ainda, afirmar que os objetivos deste estudo foram alcançados de maneira clara e sucinta. Para a realização deste trabalho, houve ainda certas disposições positivas, como a disposição e o positivo retorno das empresas ao participarem do estudo e, ainda, houve também certas limitações como a falta de materiais bibliográficos, principalmente sobre o pouco material encontrado sobre a técnica de teste baseada em erros e as técnicas que geralmente não são muito utilizadas.

Espera-se ainda, que este estudo sirva como base para estudos futuros envolvendo outras lacunas dispostas ao tema, como os outros tipos de técnicas de testes e sobre a importância da certificação do pessoal atuante na área. referências AUDY, Jorge Luis Nicolas; PRIKLADNICKI, Rafael.  Desenvolvimento distribuído de software. In: Proceedings of the 3rd international conference on Software engineering. IEEE Press, 1978. p. BEIZER, Boris. Black-box testing: techniques for functional testing of software and systems.  Gerenciamento da carreira do executivo brasileiro: uma ciência exata. Catho, 2001. CRAIG, Rick David; JASKIEL, Stefan P.  Systematic software testing. Artech House, 2002. p. DELAMARO, Marcio; JINO, Mario; MALDONADO, José.  Introdução ao teste de software. Elsevier Brasil, 2017. DEL BIANCO, Vieri et al. KOSCIANSKI, André; SOARES, Michel dos Santos. Qualidade de software.  São Paulo, SP.

Editora: Novatec, 2007. MALDONADO, José Carlos. MYERS, Glenford J. The Art of Software Testing. New York, Wiley Inter-science. New York, New York, 1979. DE PÁDUA PAULA FILHO, Wilson. Cambridge University Press, 2002. RIOS, Emerson; MOREIRA, Trayahú.  Teste de software. Alta Books Editora, 2006. ROCHA, Ana Regina Cavalcanti; MALDONADO, José Carlos; WEBER, Kival Chaves. São Paulo Addson Wesley, 2003. p. SPINELLIS, Diomidis.  Code quality: the open source perspective. Adobe Press, 2006. Universidade Federal de Lavras. Lavras. VILELA, Plínio RS; MALDONADO, José C. JINO, Mario. Program graph visualization. Universidade de São Paulo. YIN, Robert K.  Estudo de Caso-: Planejamento e Métodos. Bookman editora, 2015. Apêndice a – questionário Sua empresa foi escolhida para participar do estudo “A importância do teste de software para garantir a qualidade do sistema” através do preenchimento de um questionário.

297 R$ para obter acesso e baixar trabalho pronto

Apenas no StudyBank

Modelo original

Para download