Começando a estudar Scrum!

Fala pessoal! Vamos tratar de um assunto que andei estudando bastante últimamente: Scrum! Quando comecei a trabalhar com testes a metodologia para desenvolvimento de projeto sempre foi RUP (Rational Unified Process).

Portanto, meus conhecimentos sobre Scrum eram bem básicos e atualmente estou para começar em um projeto que trabalha com o mesmo.

A partir desse momento que surgiu ainda mais a necessidade de estudar sobre o assunto para estar preparado. Durante os estudos surgiram algumas dúvidas de como estudar, o que estudar e a curiosidade de entender o papel da equipe de testes, de cada tester, Casos de Uso e por fim acabei descobrindo coisas diferentes do que tinha em mente!

Quero colocar neste post algumas referências sobre o assunto e na medida que for aprendendo e descobrindo coisas novas atualizarei na medida do possível. Se você souber de algo interessante que não citei por aqui sinta-se a vontade em deixar um comentário, pois irá me ajudar e a quem estiver começando também!

Primeiramente comecei a procurar literaturas com definições sobre o Scrum, lendo mais de uma vez e não somente uma fonte. Acredito que é muito importante ler em vários meios pois assim o estudo não fica cansativo e é bom para conhecer algumas idéias e a forma que alguns autores trabalham sobre o assunto.

 Até o momento encontrei  estes Artigos interessantes:

Guia definitivo do SCRUM: Este é um guia do Scrum e é mantido pelos seus criadores Ken Schwaber and Jeff Sutherland. Este guia está disponível em vários idiomas inclusive em Portugês.

Artigo SCRUM: Este é um artigo criado pelo Fabrício no blog QualidadeBR sobre o tema.

Scrum em menos de 10 minutos: Vídeo que trata sobre o Scrum bem interessante. Provavelmente você vai precisar ver mais de uma vez, pois ele fala bem rápido mas é bem interessante.

Mapa Mental sobre Scrum: Por fim, achei muito interessante este mapa Mental que aborda um resumo bem legal e fala sobre a diferença com RUP.

Para quem já leu sobre o Scrum nos artigos acima, deparou-se com alguns termos como User Stories, Critérios de Aceite que podem ser conferido nestes dois artigos:

User Stories: O que são? Como usar?

Critérios de Aceitação das User Stories: Uma breve descrição de como criar

Aqui temos alguns artigos que abordam sobre Testes em times Ágeis. Foram nestes artigos que descobri muita coisa interessante e das diferenças do time de testes que trabalha com RUP e testes com Scrum. Como é a atividade, a participação, importância, etc.

O papel do analista de Testes dentro dos processos ágeis – Uma Introdução

Papel do “Time de Teste” em projetos SCRUM

Scrum no Teste de Software: Trabalho de Conclusão de Curso de MBA de Teste de Software.

Vocabulário básico para testadores ágeis: Artigo do Camilo Ribeiro que trata sobre termos Ágeis para testadores.

Uma Abordagem de Construção e Testes orientada pelos Critérios de Aceite

Alguns blogs sobre Scrum e metodologia Ágil que encontrei:

ScrumHalf

Scrum em Ação

Cantinho do Agile

Agile Caelum

O Rogério contribiu indicando o site improveit citando alguns links interessantes:

http://improveit.com.br/sitemap
http://improveit.com.br/scrum
http://improveit.com.br/xp

Alguns livros:

- Agile Project Management with SCRUM

- Lean Software Development An agile toolkit

-Agile Testing: A Practical Guide for Testers and Agile Teams

- Scrum e XP direto das trincheiras: livro disponível para download gratuito (dica da Leciane Marcari :) )

Sites sobre eventos:

Eventos de TI  (possui vários eventos cadastrados e não somente de SCRUM).

Agile Brazil

Revista de testes abordando Scrum:

Revista Testing Experience sobre Agile Testing

Por fim, um podcast do Elias Nogueira em uma entrevista com a Tatiane Fukuda que trabalha no Yahoo! com processos ágeis. Clique aqui para escutar.

Para começo na minha opinião já é um bom guia para poder aprender sobre o assunto e ficar por dentro! Espero que gostem e que possa ajudar a quem estiver no mesmo barco!

Abraços!

Vinicius Sabadoti


Como os desenvolvedores aplicam os testes unitários?

Pessoal, o objetivo deste post é saber um pouco mais sobre os Testes Unitários. Neste caso, não vou colocar definições, muita teoria, etc.

A minha intenção é procurar apresentar um pouco mais da prática destes testes, como ele é realizado, como que o desenvolvedor começou a utilizar estes testes e assim por diante.

Para isso, contei com a ajuda de dois experientes desenvolvedores: Jair Rillo Junior e Maurício Hiroshi Nagaoka!

Segue uma entrevista com estes feras:

1. Como foi começar a fazer testes unitários? Vocês decidiram por conta própria ou por exigência de algum projeto, etc?

 Jair: Comecei por conta própria quando estava estudando sobre JUnit e TDD (Test-Driven Development). No primeiro projeto real que eu usei, o seu uso não era obrigatório porém era incentivado pelo time de arquitetura.

No segundo projeto (e o maior que eu já trabalhei) no início comecei a utilizar por conta própria, só que logo depois foi utilizado por todo o projeto.

 Maurício: Eu comecei a fazer testes unitários automatizados por conta própria. Lá pelos idos de 2000, eu trabalhava em um lugar em que tínhamos bastante liberdade p/ experimentar. Foi quando um colega e eu lemos o livro do Kent Beck, Extreme Programming Explained (http://goo.gl/EJyJC), e a gente se empolgou tentando aplicar o máximo possível de práticas do XP que a gente podia.

2. Como você vê a importância de testar o seu código?

Jair: Não importa o tamanho do projeto, sem teste unitário é impossível garantir boa qualidade do mesmo.

Diferente do que muitos pensam, teste unitário não ajuda apenas a testar os métodos de forma automática. Ele ajuda também em um melhor design da aplicação. Design no sentido de organização e utilização de classes/objetos, evitando o alto acoplamento entre as classes.

Quando algum método começa a se tornar dificil de testar, é um sinal claro de alto acoplamento e excesso de responsabilidade do mesmo. Com TDD, isso é descoberto facilmente na fase inicial de densenvolvimento.

 Maurício: Há, no mínimo, três benefícios que são de fundamental importância:

1) o código é testado o mais rápido possível e o mais frequentemente possível evitando o “vôo cego”, em que o programador escreve código durante dias pra só depois começar a testar e descobrir se tem algo funcionando;

2) ao final do desenvolvimento, você terá um conjunto de testes automatizados que podem ser facilmente executados (automaticamente, a qualquer momento) que te darão a “paz de espírito” de saber que o que quer que você tenha alterado/introduzido não quebrou nada do que já funcionava, isto é, que você não introduziu nenhuma regressão;

3) a vantagem principal é que ao pensar em testes logo no início do desenvolvimento, você desenha sua implementação de maneira a facilitar os testes unitários automatizados. Isto faz com que seu código fique melhor modularizado, mais coeso e menos acoplado pois você passa a pensar melhor nas responsabilidades de cada classe e acaba dividindo melhor estas responsabilidades entre as classes.

3. Quanto tempo é reservado para realizar os testes?

Jair: Não dá para mensurar o tempo. Quando se usa prática TDD, o teste é escrito junto com o código. Na verdade, o teste é escrito primeiro que o próprio código em sí.

 Maurício: Normalmente, quando estimamos o tempo de desenvolvimento já está incluído o tempo de se realizar os testes unitários, isto é, de implementá-los, já que eles nada mais são do que programas que utilizam o código que você está escrevendo.  É difícil mensurar quanto tempo é gasto com a elaboração de testes unitários pois ela ocorre simultanemente ao desenvolvimento do código propriamente dito.

4. É possível escrever testes para tudo o que for codificado?

Jair: Depende muito do ambiente que o software irá rodar. Em modo geral, quando se usa algum recurso externo (arquivo xml, banco de dados, etc) a resposta é não. Um exemplo: Se o sistema utiliza banco de dados não dá para fazer um teste unitário simulando uma base de dados, tem que ter, mesmo que em memória, uma base de dados para testes. Esse tipo de teste não é considerado unitário e sim integrado.

Em um mundo perfeito, o ideal é criar uma suite de testes automatizados, composto por teste unitário, integrado e funcional. Esse tipo de prática é bastante divulgada em ALM (Application Lifecycle Management).

 Maurício: É desejável, mas nem sempre possível ou mesmo compensador.

Esta dificuldade ocorre principalmente com código legado, que não foi escrito pensando-se em “testabilidade”, que acaba ficando monolítico e, por consequência, difícil de ser testado isoladamente. Alguns frameworks (bibliotecas) de desenvolvimento facilitam enquanto outros dificultam a criação de testes unitários automatizados.

Em alguns casos também pode-se chegar à conclusão de que não é compensador o esforço para se testar determinada unidade de código.

5. Que tipo de defeito é identificado nestes testes?

 

Jair: O objetivo do teste unitário é testar a menor parte do software, que no caso, é um método. O objetivo é escrever testes unitários para TODOS os cenários que o método for executado. Idealmente, todas as linhas de código de um software deve ser coberta por um teste unitário.

 Maurício: Em teoria qualquer tipo, mas basicamente o foco é em defeitos de funcionalidade, isto é, se a unidade de código (normalmente a classe, no caso de Java) faz o que deveria fazer.

6. Como você se organiza com os testes unitários? É criado um checklist para validar cada componente, classe, etc?

Jair: Não existe essa organização formal. Como já tido, o teste é escrito antes mesmo do código. Para cada cenário é escrito um teste diferente e o código é executado para verificar se existe erro ou não. Apenas quando não existir mais erro, um novo cenário é escrito.

O fato é que mesmo com testes unitários, não dá para prever todos os cenários na primeira fase de desenvolvimento.

O processo básico é o seguinte: Quando um novo erro é encontrado, seja pela equipe de testes ou pelo cliente, primeiro se escreve um teste unitário para comprovar o defeito e depois é corrigido o código.

 Maurício: Normalmente escrevo código utilizando TDD (Test Driven Development), que nada mais é do que você desenvolver seu código e, em paralelo, os testes unitários para exercitá-lo. Basicamente é um ciclo que se repete com os seguintes passos:

1) escreva um teste (sim, o teste é escrito antes do código!)

2) escreva o código para atender ao teste

3) refatore

4) se há mais coisas para serem testadas ou implementadas, volte ao passo 1; senão, fim.

7. Foi identificado uma melhora no desenvolvimento do sistema da época em que não aplicavam testes unitários em relação a situação atual que é realizado estes testes?

Jair: Embora não dê para mensurar, a melhora foi de fato gigantesca. Não apenas em relação a entrega para a equipe de testes, mas também por causa que defeitos antigos, agora cobertos por testes unitários, não voltaram à aparecer.

Maurício: Minha resposta é subjetiva, mas acho que a melhora mais sensível é a redução do número de ciclos em que o código transita entre o time de testes e o de desenvolvimento devido à redução de bugs que um código mais exercitado, mais maduro, apresenta. Se você pensar de maneira mais imediatista, pode chegar à conclusão que o tempo de desenvolvimento aumenta, afinal gasta-se tempo escrevendo os testes unitários. Mas se você ver um por uma perspectiva um pouco mais ampla, vai perceber que o ganho trazido pela redução na quantidade destes ciclos que mencionei é altamente compensadora.

Muito interessante as respostas, achei bem legal saber da iniciativa de começar a fazer testes unitários por conta própria, isto demonstra uma boa consciência entre a galera de desenvolvimento! Gostaria de agradecer ao Maurício e ao Jair pelas respostas, estão muito boas!

Espero que seja um incentivo para quem ainda não pratica testes unitários!

Para saber mais:

- TDD (Test Driven Development);  (TDD) ou em português Desenvolvimento dirigido por testes é uma técnica de desenvolvimento de software que baseia em um ciclo curto de repetições: Primeiramente o desenvolvedor escreve um caso de teste automatizado que define uma melhoria desejada ou uma nova funcionalidade. Então, é produzido código que possa ser validado pelo teste para posteriormente o código ser refatorado para um código sob padrões aceitáveis.

- ALM (Application Lifecycle management):  Todo o processo que guia a vida útil de uma aplicação desde a sua concepção, passando pela construção, operação e evolução.

 

Abraços.

Vinicius Sabadoti


Extensões para auxiliar os Testes em Software Web

Olá pessoal, neste post gostaria de compartilhar algumas extensões que conheço e que podemos utilizar para o nosso dia-a-dia em testes de sistema Web.

São extensões para os navegadores Firefox e Chrome, que você pode instalar facilmente em seu navegador. Infelizmente
algumas extensões para o Firefox até o momento em que escrevo não funcionam para a última versão (6.0). Mas mesmo assim acho interessante listar pois muitas vezes em nossos testes não podemos utilizar a versão atual do Firefox (o que acontece no meu caso, por exemplo).

Segue abaixo a minha lista:

1. Gerador de CPF e CNPJ.

Para quem utiliza CNPJ e CPF em seus testes muitas vezes precisa ficar sempre acessando um site específico para gerar estes tipos de dados. Com este aplicativo é possível inserir com apenas um clique o CPF/CNPJ.

Após a instalação, a extensão adiciona um ícone no canto inferior direito do navegador (versão Firefox). Quando você desejar informar um CNPJ, basta escolher o campo desejado e clicar com o botão direito do mouse em cima do ícone. Para incluir o CPF basta fazer o mesmo procedimento, porém clicando com o botão esquerdo em cima do ícone.

Caso você não tenha selecionado um campo, o sistema exibe um pop-up com o CPF ou CNPJ conforme clicado pelo usuário.

Para a versão do Chrome, a extensão fica instalada do lado da barra de endereços do navegador e você pode clicar sobre o ícone e é apresentado uma caixa com as opções de CPF ou CNPJ. Você pode também clicar com o botão direito do mouse sobre o campo que deseja incluir o valor e escolher a opção desejada.


Firefox: https://addons.mozilla.org/pt-BR/firefox/addon/gerador-de-cpf-e-cnpj/
(Segundo o site as versões que suportam esta extensão são: Firefox 3.0 – 3.6)

Chrome:

https://chrome.google.com/webstore/detail/ieifkajhcbdlbmmjkbmpomooeepmciin

2. Selenium Expert (Selenium IDE)

Se você precisa preencher algum formulário simples esta extensão pode te ajudar bastante. Para usar, você deverá primeiro apertar o botão que simboliza o REC que conhecemos e preencher o formulário conforme desejado. Após o terminar o preenchimento dos campos basta clicar novamente no ícone para que deixe de gravar as suas ações. Após terminar a gravação, basta acionar o Play quando desejar preencher novamente o formulário.

O que achei ruim deste aplicativo é que muitas vezes ele não identifica o campo na hora da gravação (ou pode ser por falta de experiência minha). Portanto quando você aciona a extensão para executar o que foi gravado algumas vezes ele poderá falhar

No meu caso, uso o aplicativo para preencher os campos de um teclado virtual. Isto ajuda bastante, já que o teclado virtual sempre muda a ordem das letras e oculta às teclas que estão ao lado do mouse quando passa pelo teclado.

Links:

Firefox: https://addons.mozilla.org/pt-BR/firefox/addon/selenium-expert-selenium-ide/
(Segundo o site as versões que suportam esta extensão são: Firefox 1.5 – 6)

3. iMacros.

O iMacros possui a mesma função que o Selenium. A vantagem que vejo aqui no Imacros é que possui a opção de Loop. Com esta opção você pode decidir quantas vezes o script gravado vai ser executado.
Alguns campos que não foram identificados no Selenium foram possíveis preenchê-los pois a extensão reconheceu os campos. Porém em algumas situações o que acontece ao contrário!

Links:
Firefox: https://addons.mozilla.org/pt-BR/firefox/addon/imacros-for-firefox
(Segundo o site as versões que suportam esta extensão são: Firefox 3.0 – 7.0a1)

Chrome: https://chrome.google.com/webstore/detail/cplklnmnlbnpmjogncfgfijoopmnlemp?hl=pt-BR

4. Firebug.

Este aplicativo é mais voltado para desenvolvedores, porém uma das finalidades dele é ajudar a encontrar defeitos de HTML, CSS e JavaScript. Ao acionar o Firebug ele permite você verificar o código da página e editar os campos.

Links:
Firefox: https://addons.mozilla.org/pt-BR/firefox/addon/firebug/
(Segundo o site as versões que suportam esta extensão são: Firefox 3.6 – 5)

Chrome: https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench?hl=pt-BR

5. Captura de Tela

Esta extensão infelizmente está disponível somente para o Google Chrome. Ela permite você tirar screenshot do site.
Ela te oferece 3 opções: Selecionar a área em que deseja tirar o screenshot, Capturar a parte visível do site no momento, ou seja, você está no início do site, a imagem será a área que aparece para você. Por último, a opção que eu mais gostei! Tirar o screenshot do site inteiro.

Após realizar a captura da imagem, ela é apresentada em uma nova aba e permite você editar a imagem antes de salvá-la. Portanto se você deseja marcar algum elemento, colocar uma seta ou inserir um texto é possível.

Links:
Chrome: https://chrome.google.com/webstore/detail/alelhddbbhepgpmgidjdcjakblofbmce?hl=pt-BR#

Bom pessoal, no momento as que mais uso são estas. Se alguém quiser compartilhar mais alguma extensão fique a vontade para colocar nos comentários! Será de grande valor. Espero que tenham gostado e que possam ter ajudado de alguma maneira.

Abraços e até a próxima!

Vinicius Sabadoti


BVT – Saiba como é o teste de BVT e entenda a sua importância.

O teste de BVT (Build Validation Test) sempre é realizado quando existe uma atualização no código do sistema e será introduzido no ambiente atual.
Esta atualização pode ter sido feita pelo motivo da chegada de uma nova funcionalidade para testes ou até correção de defeitos, para que assim a equipe de teste possa realizar os retestes dos defeitos em abertos.

O intuito do teste de BVT é testar toda a funcionalidade do sistema e podemos definir o escopo de acordo com a necessidade, tempo disponível, etc pois em sistemas de grande porte esta validação poderá durar um dia inteiro ou até mais. Geralmente as verificações são feitas com a maioria dos cenários positivos, com uma atenção maior nas funcionalidades que geram mais impacto, onde houveram a atualização do código e correção do defeito.

Para a execução destes testes geralmente não utilizamos nenhuma ferramenta e não há necessidade de coletar as evidências para tudo o que for validado, mas sim quando um defeito for encontrado.
Para o auxílio do testes, pode ser utilizado uma lista com todas as funcionalidades contendo os itens mais importantes.
Quando um defeito é encontrado é muito importante verificar a criticidade e qual o impacto que ele irá gerar, seja tanto na funcionalidade quanto para a execução dos testes que estão por vir após a BVT.
Quando são encontrados vários defeitos de grande impacto, a melhor decisão é não autorizar o deploy e continuar com o ambiente atual sem a atualização deste novo código.

Com assim, não autorizar nova build?

Isso mesmo, imagine uma situação em que a equipe de testes possui uma grande quantidade de Casos de Testes ainda para executar e a build que está validando possui um defeito que impacta diretamente com os testes e caso a equipe autorize a atualização do ambiente irá impactar e atrasar a execução dos Casos de Testes pendentes.

Mesmo que a equipe fique sem o novo código que liberariam alguns defeitos, ela pode continuar com os testes ainda pendente. Nesta situação será mais vantagem continuar como está do que liberar uns defeitos para reteste.
Porém esta regra vale para o outro lado. Muitas vezes é interessante liberar uma build mesmo que possua um ou mais defeitos encontrados na validação, para isso deve-se avaliar a criticidade dos mesmos e se a build irá liberar mais Casos de Testes do que impactar.

Até agora estamos falando quando encontramos um defeito ou não, agora imagine que a build possui um defeito grave e infelizmente ele não foi descoberto? Isso pode acontecer e com certeza o dano será maior! Então nem preciso falar o quão importante este teste é e que ele deve ser verificado com muita atenção pela equipe de testes.

Por fim, terminada a validação devemos analisar e decidir o que deverá ser feito. Caso a build seja aprovada, basta aguardar o deploy e mão na massa ; )

Abraços!

Vini Sabadoti


Carreiras em TI – Testador de Jogos

Olá pessoal!

Este é mais um post para falarmos sobre carreira! Vamos falar sobre testes, porém sobre testes em Jogos eletrônicos!

Primeiramente gostaria de agradecer ao Bruno Cicanci do blog Game Developer (http://gamedeveloper.com.br/blog/) por ter me passado o contato de um profissional da área, o que permitiu que eu fizesse a entrevista!

O segundo agradecimento é ao Ronaldo Coimbra que dedicou um tempinho e paciência para responder algumas perguntas.

Atualmente Ronaldo é QA Lead e Preload Content Manager na GLU Mobile do Brasil.

Vamos ao que interessa! Segue abaixo a entrevista:

1. Como você entrou na área de testes de jogos? 

No terceiro semestre da faculdade de Jogos Digitais (Unisinos – São Leopoldo), começei a procurar mais sobre as oportunidades de carreira na área de jogos. Depois de um tempo, você percebe que existem duas grandes portas de entrada: QA (quality assurance – tester) e programação. Apesar da minha faculdade dar ênfase à programação, sempre tive mais interesse em design e acabei optando por entrar como QA mesmo, pra entender mais sobre os jogos e o processo de certificação (aprovação) desses jogos. O que fiz, então, foi avaliar empresas brasileiras que mais se encaixassem com meu perfil e mandei currículos (fui muito seletivo e mandei para umas 4 empresas apenas). Ter um bom portfólio e saber se relacionar e tratar bem outras pessoas faz uma grande diferença na hora de conseguir um emprego. Acabei vindo para São Paulo, onde havia mais ofertas na área e empresas mais bem estruturadas e fui escolhido para trabalhar na GLU Mobile como tester. A empresa chegou a me chamar para ser programador, mas realmente não houve interesse de minha parte.

2. Como é a diferença entre testar um Software e um Jogo? 


O primeiro passo aqui é diferenciar um software comum de um jogo. A primeira diferença é a subjetividade que está presente nos jogos. Você não tem um objetivo bem definido de armazenar e manipular dados (seja um banco de dados ou um programa de arte como photoshop). O objetivo varia com o jogo que deve envolver o usuário psicologicamente ao promover um desafio, geralmente atrelado a uma história e mecânicas de jogo (usabilidade e interatividade) que variam bastante de jogo pra jogo. Então, a primeira diferença é que um teste de jogo não só precisa passar por testes padrões que sejam aplicáveis a qualquer software, mas também por testes subjetivos que são exclusivos de cada jogo pra verificar quão divertido, desafiador e acessível está o jogo.
Outra grande diferença é que jogos são softwares que abrangem uma série de áreas diferentes de conhecimento. Enquanto a maioria dos softwares são especializados em determinadas tarefas, jogos visam um público de massa e equilibram uma série de conhecimentos num só aplicativo: arte, programação, design, música, roteiro, direção, marketing, hardware… Isso significa que o tester precisa ser mais versátil e avaliar o produto sob várias perspectivas. A grosso modo, um software de música precisa agradar músicos. Um jogo precisa agradar músicos, professores, cientistas, crianças, velhos… Enfim, o objetivo é promover lazer para quem tiver interesse.

3. Vocês seguem alguma metodologia para realizar os testes nos jogos? 

Sim. Não posso entrar muito em detalhes porque existem regras de proteção dentro da empresa onde trabalho com relação a isso, mas basicamente, o jogo passa por uma avaliação subjetiva intensa e, quando está aprovado nesse quesito, passa por avaliações padrões de software. Todos os procedimentos são estruturados em planilhas de testes que são constantemente atualizadas usando informações que são coletadas ao longo dos projetos. Existem diversas ferramentas que são utilizadas também, com os mais diferentes objetivos: Ferramenta de distribuição de testes, ferramenta de armazenamento de informações, ferramenta de emulação de software, ferramenta que analisa hardwares (lembrando que minha empresa trabalha com jogos para celulares e por isso precisamos entender cada aparelho – hardwares diferentes – tamanho de tela, memória, processamento, media player, etc).

4. Que tipo de testes são realizados em um jogo? Exemplo: Verificar cores, colisões, etc 

Primeiro, a análise subjetiva analisa diversão, grau de desafio e acessibilidade. Cada jogo tem sua própria metodologia, pois cada jogo é único.
Em segundo, é feita uma análise mais básica de software: instalação, usabilidade/interatividade, aparência, som, interrupção (quando alguém recebe uma ligação no meio do jogo, por exemplo), testes específicos relacionados às especificações dos aparelhos.

Enquanto isso tudo ocorre, a equipe de Marketing está sempre atenta em relação a nichos de mercado, oportunidades e capacidade de vendas. Apesar disso não ser um teste em si, se for determinado que o jogo não vai vender, ele provavelmente vai ser cancelado ou às vezes será deixado “on hold” (em espera), dependendo em que etapa do processo esteja.

5. Para qual plataforma de jogos você prefere realizar os testes? (Mobile, Web, Console, etc). 

Eu particularmente não tenho muita preferência na hora de testar (se o assunto fosse desenvolvimento e não testes, minha opinião seria bem diferente). Cada um tem suas especificidades mas, no fundo, todos acabam sendo interessantes e divertidos. Algo que muda muito de uma plataforma pra outra é a quantidade de testers necessária. Um jogo de console geralmente precisa de vários e vários testers e ainda assim, algumas empresas fazem os chamados “open betas” onde usuários interessados nos jogos podem experimentá-los desde que dêem feedbacks e reportem bugs para a empresa. Mobiles geralmente são jogos mais simples que usam de 2 a 5 testers por jogo. Web… bom, temos empresas que nem tem testers e isso fica por conta dos próprios programadores.
Outra diferença é que, como jogos para consoles são mais demorados e grandes em termos de ambiente e mecânicas, cada tester geralmente fica focado num aspecto específico ou num momento específico do jogo. Já Web e mobile, os testers geralmente passam por todo o jogo. Vale citar que as diferenças entre Consoles e Mobiles vem diminuindo, com lançamentos como Iphone e Android. Jogos mobile estão ficando mais acessíveis, rendendo muito dinheiro e tendo possibilidades de se transformar em big hits, devido à melhoria na tecnologia mobile. Há pouco tempo atrás, jogávamos snake (aquele jogo da cobra que tem que pegar os pontos ou frutas na tela). Hoje, já temos jogos em 3D e com física.

6. Qual é o defeito que vocês mais encontram quando realizam os testes em um jogo? 

Certamente é interrupção. A GLU faz jogos para mais de 400 aparelhos. Fazer um jogo para cada celular seria impossível, então geralmente agrupamos devices parecidos que usam uma “build” em comum. Build é uma versão especial do jogo preparada para funcionar em determinado grupo de aparelhos. Cada celular tem sua forma de manipular eventos no aparelho (como receber uma ligação no meio da execução de um aplicativo), então apesar dessa estratégia de grupos dar bem certo em relação a memória, tamanho de tela, som, etc, acaba deixando a desejar na parte de interrupção.

7. Quais são os requisitos para quem deseja começar a trabalhar na área? 
Essa é a parte boa da história! Você só precisa ter boas características pessoais: Vontade, garra, boa comunicação, pró-atividade, disposição, entre outras. E, claro, existem algumas coisas que são bonus: jogar bastante, ter uma formação na área, saber programar, ter experiência com testes… Acontece muito da empresa estar em busca de novos talentos e convocar pessoas nas próprias universidades e, para medir o potencial dos candidatos, usamos algumas técnicas e dinâmicas em grupo. Muita gente tem medo de dinâmicas de grupo mas, como tester, você precisa no mínimo reportar bugs para os programadores. Saber conversar, dialogar, mostrar sua opinião e aceitar a opinião dos outros é totalmente necessário em uma equipe e ponto final.

Resumindo, funciona da seguinte maneira: Processos, nomes e ferramentas, a empresa ensina. Já educação, pró-atividade, empenho e disposição, a empresa precisa muito, pode ajudar a conseguir, mas não tem como ensinar do zero ;)

Pessoal, espero que vocês tenham gostado assim quanto eu! Aproveito para agradecer novamente ao Bruno e ao Ronaldo!

Abraços!


Primeiros passos com Testes de Performance

Pessoal, neste post gostaria de fazer uma pequena introdução sobre testes de performance. Neste caso, não irei falar muita teoria e sim alguns itens essenciais para iniciar os estudos.

Atualmente estou participando de uma célula de estudos referente ao assunto e irei aproveitar pra postar um pouco no blog o aprendizado, pois não é que falam que quando ensinamos aprendemos duas vezes? Acredito que sim.

A minha intenção é criar vários artigos relacionados ao tema, e manter sempre atualizado este post, pois ele será o “start up”, um guia para começarmos os estudos.

Segue abaixo alguns itens que na minha visão é necessário para começar a estudar performance, caso alguém que já atua na área quiser sugerir algo, fique a vontade para colocar nos comentários, será de grande valor a ajuda.

Bom, chega de balela e vamos começar a falar sobre o assunto e conhecer do que precisamos para entrar no mundo dos testes de performance:

Gostar de leitura.

Não há como fugir! Existe muito conceito teórico sobre testes de performance, e se você quer ser um profissional da área, é obrigatório a leitura. Tenho certeza que você não vai querer ficar “boiando” quando conversar com algum profissional da área e discutir alguns conceitos como: load balancer, Throughput, Think Time, entre outros (sentiu o drama né?).

Inglês.

A maioria dos materiais de qualidade sobre o assunto que você encontrar na internet estão em inglês, portanto quanto mais conhecer o idioma melhor. Sem contar que a maioria das ferramentas pelo meu conhecimento estão em inglês. A ferramenta da Rational, Rational Performance Tester, até possui o idioma português, porém mesmo assim o interessante é utiliza-lá em inglês para praticar o idioma.

Conhecimento em programação.

Para executar estes tipos de testes é necessário um bom conhecimento em programação.

Neste caso, é importante saber programação, pois para alguns testes você irá reparar que não basta somente gravar um script de testes.

Há a necessidade de fazer um código, por exemplo, para gerar o CPF para inserir no sistema toda vez que o teste for executado, e você não vai poder colocar sempre o mesmo valor (é ai que entra a programação, você irá criar um código customizado para o seu script fazer esta tarefa).

Se você utilizar a ferramenta Rational Performance Tester (Ferramenta IBM), você utilizará a linguagem Java para codificar e caso utilize o LoadRunner (Ferramenta HP), poderá optar pelas linguagens C, Java ou Visual Basic.

Conhecimento em várias áreas de TI

Existem várias razões que podem impactar a performance de um sistema, seja uma query que foi mal elaborada, um problema na rede, consumo da memória do computador, etc. Portanto, neste caso quando você se deparar com algum determinado problema que ocorre, ficará fácil direcionar sua pesquisa ao foco do problema.

Infra-estrutura:

Diferente do mundo da programação, para os testes de performance instalar a ferramenta não siginifica que você conseguirá estudar e fazer exercícios práticos. Pois precisamos de uma aplicação, onde toda a funcionalidade dela esteja OK (de nada adianta testar performance se ela possui problemas em sua funcionalidade).

Sem contar que envolve toda uma infra-estrutura necessária (hardware potente, boa rede, servidor, etc).

Até o momento da minha jornada, deparei com estes itens para continuar com os meus estudos, porém conforme eu vou descobrindo novidades irei atualizando este post.

No próximo artigo sobre testes de performance irei citar algumas leituras e tentarei abordar o assunto mais para o lado técnico.

Até a próxima!

Abraços.


8 dicas para uma escrita de Casos de Testes

Para as execuções dos testes funcionais, é comum a Criação de um Caso de Teste para a execução de cada condição de teste identificada pela equipe.

Geralmente este documento inicia falando sobre o objetivo do teste, seguido por uma pré-condição, que lista todos os itens ou condições que devem estar disponíveis para realizar o teste.

Em seguida, descrevemos a pós-condição que possui uma breve descrição do que deverá acontecer no término do teste.

Finalmente, partimos para a descrição do passo-a-passo, onde para cada passo descrito deve conter um ponto de verificação citando o resultado do passo executado.

Descrevendo desta maneira, temos a impressão de que tudo parece ser muito simples e fácil, basta seguir os passos descritos e os testes poderá ser executado facilmente.

Muito bom se fosse verdade! Se o Caso de Testes não for bem escrito, poderemos correr o risco de perder uma execução do teste e recomeçar tudo novamente.

Abaixo, cito 8 itens que acho interessante ficar atento quando criamos um Caso de testes:
1. Defina bem a pré-condição do teste:

Na minha opinião, definir muito bem a pré-condição poderá garantir 50 % da execução dos testes. Quando ela é bem descrita não corremos o risco de perdermos o teste, pois é muito desconfortável deparar com um passo pedindo para executar uma ação no sistema que pode não estar preparada, pois não foi citada na pré-condição. (simples exemplo: pedir a exclusão de um usuário específico cadastrado, e na pré-condição não citar a criação de um usuário para excluir).

Escreva de forma clara a pré-condição, se necessário faça como se fosse um passo-a-passo mesmo. Cite em ordem de prioridade as ações que devem ser feitas, como deve ser criada a massa de dados para o testes e o que deve ser feito por primeiro, segundo, etc.

Deste maneira o testador não irá descobrir somente no momento da execução o que devia ter preparado antes de iniciar os testes.

2. Escreva os Casos de Testes conforme citado no Caso de Uso.

O Caso de Uso contém todas as informações necessárias de como o sistema deve funcionar. Portanto, desenvolvedores e testadores não precisam imaginar ou supor como deve funcionar o sistema (salve exceções, em que há necessidade de discustir algumas regras).

Crie os Casos de Testes baseado no Caso de uso, assim a chance do sucesso dos testes será grande.

Um bom ponto de atenção, é que devemos sempre estar atentos com as atualizações dos Casos de Uso, pois muitas vezes as regras são alteradas e consequentemente pode ser necessário atualizar os Casos de Testes.

Nem todo Caso de Uso pode ter sido escrito de forma clara e conter todas as informações necessárias, neste caso não tenha medo de procurar o Analista de Requisitos que escreveu o documento.

3. Defina um bom título para o Caso de Testes.

Sei que não é uma tarefa fácil escrever em poucas palavras um bom título para o caso de Testes. Se possível coloque no Caso de Testes se cenário a ser testado é uma condição positiva ou negativa e o que será feito.

Muitas vezes o sistema a ser testado possui uma grande quantidade de Caso de Testes criados, portanto definir um bom título poderá permitir um acesso fácil para eventuais consultas destes documentos.

4. Cuidado com o português.

Este é um ponto que não só devemos tomar cuidado com o português na escrita do Caso de Testes, e sim com o nosso dia-a-dia. Muitas vezes, os Casos de testes são revisados por um membro da equipe e chegando até ao cliente do sistema para revisão do mesmo.

5. Numerar os Passos.

Esta é uma boa forma de organizar melhor os passos, auxiliando durante a execução dos testes. A numeração nos passos permite o testador se organizar melhor com os passos e caso ocorra a necessidade de parar os testes por um minuto, ele saberá em qual passo voltar.

6. Escreva os passos na forma imperativa

Use as palavras na forma imperativa, como “Digitar um nome no campo”, “Acionar uma opção”, etc. Utilizando estes termos passamos a mensagem de que realmente deve ser feita uma ação e organizamos melhor nossos casos de testes seguindo um padrão na escrita.

7. Seja claro com os pontos de verificação.

Nunca deixe dúvidas com os pontos que devem ser verificados. Troque frases como: “o sistema PODE exibir uma mensagem” por “o sistema DEVE exibir uma mensagem”. Desta maneira não deixamos dúvida do que pode acontecer ao executar aquele passo e se acontecer algo diferente do descrito, teremos um defeito.

8. Atenção ao colocar imagens e nome de Campos.

Se o Caso de Teste não possuir o objetivo de verificar a usabilidade e o layout do sistema, tome muito cuidado ao citar os nomes do campo.
Como já citado, os Casos de Uso podem sofrer por atualizações que são impactadas no sistema, fazendo com que seja necessário mudar algum layout do sistema ou campo fazendo com que fique diferente do citado no Caso de Testes.

Por mais que alguns pontos citados parecem ser óbvios, quem já passou pela execução e criação de Casos de Testes sabe que na realidade é diferente. Sempre busque melhorar os Casos de Testes, pois com certeza todos da equipe tem a ganhar.

Não tenha medo de escrever demais, ou deixar o Caso de Testes comprido, desde que haja a necessidade. É melhor as vezes pecar pelo excesso do que deixar faltando algo!

Caso queiram citar mais algum ponto sintam-se livres para citar nos comentários que será muito bem-vindo!


Aplicando a Técnica 5W1H no processo de abertura de defeitos

Aplicando a técnica 5W1H em abertura de defeitos.

Semana passada participei de uma pequena reunião com a minha líder do projeto, onde ela apresentou a técnica 5W1H e discutiu sobre o processo de abertura de defeitos. Ela nos apresentou uma técnica que surgiu na área de qualidade que pode ser aproveitada em nosso dia-a-dia e achei interessante compartilhar neste artigo.
Primeiramente vamos ver um pouco sobre a importância de abrir um defeito com qualidade e em seguida sobre a técnica 5W1H e como podemos utilizá-la no processo de abertura de defeitos.

A importância de especificar um defeito com qualidade.

De nada adianta o testador realizar um bom teste e na hora de reportar um defeito para o programador não o fazer com eficiência. O defeito a ser aberto deve ser claro e possuir informações realmente necessárias.
Quando o defeito é objetivo e claro, a equipe ganha tempo e evita desgastes desnecessários, pois o defeito é validado com facilidade pela pessoa responsável e é enviado ao programador que compreende logo o defeito e trabalha na solução.
A maneira da escrita do defeito varia de cada profissional e acaba sendo em minha opinião uma espécie de identidade do testador. Identidade? Sim! Pois ao longo do trabalho o programador/gerente de defeito vai conhecendo o trabalho do testador que ao ler a descrição do defeito sabe quem o reportou.
Por outro lado, mesmo que cada um possua sua “identidade” nos defeitos, existem itens essenciais que não podem faltar na descrição do mesmo e para isso podemos utilizar a técnica 5W1H.

A Técnica 5W1H:

Esta técnica é muito conhecida na área de qualidade, marketing, TI, entre outras. O 5W1H ajuda na investigação do problema e com as informações obtidas com as 6 perguntas básicas, oferece uma respota clara e objetiva. Com esta técnica podemos adaptá-la com o processo de abertura de defeitos.

Ela é composta por seis simples perguntas:

What: O que?
When: Quando?
Who: Quem?
Why: Porque?
Where: Onde?
How: Como?

Agora vamos pensar na visão da abertura de um defeito e fazer estas simples perguntas:

What: Qual?

Qual é o problema que aconteceu no sistema?
O que ocorreu?

Ex: Sistema não realiza a venda do produto.

When: Quando?

Quando isto ocorre?
Quando não ocorre?
Este problema já vinha acontecendo?

Ex: Quando o sistema possui muitos produtos no pedido do cliente.

Who: Quem?

Quem é impactado?

Ex: Usuários que possuem um cadastro recente. Usuários finais, etc.

Why? Porque?

Porque o problema ocorre?
Porque deve ser resolvido logo?

Ex: Este problema ocorreu porque era uma grande quantidade de produtos

Where: Onde?

Onde ocorreu o problema?
Qual link/funcionalidade do sistema que ocorreu?
Qual ambiente/hardware?

Ex: Problema ocorreu no aplicativo móbile de celular.

How? Como?

Como aconteceu?
Como chegou a este problema?

Desta maneira, podemos utilizar estas perguntas para nos auxiliar a compor um defeito, tornando-o claro para o desenvolvedor:

Exemplo prático:

Severidade do defeito: 2

Headline:
Usuário final não efetua compra de uma grande quantidade de produtos através do software para móbile.

Descrição:

1. Acessar o aplicativo InfoLoja do Iphone e realizar o login com os seguintes usuários:
Login: vinisabadoti
Senha: as78dj098k
2. Preencher o carrinho de compras com mais de 5 produtos e fechar o pedido.
3. Informar os dados do pagamento com cartão de crédito e confirmar compra.

Resultado esperado: Sistema exibe mensagem da confirmação do pedido informando o número do pedido para futura consulta.

Resultado obtido: Sistema não confirma a compra e direciona o usuário para página inicial.

Verificar passo nº X da evidência em anexo.

Como no exemplo citado acima, fica muito fácil para a pessoa que irá validar o defeito entender e juntamente com uma evidência em anexo, comprova com imagens que o defeito foi encontrado conforme os passos descritos.
Desta maneira, quando o defeito foi validado e chega ao desenvolvedor, ele poderá entender facilmente o defeito. Claro que não são em todos os defeitos que é possível aplicar todas estas perguntas, porém podemos analisar quais se encaixam para reportá-los com maior qualidade.

Espero que tenham gostado e que esta técnica possa ajudar a vocês de alguma maneira, ajudando assim a fazer um trabalho com qualidade.
Afinal, não adianta exigir qualidade do software que testamos se em nosso próprio dia-a-dia não aplicamos qualidade no serviço em que fazemos.
Gostaria de agradecer a Lyamara Bonvechio pelo conhecimento transmitido e por deixar eu escrever um pouco sobre a técnica e compartilhar ela aqui no blog!

Caso queiram saber mais sobre a técnica, segue abaixo alguns links interessantes:

http://nccur.lib.nccu.edu.tw/bitstream/140.119/35210/7/35602807.pdf
http://www.mindmapinspiration.com/using-5w-1h-as-a-90-10-solution-finder/
http://www.canallmarketing.com/uploads/2/7/7/6/2776543/5w1h.pdf


Histórico sobre Testes de Software

Olá pessoal!

Este post faz parte da minha monografia que foi entregue no semestre passado em minha faculdade. Espero que gostem deste artigo, pois não foi fácil fazer!

Durante as pesquisas para a elaboração deste trabalho acadêmico, não foi encontrado nenhum material que descreva claramente o início e a evolução da área de Testes de software. Pode ser que exista algum material, porém em pesquisas feitas em sites especializados, blogs, e consulta a vários profissionais da área, não foi encontrado nenhum artigo que tratasse sobre o assunto. Portanto, este histórico foi criado com uma consulta e resumo de alguns fatos marcantes com uma atenção ao cenário nacional.

Para começar a falar sobre testes, podemos citar sobre a origem do termo bug, que inicialmente não surgiu com os softwares. O termo bug quer dizer inseto, porém na área de informática ele ganhou outro significado, pois quando ocorria um erro de programação, o termo bug era utilizado.

Thomas Edison teve problemas de leitura em seu fonógrafo com um inseto em 1878 e em todos os defeitos industriais passou a denominá-los como bug. Já o primeiro bug em computadores foi encontrado em 1947, os engenheiros que trabalhavam com a máquina Harvard Mark I, encontraram um inseto nos circuitos. Este inseto estava causando um erro nos cálculos da máquina. Ao ser encontrado, o inseto foi retirado e colado no livro de registro com a intenção de registrá-lo como o primeiro bug encontrado.

Com o livro “The art of software testing” Glenford Myers trouxe ao leitor um conhecimento mais avançado sobre testes, abordando sobre as técnicas de software no ano de 1979.

Este livro é muito conhecido pelos profissionais, podendo ser tratado como uma referência teórica, com o ano de 1979 um grande passo para a área. O livro possui uma coletânea de materiais sobre testes de software. Atualmente este livro se encontra em sua 2ª edição e é utilizado até os dias de hoje, onde muitos o consideram como o marco inicial de Testes de Software.

Os modelos prescritivos de desenvolvimento de software surgiram na década de 80. Estes modelos, cascata, espiral, entre outros foram criados para organizar e inserir padrões no processo de desenvolvimento de software. Ele é composto por vários processos genéricos: comunicação, planejamento, modelagem, construção e implantação.

Dentro do processo construção, estão presentes as atividades de desenvolvimento e testes. Foi a partir desta organização que o conceito de testes de softwares tornou-se mais conhecido. Vale lembrar que testes também está presente em outros processos, como planejamento, modelagem e implantação.
Neste ano, surgiram também as primeiras ferramentas para o auxílio de testes funcionais. Com seu sucesso, surgiram novas ferramentas para gerenciamento de testes com a intenção de organizar, manter dados, resultados e apresentar relatórios.

Sendo assim, em 1990 os fornecedores passaram a integrar em uma suíte única, ferramentas para testes funcionais e de gerenciamento.
A partir do ano de 1995 surgiram as primeiras ferramentas para automação de testes de performance para algumas plataformas.
No ano de 2002, surgiu no Brasil a Associação Latino Americana de Teste de Software (ALATS).

A ALATS é uma entidade sem fins lucrativos que foi criada com a finalidade de reunir profissionais das áreas de teste e de qualidade de sistemas com o intuito de servir de apoio a troca constante de informações objetivando a melhoria dos processos de teste, mantendo-se a sua integração como o processo de desenvolvimento de aplicações. (ALATS).

Atualmente a ALATS promove palestras, encontros mensais e seminários. Dentre os eventos, o mais conhecido é o Seminário Brasileiro de Teste de Software (BRATESTE). Este seminário abrange assuntos como processos de testes, técnicas, palestras e tutoriais.

Os profissionais brasileiros podem contar também com instituições internacionais que atuam no país, como o International Software Testing Qualifications Board (ISTQB) fundado em Edinburgh (Reino Unido) em novembro de 2002. O ISTQB chegou ao Brasil em 2006 com o nome de Brazilian Software Testing Qualifications Board (BSTQB). O BSTQB oferece o exame de certificação do ISTQB, treinamentos e download do material em português.

A primeira certificação brasileira de testes foi criada pela ALATS e no ano de 2006 surgiram os primeiros profissionais certificados com a Certificação Brasileira de Testes de Software (CBTS).
Atualmente podemos encontrar uma grande quantidade de certificações, ferramentas e conteúdo sobre testes de software. Livros, blogs, listas de discussões, são alguns exemplos de conteúdos que podem ser facilmente encontrado.

Antes de citar minhas fontes, gostaria de agradecer a algumas pessoas que de alguma forma me ajudaram dando dicas, opiniões ou ao menos se prontificaram a ajudar: Carolina Fontana, Fabrício Ferrari, Camilo Ribeiro, Fernanda Thiesen e Marcelli Barbosa

Abaixo, uma imagem para ilustrar resumidamente os fatos da área:

Fontes:

http://qualidadebr.wordpress.com/2008/06/22/o-que-e-bug/

http://myoldmac.net/FAQ/firstComputerBug.htm

http://blog.prasabermais.com/2010/02/15/histrico-da-evoluo-das-ferramentas-para-testes-e-qualidade-de-software/

http://istqb.dedicated.adaptavist.com/display/ISTQB/Brazilian+Software+Testing+Qualifications+Board+%28BSTQB%29

http://istqb.dedicated.adaptavist.com/display/ISTQB/History?atl_token=XcZn9CV4Ee

Livro Engenharia de Software de Roger S. Pressman.


Pesquisa para trabalho de TCC

Pessoal, atualmente estou em meu último ano de faculdade de Sistemas de Informação e estou desenvolvendo meu trabalho de conclusão de curso na área de Testes de Software. Gostaria de contar com a ajuda das pessoas que trabalham em empresas de desenvolvimento que respondam este pequeno questionário que criei no google docs.

A minha intenção é saber destas empresas quais possuem uma equipe de testes, quais tipos de testes aplicam, etc.

[ 21/08 - com a pesquisa concluída o link foi removido]

Desde já agradeço a ajuda!


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.