Estudando para a Certificação CTFL - Quarto Capítulo - Parte I

Resumo sobre o quarto capítulo do syllabus, que trata a respeito de técnicas de modelagem de testes.

Durante a modelagem são criados os casos de testes e os dados de testes. Os casos de testes devem possuir as seguintes informações:

- Valores de entrada;
- Pré-condições;
- Resultados esperados (devem ser definidos antes da execução dos testes);
- Pós-condições;

O padrão IEEE 829-1998 define a documentação.

Categoria das técnicas de modelagem de testes

Testes de caixa-preta
Nos testes de caixa-preta, a estrutura interna do sistema é desconsiderada. Testa-se apenas o que é visível ao usuário. Engloba tanto os testes funcionais como os não funcionais.


Testes de caixa-branca
O teste de caixa branca é baseado na estrutura interna do software. Pode ser chamado de teste de estrutura.

Técnicas baseadas em caixa-preta

Partição de equivalência
- As entradas do sistema são divididas em grupos que tenham um comportamento familiar;
- Pode ser um conjunto de dados válidos, ou dados inválidos (rejeitados pelo sistema);
- Aplicável a todos os níveis de testes;

Análise do valor limite
- Nos limites de uma partição de equivalência é onde existe maior probabilidade para identificar defeitos;
- Valores máximos e mínimos;
- Valores válidos e inválidos;
- Pode ser aplicada em todos os níveis de testes;

Tabela de decisão
- Podem ser usados para regras de negócio;
- As condições de entradas são declaradas como verdadeiro ou falso;
- Cada coluna possui uma regra de negócio que define uma única combinação que resulta na execução de ações;
- A tabela cria combinações que geralmente não foram exercitadas durantes os testes;

Teste de transição de estados
- Permite ao testados visualizar o software em termos de estado;

Teste de caso de uso
- O caso de uso possui pré-condições que precisam ser garantidas que funcionem;
- Casos de testes baseados em casos de uso facilitam na descoberta de defeitos durante a utilização do sistema no mundo real;

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

Resumo do terceiro capítulo do syllabus, referente a técnicas de testes estáticos.

Os testes estáticos não pressupõem a execução do sistema. Podem ser manuais, revisões em documentações, ou automatizadas através da análise estática.
A revisão pode ser realizada bem antes da execução dos testes dinâmicos. Quanto antes, no ciclo de desenvolvimento, for identificado o defeito, mais barato será para corrigir.

Benefícios da revisão:
- Detecção e correção antecipada de defeitos;
- Redução do tempo no desenvolvimento;
- Redução do custo e tempo de teste;
- Menos defeitos;
- Melhoria na comunicação;

Processo de revisão

Planejamento
- Definir critérios de revisão;
- Selecionar equipe;
- Alocar funções;
- Definir critérios de entrada e de saída;
- Selecionar quais partes do documento serão revisadas;
- Checar critérios de entrada;

Kick-off
- Distribuir documentos;
- Explicar os objetivos;

Preparação individual
- Análisa da documentação;
- Anotar os defeitos em potenciais, questões e comentários;

Reunião de revisão
- Discussão ou registro, com resultados documentados;
- Anotar os defeitos e fazer recomendações para o tratamento de defeitos;
- Examinar, avaliar e registrar questões durante a reunião;

Retrabalho
- Resolver defeitos encontrados, tipicamente feitos pelo autor;
- Registrar os status atuais dos defeitos;

Acompanhamento
- Checar se os defeitos foram encaminhados;
- Obter métricas;
- Checar os critérios de saída;

Tipos de revisão

Revisão informal
- Pode haver programação em pares ou um líder técnico revisando a modelagem e o código;
- Documentação opcional;
- Dependendo do revisor, a importância pode variar;
- Principal propósito: Uma forma de obter algum benefício a baixo custo;

Acompanhamento
- A reunião é conduzida pelo autor;
- Cenários, grupos de discussão e exercícios práticos;
- Sem restrição de tempo;
- Opcionalmente há um redator;
- Pode variar de informal para formal;
- Principal propósito: aprendizagem, obtenção de entendimento e encontrar defeitos;

Revisões técnicas
- Documentado;
- Processo de detecção de defeitos;
- Idealmente deve ser conduzido por um moderador;
- Preparação dos revisores;
- Elaboração do relatório de revisão, contendo informações sobre a lista de defeitos encontrados, se o software corresponde aos requisitos;
- Pode variar de informal para formal;
- Principais propósitos: discussão, avaliar alternativas, encontrar defeitos, resolver problemas técnicos e checar a conformidade;

Inspeção
- Conduzida pelo moderador;
- Análise por pares;
- Utilização de métricas;
- Processo formal baseado em check-list;
- Entradas especificadas e critérios de saída para a aceitação do produto;
- Acompanhamento formal;
- Principal propósito: encontrar defeitos;

Análise estática

- Encontrar defeitos no código fonte do software e na modelagem;

Benefícios
- Detecção de defeitos antes da execução do teste;
- Identificação de defeitos dificilmente encontrados por testes dinâmicos;
- Prevenção de defeitos se as lições forem aprendidas pelo desenvolvimento;

Defeitos mais comuns descobertos por ferramentas de análise estática:
- Referências a uma variável com valor indefinido;
- Código morto;
- Inconsistências entre as interfaces dos módulos e componentes;
- Vulnerabilidade na segurança;

Ferramentas de análise estática são tipicamente usadas por desenvolvedores.


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

Continuando os resumos do syllabus para a CTFL:

O segundo capítulo aborda informações sobre os níveis de testes, tipos de testes e teste de manutenção. Abaixo, segue uma breve descrição e resumo sobre cada item:

Níveis de Testes

Teste de Componentes
- Os testes de componentes ocorrem com acesso direto ao código;
- Verifica o funcionamento do software através de módulos, objetos, classes, e são testados separadamente;
- Envolve o desenvolvedor;
- A correção geralmente é realizada no momento da identificação do defeito, e não há documentação ou registros formais de incidentes;
- TDD (Test Driven Development);

Teste de Integração
- Testa-se a interface entre os componentes, interações de diferentes partes de um sistema;
- Testar a integração entre os diferentes componentes do software, e geralmente é realizado após os testes de componentes;
- Teste de integração para verificar as interações entre diferentes sistemas. Pode ser realizado após os testes de sistemas;
- Quanto maior o escopo de testes de integração, maior será a dificuldade para encontrar e isolar o defeito;

Teste de Sistema
- Refere-se ao comportamento de todo o sistema, definido pelo escopo do projeto;
- O ambiente de teste deve simular ao máximo o ambiente de produção;
- Podem ser baseados em: especificação de riscos, ou requisitos, processos de negócios e casos de uso;

Teste de Aceite
- Frequentemente é de responsabilidade do usuário;
- Estabelecer confiança no sistema;

Formas de teste de aceite:

- Teste de aceite do usário;
- Teste operacional de aceite;
- Teste de aceite de contrato e regulamento;
- Alfa e Beta Teste;

Tipos de Testes

Teste de função (teste funcional)
- Testes baseados nas funções descritas em documentos;
- Pode ser realizado em todos os níveis de teste;
- Considera o comportamento externo do software (caixa-preta);

Técnicas de teste funcional:

- teste de controle;
- teste de interconexão;
- teste paralelos;
- teste de requisitos;
- teste de regressão;
- teste de suporte manual;
- teste de tratamento de erros;

Teste de características do produto de software (testes não funcionais)
- É o teste de "como" o sistema trabalha;
- Pode ser realizado em todos os níveis de teste;
- Medir as características;
- Modelo de qualidade: ISO 9126

Técnicas de teste não funcional:

- teste de performance;
- teste de carga;
- teste de estresse;
- teste de usabilidade;
- teste de interoperabilidade;
- teste de manutenibilidade;
- teste de confiabilidade;
- teste de portabilidade;

Teste de estrutura (teste estrutural)
- Caixa-branca;
- Pode ser feito em todos os níveis de teste;
- Baseado na arquitetura do sistema;

Teste relacionado a mudanças (teste de confirmação e regressão)
- O teste de confirmação certifica que um defeito encontrado foi realmente resolvido e removido;
- Teste de regressão: teste repetido de um sistema, após sua modificação, para descobrir a existência de algum defeito que pode ser originado;
- Realizado quando o software ou ambiente é modificado;
- Forte candidato a automação;
- Podem ser realizados em todos os níveis de testes;

Teste de Manutenção

- Após o sistema ser desenvolvido e estar disponível em produção, o mesmo poderá sofrer manutenções periódicas, seja para acrescentar melhorias, ou para corrigir defeitos não detectados anteriormente;
- Além de ser testada a modificação realizada no software, o teste de manutenção inclui testes massivos de regressão;
- O escopo do teste está diretamente relacionado com os riscos que a versão de melhoria ou corretiva poderá causar;



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.


 
Monster Bug