Teste Unitários com NUnit. Anderson Martiniano da Rocha

Documentos relacionados
Programação Orientada a Objetos

JUnit: framework de testes unitários. Fred Lopes

Guia Básico de TDD em C#.Net

JUnit. Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

Prof. Me. Marcos Echevarria

Teste Automatizado POO. Prof. Marcio Delamaro

Teste de software. Engenharia de software Profª karine sato da silva

Testes Unitários em Java

Análise e Projeto Orientados a Objetos

especificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

O JUnit permite a realização de testes de unidades, conhecidos como "caixa branca", facilitando assim a correção de métodos e objetos.

Programação Orientada a Objetos

PRDS C#.Net Alexandre L. Silva

Análise e Projeto Orientado a Objetos. Nazareno Andrade Baseado no material dos profs. Hyggo Almeida e Jacques Sauvé

Introdução ao Teste Unitário com JUnit

Laboratório 01 NetBeans

Engenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.

Classes e Objetos POO

Introdução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Linguagem de Programação II Importando Classes/Pacotes

Teste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo

Testes Unitários com JUnit

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão

Uso de Integração Continua no controle de acesso a ambientes. André Pinheiro TIC - UFRJ

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

ENGENHARIA DE SOFTWARE

EXERC EXAME DISCIPLINA: ALG ESTRUTURA DE DADOS I

Introdução a Teste de Software

Programação Orientada a Objetos

Desenvolvimento orientado por testes, padrões de testes e JWebUnit

Linguagem de Programação II Implementação

Desconstruindo Monolitos. Como construir micro serviços Delphi com agilidade e qualidade

Linguagem de Programação III

Teste de Software. Karen Frigo Busolin Novembro / 2010

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Técnicas de projeto de algoritmos: Indução

Testes com objetos mock. Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Análise e Projeto Orientados a Objetos

OO - Orientação a Objetos

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Linguagem de Programação II Programação Orientada a Objetos. Ambientes de Programação

Introdução ao Python. Programa Computacional

Extreme Programming. Projeto de. Desenvolvimento. Software. Prof.: Ari Oliveira

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

TCC 00308: Programação de Computadores I Introdução

BCC202 - Estrutura de Dados I

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Métricas. Métricas. [Engenharia de Software II] Adriano J. Holanda 11/9/2017

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Aula 3: Algoritmos: Formalização e Construção

Gerando um programa executável a partir de um módulo Python

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Programação Orientada a Objetos

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Introdução à Programação. Vanessa Braganholo

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU

Linguagem e Técnicas de Programação

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

Construtores. Introdução

Atributos e Métodos Estáticos

1. A função DevOps, que se concentra principalmente em Produtos & Serviços:

Introdução à Programação

Transcrição:

Teste Unitários com NUnit Anderson Martiniano da Rocha martiniano@dcc.ufba.br

Sumário Conceito de teste unitário Vantagens da utilização de testes unitários NUnit (Características, Atributos, Ferramentas) Exemplo

Abordagem Clássica A forma mais tradicional de testes consiste em utilizar um revisor (especialista em testes) após cada atividade => Auditoria Artefato Desenvolvedor Revisor Log de Erros

Abordagem Clássica O Revisor normalmente é alguém com maior experiência do produto, capaz de idenficar erros mais complexos. O Revisor é, normalmente, mais caro para a empresa.

Testes Unitários Servem para validar um pedaço de código (um módulo caixa preta) Geralmente correm automaticamente Devem ser executados muito rapidamente (vários testes em poucos segundos) São sempre preparados pelo programador Garatem que código criado é válido Exemplo: Teste que verifica se a execução de um procedimento que soma dois números funciona

Comparação Testes funcionais / de aceitação / integração / homologação preparados por alguém fora da equipe de desenvolvimento. garantem que a execução do código produzido para resolver a tarefa faz sentido, ou seja traduz completamente para software o requisito que foi definido pelo cliente. Exemplo: Na aplicação é necessário existir alguma função que some dois números?

Quando é a fase de testes? Durante o desenvolvimento e não após o desenvolvimento! Algumas metodologias advogam até a criação dos testes antes do desenvolvimento (TDD Test-Driven- Development)

Porquê testar duranto o desenvolvimento? Reduz o tempo que se irá gastar com ferramentas de debug Esforço de correção de um defeito cresce exponencialmente ao longo do tempo Cria confiança Sabemos que estamos construindo trechos de código em que podemos confiar.

Desculpas habituais para não criar testes Demora muito tempo É evidente que fazer um teste, ou seja, ter mais uma tarefa, vai gastar mais tempo do que fazer somente o programa No entanto, se essa tarefa for sendo feita durante o período de desenvolvimento a produtividade global será superior

Desculpas habituais para não criar testes Não é trabalho do programador criar testes, ou, O programador é pago para programar e não para escrever testes É fato que: O programador deve criar código Mas código que funcione... Se não o testou como sabe que funciona? Será que é mais rentável passar n horas à caça de bugs do que n horas a criar os testes que os evitem?

Testes Unitários Formalizam os testes São feitos na mesma linguagem de programação que o programa sendo testado. Logo, em uma liguagem que o progamador domina Auto documentam o código, pois mostram programaticamente exemplos concretos da utilização dos módulos

NUnit Open Source Construido usando C# Compatível com todas as linguagens da plataforma.net Baseado no JUnit (JAVA) Utiliza Atributos Integrável com as IDEs disponíveis.

Suite de Teste TestFixtureSetUp Como os testes com o NUnit são estrutura dos? TestFixture SetUp Test Case TearDown TestFixtureTearDown

Testes Unitários com NUnit Criar uma nova solução C# Nome do projeto. Ex: MyProject Adicionar suas classes e métodos (lógica do software)

namespace NunitExemplo1 { public class Calculadora { public int Soma(int a, int b){ return a + b; public int Subtrai(int a, int b){ return a - b; public int Multiplica(int a, int b){ return a * b; public int Divide(int a, int b){ return a / b;

Testes Unitários com.net Criar nova solução C# onde será feita os testes Pode ser uma aplicação (executável) ou uma biblioteca (dll) Adicionar referências no Nunit (NUnit.core e NUnit.framework ) Adicionar referências do projeto que será testado Adicionar classes é metodos de testes, com os devidos atributos e Assertions

using NUnit.framework; namespace NUnitExemplo1 { [TestFixture] public class CalculadoraUnitTests { private Calculadora calculadora; public CalculadoraUnitTests(){ [TestFixtureSetUp] public void Inicializar(){ calculadora = new Calculadora(); [TestFixtureTearDown] public void Finalizar(){ calculadora = null; Criando a classe com os testes...

... [Test] public void TestSoma() { int result = calculadora.soma(2, 3); Assert.AreEqual(5,result); [Test] public void TestSubtrai() { int result = calculadora.subtrai(3, 2); Assert.AreEqual(1, result);... result = calculadora.subtrai(2, 3); Assert.AreEqual(-1, result); Adicionando casos de testes...

... [Test] public void TestMultiplica() { int result = calculadora.multiplica(2, 3); Assert.AreEqual(6, result); [Test, ExpectedException(typeof(DivideByZeroException))] public void TestDivide() { int result = calculadora.divide(4, 2); Assert.AreEqual(2, result);... result = calculadora.divide(2, 0); Adicionando mais casos de testes...

Executando os Testes - Console nunit-console NUnitExemplo1.(exe dll)

Executando os Testes - Console nunit-console NUnitExemplo1.(exe dll)

Executando os Testes - GUI nunit-gui NUnitExemplo1.(exe dll)

Executando os Testes - GUI nunit-gui NUnitExemplo1.(exe dll)

Referências Obs: Alguns slides dessa apresentação foram baseados nos slides ' http://www.slideshare.net/vitor.silva/0404- testes-unitarios' de autoria de 'Vitor Silva' disponível em http://www.slideshare.net/vitor.silva/0404-testes-unitarios Links Importantes: http://www.nunit.org http://en.csharp-online.net/unit_testing_with_nunit http://www.slideshare.net/adorepump/introduo-a-teste http://www.slideshare.net/vitor.silva/0404-testes-unita

até que enfim acabou...