Evento de programação Ruby on Rails para meninas

O Rails Girls é um evento gratuito de tecnologia da informação voltado para a formação de meninas, estudantes/profissionais de TI ou não, em programação e na tecnologia Ruby on Rails. Ele ocorrerá pela 2ª vez em Salvador.

rails_girls

Link para o evento:

http://railsgirls.com/salvador201411

Informações:

Local: Todo o mundo | mas nesta data é a vez de Salvador, Bahia, Brasil

Data/Hora: 07 e 08 de novembro | dia 07/11 das 18 às 21hrs | dia 08/11  das 09 às 17:30.

Espaço: UFBA – Superintendência de Tecnologia da Informação – Laboratório 1 da RNP/ESR

Valor: Gratuito

Material necessário: Um notebook com permissão para instalação de software

Inscrevam-se e divirtam-se meninas! \o/

Curso de Selenium WebDriver – Aula 5 – WebDriver além do Firefox

O navegador Firefox é o browser oficial do Selenium. Isso porque o Selenium IDE foi criado inicialmente para ser um plugin deste navegador. Antes da criação do Selenium WebDriver, ou Selenium 2, era necessário utilizar o Selenium RC para rodar os testes criados no Selenium IDE remotamente ou em outros navegadores.

Ao informar o seguinte trecho de código-fonte na classe de testes suportada pelo Selenium WebDriver, o teste roda sem problemas no navegador Firefox (para ver as configurações gerais do projeto acesse a aula 1 do curso neste blog):

  • WebDriver driver = new FirefoxDriver();

Seria bastante óbvio e cômodo apenas substituir a classe FirefoxDriver pelos demais navegadores a que o Selenium oferece suporte – Chrome, Internet Explorer, Safari, entre outros. No entanto, não é bem assim. Antes, é necessário configurar o arquivo Pom.xml do projeto, informando novas referências ao browser em questão e informar no código do teste o caminho que o executável dele está disponível.

Vejamos o exemplo do navegador Chrome, em ambiente Linux, IDE Eclipse, plataforma Java  e projeto integrado com o plugin Maven:

  1. Abrir o arquivo Pom.xml do projeto e informar a dependência para o chromedriver.
    1. <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-chrome-driver</artifactId>
      <version>2.43.1</version>
      </dependency>

    chrome-driver

    chrome-driver

  2. Realizar o download do “executável” do chromedriver no link < lembrar de baixar o executável compatível com a versão do seu sistema operacional – 32 ou 64 bits – no meu caso é a versão 64bits >;
  3. Descompactar o pacote do executável do chromedriver em uma pasta do sistema operacional;
  4. Passar o caminho da pasta do executável do chromedriver no código-fonte do teste
    1. System.setProperty(“webdriver.chrome.driver”, “/home/lorena/workspace/chrome64/chromedriver”);
  5. Escrever um método de teste:

    Método de testes básico para execução sobre o Google Chrome

    Método de testes básico para execução sobre o Google Chrome

  6. Executar o teste [utilizei o JUnit 4 para rodar o teste]:
    Teste em execução no Google Chrome

    Teste em execução no Google Chrome

    Resultado do teste no JUnit

    Resultado do teste no JUnit

Link para o download da classe ChromeTest.

Link para o download do projeto.

Referências:

https://sites.google.com/a/chromium.org/chromedriver/home

http://docs.seleniumhq.org/docs/03_webdriver.jsp#chrome-driver

http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/chrome/ChromeDriver.html

Introdução ao C++

C++ é uma linguagem multiparadigma que permite programação orientada a objetos. Ela foi criada no ano de 1983 com o intuito de expandir as funções da linguagem de programação C para aplicação no núcleo do Unix. O seu abordagem não está restrita a características de plataformas de programação de alta e baixo nível, sendo considerada uma linguagem de médio-nível. Desde sua criação ela vem sendo utilizada para o desenvolvimento de programas computacionais comerciais e particulares.

A estrutura de seus programas apresenta os seguintes elementos:

  • Cabeçalho – Espaço para a de inclusão de arquivos auxiliares (ex.: #include <iostream>) e declaração de ambiente (using namespace std) ;
    1. Variáveis podem ser declaradas no cabeçalho e portanto elas tornam-se de uso global no programaç
  •  Corpo – Espaço para a atribuição de classes, funções e instruções do programa.
    1. As variáveis declaradas no corpo do programa são locais. Elas só podem ser utilizadas no espaço onde são criadas.

Estrutura de um programa em C++

Esse link apresenta um tutorial completo para o aprendizado da linguagem, desde apresentação de tipos de variáveis às estruturas e condicionais. Os exemplos e atividades descritas no tutorial estão disponíveis neste outro link. Os programas foram desenvolvidos na IDE code::blocks, que oferece suporte à linguagem C++ e em ambiente Linux (Ubuntu).

Matriz em C++

Referências:

http://www.infoescola.com/informatica/cpp/

http://www.cplusplus.com/doc/tutorial/

Coding Dojo: uma abordagem multiutilitária

O Coding Dojo é uma técnica própria ao aprendizado e passagem de conhecimento a respeito de matérias da Computação como lógica de programação/estrutura de dados/linguagens de programação/testes de software. Se bem avaliado, é também uma abordagem social, pois ele traça uma forma de integrar o time e nivelar o  grau de conhecimento dos seus participantes.

O Coding Dojo acontece em uma reunião, onde um computador com o mínimo de configuração para programação e uma tela de projeção devem estar disponíveis para que duplas de desenvolvedores se juntem e iniciem um ciclo de testes+codificação. As duplas devem atuar na resolução de um problema/programa alvo, definido previamente para aquele dia/ocasião. Exemplos de problemas/programas alvo podem ser encontrados neste link.

Existem diversas metodologias para o desenvolvimento de Coding Dojo, sendo algumas: Kata, Randori e Kake. No entanto, a forma básica de implementar Coding Dojo segue esse esquema:

  • O computador é a ferramenta utilizada para integrar o time. Nele deve estar implantado o ambiente de desenvolvimento do programa. A tela de projeção deve apresentar todas as ações realizadas no ambiente de desenvolvimento para que o time tenha visão de todo o processo;
  • As duplas devem operar o computador e utilizar do ambiente de desenvolvimento para construir o programa. Todo o grupo: dupla atuante no computador + restante do time, pode opinar a respeito da direção e próximos passos a serem implementados no programa;
  • As duplas são formadas por: 1 integrante piloto e 1 integrante co-piloto; A dupla atual da etapa ouve as opiniões alheias, decide o próximo passo a executar para a resolução do problema e discutem a forma de implementá-lo;
  • As duplas não são fixas. Apenas a primeira delas é. No restante do tempo elas se revesam. Na etapa posterior à atual, o integrante piloto retorna para o grupo; o integrante co-piloto passa a ser piloto; e um novo integrante do grupo passa a ser o co-piloto.
  • As duplas têm um tempo fixo para implementar a tarefa atual daquela etapa do processo. Ao final do tempo cronometrado, a dupla passa por substituição e deve: 1 – dar prosseguimento à implementação da tarefa atual; ou 2 – implementar uma nova tarefa.
  • As duplas devem explicar suas ações ao restante do grupo durante a execução da tarefa ou após o seu fim;
  • A implementação do programa é executada através da metodologia TDD. Ou seja, antes que uma função do programa seja construída, o seu teste precisa ser escrito. Sendo assim, o objetivo de cada etapa do processo é fazer o testes passar. Após isso, a dupla atual da etapa decide qual será o próximo destino: refatorar o teste ou seguir para a implementação da outra função do programa.
  • A implementação do programa acaba quando todos os testes do problema/programa alvo definido passam. Neste ponto do processo o grupo decide evoluir o problema ou encerrar a reunião.

Podem existir variações desse formato descrito, como, por exemplo: (i) definir  mais de um problema/programa alvo para resolução no dia/ocasião; (ii) resolver um problema/programa alvo em mais de um dia/ocasião; (iii) dividir o time em subgrupos, para que trabalhem em tarefas paralelas ou compitam entre si \o/ ; (iv) integração de novas técnicas ao processo (ex.: BDD); (v) reunir o time em espaço virtual; (vi) integrar documentação ao processo; (vii) uso de mais de uma linguagem de programação ou ambiente de desenvolvimento (integração de novas ferramentas); entre outros. Essas são variações do processo aplicadas como formas de corresponder ao status/condição atual da equipe, da disposição e disponibilidade local da reunião, do conhecimento do grupo. Elas são responsáveis por enriquecer a experiência e intensificar a troca de conhecimento.

O problema deve ser escolhido de forma a fazer com que todas as pessoas do grupo executem os dois papéis da dupla ao menos 1 vez durante o processo de implementação do programa. Por conta disso, deve ser avaliado o tamanho dele. Deve ser observado também qual o grau de maturidade do time antes do início da reunião, para que sejam escolhidos problemas-alvo compatíveis com o tempo de experiência do assunto da maioria de seus integrantes. O nível de complexidade do problema/programa deve crescer a cada reunião realizada. A entrada de integrantes mais experientes também pode impulsionar a resolução de problemas mais complexos.

Com vistas a todas as características/regras citadas e o intuito de formação das reuniões, é possível atribuir os seguintes benefícios a ele:

  1. Desenvolvimento de raciocínio lógico – resolução dos problemas;
  2. Desenvolvimento profissional multidisciplinar – testes/codificação/instrumental (ferramentas);
  3. Desenvolvimento social – formação de networking, troca de experiências e culturas;
  4. Nivelamento de conhecimento da equipe – profissionais/estudantes de diversas áreas e níveis de conhecimento; Organização e disciplina – o ciclo segue um formato previamente estabelecido; as duplas têm um prazo para cumprir suas atividades;Tolerância e Respeito mútuo – o time deve respeitar todas as opiniões e compartilhar ideias.

Referências:

http://www.codingdojo.org/

http://dojorio.org/

http://www.devmedia.com.br/o-que-e-o-coding-dojo/30517

Estratégias e Técnicas de Teste de Software

Pessoal,

No final do ano de 2013 eu apresentei uma palestra para um grupo de estudantes do ensino superior em Análise de Sistemas de uma faculdade aqui de Salvador. A palestra teve duração de 3hrs e fez parte de uma trilha de conhecimento da universidade em questão.

Os links abaixo apresentam os slides utilizados como suporte na apresentação. Quem tiver interesse em desenvolver a parte prática, encaminhe um e-mail no ciclosw@gmail.com que eu enviarei um caso de estudo relacionado à palestra. Espero que gostem do material! Podem utilizá-lo para estudo e apresentações, mas peço o favor de manter as referências e adicionar a minha 😉 .

Parte I da palestra – Parte II da palestra

Anuncio que em breve concluiremos o Curso de Selenium WebDriver \o/ e iniciaremos o Curso de Criação de Casos de Testes :).

Até mais