Estudando para a Certificação CTFL - Primeiro Capítulo

Estou me preparando para a certificação CTFL - Certified Terster Foundation Level da ISTQB - International  Software Testing Qualifications Board, e pensei: por que não escrever no blog um resumo do capítulo que estou estudando? Pra mim, funciona muito bem a regra de aprender ensinando. Enfim, ao terminar de estudar cada capítulo, vou atualizar o blog, e com isso, espero poder ajudar quem está se preparando para a prova também. Como a minha memória é muito visual, eu vou usar esquemas para facilitar o entendimento.


As informações foram retiradas da apostila de certificação, versão 2011br.

Testes no Internet Explorer: Brace Yourself

Quando chega o momento em que é necessário iniciar os testes no Internet Explorer, essa é a minha reação:


Talvez eu esteja sendo injusta, afinal de contas, o IE está melhorando aos poucos nas versões mais recentes. Mas para desenvolvedores e testadores, o lançamento de versões pode ser a causa de trabalho dobrado, pois o layout pode funcionar na versão mais recente, mas na anterior pode ficar totalmente desconfigurado. O número de usuários que navegam pelo IE é consideravelmente alto, 56% ainda o utilizam. Além desse fato, é necessário considerar que muitos dos usuários demoram para atualizar a versão, então, não nos resta opção, a não ser testar o site em mais de uma versão do IE. Simples, não é mesmo? Não. Uma vez instalada a versão mais recente do nosso querido navegador, as anteriores são totalmente substituidas, obviamente. Uma primeira alternativa para ter acesso a várias versões do navegador seria através da máquina virtual e a outra alternativa seria instalar o IETester. 
O IETester é uma ferramenta free para Windows, que contém desde a versão 5 do Internet Explorer até a versão 9. No sistema, é possível abrir abas com todas as versões, e acessar o site a ser testado.




  




Mas para testes automatizados, há apenas a opção de máquina virtual.
Além de simular as várias versões do Internet Explorer, há ferramentas para o desenvolvedor, como por exemplo, visualizar o código fonte.
Você poderá realizar o download clicando aqui.

Usabilidade - Técnica de Observação

Olá pessoal,
A observação do usuário interagindo com o sistema é uma técnica muito eficaz quando existe a necessidade de melhorar a usabilidade de interação entre o usuário e o software.
É importante selecionar usuários com níveis de conhecimentos diferenciados, e principalmente, focar nos perfis de usuários que mais farão uso do sistema. Por exemplo, se o sistema será disponibilizado para consultas de produtos em supermercados, os perfis de usuários são abrangentes, mas provavelmente o público maior serão donas de casas que tem pouca familiaridade com tecnologia. Depois de definir os perfis dos usuários para a técnica de observação, é necessário preparar o ambiente. Certifique-se de que o sistema esteja funcionando corretamente, e garanta as condições necessárias para que a cobaia, ou melhor, o colaborador, possa se sentir a vontade. Outra etapa que pode ser incluída na preparação do ambiente é a elaboração de scripts contendo tarefas. Com os scripts elaborados é mais fácil de identificar em que parte do sistema há mais dificuldade de interagir, e o usuário não fica sem rumo, clicando na primeira opção que aparece. A tarefa pode ser: "cadastre-se no site" e durante a técnica, o observador detecta se o usuário demorou para achar o botão para se cadastrar ou se a tarefa como um todo demorou muito tempo para ser concluída. 
Agora você já tem os usuários, o ambiente e os scripts, então o próximo passo é iniciar a técnica de observação. Durante a observação, o ideal é que o observador não interaja com o usuário, evitando influenciar ações que normalmente seriam tomadas sem a ajuda de alguém. Além do observador detectar as principais dificuldades, é necessário anotá-las, para posteriormente reportar ao setor de webdesigner e desenvolvimento, para que sejam realizadas as alterações necessárias.

Com a imagem do mapa mental abaixo, é mais fácil de visualizar o processo.




A técnica é simples, e o tempo de conclusão depende do tamanho do script e do tamanho do sistema. Mas o mais importante nessa técnica, é o fato de poder identificar o que pode ser feito para melhorar a qualidade do sistema, conforme as reais necessidades e conhecimentos dos usuários. Para quem está muito familiarizado com o sistema, não faz diferença se um botão está posicionado discretamente, enquanto deveria ter mais destaque.


Clicando aqui você poderá conferir uma entrevista feita com a antropóloga britânica Charline Poirier sobre um estudo de usabilidade no Ubuntu, conduzido aqui no Brasil.

Amor a primeira vista!

Eu preciso me declarar! Não posso mais esconder esse amor!
No início eu tive uma mistura de sentimentos e emoções. Medo de assumir um compromisso, medo de não me adaptar as mudanças que com certeza seriam exigidas ao longo do tempo, assim como em todo relacionamento. Mas resolvi seguir meu coração, e hoje eu já não me imagino vivendo sem o seu companheirismo, praticidade, organização e cumplicidade. Testlink, eu te amo!
Foi simplesmente amor no primeiro acesso!

O Testlink é uma ferramenta open source para gerenciamento de testes.  Permite que o usuário cadastre casos de testes, cadastre planos de testes, defina o escopo dos testes para uma determinada versão (release, build...), e durante a execução dos testes, é possível informar em quais houve falhas, e quais foram aprovados. Após finalizar o processo, o software também permite que o usuário gere relatórios contendo informações sobre os testes executados, a quantidade de casos em que houve erro, entre outras informações que auxiliam no feedback. O sistema apresenta muito controle sobre o processo, impedindo que o usuário execute um passo sem ter concluído o anterior.  Por exemplo, o usuário só poderá cadastrar um release se a versão do projeto for cadastrada primeiramente.

A tela inicial do Testlink é extremamente simples.




O primeiro passo, é cadastrar um projeto (produto). Dentro desse projeto serão cadastrados os casos de testes, e posteriormente os planos de testes.



Para cadastrar um caso de testes, um dos projetos deverá estar selecionado. Depois é só clicar em "Test Specification", criar suites de testes (separação por módulos, para que fique mais organizado), e informar os dados para o cadastro. A etapa de cadastro do passo a passo também é muito simples e rápida.



Após cadastrar os casos de testes, você poderá cadastrar o plano de testes.

O plano de testes é composto por builds. Em cada build é possível determinar quais testes, dentro do conjunto de suites de testes, serão realizados.



Após selecionar e organizar cada build, inicia-se a etapa de execução.


Em cada caso de teste é possível especificar se o teste passou ou falhou.
E depois é só gerar relatórios!


Fluxograma do processo de testes no Testlink, que eu fiz e se encaixa na realidade em que eu trabalho:



É válido comentar que com o Testlink o processo de homologação se tornou mais rápido, mais confiável e muito mais organizado.


O que eu acho que poderia melhorar:

1. Contabilizar o tempo gasto para a execução de um determinado build/release.
2. A etapa toda poderia se tornar mais simples ainda, se após um determinado cadastro o sistema já redirecionasse para a próxima tela dando continuidade ao procedimento automaticamente.



Leitura interessante:

Evento PHPSC Conf 2011 na Univali

Olá pessoal!

O Grupo de Usuários de PHP de Santa Catarina (PHPSC), em parceira com a UNIVALI, estará realizando no dia 19/11 (sábado) o PHPSC Conf 2011 - Conferência Catarinense de PHP.

Formulário de inscrição: http://www.phpsc.com.br/conf/inscricao.php


Inscrição: R$ 10,00
Minicurso: R$ 15,00

Os acadêmicos da Univali com comprovante de matrícula em mãos não pagam para assistir as palestras.


Sobre o grupo PHPSC

O Grupo de Usuários de PHP do Estado de Santa Catarina (PHPSC) é uma entidade aberta de profissionais da área de TI criada em 2007, que possui entre os seus participantes empresários, professores, profissionais de desenvolvimento, alunos e entusiastas de tecnologia. E que tem por objetivo promover o uso da tecnologia PHP e seus correspondentes no campo de software livre em todo o estado de Santa Catarina. Além de fomentar discussões sobre melhores práticas no desenvolvimento de software, testes de software e qualidade no desenvolvimento de sistemas. Outros objetivos específicos de atuação do grupo também incluem:

- Realizar eventos regionais no estado buscando a troca de experiência entre profissionais;
- Facilitar a procura por profissionais por empresas que necessitem de mão-de-obra;
- Divulgar vagas de trabalho existentes no estado;
- Atuar junto a outros grupos do Brasil para auxiliar na adoção do PHP como base tecnológica para o desenvolvimento de sistemas;
- Promover metodologias ágeis de desenvolvimento como Scrum e Extreme Programming no desenvolvimento de software;
- Atuar junto ao php.net na correção de problemas e sugestão de melhorias da linguagem;
- Auxiliar entidades públicas e privadas que buscam utilizar software livre e ter um contato com PHP.
- Buscar oportunidades de negócios entre os seus participantes;


Sobre o PHPSC Conf

O evento acontece anualmente, sempre em uma cidade diferente do estado, e é realizado em parceria com uma instituição de ensino do local do município aonde o mesmo venha a ocorrer.

Isto está de acordo com os objetivos do grupo, que é percorrer o Estado de forma que mais pessoas possam participar, apresentando o PHP através de profissionais que realmente utilizam a linguagem, e que levem a qualidade técnica das informações discutidas. Trazendo, para este fim, palestrantes de fora do estado e que são referência no Brasil, mas também contando com palestrantes locais. O evento não tem fins lucrativos.

Este evento também ajuda a divulgar a instituição de ensino onde o mesmo é realizado, além do que palestrantes (professores e alunos) desta instituição também são convidados a participar do evento.

O PHPSC Conf é um ótimo canal para que empresas divulguem seus produtos de tecnologia e atinjam seu público, sendo que muitos dos participantes do evento são pessoas com poder de decisão dentro de suas organizações.

Usabilidade no Site Itaú

Acredito que todos que trabalham com software, seja desenvolvendo ou testando, quando acessa um site ou um sistema analisa de uma modo mais técnico a usabilidade, eficácia e eficiência das funcionalidades e do layout.
Recentemente, na aula de Engenharia de Usabilidade, cada grupo de pessoas teria que escolher um sistema ou site para fazer a análise de usabilidade. Meu grupo escolheu o site do Itaú, porque um dos integrantes encontrou muita dificuldade para gerar a segunda via de boleto.
E realmente, o site do Itaú é muito confuso, contém erros, e não respeita alguns princípios de usabilidade.
Na página inicial do site o cliente se depara com muita densidade informacional e ao mesmo tempo com muito espaço em branco na parte inferior da tela. O fundo é branco e as letras além de serem pequenas, são na cor cinza, e não há opção para aumentar o tamanho.







O tamanho do site não se adapta ao tamanho da resolução da tela. Então, ao acessar com uma resolução widescreen, no canto direito é exibido um espaço em branco, conforme é possível visualizar na imagem abaixo:


O site também não é compatível com qualquer tipo de navegador. No navegador Internet Explorer e no Chrome, são exibidos caracteres inválidos.


As mensagens de restultado não são padronizadas. Em uma determinada tela foi identificada a seguinte mensagem: "Digite uma palavra!!!"



Como há muita informação, em praticamente todas as telas, o usuário perde a linha de raciocínio, e tem dificuldades para encontrar uma determinada função. 


Para quem quiser visualizar a apresentação do trabalho completa, basta clicar aqui!


Desprezo infinito: Testadores x Desenvolvedores!


Olá testadores!

Ultimamente nos blogs de humor (que eu acesso fora do horário de trabalho, que fique bem claro), vejo muitas tirinhas de "desprezo infinito", onde duas pessoas possuem preferências opostas e portanto se desprezam por isso.





A relação entre desenvolvedores e testadores pode não ser das melhores. Já li muito isso, em livros, artigos, e culturamente a ideia difundida entre os programadores é: "um testador?! Mas pra que? O sistema sempre funcionou, tudo funciona...". E o testador já pensa: "in God we trust, the rest we test.". Enquanto o programador desenvolve o software para que atenda os requisitos e funcione, o testador tem que se esforçar para encontrar erros. São pontos de vistas divergentes, objetivos diferentes, certo?

Errado!
Muito errado!

A equipe deve ter plena consciência de que o objetivo é o mesmo: GARANTIR A QUALIDADE DO SISTEMA!

Quando eu comecei a fazer testes, a ideia de rivalidade era muito concreta. Sendo assim, eu evitava de conversar com os programadores, e se caso possuísse alguma dúvida em relação a erros, eu tentava me expressar da maneira menos ofensiva possível. Os erros identificados eram cadastrados, posteriormente corrigidos, retestados, e pronto.
Com o tempo, e com as dúvidas que surgiam durante o processo de testes, a liberdade de perguntar e conversar sobre o erro foi aumentando. 
"O que é isso? Por que isso acontece? Em qual módulo poderá acontecer esse erro?"

É claro que a maneira como você se expressa ajuda muito em adquirir uma relação amigável. O testador jamais deverá ser ofensivo, ou usar um tom inapropriado para relatar o erro, principalmente porque se refere ao trabalho desempenhado por outra pessoa. 

Depende muito de cada empresa, e da maturidade da equipe, mas manter uma relação "amigável", e um espírito de união entre testadores e programadores funciona muito bem. Então, essa história de desprezo infinito entre desenvolvedores e testadores é só uma questão de ponto de vista.


Bug encontrado, bug reportado! (Parte II)

Continuando o post anterior...

Mais alguns conceitos interessantes sobre o registro de bugs que eu aprendi lendo o livro "Lessons Learned in Software Testing":

- Never exaggerate your bugs:
De acordo com o projeto e o tipo de sistema, é necessário ter um critério para definir o que seria um bug crítico ou não. Um erro não poderá ser categorizado como crítico sem ter fatos que comprovem essa escolha. Por exemplo, em um site de ecommerce, um erro durante a etapa de compra de produtos com certeza é crítico, principalmente porque acarreta prejuízo para a empresa. Mas tente ser coerente, e não classificar qualquer bug como crítico, apenas para ser corrigido urgentemente.

- Bug reports should be closed by testers:
Todo bug corrigido deverá ser testado novamente, a fim de indentificar se a correção foi realmente concluída. Caso o bug reportado não ocorra mais, este poderá ser fechado definitivamente pelo testador. Quanto antes for possível testar a correção, melhor será para o programador, que lembrará mais facilmente do código alterado, caso o bug não tenha sido realmente corrigido.

- Never use the bug-tracking system to monitor testers performance:
Não é possível medir a eficiência de um tester se baseando apenas na quantidade de bugs reportados. Quantidade não significa qualidade.

- Keep clear the difference between severity and priority:
A gravidade (severity) é referente ao impacto que o erro causa no sistema. A prioridade indica com que urgência o erro deverá ser corrigido. Geralmente quanto maior a gravidade do problema, maior a sua prioridade para correção.


Clicando nesse link você poderá ler sugestões de como reportar um bug na perspectiva de um desenvolvedor.


A comunidade TestExpert listou vários links sobre teste e qualidade de software. Para conferir basta clicar aqui.

Bug encontrado, bug reportado! (Parte I)

Saudações caçadores de bugs!

Tão importante quanto encontrar o bug, é reportá-lo de maneira direta e objetiva, para que outras pessoas envolvidas no projeto possam ler, entender e acompanhar.

Lendo o livro "Lessons Learned in Software Testing" dos escritores Cem Kaner, James Bach e Bret Pettichord, eu aprendi algumas lições sobre o conceito de reporte de bugs. Em breve, em outro post, pretendo comentar mais especificamente sobre o livro.

Abaixo, seguem as lições que eu considerei mais interessantes:

- You are what you write: 
Reportar um erro é bem mais que apenas descrever o que aconteceu. 

Por exemplo, se você simplesmente escrever: "Não é possível cadastrar  o produto.", haverá vários programadores furiosos questionando: esse bug acontece em qual ambiente, em quais circustâncias? É necessário algum pré-requisito para reproduzir?

Portanto, é importante informar a prioridade de correção, o ambiente em que foi encontrado, a sequência de ações necessárias, um resultado esperado, imagens, enfim, dados relevantes para os desenvolvedores e os outros envolvidos no projeto. Quanto melhor o conjunto de informações, mais fácil será para o programador identificar o mesmo erro e corrigi-lo posteriormente.   
Lembrando que clientes e diretores também poderão ler os bugs reportados. Então "The better your reports, the better your reputation."

- Make you bug report an effective sales tool: 
Uma maneira implícita de convencer o seu amigo desenvolvedor, que é realmente necessário corrigir um determinado bug, é adicionar o benefício que a correção resultaria, ou o custo que gera para a empresa caso não seja corrigido.  É claro que deve ser utilizado o bom senso, e não exigir que bugs com prioridades baixas sejam corrigidos imediatamente.
Por experiência própria, eu já negociei vários bugs. Felizmente, na empresa onde eu trabalho, a relação entre testers e desenvolvedores é muito amigável. Sempre conversamos sobre a importância da correção, e entramos em um acordo dependendo da necessidade e da urgência na entrega dos sistemas.
Ou seja, quando todos estão realmente envolvidos no projeto, há apenas um objetivo em comum: entregar o sistema da melhor maneira possível dentro do prazo estipulado.

- Report defects promptly:
Assim que o bug for identificado, é necessário registrá-lo. Se demorar muito para reportar, a chance de esquecer dados importantes aumenta e o erro levará mais tempo para ser corrigido.

- Always report nonreproducible erros; they may be time bombs: 
Você encontrou um bug, mas não consegue reproduzir? Não deixe de reportar o erro mesmo assim. Antes de fechar a tela com o erro, providencie imagens da cena do crime, para comprovar posteriormente que a falha realmente acontece.

- Every bug deserves its own report:
Mesmo que em uma única tela existam vários erros, cada erro deverá ser reportado separadamente, com suas respectivas informações.

- The summary line is the most important line in the bug report:
O título da descrição do bug deverá ser objetivo, direto. Deve ser uma breve descrição do erro, de maneira que apenas lendo o título já seja possível entender em qual parte do sistema acontece e o que acontece. Pense em um título que, em apenas algumas palavras, você consiga transmitir o erro e os stakeholders consigam entender, sem ter que visualizar mais detalhes. Também poderá ser adicionado o impacto ou a consequência do bug.

Existem outras considerações tão importantes quanto essas. Continua no próximo post! 

Enquanto isso no grupo "Testers Anônimos"...

Em uma sala obscura, testers, bug detectors, caçadores de bugs estão reunidos:
Timidamente, o primeiro tester se apresenta:

-"Olá, meu nome é Alexandre, e reportei 10 bugs em uma hora!

E então na sala ecoa aplausos e vários parabéns de pessoas orgulhosas da atitude do Alexandre!
Todos olham para o próximo tester a se apresentar:

- "Boa noite a todos! Meu nome é Maira, e… e… vai ser muito difícil o que eu vou dizer agora, mas tenho que ser forte e admitir: eu estou há 1 semana sem reportar bugs."

O silêncio reina na sala e todos ficam espantados pois é muito tempo sem identificar erros. O que será que está acontecendo? Será que a Maira deixou de ser eficiente, não está se dedicando tanto quanto deveria, ou simplesmente está acompanhando blogs como o naointendo.com.br durante o expediente de trabalho?
Vamos desconsiderar esses fatores, e considerar outros baseados em dados e relatórios mais concretos:

Desde o mês de janeiro eu gero relatórios contendo informações sobre a quantidade de bugs reportados e a quantidade de versões lançadas em cada produto desenvolvido. No início do ano, que foi o período em que mais houve lançamento de  sistemas, a quantidade de erros identificados era muito grande, e com o passar dos meses foi diminuindo gradativamente. Essa informação indica que o software está em um nível mais estabilizado. Outro dado que pode resultar nessa conclusão, é referente à quantidade de versões lançadas, que também diminui consideravelmente. No gráfico abaixo, a representação fica mais visível:



Então você, que tem experiência em identificar erros, mas que está há mais de uma semana sem reportar bugs, não fique desesperado. Considere se a qualidade do produto realmente melhorou, se o sistema atende aos requisitos e se os usuários estão satisfeitos. Será o resultado do esforço que foi aplicado principalmente nas primeiras versões do sistema.

E o interessante de manter essas informações em relatórios, é que posteriormente você poderá gerar um gráfico comparando a evolução durante os meses, e após enviar aos stakeholders.


Nota de esclarecimento: Eu não fico acessando blogs engraçados durante o expediente de trabalho.


 
Monster Bug