Brasil Campeão da Copa do Mundo de Testes de Software

Uma semana se passou após a divulgação do resultado das finais, e talvez nesse momento eu já consiga compartilhar com vocês, de maneira mais precisa, como foi essa experiência.

Após o anúncio de nossa vitória na etapa continental, começamos uma série de preparativos, que consistiram desde a parte logística da viagem (passagens, hotel, documentos…), as demandas da organização (fotos, vídeos, entrevista…) e a preparação técnica para a organização.

Na parte técnica, analisamos o nosso desempenho na fase continental, destacando os pontos fortes que precisavam ser mantidos e os pontos de melhoria, onde precisaríamos realizar ajustes. A partir dessa análise nos dividimos, de modo a realizar as tarefas, que consistiam desde ajustes na estratégia de testes, test report e principalmente atividades de estudo e seleção de ferramentas para áreas como acessibilidade, segurança e usabilidade.

A competição:

A etapa final seguiu o mesmo modelo da continental, tivemos 3 horas para validar a aplicação (Comércio Eletrônico) e enviar um Test Report, que deveria abranger a estratégia utilizada, findings, recomendações e análise do produto. O grande diferencial nessa fase, foi que os jurados, equipe de reportagem e platéia podiam nos interromper com perguntas durante as três horas, o que aconteceu algumas vezes e exigiu jogo de cintura para responder e retomar o trabalho sem perder a concentração.

Este slideshow necessita de JavaScript.

Durante a prova final, utilizamos diversas ferramentas de apoio, abaixo aponto algumas:

  • Google Docs: Colaborativamente alimentávamos o test report, durante a execução, adicionando os defeitos encontrados e informações relevantes.
  • Trello: Antes da competição preparamos um quadro virtual, onde listamos as áreas de teste, e pudemos nos organizar, com o objetivo de evitar duplicação de trabalho e assegurar uma melhor cobertura.
  • MindMeister: Ferramenta para criação de mapas mentais, utilizada para descrevermos nossa estratégia de maneira mais visual.
  • HP Pronq Agile Manager: Ferramenta oficial da competição para gerenciamento dos defeitos.
  • Acessibilidade: Utilizamos ferramentas online, como Wave e daSilva, com o objetivo de apontar falhas de acessibilidade na estrutura do código.
  • Segurança: O Firebug foi uma das ferramentas que utilizamos para identificar potenciais falhas de segurança.

Placar com contagem de bugsAo final das três horas de trabalho intenso, ficou claro para nós ao conversarmos com alguns dos jurados e organizadores, que além das capacidades técnicas em testes, eles também estavam avaliando aspectos relacionados às metodologias ágeis, como a organização da equipe e comunicação interna e com o cliente.

Divulgação do resultado:

No dia seguinte, durante o Keynote de abertura da conferência, recebemos a premiação da etapa continental.

premiacao_etapaContinentalEnquanto, que a divulgação do resultado final aconteceu apenas a noite, durante a festa temática, organizada pelo evento. E claro, que ficamos muito felizes com o resultado final, representando o Brasil e elevando a nossa comunidade de testadores a uma posição de destaque.

Brasil Campeão

Por fim, um agradecimento especial a toda a organização do evento, toda estrutura e apoio fornecido antes, durante e após o evento foram impecáveis. Além da competição, pudemos aproveitar os 3 dias da conferência, que também foram excelentes e em breve compartilharei com vocês um pouco das palestras e workshops que pude assistir.

Dicas de onde encontrar material sobre testes com Selenium

No post de hoje compartilho com vocês um vídeo da Selenium conference 2014. Na apresentação, Dave Haeffner, um dos profissionais mais atuantes no trabalho com Selenium e autor do livro guia Selenium GuideBook, indica diversas fontes interessantes onde podemos encontrar materiais sobre automação com Selenium para testadores iniciantes, intermediários e avançados.

Vídeo da apresentação

Slides da apresentação

Copa do Mundo de Testes de Software – Finalistas Definidos

swtc_logo

As etapas continentais da STWC-2014 chegaram ao fim e já foram divulgados os vencedores de cada continente, que terão a oportunidade de disputar o título da primeira edição da copa do mundo de testes de software. As finais ocorrerão entre os dias 10 e 13 de novembro em Potsdam, na Alemanha, durante a conferência Agile Testing Days 2014.

Como havia mencionando no post anterior sobre a copa do mundo, estávamos na expectativa dos resultados da etapa da América do Sul e felizmente o resultado foi maravilhoso, a minha equipe, CESAR Brazil, conseguiu o primeiro lugar e nesse momento já estamos em ritmo acelerado de preparação para as finais na Alemanha!

Para a etapa final teremos as 6 equipes já anunciadas:

  • The Annunciation (Nova Zelândia – Oceania)
  • QuadCore (Canadá – América do Norte)
  • Open Box Software (África do Sul – África)
  • Army Ants (Romênia – Europa)
  • teststar (China – Ásia)
  • CESAR Brazil (Brasil – América do Sul)
  • Equipe adicional representando a Antártica formada entre os inscritos para o evento.

A final deve seguir as mesmas regras das etapas continentais, porém não podemos descartar eventuais surpresas. Quando voltarmos da Alemanha completarei a série de posts sobre o evento compartilhando como foi a experiência de participar da etapa final =)

stwc_banner_675x120_sa_winner

O que estão falando sobre Testes de Software em Nova York?

Entre os dias 11 e 13 de Agosto aconteceu em Nova York a nona edição do CAST 2014(Conference of the Association of Software Testing). A conferência voltada inteiramente para a área de Testes de Software contou com a participação de diversos palestrantes discutindo e compartilhando informações e experiências referentes aos mais diversos tipos de problemas e práticas aplicadas na indústria.

Os vídeos das palestras já estão disponíveis no canal da associação no youtube. Na lista de palestras várias me parecem bem interessantes, particularmente, optei por começar pelo Keynote realizado pelo James Bach, autor de diversos livros na área, com tema Test Cases are Not Testing: Toward a Performance Culture. Apesar de não ser um tema novo, debater sobre como devemos usar os casos de teste ou mesmo se devemos usá-los, ainda é algo que rende muitas discussões. No vídeo, James faz diversas comparações bem interessantes e que reforçam o erro que é tratar testes de software como uma simples aplicação de passos de um caso de teste.

“We’ve got to stop thinking of testing as a thing and start thinking about testing as a performance, like an actor in a play, in order to get management to appreciate what we do.”

Divirtam-se!

Copa do Mundo de Testes de Software – Etapa América do Sul

A primeira etapa da copa do mundo de testes de software chegou ao seu final, após a realização de cada uma das eliminatórias continentais.

No último dia 19 de julho tive a oportunidade de participar da etapa da América do Sul e compartilho com vocês como foi a experiência.

Preparação:

Começamos nossa preparação através de uma rápida reunião um dia antes do evento, onde definimos nossa estratégia baseando-se nas informações que tínhamos até o momento e preparamos um “template” para o relatório de testes, que deveríamos mandar ao final da competição.

Já no dia do evento, 30 minutos antes do horário previsto para o início da competição recebemos as últimas instruções dos organizadores, que descreviam: 

Utilizamos esse tempo antes do horário de início para instalar o aplicativo, entender suas principais características e utilizando o quadro como apoio identificamos sub-áreas da aplicação e os tipos e técnicas de testes que gostaríamos de aplicar.

As 3 horas de competição:

Com o auxílio das informações no quadro direcionamos o nosso foco para maximizar a execução e identificação de falhas. Ao longo das 3 horas, que passaram voando, exploramos e reportamos diversas falhas de diferentes níveis de severidade, além de itens referentes a usabilidade da aplicação. 

Durante o tempo disponível para execução, priorizamos a comunicação entre os membros da equipe, com o objetivo de:

  1. Evitar duplicação de esforços;
  2. Compartilhar de maneira fácil e rápida informações relevantes e defeitos encontrados;
  3. Trabalharmos em conjunto na investigação e identificação de problemas.

Como nosso time possui 4 integrantes, definimos que 1 trabalharia com maior foco na elaboração do relatório que deveria ser entregue ao final do evento, enquanto os demais permaneceriam voltados para execução. Essa organização nos permitiu continuar com a execução até quase os últimos minutos disponíveis sem comprometer a elaboração e entrega do relatório.

Valeu a pena?

Com certeza! Todos da equipe gostaram da experiência e nos divertimos bastante trabalhando em conjunto para encontrar defeitos relevantes. Ao final das 3 horas podemos dizer que conseguimos atingir uma cobertura interessante das funcionalidades do sistema, mesmo enfrentando situações, como a inexistência de requisitos e a restrição de tempo.

Agora, só nos resta aguardar pelo resultado e por novas edições da competição!

Como capturar um screenshot no Selenium WebDriver

Capturar um screenshot é uma das ações frequentemente desejadas, quando automatizamos um teste com selenium.

A aplicação do screenshot, pode ser útil de diferentes maneiras, como provendo evidências de um problema encontrado ou servindo para análise e comparação do estado da interface, etc.

Abaixo, disponibilizo um exemplo, extremamente simples, utilizando o Selenium WebDriver com Java.

import java.io.File;
import java.io.IOException;
import java.util.Date;

import org.apache.commons.io.FileUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class SimpleScreenshot {
	private static WebDriver driver;

	/**
	 * Inicialização do driver do firefox
	 */
	@BeforeClass
	public static void beforeClass() {
		driver = new FirefoxDriver();

	}

	/**
	 * Navega para url do bytes don't bite
	 * Captura o Screenshot
	 */
	@Test
	public void testScreenshot() {
		driver.get("http://www.bytesdontbite.com");
		takeScreenshot("teste");
	}

	/**
	 * Método para capturar screenshot
	 * @param fileName - Nome do arquivo
	 */
	public static void takeScreenshot(String fileName){
		File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
		Date data = new Date();
	    try {
			FileUtils.copyFile(scrFile, new File("D:\\SeleniumScreenShots\\"+fileName+ data.getTime()+".jpeg"),true);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * Encerra o driver
	 */
	@AfterClass
	public static void afterClass() {
		driver.quit();
	}

}

Como pudemos ver no código acima, a única coisa que precisamos fazer é implementar o método takesScreenshot, e utilizá-lo nos pontos em que julgarmos necessário. No exemplo, simplesmente iniciamos um FirefoxDriver e o nosso “teste” se resumiu a navegar para a url do bytes don’t bite e em seguida chamar a captura do screenshot.
Ainda não conhece o Selenium?
Uma das mais utilizadas ferramentas para automação de testes em aplicações web. Permite interagir com o navegador e simular as operações comumente encontradas nas páginas web.

Deseja conhecer mais sobre o Selenium?

— UPDATE —

Inscrições abertas

O curso de Automação de Testes Para Web com Selenium está disponível na modalidade de Ensino à distância. Contaremos com um material de vídeo-aulas, apostilas e exercícios, além do acompanhamento de um professor/tutor.

Valor: R$250,00 (Pode ser parcelado no cartão de crédito)

promo_banner

Copa do Mundo de Testes de Software – Inscrições Abertas

No mês passado apresentamos a Copa do Mundo de Testes aqui no blog. E hoje, recebi a notícia que as inscrições para a primeira copa do mundo de testes de software estão oficialmente abertas.  Abaixo, segue o resumo das principais informações.

Equipes:

Podem possuir de 1 a 4 integrantes. Não há limite de equipes por empresa.

Fase de Qualificação Continental:

Na primeira etapa, as disputas serão realizadas online. E apenas uma equipe será classificada por continente.

Fase Final:

Realizada presencialmente, durante o evento Agile Testing Days.

Critérios de Pontuação:

Os critérios não foram modificados, mantendo as informações do post anterior:

Diferentes aspectos levados em consideração, como: melhor bug report, melhor report de testes, bug mais valioso, etc.

O foco principal será o aspecto funcional de determinadas aplicações indicadas pelos avaliadores no início de cada etapa, podendo existir um tempo adicional alocado para aspectos não-funcionais.

O tempo para validação da aplicação sugerida será de aproximadamente 3 horas, podendo haver tempo adicional para aspectos não-funcionais.

Premiação:

Na etapa de classificação os vencedores continentais receberão:

– Entradas para os 3 dias do Agile Testing Days

– Passagens aéreas

– Shuttle aeroporto/hotel

– Hospedagem de 5 diárias

– Cópias autografadas do novo livro de Lisa Crispin e Janet Gregory 

Por fim, os grandes vencedores da etapa final receberão:

2014-03-11_0805

Link – Episódio de True Detective derruba HBO GO

Link – Episódio de True Detective derruba HBO GO

Sabemos ou pelo menos deveríamos saber, da importância dos testes de performance quando tratamos de aplicações Web. O tema que inclusive já abordamos aqui (Entendendo os testes de performance) é frequentemente deixado em segundo plano, o que acaba causando problemas graves, como o que vi nas notícias publicadas ontem e hoje sobre o HBO GO.

HBO GO Crashes

É impressionante a quantidade de aplicações web disponíveis, que continuam decepcionando seus usuários, pois de nada adianta estarem “funcionalmente” corretas se a medida que a quantidade de acessos cresce o serviço deixa de responder a tempo ou mesmo não responde. No exemplo do link sobre a HBO GO, como pode um serviço que custa o dobro do Netflix nos Estados Unidos conseguir apresentar tal nível de qualidade aos consumidores? Quanto irá custar a HBO essa publicidade negativa?

S.O.L.I.D – Coisas que todo programador deveria saber

Esse post é mais um da série “Coisas que todo programador deveria saber” (talvez o primeiro do BytesDontBite [BdB] com esse título na verdade :P).

Hoje vou falar um pouco sobre o S.O.L.I.D, que é na verdade um acrônimo onde cada letra representa um “princípio” de design de orientação a objetos.  A importância desses princípios é imensa. Então vamos lá:

  • S (Single Resposability Principle) – Toda classe deve ter uma única responsabilidade, e essa responsabilidade deve ser completamente encapsulada por essa classe. Parece uma coisa simples, mas a grande maioria dos problemas que vejo por aí, acontecem pelo simples motivo de termos classes (e métodos) gigantes que fazem tudo o que você pode imaginar. Talvez esse seja, ao meu ver, o mais importante (e o mais simples) desses princípios. Obviamente ele é muito relacionado aos conceitos de (alta) coesão e (baixo) acoplamento, e também é bem descrito e detalhado pelos princípios do GRASP (tópico para o próximo post dessa série)

    Arquitetando…
  • O (Open/Closed Principle) – Todas as entidades do software (classes. módulos, métodos, …) deveriam ser abertas  (open) para extensão e fechadas (closed) para modificação. Isso significa que essas entidades do software tem que permitir uma mudança de comportamento sem a alteração do seu próprio código fonte. Em uma conclusão bem óbvia e simplista, estamos falando de usar mais interfaces e classes/métodos abstratos, que podem facilitar a mudança não dolorosa de comportamento de algumas entidades.
  • L (Liskov Substitution Principle) – Qualquer objeto do tipo X (que é subtipo Y) deveria poder substituir um objeto de tipo Y sem alterar as propriedades básicas do sistema (corretude, etc).
  • I (Interface Segregation Principle) – Prega que as interfaces tenham somente os métodos que serão usados por quem vai implementar essa interface. Ou seja, separar (segregar) interfaces que contenham muitos métodos, em interfaces menores, de forma que, quem implemente a interface, não seja forçado a implementar métodos que não são usados naquele contexto.
  • D (Dependency Inversion Principle) – Esse princípio prega uma forma de desacoplamento, aonde os módulos tem que depender de abstrações (leia-se interfaces) ao invés de depender de classes concretas. Isso se aplica principalmente quando falamos das dependências entre as camadas arquiteturais de um determinado sistema. Uma forma de inversão de dependência é a Injeção de dependência.

Como você pode notar, todos esses princípios meio que se completam de forma a atingir o objetivo que é um design flexível e de fácil manutenção. Espero que tenha sido útil, e até o próximo post dessa série, onde falaremos sobre o GRASP 😉

Copa do Mundo de Testes de Software

A copa do mundo está chegando! E em 2014 não há dúvidas que esse será um dos principais tópicos discutidos em todos os lugares e mídias. Mas não é esse o tema desse post, afinal esse não é um blog sobre futebol.

Fiquei sabendo nesse final de semana a respeito da Copa do Mundo de Testes de Software. Isso mesmo que você acabou de ler, em 2014 teremos uma competição para descobrir os melhores testadores do mundo.

Ainda não temos as informações completas sobre como o evento vai funcionar, abaixo destaco alguns dos pontos já divulgados na página oficial.

Quem pode participar?

Testadores de qualquer localidade, formando equipes de 2 a 5 pessoas.

Como irá funcionar?

A competição será realizada em 2 etapas:

  • Fase de Classificação: Conduzida online e por continente, onde apenas o time vencedor de cada continente estará classificado para a etapa final.
  • Etapa Final: Realizada durante o evento Agile Testing Days 2014.

O que será analisado? 

Os critérios de pontuação durante todas as etapas levarão diferentes aspectos em consideração, como: melhor bug report, melhor report de testes, bug mais valioso, etc.

O foco principal será o aspecto funcional de determinadas aplicações indicadas pelos avaliadores no início de cada etapa, podendo existir um tempo adicional alocado para aspectos não-funcionais.

Inscrições:

Na página do evento há um formulário com nome e e-mail para os interessados no evento.

##UPDATE##

Prêmios:

Premiação da competição já foi divulgada, e a equipe vencedora levará 3.000,00 EUR.

 

Com certeza parece uma boa oportunidade para praticar suas habilidades como analista de testes e conhecer outros profissionais da área. Já solicitei mais detalhes para a inscrição de minha equipe na página do evento, e você?