Prévia do material em texto
TESTE DE SOFTWARE II 1 📝 TESTE DE SOFTWARE II ID 7 Status Done Dt. Conclusão Carga Horária 50 Nota 10 Planejamento de testes Apresentação A realização de testes é uma atividade de extrema importância nos projetos de desenvolvimento de software. Isto, porque eles vão possibilitar que a maioria dos problemas sejam encontrados antes mesmo de o produto final chegar às mãos do cliente, e também porque vão assegurar uma melhoria na qualidade do produto entregue.Mas é fundamental que a realização dos testes seja precedida de um bom planejamento, para que seja possível identificar todas as partes do sistema que deverão ser testadas ou não, quem fará os testes, quais serão os documentos resultantes dos testes, entre outros aspectos. Para um bom planejamento de testes, existem alguns modelos reconhecidos internacionalmente, mas não é necessário que as empresas adotem qualquer um deles, e sim que elaborem seu próprio plano de testes, para que as atividades permaneçam organizadas e padronizadas. Nesta Unidade de Aprendizagem, você verá que o planejamento de testes é algo importante, que deve ser feito antes que os testes sejam realizados. Vai aprender, também, que existem padrões internacionais que descrevem boas práticas para a elaboração do plano de testes, como a norma IEEE 829 e também o PMBOK. Bons estudos. @31/08/2022 TESTE DE SOFTWARE II 2 Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Elaborar o planejamento de testes. Identificar o plano de testes segundo a Norma IEEE 829. Descrever o plano de testes conforme o PMBOK. https://youtu.be/0bYJmcjpg6s https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0dfe0781-6c02-4e0a-b410-573c31 5509ed/Planejamento_de_testes.pdf 🎯 Desafio 📈 Infográfico 1. Os testes, durante um projeto de desenvolvimento de software, são fundamentais para garantir a entrega de um produto de qualidade ao cliente, mas eles não podem iniciar sem que sejam planejados. Pode-se dizer que o maior propósito do planejamento de testes é: A. servir de guia para os testadores, mostrando a maneira como os testes devem ser realizados. O planejamento de testes tem vários objetivos, como, por exemplo, definir as partes do software que precisam ou não ser testadas, mas, o principal objetivo do planejamento de testes é servir de referência e guia ao longo da realização das atividades de teste. 2. O documento que traz, de maneira detalhada, todos os problemas e erros encontrados, e ainda todos os acontecimentos ocorridos durante a realização dos testes, focando principalmente naqueles itens que precisarão ser avaliados posteriormente, segundo a norma IEEE 829, é: E. Relatório de incidentes de teste. O relatório de incidentes de teste apresenta, de maneira detalhada e minuciosa, todos os acontecimentos que ocorreram durante as atividades de teste, focando, principalmente, em itens que precisarão passar por avaliação de outros membros da equipe de projeto. 3. Imagine que você é gestor de projeto de desenvolvimento de software, e está trabalhando em um grande projeto que contém vários testadores divididos em equipe. Qual é o documento que deve ser usado para definir o que será testado, e por quem, de acordo com a norma IEEE 829? C. Relatório de encaminhamento de itens de teste. Caso um grande projeto de desenvolvimento de software precise de mais de uma equipe de testadores, é possível utilizar um relatório de https://youtu.be/0bYJmcjpg6s https://www.notion.so/signed/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0dfe0781-6c02-4e0a-b410-573c315509ed%2FPlanejamento_de_testes.pdf?table=block&id=d0512f95-1b8e-4886-8e44-3e797a74a143&spaceId=fcc5786c-573b-4391-994d-f958847592c7&userId=dfbbbfa9-7afa-4f6b-85b4-3e86e745823b&cache=v2 https://www.notion.so/Desafio-274a2bca299b4ff19ae8d485878af4f0 https://www.notion.so/Infogr-fico-f0e12bc446d74e15a4807bf72b3376ea TESTE DE SOFTWARE II 3 encaminhamento de itens de teste para indicar quais integrantes, de qual equipe, irão testar determinadas funcionalidades ou partes do software. 4. O PMBOK encara a realização dos testes, por ser uma tarefa extremamente importante para o desenvolvimento de um software, como um projeto independente. Sendo assim, qual é a área de conhecimento do projeto de testes que vai ficar encarregada de definir qual será a abrangência dos testes, bem como aquilo que deverá ser testado ou não? E. Gerenciamento do escopo. O gerenciamento do escopo, segundo o PMBOK, serve para definir a extensão do projeto de testes, definindo o que será ou não testado, incluindo os motivos para isso. 5. O PMBOK entende que os testes de software devem formar um projeto independente do projeto de desenvolvimento do software, tendo, inclusive, fases de ciclo de vida que, apesar de poderem ter a mesma nomenclatura, envolvem atividades diferentes. Nesse sentido, segundo o PMBOK, qual é a fase do projeto de testes que avalia se as atividades estão sendo realizadas conforme o planejado? D. Monitoramento e controle. A fase de monitoramento e controle é responsável por indicar se as atividades de teste estão acontecendo conforme o planejado, para que seja possível tomar alguma atitude saneadora antes mesmo que um problema atrapalhe o andamento do projeto de testes e também do projeto de software. Abordagens de teste Apresentação O teste de software serve, basicamente, para averiguar se o software, ou partes dele estão funcionando corretamente em consonância com os requisitos e as necessidades dos usuários. Além disso, encontrar problemas antes da entrega final ao usuário vai garantir um produto com maior qualidade, confiabilidade e segurança. Ao planejar os testes, é importante escolher as abordagens de teste que serão utilizadas. Dentre as abordagens de teste, as principais são a do teste de caixa-branca, caixa-preta e caixa-cinza, que servem para testar a estrutura interna e as saídas apresentadas pelo sistema. Nesta Unidade de Aprendizagem, você verá mais sobre a aplicação e as características dos testes de caixa-branca, caixa-preta e caixa-cinza. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Interpretar o teste de caixa branca. Identificar o teste de caixa preta. Descrever o teste de caixa cinza. TESTE DE SOFTWARE II 4 https://youtu.be/zNylv4dlPpI https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b519a7fe-15ee-4f6e-9f70-8068bd4 0bd1b/Abordagens_de_teste.pdf 🎯 Desafio 📈 Infográfico 1. Você é analista de sistemas, e está desenvolvendo um software de logística para um grande cliente de sua empresa. Por ser um dos programadores no projeto, você vai realizar testes na estrutura interna do código, a fim de verificar o funcionamento dos laços de repetição, chamadas de função, decisões lógicas, entre outros aspectos. Esse tipo de teste é chamado de: D. Teste de caixa-branca. O teste de caixa-branca é uma abordagem de teste em que, preferencialmente, o programador que fez a codificação executa testes na parte interna do código- fonte, a fim de encontrar problemas nas estruturas internas do programa. Os testes de caixa-preta e caixa-cinza tratam, respectivamente, de testes que não acessam a estrutura interna do software, e que acessam as consultas SQL. O teste de caixa-fonte e de caixa-interna não são abordagens de testes. 2. O teste de caixa-branca é aquele em que o testador, ou analista de testes, consegue validar a codificação do software, a sua estrutura interna. Neste sentido, através do teste de caixa- branca, é possível encontrar problemas como: A. Cálculos com respostas erradas e finalização errada de laços de repetição. O teste de caixa- branca permite encontrar problemas que se relacionam a erros na estrutura interna do código-fonte, como cálculos mal resolvidos, término inadequado de laços, entre outros. As demais opções dizem respeito a aspectos que são identificados com o teste da caixa-preta, ou, ainda, através doplanejamento do projeto como um todo. 3. Você é testador de software, e está trabalhando nos testes de um sistema em que precisou estudar muito os requisitos do software, a fim de conhecer as saídas do sistema para cada ação executada. Que abordagem de teste é essa? C. Teste de caixa-preta. O teste de caixa-preta é uma abordagem que exige conhecimento do testador acerca dos requisitos do sistema, e das saídas que devem ser apresentadas para cada ação executada. O testador insere dados de entrada, recebe as saídas do sistema, e faz comparações com as saídas que eram esperadas. O teste de caixa-branca ou de vidro acessa a estrutura interna https://youtu.be/zNylv4dlPpI https://www.notion.so/signed/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb519a7fe-15ee-4f6e-9f70-8068bd40bd1b%2FAbordagens_de_teste.pdf?table=block&id=f7e697f7-bbf1-4d1f-9899-0e56a004d242&spaceId=fcc5786c-573b-4391-994d-f958847592c7&userId=dfbbbfa9-7afa-4f6b-85b4-3e86e745823b&cache=v2 https://www.notion.so/Desafio-e8d5ba0153494c529a9bec8fa6fcdeb4 https://www.notion.so/Infogr-fico-aaf394b629414cfa80812341e015b24c TESTE DE SOFTWARE II 5 do software. No entanto, o teste de caixa-cinza acessa as consultas SQL, e o de caixa-transparente não é uma abordagem de teste. 4. O teste de caixa-preta é aquele que possibilita validar se o software que está sendo desenvolvido atende às necessidades do cliente, mas sem que o testador, ou analista de testes, precise ter acesso à estrutura interna ao código-fonte. Quais tipos de problemas podem ser encontrados através do teste de caixa-preta? E. Permite que deixe campos obrigatórios em branco e aceita valores fora de um intervalo especificado nos requisitos. Os problemas encontrados pelo teste de caixa-preta se relacionam com os requisitos do sistema. Nesse sentido, através dele é possível encontrar valores que são aceitos pelo sistema e que não poderiam ser pelos requisitos, e, ainda, campos obrigatórios que podem ser deixados em branco e não seria permitido. As demais opções dizem respeito a aspectos que são identificados com o teste da caixa-branca, ou, ainda, através do planejamento do projeto como um todo. 5. O tipo de abordagem de teste em que o testador tem acesso às estruturas SQL do código- fonte, e pode manipulá-las, a fim de verificar quais são as saídas produzidas quando acessa o banco de dados é o: D. Teste de caixa-cinza. O teste de caixa-cinza é aquele em que o testador realiza testes em todas as estruturas SQL do código, diretamente no banco de dados, para comparar as saídas obtidas com as saídas esperadas. O teste de caixa-branca ou de vidro é aquele em que o testador acessa a estrutura interna do software. O de caixa-preta é aquele em que o testador valida os requisitos. Todavia, o teste de estrutura interna não diz respeito a nenhuma abordagem de teste. Níveis de teste Apresentação Atualmente, as equipes de desenvolvimento já estão adaptadas à ideia de que os testes de software não são mais realizados em um momento predefinido do projeto, mas sim em todos os estágios do ciclo de vida do projeto de fabricação de software. Cada estágio corresponde a um nível diferente de teste, o qual vai avaliar partes específicas, a fim de validar aspectos diferentes do projeto. Nesta Unidade de Aprendizagem, você estudará os níveis de teste. Além disso, conhecerá os testes de sistema, de unidade, de integração, de aceitação e de regressão. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Definir os níveis de teste e o teste de sistema. Diferenciar os níveis de teste de unidade e de integração. Descrever os níveis de teste de aceitação e de regressão. TESTE DE SOFTWARE II 6 https://youtu.be/_kaRwfGoI3o https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1f48cab9-5270-464d-ba5f-f78ef8a0 8553/Nveis_de_teste.pdf 🎯 Desafio 📈 Infográfico 1. O teste de sistema é aquele que verifica se o software que foi desenvolvido está de acordo com o que foi definido no escopo do projeto, considerando a execução das atividades que deveria executar e se está condizente com o nível de qualidade, segurança e confiabilidade exigidos. Nesse sentido, pode-se dizer que o teste de sistema faz a validação dos: E. requisitos funcionais e não funcionais do software. O nível de teste de sistema é responsável por validar tanto os requisitos funcionais do software, que dizem respeito às atividades que o sistema deve realizar, como os requisitos não funcionais, os quais definem como as atividades vão ser realizadas, em termos de segurança, confiabilidade, tempo de operação, facilidade de uso, entre outros. 2. Todos os níveis de teste de software são importantes, pois é necessário que sejam feitos ao longo de todo o ciclo de vida do projeto de desenvolvimento. Em um desses níveis, é importante que o próprio desenvolvedor se envolva nos testes, pois ele tem um conhecimento maior da linguagem de programação utilizada no código, além de conhecer a estrutura interna do software. Que nível de teste é esse? C. Teste unitário. Trata-se do nível de teste unitário, aquele que averigua o código-fonte do sistema, as chamadas de métodos, classes, funções e pedaços de código, em busca de trechos mal escritos de programação que gerem problemas. Por isso, é importante que o desenvolvedor se envolva nos testes, ou um outro desenvolvedor que não trabalhou naquele trecho específico de código, de modo que os testes sejam mais efetivos. 3. O teste de integração tem como propósito testar partes do sistema, de forma integrada, que já haviam sido testadas e validadas por meio de testes de unidade. Isso serve para verificar se, juntas, elas funcionam corretamente. Nesse sentido, os testes de integração servem para encontrar que tipo de problema? B. Problemas de transmissão de dados. Problemas com transmissão de dados são os mais comuns de serem encontrados pelo teste de integração. Isso porque as partes do código podem funcionar corretamente sozinhas, mas, quando precisam enviar ou receber dados de outras partes do código, https://youtu.be/_kaRwfGoI3o https://www.notion.so/signed/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1f48cab9-5270-464d-ba5f-f78ef8a08553%2FNveis_de_teste.pdf?table=block&id=6dcac603-0a57-461a-a92a-60072774e7cd&spaceId=fcc5786c-573b-4391-994d-f958847592c7&userId=dfbbbfa9-7afa-4f6b-85b4-3e86e745823b&cache=v2 https://www.notion.so/Desafio-16d7eff542af48c785bebcf4e7704f89 https://www.notion.so/Infogr-fico-b899e3be2614480cb205b543f75e136a TESTE DE SOFTWARE II 7 pode acontecer de os dados recebidos não serem o esperado, assim como os dados enviados. As demais alternativas dizem respeito a problemas encontrados com o teste unitário. 4. O teste de aceitação do usuário é aquele que recebe uma aceitação formal do usuário sobre o software que está sendo entregue, ou seja, o usuário informa que aprova o software da maneira como está desenvolvido. Existem outros dois tipos de teste de aceitação, os quais se referem à aceitação de uma entrega entre equipes, e o teste de aceitação que aprova contratos e legislação que precisam ser seguidas. Como esses testes se chamam? D. Teste de aceitação de entrega e teste de aceitação de contrato e regulamento. O teste de aceitação de entrega é aquele em que uma equipe recebe uma parte desenvolvida por outra equipe, para que dê seguimento ao serviço, já o teste de aceitação de contrato e regulamento é aquele que aceita os termos contratuais, assim como as leis e as normas que devem ser seguidas pelo software. 5. O teste de regressão normalmente é realizado enquanto o código do software ainda está sendo desenvolvido. Ele é necessário sempre que alguma mudança na estrutura do software acontece, tanto para modificar algo já implementado quanto para incluir uma nova funcionalidade. Nesse sentido, o teste de regressão é feito por meio dos testes de qual(is) parte(s) do software? A. Todo o software. Durante o testede regressão, devem ser executados novamente os testes já realizados em todo o software. É dessa maneira que vão ser encontrados problemas causados pelas mudanças na estrutura do software, inclusive identificando se erros que já haviam sido solucionados voltaram a acontecer. Testes unitários Apresentação Os testes unitários são aqueles aplicados, preferencialmente, pelo próprio programador. Seu principal objetivo não é testar o sistema como um todo, e sim o inverso, ou seja, testar a menor parte em que um sistema pode ser testado. Essa menor parte é chamada de unidade, e vem daí o nome de teste unitário ou teste de unidade. Nesta Unidade de Aprendizagem, você estudará sobre os testes unitários, a fim de compreender o seu conceito, as suas características, quais são as suas principais ferramentas, e ainda aprenderá a aplicar um teste unitário utilizando JUnit. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Definir o que são os testes unitários e as suas características. Identificar um teste unitário. Aplicar as técnicas de testes unitários. TESTE DE SOFTWARE II 8 https://youtu.be/S6qkn9h3sX0 https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5f05f727-5ed6-41f6-96d6-bab5a2d 6a05a/Testes_unitrios.pdf 🎯 Desafio 📈 Infográfico 1. Você trabalha como analista em uma empresa fornecedora de softwares para um grupo de supermercados. Sua próxima atividade é trabalhar no desenvolvimento de um sistema de controle de estoque, e seu gestor informou que você deverá atuar também como testador, sem que seus testes envolvam a verificação do módulo ou do sistema como um todo. Você logo entendeu que deve realizar que tipo de teste? D. Teste de unidade. O teste unitário é realizado, geralmente, pelo próprio programador, e não tem a intenção de testar uma grande parte ou o sistema como um todo, e sim uma unidade, que é a menor parte de um sistema, e condiz com aquela que o programador está codificando atualmente. As demais opções dizem respeito a outros tipos de teste de software. 2. Você está codificando um módulo de um sistema de controle de livros em uma biblioteca e finalizou a parte de cadastro de livros. Para efetuar os testes unitários nessa unidade, você precisará verificar se as informações estão sendo gravadas corretamente no banco de dados, na medida em que você inclui, altera ou exclui registros. Qual elemento da unidade você está testando? A. Estrutura de dados locais. O teste das estruturas de dados locais envolve a verificação do armazenamento dos dados temporários na memória, e permanentes no banco de dados, a fim de entender se a unidade está realizando a manipulação correta das informações. As demais alternativas contêm outros elementos testados pelo teste de unidade. 3. Você finalizou a codificação do cadastro de férias de funcionários em um sistema de recursos humanos. Nesse momento, você vai testar todos os controles da unidade para verificar se os erros cometidos pelo usuário recebem uma mensagem de retorno, e se essa mensagem contém informações a respeito do que pode ser feito para corrigir o problema, tudo isso sem que o funcionamento do sistema seja interrompido. Qual elemento da unidade você vai testar? B. Caminhos de manipulação de erro. O teste de caminhos de manipulação de erro envolve a verificação de todos os fluxos de controle da unidade, verificando se as mensagens de erro estão objetivas e claras, se o erro pode ser tratado antes de o sistema ser interrompido e se a descrição do erro possibilita ao usuário corrigi-lo e seguir trabalhando. As demais alternativas contêm outros elementos testados pelo teste de unidade. https://youtu.be/S6qkn9h3sX0 https://www.notion.so/signed/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5f05f727-5ed6-41f6-96d6-bab5a2d6a05a%2FTestes_unitrios.pdf?table=block&id=1a1e3c34-df58-4be9-a75f-18c306430a81&spaceId=fcc5786c-573b-4391-994d-f958847592c7&userId=dfbbbfa9-7afa-4f6b-85b4-3e86e745823b&cache=v2 https://www.notion.so/Desafio-10f0f201329444a3acd8e01ef4da6d01 https://www.notion.so/Infogr-fico-a5c32c0ea99f4e3c81b0fbaf3dea36ca TESTE DE SOFTWARE II 9 4. Você foi escalado para integrar a equipe de desenvolvimento de um sistema de controle financeiro de uma empresa, que está sendo fabricado em Java. Para entender melhor sobre os padrões de desenvolvimento da equipe, você começou a analisar os códigos desenvolvidos até o momento e observou que as classes eram elaboradas de tal maneira que os testes unitários eram realizados por meio da comparação entre os valores que eram esperados pela unidade e os valores realmente recebidos pela sua execução. Dito isso, a ferramenta de teste de unidade que está sendo utilizada certamente é: C. JUnit. A ferramenta de testes de unidade chamada JUnit serve para fazer testes de unidade automatizados em sistemas desenvolvidos em Java. Ela facilita a criação e a manutenção do código do programa no intuito de tornar os testes mais fáceis também. Com relação às demais ferramentas, o NUnit é da linguagem C#, o Jest é do Javascript, o RSpec é do Ruby e o Pytest é do Python. 5. Você acabou de codificar uma parte de um programa que vai ser utilizado com alunos em uma escola infantil. Seus testes unitários, da maneira como você os realizou, conseguiram identificar que a unidade programada por você está se integrando facilmente com o restante do sistema, que as partes do programa que já estavam prontas não apresentaram novos erros, e ainda possibilitaram a documentação detalhada das funcionalidades constantes nessa unidade. Logo, pode-se perceber que isso aconteceu por quê? D. Os testes foram feitos de forma automatizada. Quando feitos de forma automatizada, os testes unitários permitem que as funcionalidades sejam documentadas de maneira detalhada, que a área de cobertura do teste seja ampliada para além da fronteira da unidade e, ainda, que os problemas já resolvidos não voltem a aparecer. As demais alternativas não asseguram que todas essas vantagens sejam conseguidas com os testes unitários.