Prévia do material em texto
22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_74631… 1/30 QUALIDADE E TESTEQUALIDADE E TESTE DE SOFTWAREDE SOFTWARE Me. Roque Mait ino Neto I N I C I A R 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_74631… 2/30 introdução Introdução Depois de estudarmos na primeira Unidade os tópicos fundamentais de Qualidade de Software, os processos que visam garanti-la, parâmetros e padrões, é normal que algumas questões venham à tona: a aplicação de todas essas providências e ações é su�ciente para nos garantir um produto livre de erros? As funções da equipe da qualidade se resumem a seguir corretamente padrões e aplicar métricas de forma rigorosa? Na vida real, respondemos a essas questões com um “não”. Embora um processo de desenvolvimento corretamente conduzido e aplicação de métodos relacionados à qualidade tendem a gerar um bom produto, ainda assim este deverá passar por exames e provas que atestem sua qualidade em funcionamento. Damos o nome de teste de software e sua abordagem será o tema central deste nosso encontro. Iniciamos, aqui, a segunda Unidade do curso de Qualidade e Teste de Software, desejando a você um ótimo aproveitamento deste conteúdo que, certamente, despertará bastante interesse. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_74631… 3/30 Mesmo se você não for um viciado em automóveis, ainda assim será capaz de imaginar que estes são compostos por várias unidades distintas que, juntas, serão capazes de fazê-los rodarem com segurança e conforto. O motor, a suspensão, os medidores e o sistema de ar condicionado são exemplos de partes do todo e, para que estejam aptas a compor um carro, precisam ser testadas uma a uma antes de serem colocadas à prova de modo integrado. Pois é assim mesmo que funciona o teste de um software: as partes planejadas durante o projeto, que desde já chamaremos de unidades, deverão passar por testes isolados antes de serem avaliadas em conjunto com todo o restante do sistema. Colocada de forma simples e objetiva, essa é essência de um teste de unidade. Antes de desenvolvermos essa ideia, no entanto, trataremos de conceitos básicos relacionados ao teste de software. Vamos a eles. Conceito de Teste Teste de UnidadeTeste de Unidade 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_74631… 4/30 Um teste – ou um processo de teste – consiste em uma sequência de ações executadas com o objetivo de encontrar problemas no software, o que aumenta a percepção de qualidade geral do software e garante que o usuário �nal tenha um produto que atenda às suas necessidades (PINHEIRO, 2015). Nenhuma equipe de qualidade irá aplicar testes em um software (ou em uma unidade dele) com o objetivo de garantir que o produto é livre de defeitos. A certeza de que um programa não possui falhas, erros ou defeitos (logo saberemos a diferença entre eles) não é algo atingível no mundo real. Se o processo de teste não revelar defeitos, há que se aprimorar os casos de teste e o processo empregado. Não se pode acreditar que o sistema não possui problemas se o teste aplicado não for capaz de revelá-los. Etapas do Processo de Teste O processo de teste é normalmente separado em quatro grandes etapas: 1. Planejamento: nessa etapa deve ser de�nido quem executa os testes, em que período, com quais recursos (ferramentas de teste e computadores, por exemplo) e qual será́ a técnica utilizada (técnica estrutural ou técnica funcional, por exemplo). 2. Projeto de casos de teste: aqui são de�nidos os casos de teste que serão utilizados no processo. No próximo item, esse conceito será́ detalhado. 3. Execução do programa com os casos de teste: nessa etapa, o teste é efetivamente realizado. 4. Análise dos resultados: veri�ca-se se os testes retornaram resultados satisfatórios. Casos de teste Um caso de teste é o par formado por uma entrada no programa e a correspondente saída esperada, de acordo com os requisitos do sistema (NETO, 2016). O conceito de entrada relaciona-se com o conjunto de dados 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_74631… 5/30 necessários para a execução do programa. Tomemos como exemplo um programa que oferece ao usuário a possibilidade de inserir valores de produtos alimentícios de varejo para emissão de nota �scal. Esse conjunto de valores comporá os dados de entrada que, após a validação, deverão ser gravados em banco. A saída esperada é o resultado de uma execução do programa ou função especí�ca. Ainda considerando o exemplo da inserção de valores de produtos, um caso de teste possível seria: (200; válido). Ao receber a entrada 200, o programa de validação de valores deveria retornar “valor válido”. A boa escolha dos casos de teste é fundamental para o sucesso do procedimento, já que um conjunto de casos de teste de baixa qualidade pode não exercitar partes críticas do programa e não será capaz de revelar defeitos no código. Se o responsável pelos testes usasse apenas valores válidos como entradas, a parte do programa que trata dos valores inválidos não seria executada, o que prejudicaria a con�abilidade do processo de teste e do produto testado. Observe estes casos de teste: t1= {(53,70;válido), (30/1/2004;inválido); (-6;inválido); (12,9;válido), (***;inválido), (0;inválido)}. Com esse cenário, certamente a maior parte do código será́ coberta e a chance de detecção de defeitos aumentará. Fica claro que o sucesso no procedimento de testes está diretamente relacionado à correta escolha dos casos de teste. Idealmente, cada conjunto de casos de teste deverá estar associado a um grande requisito diferente a ser testado. Imagine que um produto tenha como duas de suas funções principais a emissão de relatórios de produtos avariados no processo de fabricação e de validação do peso do produto fabricado, tendo 0,01Kg como variação máxima permitida. É certo que a equipe de teste deverá criar casos de teste para essas duas funções, cuidando para que atendam a maior variedade possível de situações. Para que não se corra o risco de de�nir casos de teste incorretamente, é necessário planejamento e o bom conhecimento da aplicação. Uma boa forma de se abordar o problema é a que segue (PINHEIRO, 2015): 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_74631… 6/30 De�nir o ambiente no qual o teste será́ realizado; De�nir a entrada desse caso de teste; De�nir a saída esperada para cada entrada; De�nir os passos a serem realizados para executar os testes. Quando um caso de teste é executado, o seu resultado deve ser coletado. Podemos assumir diferentes abordagens para de�nir o resultado da aplicação de um caso de teste especí�co. A mais comum de�ne as seguintes opções (PINHEIRO, 2015): Passou: todos os passos do caso de teste foram executados com sucesso para todas as entradas; Falhou: nem todos os passos foram executados com sucesso para uma ou mais entradas; Bloqueado: o teste não pôde ser executado, pois o seu ambiente não pôde ser con�gurado. Assim de�nimos os casos de teste. Há, no entanto, três conceitos especialmente importantes no contexto de teste que merecem abordagem mais especí�ca, até por serem confundidos entre si. Vamos a eles. Defeito, Falha e Erro Qual é a expressão que você usa quando um programa simplesmente trava ou não produz o resultado que se espera? Nomes não faltam para o que acontece de incomum durante a execução de um software: falta, incidente, problema, falha, anomalia e por aí vai. Genericamente podemos resumir todos em um: bug. Pinheiro (2015) de�ne que um bug ocorre quando:O software não executa uma função que ele deveria executar, segundo sua especi�cação; O software executa uma função que não deveria executar, segundo sua especi�cação; O software executa uma função não prevista em sua especi�cação; O software não executa uma função não prevista em sua especi�cação, mas que deveria estar; 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_74631… 7/30 O software é difícil de ser usado ou entendido, além de passar a impressão ao usuário �nal de não estar correto. Parece que essa lista diverge um pouco do que entendemos como bug, não é mesmo? Esse tratamento genérico, no entanto, não nos serve para identi�car corretamente cada problema que pode ocorrer em um programa durante sua execução. Observe os conceitos: Defeito: trata-se de de�ciência algorítmica que, se ativada, pode levar a uma falha. Vamos a um exemplo. Observe o trecho que segue, escrito em pseudocódigo: a = –1; b = 0; enquanto a < 0 faça b = b + 1; imprima (b); imprima (a); �m_enquanto; Observe que em momento algum da execução o valor da variável a deixará de ser menor que zero, o que fará com que a condição de parada do laço jamais seja satisfeita. Estamos diante de um defeito, mais precisamente um laço in�nito. Se o caso de teste escolhido for capaz de exercitar esse trecho do código, o defeito se manifestará e, então, teremos uma falha observável. Falha: é tida como um não funcionamento do software, provavelmente, provocado por um defeito. Contudo, uma falha também pode estar relacionada a uma queda na comunicação ou a um erro na leitura do disco, por exemplo. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_74631… 8/30 Erro: ocorre quando o resultado obtido em um processamento e o que se esperava dele são diferentes. Pode-se associar um erro, portanto, a um fato visível durante a execução de um programa. Um erro também está associado a uma violação nas próprias especi�cações do software. Como exemplo, tomemos um usuário que consegue acessar determinado módulo do programa para o qual não está autorizado (esse é o resultado obtido), sendo que seu nível de privilégios não deveria permitir que o �zesse (o não acesso era o resultado esperado). Antes de abordarmos o teste de unidade em especí�co, a de�nição de mais um elemento básico dos testes se faz necessária. Depuração Se testar signi�ca executar o software para encontrar defeitos desconhecidos, a depuração é a atividade que consiste em buscar no código a localização desses defeitos. Durante o processo de teste, é comum que se descubra a existência de um defeito sem que se saiba, contudo, sua localização no código-fonte. A depuração, portanto, tem a função de apontar o local exato do defeito. Os ambientes de programação atuais oferecem recursos para depuração do programa. Durante esse processo, o valor assumido pelas variáveis sob inspeção em cada passo do algoritmo pode ser observado. Além disso, alguns pontos de parada da execução do programa podem ser inseridos no código. O teste de Unidade Colocados esses elementos básicos, nosso foco volta-se para a abordagem do teste de unidade. Um software produzido com base em métodos consagrados será, necessariamente, dividido em módulos. Embora sejam importantes, os critérios utilizados para essa divisão não fazem parte do escopo desta Unidade. Contudo, é necessário registrar que cada módulo deve ser o mais coeso e o menos funcionalmente dependente possível de outros módulos, sob pena de construirmos um produto de difícil de ser testado e mantido. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_74631… 9/30 Como é aplicado em um módulo do sistema, o teste de Unidade é feito durante o desenvolvimento (ou codi�cação) de um software. Seu objetivo é isolar uma seção de código – que pode ser um procedimento, uma função ou um conjunto delas quando tratamos de programação procedural – e veri�car sua corretude. O objetivo de um teste de unidade, portanto, é isolar cada parte do programa e testá-las em separado (RUNGTA, 2018). No entanto, se o teste de unidade deve ser seguido pelo teste de integração (esse tipo será tratado logo na sequência), por que então não deixar para investir tanto tempo e cuidado no próximo teste? Por um motivo muito simples: economizar nos testes de unidade leva a custos mais altos de correção de defeitos nos testes posteriores, principalmente, no teste de integração. Pular ou não dar a devida atenção a certas etapas nunca será uma boa ideia nos procedimentos de teste. A aplicação do teste de unidade pode ser feita de forma manual ou automatizada, com o uso de aplicações especí�cas, que trataremos ainda neste item do conteúdo. Caso a aplicação do teste seja manual, é de se esperar que a equipe conte com um passo a passo para a realização do procedimento. Além disso, o documento de especi�cação dos requisitos deve estar à mão, já que nele devem estar descritas as funções do sistema. Pela facilidade e conveniência que proporciona, o teste automatizado tem sido mais usado pelos programadores. Pode-se usar uma aplicação de teste de unidade (que comumente chamamos de Framework UnitTest) para desenvolver casos de teste automatizados. Nesse caso, o desenvolvedor estabelece critérios no teste para veri�car a corretude da unidade. Durante a execução dos casos de teste, o framework registra aqueles que falham em qualquer critério estabelecido e relatam ao testador. Testar de forma automatizada é, portanto, muitas vezes uma forma mais completa de teste, pois pode revelar dependências desnecessárias entre o código que está sendo testado e outras unidades. Para o bem da correta modularização, da manutenibilidade e da facilidade em se testar o software, essas dependências desnecessárias podem e devem ser eliminadas. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 10/30 Algumas das mais utilizadas ferramentas de testes automatizados incluem (RUNGTA, 2018): JUnit: trata-se de uma ferramenta de teste gratuita criada para testes de unidades escritas em Java. Ela fornece asserções para identi�car o método de teste e, primeiramente, realiza o teste dos dados para, então, inseri-los no código a ser testado. NUnit: esse framework é amplamente usado para testes unitários de programas .net. É uma ferramenta de código aberto que permite escrever scripts manualmente. Ele suporta testes baseados em dados que podem ser executados em paralelo. PHPUnit: ferramenta de teste de unidade para programadores PHP. Toma pequenas porções de código que são chamadas de unidades e testa cada uma delas separadamente. A ferramenta também permite que os desenvolvedores usem métodos de asserção pré-de�nidos para a�rmar que o sistema se comporta de uma certa maneira. Antes de terminarmos nossa abordagem sobre os testes de unidade, vale uma re�exão sobre os pontos fortes e as fragilidades relacionadas a essa prática. Devido a sua natureza modular, pode-se testar partes do projeto sem que se tenha de esperar outros módulos para sua realização. Em contrapartida, não se pode esperar que o teste de unidade revele todos os defeitos do código. Não é possível avaliar todos os caminhos passíveis de execução, mesmo em programas mais triviais, já que falta ao testador o restante do sistema. Outro ponto positivo relacionado aos testes de unidade é que um testador, que esteja procurando conhecer as funcionalidades do sistema e como utilizá- las, pode olhar para cada unidade disponível e obter as informações que deseja. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 11/30 atividade Atividade O uso repetitivo do mesmopesticida para erradicar insetos na plantação irá, com o tempo, levar os insetos a desenvolver resistência a ele. O mesmo se aplica ao teste de software: se o mesmo conjunto de testes repetitivos for realizado, o método será inútil para descobrir novos defeitos. RUNGTA, K. Learn Testing in 1 Day: De�nitive Guide to Learn Software Testing for Beginners. Edição do Kindle, 2018, p. 76. Em relação aos conceitos básicos de teste de software e ao teste de unidade, analise as a�rmações que seguem. I. Depuração é a técnica usada para corrigir o defeito encontrado no código. II. O teste de unidade é aplicado no sistema todo, que passa a ser entendido como uma unidade. III. Considera-se defeito uma de�ciência em determinado trecho do algoritmo. IV. Pode-se aplicar um teste sem que se execute o código, desde que se tenha conhecimento de suas funções. A partir das a�rmativas apresentadas anteriormente, é correto o que se a�rma em: a) I, II e III, apenas. b) I, II, III e IV. c) II e III, apenas. d) III, apenas. e) I e III, apenas. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 12/30 O teste de unidade, por útil e indispensável que seja, não é capaz de exercitar os trechos de código e utilizar dados que só existem para �ns de conexão entre módulos. Essa lacuna é, entretanto, preenchida pelo teste de integração, processo no qual os módulos do software são logicamente integrados e testados como um conjunto de unidades. Conforme tratamos no item anterior, um projeto de software deve prever sua criação em módulos. Com bastante frequência, os módulos são desenvolvidos por programadores diferentes, com lógicas e entendimentos do problema distintos entre si. É compreensível e indispensável, portanto, que a checagem do �uxo de dados entre esses módulos seja submetida a teste. Outro forte argumento em favor da necessidade de realização do teste de integração é a possibilidade (ou quase a certeza) de haver mudança nos requisitos provocada pelo cliente e a consequente falta de tempo ou de oportunidade para se testar esses novos requisitos em uma unidade. No mesmo sentido, as interfaces dos módulos com o banco de dados e com outros módulos podem ter sido codi�cadas incorretamente e só o teste de Teste de IntegraçãoTeste de Integração 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 13/30 integração poderá apontar o defeito. Casos de Teste no Teste de Integração Pela própria natureza e �nalidade do procedimento, os casos de teste aqui diferem de outros casos de teste por serem projetados para exercitar interfaces e �uxo de dados entre os módulos. As prioridades devem ser dadas aos pontos de integração, em detrimento das funções de unidade que já foram testadas. Imagine o seguinte cenário como 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 14/30 exemplo: nosso sistema possui três módulos compostos pela página de login, pela caixa de correio e pelo módulo de excluir e-mails, e cada um deles está integrado logicamente. Nossa missão não é encontrar defeitos nos módulos individualmente, já que essa providência já foi tomada no teste de unidade. A tarefa aqui se resume em checar as vinculações, por exemplo, entre a página de login e a caixa de e- mail. Da mesma forma, a integração entre a caixa de correio e a funcionalidade de exclusão de e-mails compõe nossa principal atividade. O Quadro 2.1 exibe dois casos de teste possíveis para o processo proposto, com suas descrições e seus resultados esperados. Observe que a apresentação desses casos difere ligeiramente daquela oferecida no item anterior desta Unidade. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 15/30 Quadro 2.1 – Casos de teste para o sistema de e-mail Fonte: Adaptado de Rungta (2018). #PraCegoVer: Apresenta um quadro com fundo na cor cinza com quatro colunas, onde a primeira linha está na cor azul escuro contendo o título de cada coluna. As demais linhas alternam em tons de cinza claro e cinza escuro. A primeira coluna representa o identi�cador do caso de teste, a segunda coluna apresenta o objetivo do caso de teste, a terceira coluna apresenta a descrição do caso de teste e a quarta coluna apresenta o resultado esperado. Na primeira linha, com fundo em tom cinza mais escuro, é apresentado o número um como identi�cador do caso de teste, seguido do texto: Checar o vínculo entre as interfaces da tela de login e do módulo de caixa de e-mail, que representa o objetivo do caso de teste. Logo em seguida temos o texto: 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 16/30 Entrar com as credenciais e clicar no botão de login, que representa a descrição do caso de teste. O último texto da linha temos: Ir direto para a caixa de entrada de email, que representa o resultado esperado. Na segunda linha, com fundo em tom cinza mais claro, é apresentado o número dois como identi�cador do caso de teste, seguido do texto: Checar a interface entre a caixa de e-mail e o módulo de exclusão de e-mail. que representa o objetivo do caso de teste. Logo em seguida temos o texto: A partir da Caixa de e-mails, selecione um e-mail e acione o botão de exclusão, que representa a descrição do caso de teste. O último texto da linha temos: O e-mail selecionado deverá aparecer na pasta de e-mails excluídos, que representa o resultado esperado. Abordagens de Teste Em sua essência, esse procedimento irá checar as ligações entre os módulos do sistema. No entanto, há diferentes estratégias para aplicação do teste e, pelo critério de interesse e de importância, abordaremos três delas, resumidamente: Estratégia Big Bang: todos os componentes são integrados juntos de uma vez e depois testados. Essa abordagem pode ser bem conveniente para sistemas pequenos, mas a aplicação pode ser difícil em sistemas com muitos módulos. Estratégia Top Down: na abordagem top down (de cima para baixo), os testes ocorrem de cima para baixo seguindo o �uxo de controle do sistema de software. Aqui, os módulos mais importantes ou críticos são testados prioritariamente e, via de regra, grandes falhas de projeto podem ser encontradas e corrigidas primeiro. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 17/30 Estratégia Bottom Up: na estratégia de baixo para cima, cada módulo em níveis mais baixos é testado com módulos mais altos até que todos os módulos sejam testados. As estratégias top down e bottom up são exibidas esquematicamente na Figura 2.1. #PraCegoVer: Apresenta um organograma ao centro contendo seis blocos retangulares, dispostos de cima para baixo. À sua esquerda uma seta apontando para baixo com a descrição Top Down e à sua direita uma seta apontando para cima com a descrição Bottom Up. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 18/30 O primeiro módulo, ao topo do organograma possui fundo na cor azul claro com o texto: módulo um. Mais abaixo, no nível inferior o organograma possui dois outros blocos na cor azul claro. O bloco da esquerda com o texto: Módulo 2. O bloco da direita no mesmo nível, possui o texto: Módulo 3. No nível mais abaixo, ao lado esquerdo, rami�cado a partir do módulo 2, são apresentados outros dois módulos com fundo na cor azul claro: à esquerda com o texto: Módulo quatro e à direita com o texto: Módulo cinco. Nesse mesmo nível, rami�cado a partir do módulo 3, temos um bloco com o texto: Módulo 6 Esse é o conteúdo que preparamospara Teste de Integração. Sigamos adiante com nossa atividade do tópico. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 19/30 atividade Atividade Considerando o conteúdo relacionado ao Teste de Integração, assinale a alternativa que contém os termos que completam corretamente as lacunas da sentença que segue: Para que o Teste de Integração seja possível, é necessário que o testador promova a ligação entre os ___________ disponíveis e faça a checagem das _________ entre módulos, incluindo chamadas, interações e �uxos de dados. Ao contrário do teste de _________, o Teste de Integração não visa a busca por defeitos no módulo. A partir do trecho apresentado anteriormente, assinale a alternativa que apresenta respectivamente as palavras que completam a lacunas: a) Módulos, interfaces e unidade. b) Módulos, entidades e depuração. c) Métodos, interfaces e big bang. d) Módulos, semelhanças e depuração. e) Métodos, interfaces e depuração. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 20/30 Imagine a seguinte situação: sua equipe recebeu um produto a ser testado, aplicou o procedimento determinado no rigor da forma e obteve sucesso em encontrar e corrigir defeitos no código. No entanto, pouco tempo depois, uma nova funcionalidade ou ligeira alteração precisou ser incluída no sistema e lá se foi a con�ança no produto. Esse cenário é comum o bastante para contar com uma modalidade de teste especí�ca para sua ocorrência. Denominado Teste de Regressão, justi�ca sua existência por considerar que o sistema experimentou regressão ao ter novos componentes incluídos ou componentes já existentes alterados. Uma outra justi�cativa plausível para esse teste é o inevitável efeito modi�cador de qualquer tipo de manutenção aplicada ao produto, que incluem correções de defeitos, exclusão de funcionalidades e qualquer outra modi�cação no código. Rungta (2018) a�rma que o Teste de Regressão é de�nido como um tipo de teste aplicado para con�rmar que um programa recente ou alteração de código não afetou adversamente os recursos existentes. Em relação a sua Teste de RegressãoTeste de Regressão 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 21/30 aplicação, o procedimento prevê a seleção total ou parcial de casos de teste já executados e a sua reexecução, com a �nalidade de garantir que as funcionalidades estejam intactas. Como todo procedimento, o Teste de Regressão também conta com melhores práticas para sua aplicação. A primeira prevê que tudo seja testado novamente, o que implica que todos os casos de teste sejam aplicados novamente, tornando o processo, muitas vezes, dispendioso e moroso. A segunda prática, conhecida como seleção de Teste de Regressão, prevê que os casos de teste sejam reaplicados de forma seletiva, de acordo com a conveniência de sua reutilização. A equipe deve escolher, então, casos de testes reutilizáveis e casos de teste obsoletos, descartando estes últimos. Por �m, a terceira prática prevê que os casos de teste sejam selecionados de acordo com seu impacto nos negócios e com base em sua capacidade de exercitar as funcionalidades críticas do sistema. É natural que, nesse caso, a equipe deverá conhecer muito bem o sistema para não cometer erros na seleção. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 22/30 atividade Atividade O Teste de Regressão é de�nido como um tipo de teste aplicado para con�rmar que um programa recente ou alteração de código não afetou adversamente os recursos existentes. RUNGTA, K. Learn Testing in 1 Day: De�nitive Guide to Learn Software Testing for Beginners. Edição do Kindle, 2018, Considerando o conteúdo relacionado à justi�cativa para aplicação de Teste de Regressão, analise as a�rmações que seguem. I. Modi�cação do código por causa de novo requisito implementado. II. Nova funcionalidade adicionada ao software. III. Descoberta de um defeito na unidade durante o Teste de Integração. A partir das a�rmativas apresentadas anteriormente, é correto o que se a�rma em: a) I, apenas. b) II, apenas. c) III, apenas. d) I e II, apenas. e) I, II e III. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 23/30 Nossa última modalidade de teste abordada nesta Unidade constitui um formato de teste muito parecido com o “codi�car e testar”, modelo de desenvolvimento no qual não se dá ênfase a outras etapas, senão as de codi�car e testar. Outra característica relevante dessa modalidade é que foi concebida no âmbito da metodologia XP (Extreme Programming), criada para desenvolvimento ágil de software. Desenvolvimento Voltado aDesenvolvimento Voltado a TestesTestes 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 24/30 Para a realização dos testes no formato TDD (Test-Driven Development ou Desenvolvimento Voltado a Testes), a equipe apoia-se no fato de que a descrição dos requisitos – ou as estórias escritas pelo cliente – não constitui documento com excessiva formalidade e detalhamento de funções e que, por esse motivo, o cliente deve acompanhar o processo de codi�cação e teste. Em tempos passados, o teste era realizado tomando como base o código completo, ou quase completo, já que as linguagens de programação di�cultavam a execução de apenas partes do programa. Hoje em dia, tecnologias que suportam linguagens orientadas a objeto (como o Java) permitem não só́ a automatização dos testes – ação tão importante no âmbito do TDD – como também a execução de partes autônomas de um programa, como uma classe, por exemplo (NETO, 2016). O teste de parte do código segue a sua criação, ou seja, o teste e a integração são feitos logo após sua codi�cação. Os passos do desenvolvimento guiado pelos testes incluem: A seleção de um conjunto de casos de teste; A execução do caso de teste. Encontrando-se o defeito, o código deverá ser ajustado. Caso não se encontre defeito, um novo conjunto 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 25/30 de casos de teste deve ser selecionado e o processo deve ser reiniciado (PINHEIRO, 2015) Este foi o conteúdo de teste que preparamos. A variedade de assuntos relacionados ao tema, no entanto, ultrapassa os limites desta Unidade e deve ser alcançada pela leitura de outras fontes, como a indicada a seguir. Mantenha-se �rme nas atividades e até a próxima! 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 26/30 atividade Atividade Para a realização dos testes no formato TDD, a equipe apoia-se no fato de que a descrição dos requisitos – ou as estórias escritas pelo cliente – não constitui documento com excessiva formalidade e detalhamento de funções e que, por esse motivo, o cliente deve acompanhar o processo de codi�cação. Assinale a alternativa que contém a correta justi�cativa para a presença do cliente no processo de desenvolvimento orientado a testes. a) Cliente pode ordenar trocas de elementos na equipe de teste. b) Cliente dar sugestões para otimização do código, o que pode torná-lo mais e�ciente. c) Cliente pode ajudar na refatoração do código, de modo que sua formatação �que de acordo com o que deseja. d) Cliente pode ajudar no processo de depuração do código. e) Cliente ajuda na elaboração de casos de teste com base em seu conhecimento das regras de negócio implementadas. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463…27/30 indicações Material Complementar LIVRO Introdução ao Teste de Software Márcio Eduardo Delamaro; José Carlos Maldonado; Mário Jino. Editora: Elsevier ISBN: 8535283528 Comentário: escrito por três das maiores autoridades brasileiras em Engenharia de Software e Teste de Software, essa edição atualizada do livro é abrangente o su�ciente para introduzir novos assuntos aos iniciados e, ainda assim, simples na medida para iniciantes. Vale a leitura. 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 28/30 FILME Estrelas além do Tempo Ano: 2016 Comentário: o �lme mostra a contribuição de três mulheres na corrida espacial travada entre Estados Unidos e União Soviética, em plena guerra fria. Envoltas em uma circunstância social peculiar, as três amigas promovem verdadeira revolução em um ambiente dominado por homens. T R A I L E R 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 29/30 conclusão Conclusão É provável que alguém pense ser desnecessário e lugar comum mencionar coisas relacionadas a importância do teste de software. Mas não é. A aplicação de testes nos produtos de software transcende a mera formalidade procedimental e alcança níveis de atividade crítica no processo de construção do sistema. Sem ele, não teríamos garantia de que o produto funciona como se espera e nada além da sorte protegeria o cliente de paradas súbitas no programa, manifestação de defeitos até então ocultos e, em casos mais extremos, de prejuízo �nanceiro e em vidas. Pela complexidade e criticidade envolvida na atividade é que foram criadas várias modalidades e estratégias de teste e essa diversidade se manifesta também na escolha do momento para aplicação do teste: após se testar a unidade, depois da integração, após a inclusão de uma nova funcionalidade etc. Esperamos que você se torne uma boa referência no assunto e que seja capaz de produzir e transmitir conhecimento em teste de software. Até a próxima! referências Referências Bibliográ�cas 22/09/2021 21:22 Ead.br https://fadergsead.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_PLAYER&COURSE_ID=_7463… 30/30 NETO, R. M. Engenharia de software. Londrina: Editora e Distribuidora Educacional S.A., 2016. PINHEIRO, A. F. Fundamentos da Engenharia de Software. 1 ed. Recife: Amazon Publishing, 2015. RUNGTA, K. Learn Testing in 1 Day: De�nitive Guide to Learn Software Testing for Beginners. Edição do Kindle, 2015. ____. Learn Testing in 1 Day: De�nitive Guide to Learn Software Testing for Beginners. Edição do Kindle, 2018. IMPRIMIR