Teste, Verificação e Validação de Software
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Engenharia de Software |
Ocorrência: 2024/2025 - 1S
Ciclos de Estudo/Cursos
Sigla |
Nº de Estudantes |
Plano de Estudos |
Anos Curriculares |
Créditos UCN |
Créditos ECTS |
Horas de Contacto |
Horas Totais |
M.EIC |
48 |
Plano de estudos oficial |
2 |
- |
6 |
39 |
162 |
Docência - Responsabilidades
Língua de trabalho
Inglês
Objetivos
O objetivo desta unidade curricular é: a familiarização com a terminologia usada em testes de software; a sensibilização com as questões relacionadas com a qualidade de software; e exploração e prática de diferentes técnicas de Verificação e Validação (V&V) necessárias para a construção de sistemas de software de qualidade.Resultados de aprendizagem e competências
No final da Unidade curricular os estudantes devem ser capazes de projetar e executar um plano de Verificação e Validação (V&V). Mais especificamente, espera-se que os estudantes sejam capazes de:
- Planear uma estratégia de Verificação e Validação.
- Selecionar as melhores técnicas e ferramentas de teste de software para um determinado contexto.
- Projetar e desenvolver testes em diferentes níveis (e.g., unidade, integração, sistema e aceitação).
- Testar situações excepcionais (e.g., boundary value analysis).
- Refletir sobre as limitações e qualidade dos testes desenvolvidos.
- Usar métricas para avaliar a qualidade dos testes (e.g., cobertura de instruções).
- Escrever código de teste sustentável, evitando problemas conhecidos (e.g., flakiness, ilegível, dependente, fat testes, etc.).
Modo de trabalho
Presencial
Programa
1. Introdução à Verificação e Validação de Software
2. Partição em classes de equivalência / “category partition” e análise de valores fronteira
3. Teste baseado em modelos
4. “Structural Testing (Line and Decision coverage)” e “Logical Coverage (Condition coverage and Modified Condition/Decision Coverage (MC/DC))”
5. Teste de mutação
6. “Test-Driven Development (TDD)”, “Behavior-Driven Development (BDD) Testing”, e “Property-Based Testing (PBT)”
7. Geração automática de testes utilizando abordagens aleatórias, fuzzing, e search-based
8. Geração automática de testes utilizando inteligência artificial
9. Teste de integração, teste de sistema, teste de aceitação, testes de performance, testes de segurança, e teste de regressão
10. Gestão e documentação de testes
11. Teste estático
Bibliografia Obrigatória
Maurício Aniche;
Effective software testing, 2022. ISBN: 978-1-633-43993-1
Paul Ammann;
Introduction to software testing, 2016. ISBN: 978-1-107-17201-2
Paul C. Jorgensen;
Software Testing A Craftsman's Approach, 2013. ISBN: 978-1-466-56069-7
Dorothy Graham, Rex Black, Erik van Veenendaal;
Foundations of Software Testing: ISTQB Certification, 2020. ISBN: 978-1-473-76479-8
Ilene Burnstein;
Practical Software Testing, 2003. ISBN: 978-0-387-95131-7
Gordon Fraser and José Miguel Rojas; Software Testing, 2019. ISBN: 978-3-030-00262-6
Mark Utting;
Practical Model-Based Testing, 2007. ISBN: 978-0-12-372501-1
Tomek Kaczanowski; Bad Tests, Good Tests, 2013. ISBN: 978-8-393-84713-6
Bibliografia Complementar
Kent Beck;
Test Driven Development: By Example, 2002. ISBN: 978-0-321-14653-3
Petar Tahchiev, Felipe Leme, Vincent Massol, and Gary Gregory; JUnit 4.8 In Action, 2010. ISBN: 978-1-935-18202-3
Tomek Kaczanowski; Practical Unit Testing with JUnit and Mockito, 2019. ISBN: 978-8-393-48939-8
Chak Shun Yu, Christoph Treude, Maurício Aniche; Comprehending Test Code: An Empirical Study, 2019. ISBN: 978-1-7281-3095-8
Michal Young and Mauro Pezzè; Software testing and analysis: process, principles, and techniques, 2008. ISBN: 978-0-471-45593-6
Métodos de ensino e atividades de aprendizagem
Esta unidade curricular promove o contínuo envolvimento dos estudantes através do estudo, discussão e aplicação prática dos temas apresentados. De forma a contribuir para uma aprendizagem contínua e autónoma, os estudantes resolvem exercícios práticos ao longo do semestre. Para além destes exercícios, os estudantes têm que realizar um projeto onde aplicam os conceitos apresentados, em particular, diferentes estratégias e ferramentas de V&V.
As
aulas teóricas são usadas para exposição formal dos conceitos e aspetos fundamentais de V&V. Sempre que possível, os conceitos teóricos são acompanhados da apresentação e discussão de casos práticos reais.
As
aulas teórico-práticas são usadas para realizar exercícios, aplicar técnicas de V&V, usar/experimentar diversas ferramentas de auxílio à escrita e execução de testes e para apoiar na realização do projeto.
Palavras Chave
Ciências Tecnológicas > Engenharia > Engenharia de computadores
Ciências Tecnológicas > Tecnologia > Tecnologia de computadores > Tecnologia de software
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Designação |
Peso (%) |
Exame |
60,00 |
Trabalho prático ou de projeto |
40,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Estudo autónomo |
100,00 |
Frequência das aulas |
39,00 |
Trabalho laboratorial |
23,00 |
Total: |
162,00 |
Obtenção de frequência
Para concluir com sucesso esta unidade curricular, os estudantes devem obter:
- nota mínima de 47,5% no projecto (P)
- nota mínima de 47,5% no exame final (E)
Fórmula de cálculo da classificação final
A classificação final é calculada da seguinte forma: P x 40% + E x 60%
P: projeto
E: exame final
Avaliação especial (TE, DA, ...)
Todas as componentes de avaliação são obrigatórias para todos os estudantes, mesmo para aqueles dispensados de frequência às aulas.
Melhoria de classificação
- A classificação obtida no projeto pode ser melhorada na edição seguinte da unidade curricular.
- A classificação do exame pode ser melhorada em exame de recurso.