Análise e Teste de Software

A disciplina de Análise e Teste de Software estuda métodos e ferramentas para a análise e teste de sistemas de software. A parte de análise aborda técnicas para analisar o código fonte dos sistemas de software: técnicas avançadas de parsing e de travessia de árvores de syntaxe abstracta são apresentadas no curso. Modelos para a análise de qualidade de software, nomeadamente do seu código fonte, serão apesentados, e métricas de software serão estudadas de modo a permitirem a análise automática da qualidade de um sistema de software. Nesta análise será ainda apresentado um catálogo de "bad smells" de código fonte que indicam a existência de problemas na compreensão/evolução/manuntenção de software. Técnicas de teste de software serão também estudas de modo a permitirem analisar a qualidade de software. Testes unitários, teste de aplicações interativas e web, e ainda a geração automática de casos de teste e sua análise de cobertura são estudados em detalhe. Por último, serão apresentadas técnicas para a localização de falhas em software.

Material Pedagógico

Linguagens, Gramáticas e Árvores de Syntaxe Abstrata: (slides)

Combinadores de Parsing: ParsingCombinators.pdf (slides)

Programação Estratégica: StrategicProgramming.pdf (slides)

Software Metrics: Software Metrics (slides)

Code Smells: Source Code Smells (slides)

Análise Verde de Software: Green Software (slides)

Análise Verde de Software: Monitorização de consumo de energia em Java com jRAPL (slides)

Control Flow Graphs: Control Flow Graphs (slides)

Teste de Software: Teste de Cobertura de Código - Teste Unitario (slides)

Teste de Software: Software Test Automation (slides -> new)

Teste de Software: Teste de Aplicações Web - Selenium (slides)

Localização de Falhas em Sistemas de Software: Spectrum-based Fault Localization (slides)

Optimizações para Software Verde: Green Software Optimization (slides)

Apontamentos: Software Analysis and Testing (with a functional flavor) _(disponível em breve)_

Projeto de Software

Projeto: Enunciado

Os grupos que escolherem o projeto 1 (a desenvolver em Java) devem considerar o software que gere um agência noticiosa disponível aqui e que foi desenvolvido de acordo com os requesitos descritos aqui

Software

O sistema de Parsing ANTLR: http://www.antlr3.org/ e o interpretador de gramáticas ANTLRWorks: http://www.antlr3.org/works/

Programação Estratégica no sistema TOM: http://tom.loria.fr/wiki/index.php5/Main_Page

ANTLR+TOM -- Parser + normalização de Expressões Regulares: Expressões Regulares (tgz)

Simple Language: exemplos.sl (exemplo de programas)

Combinadores de Parsing (módulo desenvolvido nas aulas): Parser.hs

Construção de Control Flow Graphs: ControlFLowGraph.tgz

Análide de consumo de energia usando RAPL (versão C e Haskell): RAPL.tgz

Teste Unitário e Cobertura (jUnit, HUnit): Teste Unitário

Equipa Docente

João Saraiva: saraiva@di.uminho.pt

Jorge Mendes: jorgemendes@di.uminho.pt

Rui Pereira: ruipereira@di.uminho.pt

Marco Couto: marcocouto90@gmail.com

Testes, Exames e Avaliação

Teste: 5 de Janeiro de 2017

Avaliação: Teste ou Exame (50%), Projeto (40%), Avaliação Continua (10%)

Resultados do teste: Notas do Teste

Resultados do Exame, Projetos e Notas Finais: Notas Finais

-- Página criada por: JoaoSaraiva - 21 Sep 2016