Baixe o app para aproveitar ainda mais
Prévia do material em texto
Qualidade e testes de software Fases ou níveis do teste de software Unidade 6 Fases ou níveis do teste de software Unidade 6 Qualidade e testes de software Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 3 Unidade 6 Fases ou níveis do teste de software Objetivo de aprendizagem: • Apresentar as fases ou níveis de teste de software. Tópicos de estudo: • Teste de unidade; • Teste de integração; • Teste de sistema. Iniciando os estudos: Nesta unidade, você poderá compreender como os testes de software podem diferir quanto a sua granu- laridade. No teste de software, você encontrará as fases ou níveis de teste de unidade, teste de inte- gração e teste de sistema. A questão-chave para a compreensão de cada um desses níveis é entender o objetivo de teste em cada um deles. Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 4 1 TESTE DE UNIDADE O teste de unidade tem como foco as menores unidades de um programa, que podem ser funções, procedimentos, métodos ou classes. Nesse contexto, espera-se que sejam identificados erros relacio- nados a algoritmos incorretos ou mal implementados, estruturas de dados incorretas ou simples erros de programação. Como cada unidade é testada separadamente, o teste de unidade pode ser aplicado à medida que ocorre a implementação das unidades e pelo próprio desenvolvedor, sem a necessidade de dispor-se do sistema totalmente finalizado (DELAMARO et al., 2016). Para você compreender melhor o conceito, observe o pseudocódigo abaixo: função soma(a, b) início retorne a + b; fim Seja soma uma função hipotética de soma, que recebe dois parâmetros e retorna a soma entre eles. Para que o teste seja realizado é necessário executar ao menos uma vez essa função: resultado <= soma (1, 2); se resultado é igual a 3 então imprima (“Função está correta”); Ao programar os trechos exibidos, você terá concluído um teste unidade ou unitário. Título: C#: como criar e executar testes de unidade Acesso em: 27/11/2019. Disponível em: https://youtu.be/uBI2vtflrRo Aprofunde-se Veja, foi construído um novo código para realizar o teste de unidade. Em um primeiro momento pode parecer tentador não escrever um novo código para validar um outro código. Porém, ressalta-se que no ciclo de vida de um produto de software esse mesmo software passará por sucessivos ciclos de manu- tenção, com a adição de novas funcionalidades ou correções de funcionalidades já existentes. Nesse contexto, o código-fonte base, ao final de vários ciclos, será grande o suficiente para tornar a manu- tenção custosa e realizar testes nesse código de forma manual será uma tarefa humanamente difícil, dado seu tamanho. Com essa motivação, a construção de testes de unidade surge como alternativa para https://youtu.be/uBI2vtflrRo Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 5 facilitar a manutenção do produto de software, frente a sucessivas modificações/inclusões de código no ciclo de vida do produto de software, utilizando-se, inclusive, de recursos para automatização desses testes (LIMA, 2017). Título: 5 maneiras de aplicar ou otimizar seus testes de unidade Acesso em: 27/11/2019. Disponível em: https://youtu.be/oIMsTXRN8Qg Aprofunde-se Acesse na plataforma o vídeo: Custo dos testes unitários Assista Para resumir a importância do teste unitário hoje na cadeia de desenvolvimento de software, considere a imagem a seguir: Na figura acima, é exemplificado que testes de unidade ou unitários são mais baratos e rápidos (como coelhos) que testes de usuários (UI) que são mais caros e lentos (como tartarugas). Figura 1 - Relação em testes unitários e de interface de usuário. Fonte: Lima (2017). https://youtu.be/oIMsTXRN8Qg Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 6 2 TESTE DE INTEGRAÇÃO No teste de integração, que deve ser realizado após serem testadas as unidades individualmente, a ênfase é dada na construção da estrutura do sistema. À medida que as diversas partes do software são colocadas para trabalhar juntas, é preciso verificar se a interação entre elas funciona de maneira adequada e não leva a erros. Também nesse caso é necessário um grande conhecimento das estruturas internas e das interações existentes entre as partes do sistema e, por isso, o teste de integração tende a ser executado pela própria equipe de desenvolvimento (DELAMARO et al., 2016). O teste de integração possui duas estratégias para sua realização: as abordagens bottom-up e top-down (LOURENÇO, 2010). Na abordagem bottom-up, o software é desenvolvido a partir de rotinas, funções e métodos básicos que fornecem serviços às demais rotinas, funções ou métodos de uma camada superior do software. Por exemplo, uma verificação de CPF pode ser chamada em vários pontos de um sistema de software. Provavelmente será uma das primeiras a serem implementadas. Já na abordagem top-down, faz-se o contrário. O desenvolvedor elabora seu código supondo que o código de uma camada inferior do sistema de software já esteja pronto. Utilizando-se o exemplo anterior de verificação de CPF, o desenvolvedor pode codificar chamadas (fazer o uso nominal da função) para a verificação de CPF, mesmo sabendo que ela ainda não existe. Nesse exemplo, utiliza-se o recurso conhe- cido como stubs, que são rotinas vazias que retornam valores explícitos, definidos pelo programador. Na realização de testes para a abordagem de desenvolvimento bottom-up, devem ser escritos códigos que invoquem as rotinas de camadas inferiores, testando-as com diversas combinações de parâmetros. As rotinas escritas para esses testes são conhecidas como drivers (você viu um breve exemplo no tópico 1, no teste de unidade ou unitário), pois sua função é acionar o código que deve ser testado. Muitas organizações encontram dificuldades com as atividades de teste. Em geral, tal situação é justificada pela falta de profissionais especializados na área ou mesmo uma dificuldade de implementar os processos de teste. Para esses casos, o CenPRA (Centro de Pesquisas Renato Archer) desenvolveu uma metodologia para auxiliar as empresas nesses processos. Saiba mais em: http://tecnologia. alinebossi.com/2010/09/20/teste-de-software-no-contexto-da-melhoria/ Reflita Há testes que necessitam de dados oriundos de arquivos. Nessa situação, é comum que testadores criem bases de dados falsas contendo registros para realizá-los, simulando os dados necessários para o teste. Esses dados, inclusive, podem ser inconsistentes, contendo informação incorreta para verificar o comportamento de rotinas. http://tecnologia.alinebossi.com/2010/09/20/teste-de-software-no-contexto-da-melhoria/ http://tecnologia.alinebossi.com/2010/09/20/teste-de-software-no-contexto-da-melhoria/ Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 7 Uma vez que cada componente tenha sido testado, seja com os drivers ou os stubs, esses elementos são substituídos pelas rotinas reais. Após a substituição, é recomendado que os testes de integração sejam executados novamente, de modo que o processo todo se repita até a conclusão do projeto. Título: Testes de integração: comece a pensar no todo! Acesso em: 27/11/2019. Disponível em: https://youtu.be/sa448ZG9p9U Aprofunde-se 2.1 TESTE DE REGRESSÃO E ACEITAÇÃO Existem também os testes de aceitação e testes de regressão. O teste de aceitação (também conhecido por UAT, do inglês User Acceptance Tests) tem por objetivo verificar a conformidade com os requisitos de negócio e usuário na última fase do ciclo de desenvolvimento, validando o produto para entrega. Eles são realizados geralmente por um grupo restrito de usuários finais do sistema. Figura 2 - Utilização de drivers e stubs para uso em testes de integração. Fonte: adaptado de Albano et al. (2015). ED + Co nt en t H ub © 2 01 9 https://youtu.be/sa448ZG9p9U Qualidade e testes de software |Unidade 6 - Fases ou níveis do teste de software 8 Acesse na plataforma o vídeo: Testes de regressão e teste de aceitação Assista Já o teste de regressão acontece a cada modificação efetuada no sistema após a liberação de nova versão. Nesses processos, corre-se o risco de que novos defeitos sejam introduzidos. Por esse motivo, é necessário, após a manutenção, realizar testes que mostrem que as modificações efetuadas estão corretas, ou seja, que os novos requisitos implementados (se for o caso) funcionam como o esperado e que os requisitos anteriormente testados continuam válidos. De maneira geral, os testes de regressão tratam de uma nova execução do conjunto de casos de teste já executados (DELAMARO et al., 2016). Esse artigo confronta as características do paradigma de orientação a objetos para a criação de testes de integração. Título do artigo: Testes de integração aplicados a software orientado a objetos: heurísticas para ordenação de classes Link: https://www.cos.ufrj.br/uploadfile/es63204.pdf Aprofunde-se 3 TESTE DE SISTEMA Depois que se tem o sistema completo, com todas as suas partes integradas, inicia-se o teste de sistema. O objetivo é verificar se as funcionalidades especificadas nos documentos de requisitos estão todas corretamente implementadas. Aspectos de correção, completude e coerência devem ser explorados, bem como requisitos não funcionais como segurança, performance e robustez. Muitas organizações adotam a estratégia de designar uma equipe independente para realizar o teste de sistema (DELAMARO et al., 2016). Acesse na plataforma o vídeo: Ambientes de teste Assista https://www.cos.ufrj.br/uploadfile/es63204.pdf Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 9 Os seguintes pontos sumarizam o teste de sistema (SOMMERVILLE, 2011): • Se os componentes são compatíveis; • Se eles interagem corretamente; • Se transferem os dados certos no momento certo, por meio de suas interfaces. Título: Testes de aceitação Acesso em: 27/11/2019. Disponível em: https://youtu.be/0B3dKp07Qe4 Aprofunde-se Ainda, segundo Sommerville (2011), os testes de sistema se sobrepõem aos testes de integração, possuindo as seguintes diferenças entre eles: 1. Durante o teste de sistema, os componentes reusáveis que tenham sido desenvolvidos separadamente e os sistemas de prateleira que eventualmente foram adquiridos, podem ser integrados com componentes recém-desenvolvidos. Então, o sistema completo é testado. 2. Nesse estágio, componentes desenvolvidos por diferentes membros da equipe ou grupos podem ser integrados. O teste de sistema é um processo coletivo, não indivi- dual. Em algumas empresas, o teste de sistema pode envolver uma equipe indepen- dente, sem participação de projetistas e programadores. https://youtu.be/0B3dKp07Qe4 Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 10 Esse artigo lista seis regras práticas para melhorar o teste de sistemas em geral. Título do artigo: 6 regras simples para melhorar o teste de sistemas Link: https://blogbrasil.comstor.com/6-regras-simples-para-melhorar-o- teste-de-sistemas Aprofunde-se Infográfico 1 - Comparação entre as fases ou níveis de teste. Fonte: adaptado de https://bit.ly/2OszyiL Acesso em: 5 dez. 2019. ED + Co nt en t H ub © 2 01 9 https://blogbrasil.comstor.com/6-regras-simples-para-melhorar-o-teste-de-sistemas https://blogbrasil.comstor.com/6-regras-simples-para-melhorar-o-teste-de-sistemas https://bit.ly/2OszyiL Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 11 CONSIDERAÇÕES FINAIS Nesta unidade, os chamados níveis ou fases de teste foram apresentados detalhando seus escopos e em qual ponto do desenvolvimento devem ocorrer. De posse das informações aqui apresentadas, você poderá avaliar quando e onde poderá aplicar testes de unidade, de integração ou sistema durante o desenvolvimento de um produto de software. Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 12 GLOSSÁRIO Drivers: são responsáveis pelo controle do teste de uma unidade ou conjuntos de unidades de um sistema. É uma operação que exercita o módulo sob teste, envia valores (dados de entrada dos casos de teste), coleta e compara resultados. Stubs: são implementações que simulam determinadas situações esperadas. Normalmente possuem a mesma assinatura dos métodos, funções ou rotinas que se deseja simular, porém retornam um compor- tamento fixo determinado pelo desenvolvedor. UI (User Interface): dispositivo pelo qual o usuário troca informações com o software. É o meio pelo qual o usuário comunica-se com o software. Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software 13 REFERÊNCIAS ALBANO, Edson Lucas; AMARAL, Eduardo; BENITTI, Fabiane Barreto Vavassori, 2015. Teste de Integração. Disponível em: https://www.inf.ufsc.br/~fabiane.benitti/byebug/objetos/OA31/integracao/presentation_html5.html. Acesso em: 23 nov. 2019. DELAMARO, Márcio Eduardo; MALDONADO, José Carlos; JINO, Mário. Introdução ao Teste de Software. 2. ed. Rio de Janeiro: Campus - Elsevier, 2016. LIMA, Dayvson. Entenda de uma vez por todas o que são testes unitários, para que servem e como fazê-los, 2017. Disponível em: https://medium.com/@dayvsonlima/entenda-de-uma-vez-por-todas-o-que-s%C3%A3o-tes- tes-unit%C3%A1rios-para-que-servem-e-como-faz%C3%AA-los-2a6f645bab3. Acesso em: 23 nov. 2019. LOURENÇO, Marcelo. Teste de Integração, 2010. Disponível em: http://qualidade-de-software.blogspot. com/2010/01/teste-de-integracao.html. Acesso em: 24 nov. 2019. SOMMERVILLE, I. Engenharia de Software. Tradução Ivan Bosnic e Kalinga G. de O. Gonçalves. 9. ed. São Paulo: Pearson Prentice Hall, 2011. https://www.inf.ufsc.br/~fabiane.benitti/byebug/objetos/OA31/integracao/presentation_html5.html https://medium.com/@dayvsonlima/entenda-de-uma-vez-por-todas-o-que-são-testes-unitários-para-que-servem-e-como-fazê-los-2a6f645bab3 https://medium.com/@dayvsonlima/entenda-de-uma-vez-por-todas-o-que-são-testes-unitários-para-que-servem-e-como-fazê-los-2a6f645bab3 http://qualidade-de-software.blogspot.com/2010/01/teste-de-integracao.html http://qualidade-de-software.blogspot.com/2010/01/teste-de-integracao.html
Compartilhar