O documento discute os conceitos de verificação e validação no desenvolvimento de software, testes de software e automação de testes. Aborda os níveis de teste de software, incluindo teste de unidade, integração e sistema, assim como técnicas de teste manual e automático.
O documento discute técnicas e estratégias para testes de software, enfatizando a importância de: 1) testar o código sistematicamente durante o desenvolvimento, 2) verificar limites e pré-condições, e 3) automatizar testes para validação contínua e prevenção de regressões.
O documento resume a trajetória profissional de Thiago Ghisi, desde sua formação inicial em 2003 até 2011, incluindo cursos, certificações e experiências de trabalho com foco em testes automatizados, programação ágil e qualidade de software.
O documento fornece uma introdução sobre testes de software, discutindo princípios como verificação versus validação, técnicas estáticas e dinâmicas de teste, fatores psicológicos relacionados a testes, e a importância de planejamento e cobertura de casos de teste.
O documento apresenta os conceitos e técnicas fundamentais de teste de software, descrevendo os objetivos do teste, os principais papéis e responsabilidades na equipe de teste, assim como os estágios e ciclo de vida dos testes.
Mini aula sobre testes de software descrevendo os conceitos básicos sobre as técnicas utilizadas para testes, verificação e validação no desenvolvimento de software.
Testes automatizados de software são essenciais para garantir a qualidade do software e evitar prejuízos. Testes manuais são difíceis, demorados e cobrem poucos casos, enquanto testes automatizados rodam rápido, cobrem muitos casos e ajudam na manutenção do código e documentação. É importante começar a automatizar testes desde o início do projeto, para garantir a testabilidade do código.
O documento discute técnicas e estratégias para testes de software, enfatizando a importância de: 1) testar o código sistematicamente durante o desenvolvimento, 2) verificar limites e pré-condições, e 3) automatizar testes para validação contínua e prevenção de regressões.
O documento resume a trajetória profissional de Thiago Ghisi, desde sua formação inicial em 2003 até 2011, incluindo cursos, certificações e experiências de trabalho com foco em testes automatizados, programação ágil e qualidade de software.
O documento fornece uma introdução sobre testes de software, discutindo princípios como verificação versus validação, técnicas estáticas e dinâmicas de teste, fatores psicológicos relacionados a testes, e a importância de planejamento e cobertura de casos de teste.
O documento apresenta os conceitos e técnicas fundamentais de teste de software, descrevendo os objetivos do teste, os principais papéis e responsabilidades na equipe de teste, assim como os estágios e ciclo de vida dos testes.
Mini aula sobre testes de software descrevendo os conceitos básicos sobre as técnicas utilizadas para testes, verificação e validação no desenvolvimento de software.
Testes automatizados de software são essenciais para garantir a qualidade do software e evitar prejuízos. Testes manuais são difíceis, demorados e cobrem poucos casos, enquanto testes automatizados rodam rápido, cobrem muitos casos e ajudam na manutenção do código e documentação. É importante começar a automatizar testes desde o início do projeto, para garantir a testabilidade do código.
O documento discute validação e testes de software, abordando tópicos como:
1) Os diferentes níveis de teste (unidade, integração, sistema e aceitação);
2) As abordagens de teste (caixa preta e caixa branca);
3) Os principais papéis no processo de teste (gerente de teste, líder de projeto de teste, etc);
4) A importância da documentação no planejamento e execução dos testes.
Trabalho realizado pelo aluno Rafael Sanches sobre teste de software explicando os passos necessários para realização de testes no desenvolvimento de software.
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
Minicurso ministrado na XII SemanaTI na UNIVEM - Marília/SP, nos dias 23 e 24 de setembro de 2019. O título do minicurso é Técnicas de Teste e Automatização do Teste de Unidade e o minicurso tratava na teoria sobre algumas técnicas de Teste de Software, bem como a Técnica de Teste Estrutural, Teste Funcional e Teste Baseado em Defeitos, assim como aprendemos sobre a fase do Teste de Unidade, e ali, aplicamos na prática a Técnica de Teste Estrutural e tratamos sobre a teoria e a prática da automação de testes.
Esse slide mostra a necessidade do processo de teste de software nos projetos de desenvolvimento de softwares, vamos demostrar as técnicas, tipos, fases, ferramentas, modelos e normas envolvidas na execução dos testes de software com o intuito de obter um ótimo nível de qualidade dos softwares gerados.
O documento descreve os principais tipos de testes de software, incluindo teste de caixa preta, caixa branca, unidade, integração, sistema e aceitação. Teste de caixa preta valida a saída de um sistema sem considerar sua estrutura interna, enquanto teste de caixa branca valida o fluxo de dados e controle interno do código. O documento fornece exemplos desses tipos de teste.
O documento apresenta um plano de treinamento sobre testes funcionais que inclui três dias de aulas. No primeiro dia serão abordados fundamentos de testes e derivação de casos de teste a partir de casos de uso. Nos dias seguintes serão apresentados recursos de uma ferramenta de teste funcional e realizados laboratórios sobre projeto de testes, criação de scripts manuais e automatizados e geração de relatórios.
O documento discute os conceitos e vantagens dos testes de software, apresentando os tipos de teste (caixa branca, preta e cinza) e as fases do teste (unidade, integração, sistema e aceitação). O objetivo dos testes é garantir a qualidade do software através da identificação de bugs.
O documento discute os benefícios e limitações do teste de software, incluindo como o teste pode reduzir custos e aumentar a qualidade se bem planejado. Também aborda conceitos como objetivos de teste, verificação e validação, projeto de casos de teste e análise de cobertura.
Noções em teste de software e introdução a automaçãoSandy Maciel
O documento apresenta conceitos básicos de teste de software, incluindo princípios, papéis, ciclo de vida de desenvolvimento e tipos de testes. Também fornece uma introdução ao Selenium WebDriver, abordando automação de testes e preparação do ambiente.
O documento fornece uma introdução aos conceitos básicos de teste de software, incluindo: 1) A importância da qualidade de software e dos testes; 2) Uma distinção entre testes manuais e testes automatizados; 3) Uma explicação do método TDD (Test-Driven Development) de escrever testes primeiro antes de codificar.
Casos teste integração efetiva de algumas unidades Adriana Telles
Trabalho feito para apresentação do curso de pos-graduação Senac, foi feito baseado no artigo.
2013 IEEE Sixth International Conference on Software Testing, Verification and Validation
Generating Effective Integration Test Cases from Unit Ones
Mauro Pezz`e
University of Lugano, Switzerland and
University of Milano Bicocca, Italy
mauro.pezze@usi.ch
Konstantin Rubinov
Faculty of Informatics
University of Lugano, Switzerland
konstantin.rubinov@usi.ch
Jochen Wuttke
Computer Science & Engineering
University of Washington, Seattle, USA
wuttke@cs.washington.edu
Tecnicas Para Planejamento E Execucao De Testes De Softwaremarthahuback
O documento discute técnicas para mapeamento de cenários de teste e técnicas de teste de caixa preta e caixa branca. Ele explica como mapear cenários de teste com foco no negócio e nos usuários, e como cenários de teste devem ser objetivos, reduzir incertezas e encontrar erros. Também descreve técnicas de teste de caixa preta como análise de valor limite, particionamento por equivalência e transição de estados, e técnicas de caixa branca como teste unitário e TDD.
O documento discute os principais conceitos e motivação para testes de software, incluindo: (1) testar a completude e corretude dos requisitos funcionais e não funcionais, (2) encontrar erros no software evita prejuízos financeiros e de qualidade, (3) o processo de testes inclui diferentes níveis como teste unitário, de integração e de sistema.
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Stanley Araújo
Considerando os níveis de teste previstos na estratégia global (unidades, integração, validação, sistema e aceitação), defina, em cada um desses níveis, se se aplicam testes de caixa branca e/ou caixa-preta.
Em relação aos testes de caixa-branca, discuta porquê o método dos caminhos básicos é vantajoso sobre quaisquer dos critérios Meyers.
O documento apresenta uma introdução sobre qualidade e teste de software, abordando:
1) Definições de qualidade, teste de software, verificação e validação;
2) Papéis e perfis dos profissionais de teste;
3) Técnicas para derivar casos de teste a partir de casos de uso.
O documento discute os conceitos e técnicas de teste de software, com o objetivo de encontrar falhas e melhorar a qualidade do produto. Aborda temas como definição de teste de software, tipos de testes (caixa preta, caixa branca, caixa cinza), categorias de testes (unidade, integração, sistema), equipes de teste e por que testamos software.
Este documento apresenta uma introdução ao teste de software, abordando os seguintes tópicos: (1) conceitos básicos de teste de software como defeitos, erros e falhas; (2) objetivos do teste de software como garantir a qualidade e revelar erros; (3) diferentes fases e técnicas de teste como teste de unidade, integração e funcional.
O documento discute o que é teste de software, por que é necessário testar e os principais princípios e processos de teste de software. Explica que teste de software envolve executar um programa para descobrir erros, que testar é necessário para evitar prejuízos financeiros e de reputação causados por falhas, e que os humanos sempre cometem erros, justificando a necessidade de testes.
O documento discute validação e testes de software, abordando tópicos como:
1) Os diferentes níveis de teste (unidade, integração, sistema e aceitação);
2) As abordagens de teste (caixa preta e caixa branca);
3) Os principais papéis no processo de teste (gerente de teste, líder de projeto de teste, etc);
4) A importância da documentação no planejamento e execução dos testes.
Trabalho realizado pelo aluno Rafael Sanches sobre teste de software explicando os passos necessários para realização de testes no desenvolvimento de software.
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
Minicurso ministrado na XII SemanaTI na UNIVEM - Marília/SP, nos dias 23 e 24 de setembro de 2019. O título do minicurso é Técnicas de Teste e Automatização do Teste de Unidade e o minicurso tratava na teoria sobre algumas técnicas de Teste de Software, bem como a Técnica de Teste Estrutural, Teste Funcional e Teste Baseado em Defeitos, assim como aprendemos sobre a fase do Teste de Unidade, e ali, aplicamos na prática a Técnica de Teste Estrutural e tratamos sobre a teoria e a prática da automação de testes.
Esse slide mostra a necessidade do processo de teste de software nos projetos de desenvolvimento de softwares, vamos demostrar as técnicas, tipos, fases, ferramentas, modelos e normas envolvidas na execução dos testes de software com o intuito de obter um ótimo nível de qualidade dos softwares gerados.
O documento descreve os principais tipos de testes de software, incluindo teste de caixa preta, caixa branca, unidade, integração, sistema e aceitação. Teste de caixa preta valida a saída de um sistema sem considerar sua estrutura interna, enquanto teste de caixa branca valida o fluxo de dados e controle interno do código. O documento fornece exemplos desses tipos de teste.
O documento apresenta um plano de treinamento sobre testes funcionais que inclui três dias de aulas. No primeiro dia serão abordados fundamentos de testes e derivação de casos de teste a partir de casos de uso. Nos dias seguintes serão apresentados recursos de uma ferramenta de teste funcional e realizados laboratórios sobre projeto de testes, criação de scripts manuais e automatizados e geração de relatórios.
O documento discute os conceitos e vantagens dos testes de software, apresentando os tipos de teste (caixa branca, preta e cinza) e as fases do teste (unidade, integração, sistema e aceitação). O objetivo dos testes é garantir a qualidade do software através da identificação de bugs.
O documento discute os benefícios e limitações do teste de software, incluindo como o teste pode reduzir custos e aumentar a qualidade se bem planejado. Também aborda conceitos como objetivos de teste, verificação e validação, projeto de casos de teste e análise de cobertura.
Noções em teste de software e introdução a automaçãoSandy Maciel
O documento apresenta conceitos básicos de teste de software, incluindo princípios, papéis, ciclo de vida de desenvolvimento e tipos de testes. Também fornece uma introdução ao Selenium WebDriver, abordando automação de testes e preparação do ambiente.
O documento fornece uma introdução aos conceitos básicos de teste de software, incluindo: 1) A importância da qualidade de software e dos testes; 2) Uma distinção entre testes manuais e testes automatizados; 3) Uma explicação do método TDD (Test-Driven Development) de escrever testes primeiro antes de codificar.
Casos teste integração efetiva de algumas unidades Adriana Telles
Trabalho feito para apresentação do curso de pos-graduação Senac, foi feito baseado no artigo.
2013 IEEE Sixth International Conference on Software Testing, Verification and Validation
Generating Effective Integration Test Cases from Unit Ones
Mauro Pezz`e
University of Lugano, Switzerland and
University of Milano Bicocca, Italy
mauro.pezze@usi.ch
Konstantin Rubinov
Faculty of Informatics
University of Lugano, Switzerland
konstantin.rubinov@usi.ch
Jochen Wuttke
Computer Science & Engineering
University of Washington, Seattle, USA
wuttke@cs.washington.edu
Tecnicas Para Planejamento E Execucao De Testes De Softwaremarthahuback
O documento discute técnicas para mapeamento de cenários de teste e técnicas de teste de caixa preta e caixa branca. Ele explica como mapear cenários de teste com foco no negócio e nos usuários, e como cenários de teste devem ser objetivos, reduzir incertezas e encontrar erros. Também descreve técnicas de teste de caixa preta como análise de valor limite, particionamento por equivalência e transição de estados, e técnicas de caixa branca como teste unitário e TDD.
O documento discute os principais conceitos e motivação para testes de software, incluindo: (1) testar a completude e corretude dos requisitos funcionais e não funcionais, (2) encontrar erros no software evita prejuízos financeiros e de qualidade, (3) o processo de testes inclui diferentes níveis como teste unitário, de integração e de sistema.
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Stanley Araújo
Considerando os níveis de teste previstos na estratégia global (unidades, integração, validação, sistema e aceitação), defina, em cada um desses níveis, se se aplicam testes de caixa branca e/ou caixa-preta.
Em relação aos testes de caixa-branca, discuta porquê o método dos caminhos básicos é vantajoso sobre quaisquer dos critérios Meyers.
O documento apresenta uma introdução sobre qualidade e teste de software, abordando:
1) Definições de qualidade, teste de software, verificação e validação;
2) Papéis e perfis dos profissionais de teste;
3) Técnicas para derivar casos de teste a partir de casos de uso.
O documento discute os conceitos e técnicas de teste de software, com o objetivo de encontrar falhas e melhorar a qualidade do produto. Aborda temas como definição de teste de software, tipos de testes (caixa preta, caixa branca, caixa cinza), categorias de testes (unidade, integração, sistema), equipes de teste e por que testamos software.
Este documento apresenta uma introdução ao teste de software, abordando os seguintes tópicos: (1) conceitos básicos de teste de software como defeitos, erros e falhas; (2) objetivos do teste de software como garantir a qualidade e revelar erros; (3) diferentes fases e técnicas de teste como teste de unidade, integração e funcional.
O documento discute o que é teste de software, por que é necessário testar e os principais princípios e processos de teste de software. Explica que teste de software envolve executar um programa para descobrir erros, que testar é necessário para evitar prejuízos financeiros e de reputação causados por falhas, e que os humanos sempre cometem erros, justificando a necessidade de testes.
O documento discute os requisitos de software, definindo-os como declarações que especificam o que um sistema deve fazer. Apresenta o processo de engenharia de requisitos, incluindo a elicitação, especificação e validação de requisitos, além de classificar requisitos funcionais e não funcionais.
1) O documento discute técnicas e práticas para gerenciar o processo de testes de software com foco em qualidade.
2) São apresentados desafios comuns no desenvolvimento de software e formas de aplicar testes em diferentes momentos do ciclo de desenvolvimento.
3) Novas abordagens para testes são propostas, como o "Matrix Test" e o "Infinite Test", assim como uma estrutura para planejar e estimar testes levando em conta o contexto do projeto.
Qualidade de Software: Teste de softwareAlex Camargo
O documento discute os conceitos básicos e tipos de testes de software, incluindo: (1) testes de caixa branca como teste de unidade e integração, (2) testes de caixa preta como teste funcional, de aceitação e exploratório, e (3) testes de caixa cinza como teste de regressão e cobertura. O documento também descreve os papéis da equipe de teste, como gerente, arquiteto e testador.
O documento discute os conceitos e técnicas de gerenciamento da qualidade no desenvolvimento de software. Apresenta definições de qualidade de produto e processo, e descreve as subcategorias do gerenciamento da qualidade: planejamento, garantia, controle e melhoria de processos. Detalha técnicas como auditoria, revisão, walkthrough e inspeção para avaliação da qualidade.
O documento apresenta uma disciplina sobre automatização de testes. Ele discute os problemas do processo de teste manual, ferramentas de teste como TestLink e Mantis, e como migrar casos de teste de um processo manual para essas ferramentas.
O documento discute testes de unidade, definindo-os como testes de componentes individuais de software para validar se cada um está funcionando conforme projetado. Ele explica por que os testes são importantes, estruturas comuns de testes como Arrange-Act-Assert, boas práticas de testes e frameworks para auxiliar no desenvolvimento de testes.
1. O documento discute testes de unidade, que testam componentes individuais de software para validar seu comportamento.
2. Testes de unidade testam métodos individuais e fornecem feedback rápido, documentação e validação do design.
3. Uma estrutura comum para testes de unidade envolve preparação, execução do método testado e asserções sobre os resultados.
Este documento fornece informações sobre testes de software, incluindo:
1) Apresenta diferentes tipos de testes como testes unitários, de integração e de usabilidade.
2) Discute a importância dos testes automatizados em comparação com testes manuais.
3) Explica o conceito de Test Driven Development (TDD) e como ele ajuda a escrever código de melhor qualidade.
[1] O documento discute testes de unidade com o framework Junit, incluindo conceitos de testes de unidade, vantagens dos testes de unidade, como escrever testes com Junit e práticas recomendadas para testes de unidade. [2] Também aborda o uso de bibliotecas como EasyMock e DbUnit para isolar dependências e testar a camada de persistência e [3] discute o desenvolvimento guiado por testes (TDD).
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfRonaldAlves15
O documento introduz os principais conceitos e técnicas de testes no front-end, incluindo: (1) a importância dos testes para reduzir custos de correção de bugs, (2) a pirâmide de testes com ênfase em testes unitários, (3) o "Troféu de testes" e a inclusão de testes estáticos, e (3) as principais técnicas como teste de regressão, de caixa preta/branca/cinza, de fumaça e de carga.
Introdução as Técnicas de Testes e DocumentaçãoGTS-CE
O documento apresenta Felipe Alessander como analista de testes com 6 anos de experiência e introduz diversas técnicas de testes de software, como teste de unidade, integração, caixa-preta, positivo-negativo, regressão, funcional, interface, aceitação do usuário, carga, stress e performance. Também aborda documentação de testes segundo o padrão IEEE 829, plano de teste, projeto de teste, casos de teste e relatórios como de status, incidentes e sumário.
O documento apresenta os conceitos e objetivos do desenvolvimento orientado a testes (TDD). O TDD é uma metodologia que propõe escrever testes unitários antes de implementar o código, seguindo os passos vermelho-verde-refatoração. O documento explica os benefícios do TDD, como código de melhor qualidade e facilidade de refatoração.
O documento apresenta os principais conceitos e atividades relacionadas ao processo de teste de software, incluindo a motivação para testes, formação de equipes de teste, estágios de teste, tipos de teste, planejamento e execução de testes e ferramentas de teste.
Este documento fornece um resumo sobre qualidade e teste de software. Ele discute a importância do teste, as técnicas de teste como caixa preta e caixa branca, e automação de testes. Também aborda carreiras em teste de software e exemplos históricos de falhas de software.
Este documento fornece um resumo sobre qualidade e teste de software. Ele discute a importância do teste, as técnicas de teste como caixa preta e caixa branca, automação de testes, BDD, e carreiras em teste de software.
O documento introduz conceitos básicos sobre teste de software, incluindo: 1) Teste de software é o processo de execução de um produto para determinar se atendeu suas especificações; 2) Existem diferentes níveis de teste como unidade, integração e sistema; 3) Critérios de teste como particionamento de classes de equivalência e análise de valor limite são usados para gerar casos de teste.
O documento discute os processos e técnicas de teste de software, abordando tópicos como ciclo de vida de testes, métodos de teste, métricas e tecnologias. Ele destaca a importância da adoção de processos de qualidade para melhorar o desenvolvimento de software, reduzir custos e riscos.
O documento discute o gerenciamento de configuração no desenvolvimento de software, definindo-o como a disciplina de identificar e controlar mudanças na configuração de um sistema ao longo do seu ciclo de vida. Ele explica termos como item de configuração, versão e baseline, e descreve atividades como planejamento, controle de mudanças, gerenciamento de versões, construção do sistema e auditoria de configuração.
O documento discute os conceitos e atividades de gerenciamento de projetos de software, incluindo a iniciação, planejamento, execução, revisão, fechamento e medição de projetos. As áreas de conhecimento do PMBOK como escopo, tempo, custo e riscos são abordadas, assim como as etapas de planejamento, execução e monitoramento de projetos de software.
O documento discute a implementação de software, que envolve a criação da versão executável do software usando linguagens de programação, frameworks ou customização de software existente. A implementação deve seguir diretrizes como minimizar a complexidade, antecipar mudanças, facilitar teste e reuso de código. As ferramentas de construção incluem IDEs, geradores de interface e ferramentas de teste e depuração.
O documento discute projeto e arquitetura de software, incluindo projeto preliminar e detalhado. O projeto preliminar foca na arquitetura enquanto o detalhado especifica os componentes a serem implementados de acordo com a arquitetura definida. Vários padrões de projeto como os padrões GRASP e os padrões de projeto de Gamma são discutidos como uma forma de uniformizar a especificação dos componentes.
O documento discute conceitos de projeto e arquitetura de software, incluindo padrões de arquitetura como camadas, MVC e cliente-servidor. Referências adicionais são fornecidas para aprofundar o conhecimento sobre o assunto.
O documento discute a análise e modelagem de software como parte do desenvolvimento de software. Apresenta os conceitos de análise, projeto, modelagem e tipos de modelos utilizados durante a análise, incluindo modelos de contexto, interação, estrutural e comportamental. Exemplos de diagramas UML são fornecidos para cada tipo de modelo.
1. Prof. Marcelo H. Yamaguti (1)
Pontifícia Universidade Católica do Rio Grande do Sul
Faculdade de Informática
Prof. Marcelo H. Yamaguti
Introdução à Engenharia de
Software
DESENVOLVIMENTO DE
SOFTWARE
Verificação e Validação
2. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (2)
Referências
• Estude para aprofundamento no conteúdo:
– SOMMERVILLE, Ian. Engenharia de Software. 9ª ed. São
Paulo: Pearson, 2011. – Capítulo 8
– PFLEEGER, Shari Lawrence. Engenharia de Software: teoria
e prática. 2ª ed. São Paulo: Prentice-Hall, 2004. - Capítulos 8 e
9
– IEEE. Guide to the Software Engineering Body of Knowledge.
SWEBOK. Version 3. IEEE Computer Society. 2014. –
Chapter 4
Introdução à Engenharia de Software
3. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (3)
Teste
• Teste:
– Técnica de avaliação da correção do software.
– E. Dijkstra: “Os testes podem mostrar apenas a presença de
erros, não a sua ausência”.
Implementação
Introdução à Engenharia de Software
Software
implementado Teste
Software
testado
Defeitos
encontrados
4. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (4)
Conceitos
• Verificação e Validação:
– Verificação: avalia se software atende aos requisitos definidos
(“Estamos construindo o produto da maneira correta?”).
– Validação: avalia se o software atende às expectativas do
cliente (“Estamos construindo o produto certo?”)
• Erro, Defeito, Falha:
– Erro: é o resultado de um engano humano. Ex.: interpretação
incorreta de um requisito, programação com uso de tipo de
dado incorreto.
– Defeito (bug): é a inclusão do erro no software. Ex.:
programação de lógica incorreta, tipo de variável incorreto.
– Falha: é a execução anormal do software devido aos defeitos.
Ex.: software não cumpre os requisitos definidos, software
para a sua execução anormalmente (“fatal error”) ou trava
(“entra em loop”, “pendura”).
Introdução à Engenharia de Software
5. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (5)
Conceitos
• Teste, Depuração, Manutenção corretiva:
– Teste: atividade de avaliar a correção do software em busca de
falhas.
– Depuração (debugging)*: atividade de localizar o defeito no
software.
– Manutenção corretiva: atividade de remover o defeito do
software.
• Curiosidade: conta-se que o termo “bug” (inseto) deve-se ao fato de que um
programa no computador Mark II (a relés) parou de funcionar e descobriu-se
que a causa era um inseto que impedia o fechamento de um relé. Assim que o
inseto foi retirado, o programa voltou a funcionar...
Introdução à Engenharia de Software
6. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (6)
“Debug”
• Bug encontrado no Mark II:
Introdução à Engenharia de Software
7. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (7)
Processo de teste
• Exemplo de processo de teste de software:
Introdução à Engenharia de Software
Adaptado de Sommerville, 2011.
8. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (8)Engenharia de Software
Níveis de teste de software
• Níveis de teste:
– Teste de unidade: módulos do sistema.
– Teste de integração: inter-relacionamentos entre os módulos.
– Teste de sistema: sistema completo.
9. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (9)Engenharia de Software
Níveis de teste de software
• Teste de unidade:
– É executado em nível de módulo do programa.
– Cada módulo (função, sub-rotina, classe) é testado como uma
unidade independente.
– Metas:
• verificar a execução de cada módulo
• percorrer os caminhos lógicos
• verificar conjuntos de dados (válidos e inválidos)
10. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (10)Engenharia de Software
Níveis de teste de software
• Teste de unidade:
– Problema:
Um teste exaustivo pode possuir um custo muito elevado.
Por exemplo: suponha um módulo que trabalhe com dois parâmetros:
um número inteiro qualquer e outro real apenas positivo. Desta forma
um teste exaustivo deve prever todas as combinações possíveis, supondo
que sejam possíveis 65534 valores inteiros e 1,7x1038, o número de
combinações possíveis seria em torno de 1,11x1043, se cada teste desde
módulo levasse apenas um nanosegundo (10-9s) - um bilionésimo de
segundo - o teste levaria apenas 353.000.000.000.000.000.000.000.000
(ou 3,53 x 1026 ) anos, para apenas um módulo!
11. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (11)Engenharia de Software
Níveis de teste de software
• Teste de integração:
– Verifica a correção da comunicação entre módulos.
– Metas:
• verificar se cada módulo funciona adequadamente dentro da estrutura
de controle.
• checar a interface entre os módulos.
– Diretrizes principais:
• Abordagem top-down para estrutura de controle e correção das funções
de alto nível.
• Abordagem bottom-up para teste de módulos que possuem interface ou
lógica complexa.
12. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (12)Engenharia de Software
Níveis de teste de software
• Teste de integração top-down:
– funções e módulos de alto nível são testados primeiro.
– requer stubs ou módulos fantasmas que são chamados pelos
módulos em teste.
Problema: os módulos stub podem ser codificados com erro!
Módulo
stub
Módulo
em teste
Módulo
stub
13. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (13)Engenharia de Software
Níveis de teste de software
• Teste de integração bottom-up:
– módulos de nível mais baixo são integrados e testados
primeiros.
– requer skeletons ou acionadores (módulos que chamam os
módulos em teste).
Problema: o módulo acionador pode ser codificado com erro!
Módulo
em teste
Módulo
acionador
Módulo
em teste
14. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (14)
Níveis de teste de software
• Teste de sistema:
– Etapas de teste de sistema:
Introdução à Engenharia de Software
Adaptado de Pfleeger, 2004.
15. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (15)Engenharia de Software
Teste de sistema
• Teste funcional:
– Avaliar o sistema completo visando verificar erros na
implementação da especificação.
– Diretrizes:
• requisitos e especificações funcionais devem ser usados para construir
os casos de teste.
• testar o sistema em três etapas:
1) casos normais ou ideais.
2) casos extremos: limites de valores amplo, volume grande de valores.
3) exceções: valores inválidos.
16. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (16)
Teste de sistema
• Teste de desempenho:
– Avaliação do software conforme outros requisitos solicitados.
– Exemplos de teste de desempenho:
• Stress
• Recuperação
• Regressão
• Usabilidade
• ...
Introdução à Engenharia de Software
17. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (17)Engenharia de Software
Teste de sistema
• Teste de regressão:
– Testar de na nova versão, as funcionalidades anteriores
continuam corretas.
– A cada nova funcionalidade (ou módulo) verifica-se o efeito
nos anteriores.
– Problema: o número de testes cresce aritmeticamente.
A
B
A
B
C
A
B
C
D
...
18. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (18)Engenharia de Software
Teste de sistema
• Teste de aceitação:
– Teste pelos (ou representante dos) clientes ou usuários em
ambiente de homologação.
– Foco em validação.
– É um teste da satisfação do usuário em um ambiente
(próximo) de utilização real.
– Exemplos:
• protótipos semi-acabados
• versões beta
19. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (19)
Teste de sistema
• Teste de instalação:
– Teste realizado pelos clientes ou usuário no software instalado
(implantado) no ambiente real do usuário (ambiente de
produção).
– Com a aceitação pelo cliente, o sistema será formalmente
entregue.
Introdução à Engenharia de Software
20. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (20)Engenharia de Software
Seleção de dados para teste
• Tipos de dados de teste:
1. construídos (simulados)
2. reais modificados (valores, volume)
3. reais
• Método de seleção:
1. uso normal ou ideal
2. teste de partes complexas
3. tratamento de erros
21. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (21)Engenharia de Software
Técnicas de testes
• Manuais:
– teste de mesa (simulação em papel do código)
– walkthrough
– inspeção
• Automáticos:
– analisador (compilador) de código
– verificadores de estrutura
– analisador de dados
– verificador de sequência
– geradores de casos de teste
22. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (22)
Automação de testes
• Automação de testes:
– Utilizar ferramentas de software para apoiar o teste de um
programa.
– Pode ocorrer em vários níveis, desde o teste unitário ao teste
de sistema.
– Facilita o teste de regressão.
Introdução à Engenharia de Software
23. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (23)
Automação de testes
• TDD (Test Driven Development):
– Metodologia ágil que privilegia a definição dos testes antes da
codificação do software.
Introdução à Engenharia de Software
Adaptado de Sommerville, 2011.
24. Prof. Marcelo H. Yamaguti (24)
Pontifícia Universidade Católica do Rio Grande do Sul
Faculdade de Informática
Prof. Marcelo H. Yamaguti
Introdução à Engenharia de
Software
DESENVOLVIMENTO DE
SOFTWARE
Verificação e Validação