: : : :

Tamanho: px
Começar a partir da página:

Download ": : www.mundoj.com.br : :"

Transcrição

1 : : : : Marcelo Zeferino formado em análise de sistemas, atua com TI desde 1999 e já participou de projetos de software para grandes organizações como Fundação BioRio/Johns Hopkins School of Medicine, Oi, Sul América e Fundação Roberto Marinho. Já atuou pela IBM Brasil e atualmente é líder técnico na Lumis Tecnologia, consultor e instrutor Java em cursos de extensão oferecidos pela UERJ. Mantem o blog com ideias sobre desenvolvimento de software. 30

2 As práticas de teste antecipado têm ganhado cada vez mais adeptos nos últimos anos com a crescente utilização de Test-Driven Development (TDD), sendo encorajada pelo extreme Programming e outros métodos ágeis. Como evolução ao TDD, Behaviour-Driven Development (BDD) nos permite criar, junto aos clientes, especificações que poderão ser executadas (e automatizadas), utilizando textos simples, em linguagem natural. Neste artigo, será apresentado o framework JBehave e trabalharemos um exemplo prático de especificação de cenário. Ao final, iremos configurar a ferramenta para utilizar o português como língua padrão nas especificações, facilitando ainda mais a compreensão. Behaviour-Driven Development em Java na prática, com JBehave Criando especificações executáveis utilizando BDD, em nossa língua! magine o seguinte problema: precisamos desenvolver um módulo de nossa aplicação que possui regras de negócio complicadas que estão apenas na cabeça de nosso cliente ou em um daqueles bons e velhos documentos estáticos e, provavelmente, desatualizados. Começamos entendendo e documentando as regras, modelando etc., até que arregaçamos as mangas e vamos para o desenvolvimento. Ao longo do desenvolvimento vamos criando testes e codificando, seguindo os ciclos do TDD. Após algumas repetições, executamos nossa suíte de teste e temos a certeza de que está tudo funcionando, até que o cliente verifica o funcionamento e nos informa que desenvolvemos a funcionalidade baseados em regras que na realidade estavam erradas (aquela velha história do não foi bem isso o que quis dizer ). Agora, digamos que, ao invés da abordagem anterior, escrevemos especificações junto à área cliente/de negócio, em nossa própria língua, a partir das necessidades relatadas para aquela funcionalidade, com exemplos de valores de entrada e saída de sucesso e falha para a execução de nosso módulo, mapeando e nos guiando pelo comportamento esperado. Passamos pelo ciclo de desenvolvimento 31

3 : : : : (executando testes aos poucos) e, ao final, executamos a nossa especificação (que foi escrita em texto puro) tendo como feedback as falhas e sucessos de acordo com os valores que especificamos. Isso mesmo, estamos falando de algo como uma especificação executável! Com a segunda abordagem, temos algumas vantagens: participação mais ativa do cliente; nosso código não está diretamente acoplado aos testes (o que acontece bastante com TDD) e está mais íntimo ao comportamento final; ao invés de testes escritos em Java, temos especificações em texto puro e em nossa língua que servirão como documentação da funcionalidade, facilitando o entendimento das necessidades e expectativas. Estas são apenas algumas vantagens do BDD. Ao longo deste artigo, será apresentado um pouco do conceito por trás do BDD e utilizaremos um exemplo prático, com o JBehave, para nos auxiliar neste processo. Ao final, será apresentado como podemos estender a ferramenta para que possamos escrever nossas especificações em português, facilitando ainda mais o entendimento. Primeiramente, um pouco de conceito O BDD segue a mesma linha de pensamento de outros métodos baseados em test-first, em que iniciamos o desenvolvimento de uma funcionalidade com escrita de testes antes de escrevermos qualquer linha de código de produção e, como sugere o TDD, seguimos ciclos de 1) criação de um teste que falhe; 2) implementação de código que faça o teste passar (e nada além disso); e 3) refatoração do código criado no passo anterior visando melhorá-lo. Dessa forma, além de termos a garantia de testes automatizados (já que os criamos antes mesmo de criar código de produção), não cairemos na velha armadilha de deixar os testes para depois, quando tivermos mais folga no cronograma geralmente, nunca! Apesar de apresentar grandes vantagens, principalmente no design, TDD possui algumas desvantagens, como o forte acoplamento entre testes e classes e baixa expressividade do código de testes, tendo em vista que, mesmo utilizando padrões na escrita dos métodos de teste, ainda estamos falando de código Java. Por mais expressivo que este seja, ainda será código em uma linguagem de programação, o que é algo geralmente distante de pessoas mais voltadas para o negócio. Neste contexto, a principal ideia do BDD é facilitar a comunicação sobre os requisitos entre pessoas de negócio (analistas de negócio, patrocinadores etc.) e o time de desenvolvimento. Apesar de dar ênfase na comunicação, também é esperado que os comportamentos/requerimentos levantados nestas comunicações possam ser verificados de forma automática (inclusive com integração contínua). A ideia é que o desenvolvimento seja guiado através do comportamento esperado para a funcionalidade, encorajando os envolvidos a trabalharem juntos na definição de especificações que poderão ser executadas automaticamente, comprovando o funcionamento conforme o que foi definido. Segundo texto publicado em seu blog, Dan North iniciou em 2003 o desenvolvimento do primeiro framework para trabalho com BDD: o JBehave. A intenção era sobrescrever o JUnit fazendo com que referências a teste fossem substituídas por comportamento. Seguindo 32 este raciocínio, são desenvolvidos cenários como o apresentado na Listagem 1 (retirado do site do projeto JBehave). Listagem 1. Exemplo básico de cenário. Given I am not logged in When I log in as Liz with a password JBehaver Then I should see a message, Welcome, Liz! A partir daí, o JBehave utiliza classes Java para mapear os fragmentos dos cenários, fazendo o parse das informações e executando os testes no formato JUnit, com exibição de resultados aproveitando a estrutura disponibilizada por ele. O relacionamento entre BDD e Domain-Driven Design (DDD) Mais ou menos na mesma época, Eric Evans publicou seu livro Domain-Driven Design: Tackling Complexity in the Heart of Software que falava sobre o desenvolvimento de softwares tomando como base os conceitos envolvidos no domínio do negócio, fazendo com que seja utilizada uma linguagem única (ubíqua), melhorando a comunicação entre a equipe técnica e de negócio. Neste sentido, BDD torna-se ainda mais útil sendo utilizado na análise do problema, identificando cenários e critérios de aceitação com user stories que serão executadas (com o JBehave, por exemplo) para validar o funcionamento. A aproximação entre equipe técnica e de negócio, utilizando uma linguagem única que é perfeitamente entendida pelos dois grupos, conforme pregou Evans, ganha mais força quando os dois grupos podem trabalhar juntos na elaboração de especificações funcionais baseadas em pequenas especificações executáveis. BDD vs TDD Em alguns momentos pode parecer que há algum tipo de disputa ou concorrência entre BDD e TDD, mas é importante entender que as duas metodologias possuem focos de atuação diferentes e podem ser utilizadas de forma complementar. Na edição 43 da MundoJ, há um artigo do Rodrigo Yoshima com mais informações sobre TDD e BDD, suas origens e o relacionamento entre estas duas abordagens. No site do JBehave, podemos encontrar uma breve comparação entre as duas metodologias que é bastante interessante e traduzi livremente aqui (o quadro de referências no final do artigo contém o link para o texto original): É importante entender a diferença entre BDD e TDD. Essas duas práticas são igualmente importantes, mas possuem focos diferentes e devem ser complementares no uso das melhores práticas de desenvolvimento. BDD está preocupado principalmente com a especificação do comportamento do sistema sendo testado como um todo, portanto, é particularmente adequado para testes de aceitação e regressão. TDD está preocupado principalmente com o teste de um componente como unidade, mantendo-o isolado de outras dependências, que normalmente são "mockadas". BDD deve falar a linguagem do domínio de negócio e não a linguagem da tecnologia do desenvolvimento, que, por outro lado, é "falada" pelo TDD.

4 A criação e evolução do JBehave Como já falamos e segundo o blog do próprio Dan North (vide quadro de referências), o JBehave foi iniciado em 2003 e no começo algumas coisas não saíram muito bem. A maioria das características que o faz uma boa escolha hoje em dia foram baseadas em outros frameworks, particularmente o RSpec. Para mais informações, os artigos Automação de Testes de Aceitação com Cucumber e JRuby, Ed. 39 e Aplicações Desktop a jato com JRuby e Netbeans, Ed. 36 abordaram a utilização de RSpec e Cucumber (ver quadro de referências, no final do artigo). A partir daí, ao longo dos anos, a ferramenta sofreu fortes modificações (North fala que foi completamente reescrito, em seu blog na nota de lançamento da versão 2.0), inclusive para tirar proveito das facilidades de Java 5 e JUnit 4. A versão 2.0 é considerada um marco, pois já disponibiliza algumas ótimas características como integração com Maven, cenários em texto puro, entre outras. a classe Steps) e outra para definir o cenário (estendendo a classe Scenario). A classe que representa o cenário será executada como um teste JUnit e apresentará os resultados com as famosas barras verdes ou vermelhas (como um JUnit Test mesmo). Para isso, esta classe precisa, em seu construtor, adicionar cada Step criado para o cenário. Outro ponto importante é que o nome da classe deve ter relacionamento direto com o nome do arquivo que contém a descrição do cenário. Exemplo: para um cenário user_logs_in_successfully a classe que o representará deve ser UserLogsInSuccessfully, trocando os _ por camel casing; Criando nosso primeiro exemplo Entendendo os cenários e vocabulário No exemplo que iremos criar, implementaremos parte de uma funcionalidade para alteração de senha de acesso ao sistema. Neste ponto faremos apenas uma rápida verificação para identificar se é ou não uma senha segura. O BDD possui um vocabulário próprio que tenta ser bastante simples para facilitar sua utilização como linguagem ubíqua e seus principais componentes são Given, When e Then. Após criar um projeto novo e configurar as dependências (ver seção Dependências Necessárias), criaremos o arquivo de texto validacao_nova_senha.scenario, com o conteúdo da Listagem 3. Colocando a mão na massa! Tendo User Stories definidas, podemos criar o que chamamos de cenários para representá-las, podendo definir diversos cenários para cada uma delas, garantindo que trabalhamos todas as variações que formam o critério de aceite da User Story. Seguindo o padrão de Stories As a <type of user>, I want..., sugerido por Mike Cohn em seu blog (ver quadro de referências), poderíamos ter uma story como a apresentada na Legenda 2 (retirada do blog de Dan North). Listagem 2. Exemplo de story seguindo o padrão de Mike Cohn. As a customer, I want to withdraw cash from an ATM, So that I don t have to wait in line at the bank. E um possível cenários seria: Scenario 1: Account is in credit Given the account is in credit And the card is valid And the dispenser contains cash When the customer requests cash Then ensure the account is debited And ensure cash is dispensed And ensure the card is returned Há os que defendam abordagens mais completas, mencionando critérios de aceite mais detalhados e tabelas de dados. Como os cenários serão executados? Os cenários são salvos em um arquivo-texto e, para cada cenário, precisaremos de uma classe Java que defina os passos (estendendo Dependências necessárias Para o funcionamento correto da versão (utilizada em nosso projeto) do framework, é necessário configurar as seguintes dependências no classpath do projeto: jbehave-core jar (download direto do site do JBehave: hamcrest-all-1.1.jar (http://hamcrest.org/); commons-lang-2.5.jar (http://commons.apache.org/lang/ download_lang.cgi); commons-collections.jar Além do JUnit4 (em Listagem 3. Código do cenário Validação de Nova Senha. Title Recadastramento de Senha Narrative: As a Usuario I want recadastrar minha senha So that continue tenasso ao sistema, com outra senha Scenario: Validar nova senha Given Um usuário de nome Marcelo Zeferino e login zeferino e a senha é 1234 When verifico se a senha é segura Then Deve retornar a mensagem A senha deve conter ao menos 5 caracteres. Feito isso, temos nossa especificação pronta e precisamos criar uma classe que execute nosso cenário. Para tanto, criaremos a classe ValidacaoNovaSenha.java, seguindo as convenções do JBehave, com o conteúdo da Listagem 4. 33

5 : : : : Listagem 4. Implementação da classe responsável por rodar o cenário. Listagem 5. Implementação da classe responsável pelos passos de teste dos cenários. public class ValidacaoNovaSenha extends JUnitScenario { public class ValidacaoNovaSenhaSteps extends Steps { private Usuario usuario = new Usuario(); public ValidacaoNovaSenha() { private String mensagemerro; super(new MostUsefulConfiguration() usuário de nome $nomeusuario e login $loginusuario e a senha é $novasenha") public void setup(string nomeusuario, String loginusuario, String novasenha) { public ScenarioDefiner fordefiningscenarios() { return new ClasspathScenarioDefiner( new UnderscoredCamelCaseResolver(.scenario ), new PatternScenarioParser(keywords())); mensagemerro = ""; usuario.setnome(nomeusuario); usuario.setlogin(loginusuario); public ScenarioReporter forreportingscenarios() { return new se a senha é segura") public void checksenha() { ); try{ usuario.validarnovasenha(); catch (Exception e) { mensagemerro = e.getmessage(); Feito isso, já podemos executar nosso teste e verificar o resultado. Rodando a nossa classe como um JUnit Test temos o resultado apresentado na figura 1, mostrando que a implementação dos passos de nosso cenário ainda estão retornar a mensagem \"$mensagem\"") public void checkmessagem(string mensagem) { ensurethat(mensagemerro.equalsignorecase(mensagem)); O JBehave utiliza para codificar algum comportamento para cada um destes passos do cenário descrito no arquivo de texto. Figura 1. Execução com passos ainda pendentes. O próximo passo é criar a classe que implementará os passos necessários para testar nossa especificação. Criaremos uma classe chamada ValidacaoNovaSenhaSteps.java, estendendo a classe Steps do JBehave, com o conteúdo da Listagem Podemos utilizar o conteúdo do arquivo de texto e fazer parsing das Strings a fim de compará-las com os resultados esperados. No nosso caso, queremos comparar se o conteúdo da variável mensagemerro, que está sendo recuperado de acordo com a Exception lançada pelo método validarnovasenha da classe Usuário, é equivalente à mensagem apresentada na descrição do cenário. Poderíamos neste ponto validar diversas entradas e saídas, de acordo com nossas necessidades, não estando limitados a apenas tipos String. O conteúdo da classe Usuário.java está descrito na Listagem 6.

6 Listagem 6. Implementação da classe de negócio Usuário, com o comportamento para verificação da senha. Listagem 7. Alteração na classe ValidacaoNovaSenha para executar o TestStep criado. package main.java.usuario; public class ValidacaoNovaSenha extends JUnitScenario { public ValidacaoNovaSenha() { public class Usuario { super(new MostUsefulConfiguration() { public Usuario(){ private String nome; private String login; private String senha; public ScenarioDefiner fordefiningscenarios() { return new ClasspathScenarioDefiner( new UnderscoredCamelCaseResolver(".scenario"), new PatternScenarioParser(keywords())); public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; public String getlogin() { return login; public void setlogin(string login) { this.login = login; public String getsenha() { return senha; public void setsenha(string senha) { this.senha = public ScenarioReporter forreportingscenarios() { return new PrintStreamScenarioReporter(); ); addsteps(new ValidacaoNovaSenhaSteps()); public void validarnovasenha() throws Exception{ if (this.getsenha().length() < 5){ throw new Exception("A senha deve conter ao menos 5 caracteres."); Neste ponto, estamos aptos para inserir nosso TestStep no construtor da classe ValidacaoNovaSenha.java para que o runner chame a classe ValidacaoNovaSenhaSteps.java e execute os passos que predefinimos. Figura 2. Resultado de execução com sucesso. Para isso, incluiremos a linha addsteps(new ValidacaoNovaSenhaSteps()); após a chamada a super na classe ValidacaoNovaSenha.java, para ficar da forma apresentada na Listagem 7 e executaremos novamente esta classe como um JUnitTest. Se tudo correr bem, o resultado será apresentado como na figura 2, apresentando o sucesso do teste. Para testar o caso de falha, podemos alterar a mensagem da especificação e rodar novamente, verificando que o JUnit irá apresentar a barra vermelha, indicando que ocorreu uma falha, como na figura 3. Figura 3. Falha na execução do teste, indicando que uma condição não foi satisfeita, após alterarmos a mensagem. 35

7 : : : : Criando cenários com Tabela de Dados de Exemplo Uma ótima opção para trabalhar com mais dados de entrada para os testes é a utilização do recurso Table Examples. Este recurso permite que seja definida uma tabela com valores de entrada e/ou saída para o(s) cenário(s) de uma especificação, sem a necessidade de criar diversos cenários (um para cada entrada de dados, por exemplo). A sintaxe para a criação de Table Examples é apresentada na Listagem 8, já com uma aplicação prática no nosso exemplo. Listagem 9. Alterações na classe ValidacaoNovaSenhaSteps. java para compatibilizar com a utilização da tabela de exemplos. public class ValidacaoNovaSenhaSteps extends Steps { private Usuario usuario = new Usuario(); private String usuário de nome: <nome> e login: <login> e a senha: <senha>") public void String String String novasenha) { Note que retiramos os valores anteriormente passados manualmente para os passos e adicionamos <> nos campos nome, login, senha e mensagem para que estes dados sejam recuperados da tabela de exemplos, no final da story. mensagemerro = ""; usuario.setnome(nomeusuario); usuario.setlogin(loginusuario); usuario.setsenha(novasenha); Foi necessário, também, alterar a classe ValidacaoNovaSenhaSteps.java para que os passos do cenário considerem as alterações feitas na especificação. A Listagem 9 apresenta o código alterado desta classe, utilizando a NomeDoCampo ), para identificar os valores recebidos da se a senha é segura") public void checksenha() { Note que a utilização deste tipo de anotação é bastante útil, pois é possível utilizar diretamente os atributos com seus tipos reais, ao invés de trabalhar com o parsing de Strings. try{ usuario.validarnovasenha(); catch (Exception e) { mensagemerro = e.getmessage(); A figura 4 apresenta o log geral de execução das entradas na tabela de exemplos, impresso no console. Listagem 8. Alterações em nossa especificação para utilização de Table Examples. Title Recadastramento de Senha Narrative: As a Usuario I want recadastrar minha senha So that continue tendo acesso ao sistema, com outra retornar a mensagem: <mensagem>") public void String mensagem) { ensurethat(mensagemerro.trim().equalsignorecase(mensagem)); Title Recadastramento de Senha Narrative: As a Usuario I want recadastrar minha senha So that continue tendo acesso ao sistema, com outra senha Scenario: Validar nova senha Given Um usuário de nome: <nome> e login: <login> e a senha: <senha> When verifico se a senha é segura Then Deve retornar a mensagem: <mensagem> Examples: nome login senha mensagem Marcelo Zeferino zeferino 1234 A senha deve conter ao menos 5 caracteres. Kurt Cobain kurt Figura 4. Console apresentando resultado de execução de especificação utilizando Table Examples. 36

8 Mas estamos escrevendo em inglês e português ao mesmo tempo! Neste ponto, criei uma nova classe genérica para os cenários e steps em português, fazendo com que as classes anteriores agora herdem destas novas classes. Estendendo o JBehave para utilizar Português-BR nos cenários As Listagens 11 e 12, respectivamente, apresentam o código das classes genéricas para os cenários e steps, incluindo alguns comentários relevantes. Agora que já passamos por alguns conceitos básicos sobre o framework, percebemos que a utilização de inglês (devido ao padrão Given, When, Then) e português no mesmo documento não soa muito bem. Inclusive, pode ser um empecilho para o objetivo de alcançar maior participação dos envolvidos. Listagem 11. Classe genérica, com configurações para utilizar língua personalizada pelo arquivo keywords_pt. public class ScenarioPtBR extends JUnitScenario { O JBehave nos reserva a possibilidade de estendê-lo para utilizar outros dialetos, permitindo configurar o vocabulário para a forma que melhor atenda aos usuários. Criaremos novas classes e especificação, agora utilizando apenas nossa linguagem na descrição das especificações. Manteremos a mesma funcionalidade para permitir um comparativo. public ScenarioPtBR() { this(thread.currentthread().getcontextclassloader()); public ScenarioPtBR(final ClassLoader classloader) { super(new PropertyBasedConfiguration() public ScenarioDefiner fordefiningscenarios() { Criando o arquivo de redefinição do vocabulário (keywords_ pt.properties) // Repare que aqui estamos utilizando a extensão.cenario e não //.scenario, como antes return new ClasspathScenarioDefiner( new UnderscoredCamelCaseResolver(".cenario"), new PatternScenarioParser(this), classloader); Para que o JBehave possa trabalhar com nosso vocabulário, precisamos definir um arquivo de palavras-chave, traduzindo tais palavras para o nosso idioma. A Listagem 10 apresenta o conteúdo deste arquivo (salvo como keywords_pt.properties). Listagem 10. Arquivo de mapeamento de palavras-chaves e suas traduções. Scenario=Cenário: Narrative=Narrativa: InOrderTo=Para que AsA=Como um IWantTo=Eu desejo GivenScenarios=DadoCenários: ExamplesTable=Exemplos: ExamplesTableRow=LinhaTabelaExemplo: Given=Dado When=Quando Then=Então And="E" Pending=PENDENTE NotPerformed=N\u00E3o Executado Failed=FALHA Ignorable=Ignoravel DryRun=DryRun Um alerta para a linha que contém o mapeamento do keyword And (ainda na Listagem 10). Neste caso, utilizamos E, entre aspas, devido a problemas na biblioteca utilizada pelo JBehave para fazer o match das strings. Caso não tivéssemos usado as aspas o And seria convertido para qualquer palavra que iniciasse com a letra E. Outra solução seria envolver todas as palavras em public ScenarioReporter forreportingscenarios() { //definição do Locale "pt", utilizado na exibição dos resultados return new PrintStreamScenarioReporter(keywordsFor( new Locale("pt"), classloader)); //Definição do Locale utilizado na obtenção dos public KeyWords keywords() { return keywordsfor(new Locale("pt"), classloader); ); //Aqui está sendo definido o pacote onde está inserido o arquivo properties com //mapeamento das palavras chaves traduzidas para o Português protected static KeyWords keywordsfor(locale locale, ClassLoader classloader) { return new I18nKeyWords(locale, new StringEncoder(), "test/resources/keywords", classloader); Além de criar o arquivo keywords_pt_properties da Listagem 10, precisaremos definir algumas configurações em nossas classes (tanto a que funciona como runner dos cenários quanto a que define o comportamento dos passos de execução) para que as novas configurações sejam utilizadas. 37

9 : : : : Listagem 12. Classe genérica para Steps com configurações para utilizar língua personalizada pelo arquivo keywords_pt. Cont. Listagem 14. Classe para execução dos steps, agora herdando comportamentos de configuração de linguagem. public class StepPtBR extends Steps { try{ usuario.validarnovasenha(); public StepPtBR(){ this(thread.currentthread().getcontextclassloader()); catch (Exception e) { mensagemerro = e.getmessage(); //Definindo que serão utilizados os keywords traduzidos public StepPtBR(ClassLoader classloader) { super(new StepsConfiguration(keywordsFor(new Locale("pt"), classloader))); //Aqui está sendo definido o pacote onde está inserido o arquivo properties com //mapeamento das palavras chaves traduzidas para o Português protected static KeyWords keywordsfor(locale locale, ClassLoader classloader) { return new I18nKeyWords(locale, new StringEncoder(), "test/resources/keywords", retornar a <mensagem>") public void String mensagem) { ensurethat(mensagemerro.trim().equalsignorecase(mensagem)); Listagem 15. Especificação, agora escrita em nossa língua. Título Recadastramento de Senha As Listagens 13 e 14 apresentam o código das novas classes para runner de cenários e steps, que agora herdam as características de configuração das classes genéricas. Na Listagem 15, temos o novo texto de nossa especificação, agora em português. Listagem 13. Classe para execução do cenário, simplificada pela herança de comportamentos de configuração de linguagem. Narrativa: Como a Usuario Eu desejo recadastrar minha senha Para que continue tendo acesso ao sistema, com outra senha Cenário: Validar nova senha Dado Um usuário de <nome> e <login> e a <senha> Quando verifico se a senha é segura Então Deve retornar a <mensagem> public class ValidacaoNovaSenhaPtBr extends ScenarioPtBR { public ValidacaoNovaSenhaPtBr(){ addsteps(new ValidacaoNovaSenhaStepsPtBr()); Exemplos: nome login senha mensagem Marcelo Zeferino zeferino 1234 A senha deve conter ao menos 5 caracteres. Kurt Cobain kurt Por fim, a figura 5 contém o resultado da execução, já utilizando nossa língua e a figura 6 contém a estrutura final de nossa aplicação. Listagem 14. Classe para execução dos steps, agora herdando comportamentos de configuração de linguagem. public class ValidacaoNovaSenhaStepsPtBr extends StepPtBR { private Usuario usuario = new Usuario(); private String usuário de <nome> e <login> e a <senha>") public void String String String novasenha) { mensagemerro = ""; usuario.setnome(nomeusuario); usuario.setlogin(loginusuario); se a senha é segura") public void checksenha() { 38 Figura 5. Console com a execução, após configuração da língua para português.

10 Utilizar uma prática baseada em TestFirst é importante para garantir que testes automatizados existirão (e não ficarão para quando a equipe tiver tempo nunca!) e que o design da aplicação será orientado para facilitar testes. Existem diversas ferramentas que habilitam a utilização de BDD em Java, como EasyB, JBee, EasySpec e o famoso Cucumber (com JRuby). No entanto, JBehave se posiciona no mercado como uma ótima opção e, em minha opinião, é a melhor dentre outros frameworks, pois podemos criar especificações de maneira bastante simples e utilizando puramente Java (e não JRuby ou Groovy, por exemplo, como no caso de Cucumber e EasyB, respectivamente). A ferramenta ainda permite uma série de outras habilidades não apresentadas neste artigo, como a integração com outros frameworks, como HTMLUnit e Selenium, por exemplo. É possível encontrar uma implementação de exemplo utilizando JBehave sobre WebDriver (HTMLUnit) no GitHub profile do Rodrigo Yoshima (da Aspercom e colunista da MundoJ), descrito na seção de referências no final do artigo. Outra capacidade interessante é a integração com Ant e Maven, facilitando a execução automática dos testes de acordo com o ponto no ciclo de vida da aplicação, mas este é um assunto para um novo artigo Figura 6. Estrutura final da aplicação, no Eclipse. Considerações finais São diversos os benefícios na utilização de BDD, como a possibilidade de escrever especificações junto aos usuários finais garantindo melhor entendimento do problema. Tais especificações servirão como documentação e poderão ser executadas automaticamente para validação e verificação dos cenários, o que aumenta consideravelmente a chance de se tornar uma documentação útil e constantemente atualizada. Referências blog de Dan North. post no blog de Dan North com detalhes sobre a evolução do JBehave e sua versão post no blog de Dan North sobre a filosofia do framework e breve, porém excelente e esclarecedora, comparação entre BDD e TDD. Automação de Testes de Aceitação com Cucumber e JRuby Ed 39 da MundoJ, Aplicações Desktop a jato com JRuby e Netbeans Ed 36 da MundoJ. site de referência para o RSpec. Domain-Driven Design: Tackling Complexity in the Heart of Software, Eric Evans. blog oficial do framework. link do GitHub profile de Rodrigo Yoshima, com exemplo prático utilizando JBehave sobre WebDriver. post em blog de Mike Cohn com template para User Stories. Para aplicações nas quais utilizamos Domain-Driven Design, a utilização de BDD aparece com grande utilidade, facilitando a criação e manutenção da Ubiquitous Language, entre desenvolvedores e pessoas de negócio. 39

Evolução do Design através de Testes e o TDD

Evolução do Design através de Testes e o TDD c a p a Lucas Souza (lucas.souza@caelum.com.br): é bacharel em Engenharia da Computação pela Universidade de Ribeirão Preto, possui a certificação SCJP e trabalha com Java há 4 anos. Atualmente é desenvolvedor

Leia mais

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

TESTES AUTOMATIZADOS COM JUNITE MOCKITO TESTES AUTOMATIZADOS COM JUNITE MOCKITO Jaime William Dias 12, Dener Barranco 1, Douglas Delapria 1 1 Universidade Paranaense (Unipar) 2 Universidade Estadual de Maringá (UEM) Paranavaí PR Brasil dener_barranco@hotmail.com,

Leia mais

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE Renan Leme Nazário, Ricardo Rufino Universidade Paranaense (Unipar) Paranavaí PR - Brasil renazariorln@gmail.com, ricardo@unipar.br Resumo. Este artigo

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Requisitos Executáveis: O modelo FIT / FitNesse

Requisitos Executáveis: O modelo FIT / FitNesse Requisitos Executáveis: O modelo FIT / FitNesse Jorge Diz Globalcode 57 Encontro do SPIN-SP Slide 1 Instrutor Jorge Alberto Diz ( 95 Mestre em Eng. Elétrica (UNICAMP ( 89 Bach. em Ciência da Computação

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

ProgramaTchê programatche.net Programação OO com PHP

ProgramaTchê programatche.net Programação OO com PHP Roteiro 2 Objetivos: * Apresentar a sintaxe básica para utilização de Orientação a Objetos em PHP. Ferramentas necessárias Navegador, NetBeans, Servidor Apache. 1 Orientação a Objetos em PHP PHP é uma

Leia mais

3.5. Cuidado com o modelo anêmico

3.5. Cuidado com o modelo anêmico 3.5. Cuidado com o modelo anêmico public Periodo adiaumasemana() { Calendar novofim = (Calendar) this.fim.clone(); novofim.add(calendar.day_of_month, 7); return new Periodo(inicio, novofim); E, com uma

Leia mais

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.

Leia mais

Java Programação para Fábrica de Software. Fernando Lozano Consultor 4Linux lozano@4linux.com.br

Java Programação para Fábrica de Software. Fernando Lozano Consultor 4Linux lozano@4linux.com.br Java Programação para Fábrica de Software Fernando Lozano Consultor 4Linux lozano@4linux.com.br Quem É o Lozano? Atua há mais de 15 anos em TI Consultoria para Amsterdam Sauer, Banco Bovorantim, Bob's,

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA Manual do Moodle- Sala virtual UNIFAP MACAPÁ-AP 2012 S U M Á R I O 1 Tela de Login...3 2 Tela Meus

Leia mais

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831 Rational Quality Manager Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831 1 Informações Gerais Informações Gerais sobre o RQM http://www-01.ibm.com/software/awdtools/rqm/ Link para o RQM https://rqmtreina.mvrec.local:9443/jazz/web/console

Leia mais

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

Leia mais

LOGGING DE EVENTOS COM LOG4J

LOGGING DE EVENTOS COM LOG4J LOGGING DE EVENTOS COM LOG4J por Luiz Gustavo Stábile de Souza O que é logging? Fazer o logging de uma aplicação é uma das possíveis maneiras de debugá-la, registrando em algum meio (arquivo, enviando

Leia mais

Dicas para implantação do Autodesk Vault para pequenas e médias empresas

Dicas para implantação do Autodesk Vault para pequenas e médias empresas Dicas para implantação do Autodesk Vault para pequenas e médias empresas Rodrigo Tito Nova CS Informática Cristiano Oliveira ConsultCAD É sabido por todos que hoje, o processo de desenvolvimento do produto

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

Leia mais

Índice. Atualizado em: 01/04/2015 Página: 1

Índice. Atualizado em: 01/04/2015 Página: 1 MANUAL DO USUÁRIO Índice 1. Introdução... 3 2. Acesso ao Sistema... 4 2.1. Instalação... 4 2.1.1. Servidor - Computador Principal... 4 2.1.2. Estação - Computador na Rede... 6 2.1.3. Estação - Mapeamento

Leia mais

DOMAIN-DRIVEN DESIGN E TEST-DRIVEN DEVELOPMENT

DOMAIN-DRIVEN DESIGN E TEST-DRIVEN DEVELOPMENT DOMAIN-DRIVEN DESIGN E TEST-DRIVEN DEVELOPMENT Jaqueline Rissá Franco email: jaquerifr@gmail.com Karla Marturelli Mattos Luciano Mathias Doll João Almeida Resumo: Este artigo mostra novas abordagens na

Leia mais

Desenvolvimento Orientado a Comportamento com Testes Automatizados utilizando JBehave e Selenium

Desenvolvimento Orientado a Comportamento com Testes Automatizados utilizando JBehave e Selenium Desenvolvimento Orientado a Comportamento com Testes Automatizados utilizando JBehave e Selenium Rafael B. Chiavegatto¹, Lidiane V. da Silva², Andréia Vieira², William R. Malvezzi¹ ¹Centro de Pós-Graduação

Leia mais

Interface para Regras de Negócios em Multi-Banco

Interface para Regras de Negócios em Multi-Banco 1 Interface para Regras de Negócios em Multi-Banco MARCELO JALOTO (marcelo@jaloto.net) é graduado no curso superior Projetos e Gestão de Redes de Computadores e formado no curso Técnico em Processamento

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE Aluno: Roberto Reinert Orientador: Everaldo A. Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Workflow Processo

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO Santa Maria, 27 de Setembro de 2013. Revisão aula anterior Desenvolvimento Ágil de Software Desenvolvimento e entrega

Leia mais

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44 Armazenando Dados em Aplicações Java Parte 2 de 3: Apresentando as opções Hua Lin Chang Costa, hualin@cos.ufrj.br, COPPE/UFRJ. Leonardo Gresta Paulino Murta, leomurta@ic.uff.br, IC/UFF. Vanessa Braganholo,

Leia mais

Desenvolvimento Guiado por Testes

Desenvolvimento Guiado por Testes Desenvolvimento Guiado por Testes Test-Driven Development (TDD) Guilherme Chapiewski http://gc.blog.br gc@mandic.com.br O que é TDD? Regras fundamentais do TDD: Escreva o teste da implementação ANTES de

Leia mais

Nome N Série: Ferramentas

Nome N Série: Ferramentas Nome N Série: Ferramentas Competências: Identificar e utilizar técnicas de modelagem de dados; Habilidades: Utilizar ferramentas de apoio ao desenvolvimento de software; Bases Tecnológicas: Metodologias

Leia mais

OI CONTA EMPRESA MANUAL DO USUÁRIO

OI CONTA EMPRESA MANUAL DO USUÁRIO OI CONTA EMPRESA MANUAL DO USUÁRIO 1 Bem-vindo ao Oi Conta Empresa! A Oi tem o orgulho de lançar mais um produto para nossos clientes corporativos, o Oi Conta Empresa. Nele, nossos clientes poderão acessar

Leia mais

edirectory Plataforma ios / Android

edirectory Plataforma ios / Android edirectory Plataforma ios / Android Levando seu site ao próximo nível Conheça o novo aplicativo do edirectory. E seja bem vindo a revolução em aplicativos para Diretórios Online. Mobile Completamente reestruturado

Leia mais

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF Guilherme Macedo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil guilhermemacedo28@gmail.com, jaime@unipar.br Resumo.

Leia mais

Especificação e Automação Colaborativas de Testes utilizando a técnica BDD

Especificação e Automação Colaborativas de Testes utilizando a técnica BDD Especificação e Automação Colaborativas de Testes utilizando a técnica BDD Rafael Chiavegatto¹, Vanilton Pinheiro¹, Andréia Freitas Vieira¹, João Clineu¹, Erbett Hinton Oliveira¹, Ellen Barroso¹, Alexandre

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser A1Criando um módulo de negócio Capítulo 27 Aplicação dividida em módulos - Introdução Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser compreendido como uma solução de

Leia mais

Estratégias para testes: a metáfora da pirâmide alimentar

Estratégias para testes: a metáfora da pirâmide alimentar Estratégias para testes: a metáfora da pirâmide alimentar Jorge Diz Instrutor Globalcode Kleber Xavier Instrutor Globalcode 1 Agenda > O que são testes? > Tipos de testes > A pirâmide de testes (Huggins)

Leia mais

Instalando e configurando o Java Development Kit (JDK)

Instalando e configurando o Java Development Kit (JDK) Tutorial elaborado pelo professor José Gonçalo dos Santos Contato: jose.goncalo.santos@gmail.com Instalando e configurando o Java Development Kit (JDK) 1.1 Obtendo o JDK + JRE Para obter o JDK e o JRE

Leia mais

Impressão de Código de Barras Uma abordagem prática para Zebra EPL2

Impressão de Código de Barras Uma abordagem prática para Zebra EPL2 1 Impressão de Código de Barras Uma abordagem prática para Zebra EPL2 por Victory Fernandes Na internet estão disponíveis diversos componentes para geração e impressão de Código de Barras utilizando o

Leia mais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos

Leia mais

Medindo a Produtividade do Desenvolvimento de Aplicativos

Medindo a Produtividade do Desenvolvimento de Aplicativos Medindo a Produtividade do Desenvolvimento de Aplicativos Por Allan J. Albrecht Proc. Joint SHARE/GUIDE/IBM Application Development Symposium (October, 1979), 83-92 IBM Corporation, White Plains, New York

Leia mais

SGB_REL_RelatorioSonar Versão 1.1

SGB_REL_RelatorioSonar Versão 1.1 SGB_REL_RelatorioSonar Versão 1.1 Histórico de Revisões Nome Alterações Data Versão Gabriel Vieira Criação do Documento 14/11/2012 1.0 Bruno Marquete Formatação do Documento e ajustes de conteúdo 27/11/2012

Leia mais

Capítulo 1 - Introdução 14

Capítulo 1 - Introdução 14 1 Introdução Em seu livro Pressman [22] define processo de software como um arcabouço para as tarefas que são necessárias para construir software de alta qualidade. Assim, é-se levado a inferir que o sucesso

Leia mais

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!!

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!! Apresentação Este manual é uma orientação para os participantes de cursos no ambiente Moodle do INSTITUTO PRISMA. Tem como objetivo orientar sobre as ações básicas de acesso e utilização do ambiente virtual

Leia mais

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5. Desenvolvendo aplicações em camadas com PHP 5. Talvez a primeira vista você ache estranha a palavra Camada em programação, mas o que vem a ser Camada? Segundo o dicionário: Camada 1 - Qualquer matéria

Leia mais

O GEM é um software 100% Web, ou seja, você poderá acessar de qualquer local através da Internet.

O GEM é um software 100% Web, ou seja, você poderá acessar de qualquer local através da Internet. Olá! Você está recebendo as informações iniciais para utilizar o GEM (Software para Gestão Educacional) para gerenciar suas unidades escolares. O GEM é um software 100% Web, ou seja, você poderá acessar

Leia mais

Teste de software. Definição

Teste de software. Definição Definição O teste é destinado a mostrar que um programa faz o que é proposto a fazer e para descobrir os defeitos do programa antes do uso. Quando se testa o software, o programa é executado usando dados

Leia mais

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO 12. DOCUMENTAÇÃO Na plataforma Java SE 7, há cerca de 4000 classes e interfaces disponíveis para utilizarmos em nossas aplicações Podemos visualizar a documentação dessas classes e interfaces

Leia mais

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Ponta Grossa ANDRÉ LUIS CORDEIRO DE FARIA RELATÓRIO DE ESTÁGIO

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Ponta Grossa ANDRÉ LUIS CORDEIRO DE FARIA RELATÓRIO DE ESTÁGIO UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Ponta Grossa ANDRÉ LUIS CORDEIRO DE FARIA RELATÓRIO DE ESTÁGIO Ponta Grossa 2012 ANDRÉ LUIS CORDEIRO DE FARIA RELATÓRIO DE ESTÁGIO Trabalho elaborado pelo

Leia mais

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 1 Sumário 1 - Instalação Normal do Despachante Express... 3 2 - Instalação do Despachante Express em Rede... 5 3 - Registrando o Despachante Express...

Leia mais

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5 JavaScript Diego R. Frank, Leonardo Seibt FIT Faculdades de Informática de Taquara Fundação Educacional Encosta Inferior do Nordeste Av. Oscar Martins Rangel, 4500 Taquara RS Brasil difrank@terra.com.br,

Leia mais

GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL

GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO E INSTALAÇÃO DO CRM PROFESSIONAL SUMÁRIO

Leia mais

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

Leia mais

Material de Apoio. Sistema de Informação Gerencial (SIG)

Material de Apoio. Sistema de Informação Gerencial (SIG) Sistema de Informação Gerencial (SIG) Material de Apoio Os Sistemas de Informação Gerencial (SIG) são sistemas ou processos que fornecem as informações necessárias para gerenciar com eficácia as organizações.

Leia mais

DEFINIÇÃO DE MÉTODOS

DEFINIÇÃO DE MÉTODOS Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 2 DEFINIÇÃO DE MÉTODOS Todo o processamento que um programa Java faz está definido dentro dos

Leia mais

Programação Extrema. Luis Fernando Machado. Engenharia de Software

Programação Extrema. Luis Fernando Machado. Engenharia de Software Programação Extrema Luis Fernando Machado Engenharia de Software Desenvolvimento Ágil Programação Extrema, ou Extreme Programming (XP) é um modelo de desenvolvimento ágil. Desenvolvimento ágil foi criado

Leia mais

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br WebWork 2 João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 0.5 Última Atualização: Agosto/2005 1 Agenda Introdução WebWork 2 & XWork Actions Views Interceptadores Validação Inversão de Controle (IoC)

Leia mais

Metodologia de Desenvolvimento de Sistemas

Metodologia de Desenvolvimento de Sistemas Metodologia de Desenvolvimento de Sistemas Aula 1 Ementa Fases do Ciclo de Vida do Desenvolvimento de Software, apresentando como os métodos, ferramentas e procedimentos da engenharia de software, podem

Leia mais

Mini-Curso Agile Testing

Mini-Curso Agile Testing Mini-Curso Agile Testing Como funciona na prática? contato@qualister.com.br (48) 3285-5615 twitter.com/qualister facebook.com/qualister linkedin.com/company/qualister Instrutor Elias Nogueira

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO Santa Maria, 24 de Setembro de 2013. Revisão aula anterior Processos de Software Engenharia de Requisitos, Projeto,

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

MOCKITO - - Alexandre Gazola (alexandregazola@gmail.com / Twitter: @alexandregazola)

MOCKITO - - Alexandre Gazola (alexandregazola@gmail.com / Twitter: @alexandregazola) cinto de utilidades mocks_ CRIAÇÃO DE MOCKS COM MOCKITO No último artigo desta coluna, falamos de uma forma geral sobre diversas ferramentas para suporte a testes automatizados. Dentre as ferramentas mencionadas,

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com TESTE DE SOFTWARE COM XP Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Contexto Inúmeros processos de software Evolução das formas/metodologias de desenvolvimento de software Dificuldades encontradas

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

ebook Aprenda como aumentar o poder de captação do seu site. por Rodrigo Pereira Publicitário e CEO da Agência Retina Comunicação

ebook Aprenda como aumentar o poder de captação do seu site. por Rodrigo Pereira Publicitário e CEO da Agência Retina Comunicação por Rodrigo Pereira Publicitário e CEO da Agência Retina Comunicação Sobre o Autor: Sempre fui comprometido com um objetivo de vida: TER MINHA PRÓPRIA EMPRESA. Mas assim como você, eu também ralei bastante

Leia mais

PHP INTRODUÇÃO CLASSES E OBJETOS

PHP INTRODUÇÃO CLASSES E OBJETOS INTRODUÇÃO PHP AULA 8 ORIENTAÇÃO A OBJETOS Professor: Leonardo Pereira E-mail: leongamerti@gmail.com Facebook: leongamerti Material de Estudo: http://www.leonti.vv.si A orientação a objetos ou OO é o paradigma

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP O PHP através da versão 5, veio desenvolvido com suporte a programação orientada a objetos. O que significa isso? Que a partir da versão 5 é possível criar bibliotecas

Leia mais

Agentes Inteligentes: Uma Abordagem Prática com o Java Agent Development Framework

Agentes Inteligentes: Uma Abordagem Prática com o Java Agent Development Framework Agentes Inteligentes: Uma Abordagem Prática com o Java Agent Development Framework Daniel Abella Cavalcante Mendonça de Souza daniel@abella.com.br Capítulo 1. Introdução Segundo Russel e Norvig [1], um

Leia mais

Fixture-Factory. Criando objetos para seus testes. Como criar objetos através de templates para serem utilizados como massa de dados em seus testes.

Fixture-Factory. Criando objetos para seus testes. Como criar objetos através de templates para serem utilizados como massa de dados em seus testes. fixture-factory_ Fixture-Factory Criando objetos para seus testes Como criar objetos através de templates para serem utilizados como massa de dados em seus testes. Começamos testando métodos simples, mas

Leia mais

Lidando de Forma Eficiente com Validações Locais de Objetos

Lidando de Forma Eficiente com Validações Locais de Objetos Lidando de Forma Eficiente com Validações Locais de Objetos Aprenda a construir um mini-framework para validar objetos locais sem afetar a complexidade do código. Autor Paulo César M. N. A. Coutinho (pcmnac@gmail.com):

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

O IMPACTO DA UTILIZAÇÃO DE UM SOFTWARE DE GERENCIAMENTO ELETRÔNICO DE PROJETOS NAS EMPRESAS

O IMPACTO DA UTILIZAÇÃO DE UM SOFTWARE DE GERENCIAMENTO ELETRÔNICO DE PROJETOS NAS EMPRESAS O IMPACTO DA UTILIZAÇÃO DE UM SOFTWARE DE GERENCIAMENTO ELETRÔNICO DE PROJETOS NAS EMPRESAS Nadia Al-Bdywoui (nadia_alb@hotmail.com) Cássia Ribeiro Sola (cassiaribs@yahoo.com.br) Resumo: Com a constante

Leia mais

Criando uma agenda simples com NetBeans 6.5

Criando uma agenda simples com NetBeans 6.5 Criando uma agenda simples com NetBeans 6.5 (Swing application framework e Beansbinding) Já faz algum tempo que escrevi uma agenda simples usando o Eclipse com o Visual Class Editor. Demorei em torno de

Leia mais

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. Rodrigo Hjort. Robson Ximenes

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. <marlon.carvalho@gmail.com> Rodrigo Hjort. <rodrigo.hjort@gmail.com> Robson Ximenes Demoiselle Report Guide Demoiselle Report Marlon Carvalho Rodrigo Hjort Robson Ximenes Demoiselle Report... v 1. Configuração

Leia mais

UMA ABORDAGEM COMPARATIVA ENTRE AS LINGUAGENS DE PROGRAMAÇÃO JAVA E C#

UMA ABORDAGEM COMPARATIVA ENTRE AS LINGUAGENS DE PROGRAMAÇÃO JAVA E C# UMA ABORDAGEM COMPARATIVA ENTRE AS LINGUAGENS DE PROGRAMAÇÃO JAVA E C# Robson Bartelli¹, Wyllian Fressatti¹. ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil robson_lpbartelli@yahoo.com.br,wyllian@unipar.br

Leia mais

CAPÍTULO 4. AG8 Informática

CAPÍTULO 4. AG8 Informática 2ª PARTE CAPÍTULO 4 Este capítulo têm como objetivo: 1. Tratar das etapas do projeto de um Website 2. Quais os profissionais envolvidos 3. Administração do site 4. Dicas para não cometer erros graves na

Leia mais

Tutorial: Instalando Linux Educacional em uma maquina virtual

Tutorial: Instalando Linux Educacional em uma maquina virtual Maria Augusta Sakis Tutorial: Instalando Linux Educacional em uma Máquina Virtual Máquinas virtuais são muito úteis no dia-a-dia, permitindo ao usuário rodar outros sistemas operacionais dentro de uma

Leia mais

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO UTILIZANDO O HIBERNATE Rafael Laurino GUERRA, Dra. Luciana Aparecida Martinez ZAINA Faculdade de Tecnologia de Indaiatuba FATEC-ID 1 RESUMO Este artigo apresenta

Leia mais

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Ao projetar uma aplicação Web, é importante considerála como sendo formada por três componentes lógicos: camada

Leia mais

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Curso - Padrões de Projeto Módulo 2: Padrões de Criação Curso - Padrões de Projeto Módulo 2: Padrões de Criação Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

JDBC Java Database Connectivity

JDBC Java Database Connectivity 5 JDBC Java Database Connectivity Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Trabalhar com bancos de dados em aplicações web em JSP através das classes

Leia mais

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES Conteúdo O Projeto... 2 Criação de Pacotes... 4 Factory:... 6 DAO:... 15 GUI (Graphical User Interface ou Interface Gráfica de Cadastro)... 18 Evento SAIR... 23 Evento CADASTRAR... 24 1 O Projeto Arquivo

Leia mais

Java Server Faces 2.0 Rich Faces 4.0

Java Server Faces 2.0 Rich Faces 4.0 DEPARTAMENTO DE INFORMÁTICA - DI Java Server Faces 2.0 Rich Faces 4.0 Quais as novidades e alterações nas novas versões das tecnologias? Pablo Bruno de Moura Nóbrega Analista de Sistemas pablo.nobrega@uece.br

Leia mais

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB Testes de Software 1 AULA 04 FERRAMENTAS DE AUTOMAÇÃO DE TESTES FUNCIONAIS Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB Conteúdo Programático Aula 04 Automação de testes funcionais Ferramentas

Leia mais

edirectory ios / Android Plataforma

edirectory ios / Android Plataforma edirectory ios / Android Plataforma Criando lindos aplicativos com edirectory Uma revolução no espaço de diretórios mobile, bem vindo ao novo aplicativo do edirectory. Mobile Completamente reestruturado

Leia mais

Introdução a Banco de Dados

Introdução a Banco de Dados Introdução a Banco de Dados Ricardo Henrique Tassi - Departamento de Replicação Índice 1- Introdução... 03 2- Quais são os bancos de dados mais conhecidos hoje em dia...04 3- Quais são os tipos de banco...05

Leia mais

Alinhamento Estratégico. A importância do alinhamento entre a TI e o Negócio e o método proposto pelo framework do CobiT 4.1

Alinhamento Estratégico. A importância do alinhamento entre a TI e o Negócio e o método proposto pelo framework do CobiT 4.1 Conhecimento em Tecnologia da Informação Alinhamento Estratégico A importância do alinhamento entre a TI e o Negócio e o método proposto pelo framework do CobiT 4.1 2010 Bridge Consulting Apresentação

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Modelagemde Software Orientadaa Objetos com UML

Modelagemde Software Orientadaa Objetos com UML Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para

Leia mais

Autenticação e Autorização

Autenticação e Autorização Autenticação e Autorização Introdução A segurança em aplicações corporativas está relacionada a diversos aspectos, tais como: autenticação, autorização e auditoria. A autenticação identifica quem acessa

Leia mais

USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE

USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE SUMÁRIO usando o izcode... 1 para gerar software rapidamente... 1 introdução... 2 o que é o izcode?... 2 Como funciona o izcode?... 2 os tipos diferentes

Leia mais

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013 Introdução à orientação a objetos João Tito Almeida Vianna 25/05/2013 Roteiro Aula 2 Motivação Revisão dos conceitos da aula 1 Preparação para os exercícios Exercícios propostos 2 Motivação A orientação

Leia mais

Portal da Prefeitura de São Paulo SECOM. MANUAL DO WARAM v. 1.5 Secretarias

Portal da Prefeitura de São Paulo SECOM. MANUAL DO WARAM v. 1.5 Secretarias SECOM MANUAL DO WARAM v. 1.5 Secretarias WARAM 1.5 Ferramenta de atualização do Portal da Prefeitura de São Paulo. Use preferencialmente o navegador Internet Explorer superior ou igual a 7.0. No campo

Leia mais

Como a automação de marketing pode aumentar suas vendas

Como a automação de marketing pode aumentar suas vendas edição 04 Guia do inbound marketing Como a automação de marketing pode aumentar suas vendas Como a automação de marketing pode aumentar suas vendas Há um tempo atrás o departamento de marketing era conhecido

Leia mais

Introdução a Métodos Ágeis de Desenvolvimento de Software

Introdução a Métodos Ágeis de Desenvolvimento de Software Introdução a Métodos Ágeis de Desenvolvimento de Software Curso de Verão Centro de Competência em Software Livre Departamento de Ciência da Computação - IME / USP Realização: AgilCoop Verão Ágil 2010 Copyleft

Leia mais

Instituto Adus. Tutorial de acesso e publicação na Plataforma Wiki do Instituto ADUS

Instituto Adus. Tutorial de acesso e publicação na Plataforma Wiki do Instituto ADUS Instituto Adus Tutorial de acesso e publicação na Última atualização: 9 de agosto de 05 Conteúdo Sobre o Projeto Wiki Adus... 3 Login e Acesso... 4 Editando conteúdo... 6 Dicas Avançadas... REFÊNCIAS DE

Leia mais

Configurar o Furbot no Eclipse

Configurar o Furbot no Eclipse Configurar o Furbot no Eclipse Primeiramente, precisamos abrir o Eclipse. Logo no início, deverá aparecer uma tela assim: Nela, você irá selecionar o local do seu workspace. Workspace é o local onde ficarão

Leia mais