segunda-feira, 24 de março de 2014

Selenium IDE - "Automação simples na prática!"

Conforme já havia informado anteriormente, passarei a postar de forma simples a utilização de cada ferramenta do Selenium. Portanto, neste post vamos explorar algumas funcionalidades do Selenium IDE, mas antes é interessante sabermos algumas características desta ferramenta.:
  • É um plugin do Firefox que possibilita a automação de testes funcionais, logo será necessário que você possua este browser
  • A utilização é intuitiva, simples e não há a obrigatoriedade de domínio de alguma linguagem de programação
  • Possui comandos específicos chamados "Selenese" que basicamente são divididos em três categorias.: Actions (Operações que o usuário realiza na página web), Accessors (Armazena valores em variáveis, após a análise do estado em que a aplicação se encontra) e Assertions (Verifica o comportamento e se o resultado final da aplicação foi realizado conforme esperado).
Para baixar o Selenium IDE, basta acessar à página oficial do Selenium.
Após realizar o download e instalá-lo, o Selenium já estará acessível no menu principal do Firefox na opção 'Ferramentas'.


Ao executar o Selenium, sua interface se apresentará da seguinte forma.:


Legenda.:
1.  Página da aplicação a ser testada
2.  Velocidade da execução do teste
3.  Executa uma suíte de teste
4.  Executa um caso teste único
5.  Possibilita a definição de regras de agrupamento
6.  Suíte de Casos de Teste
7.  Lista de comandos (Tabela.: Comandos Selenium / Código-fonte.: Linguagem de programação específica)
8.  Botão Gravar.: Ao executar o Selenium, o botão já é acionado automaticamente.
9.  Campo Comando.: Nome que representa sua funcionalidade (obviamente, em inglês) e o mesmo pode ser obtido de três formas distintas.:

  • Realizando a ação manualmente na página após clicar no botão 'Record' de gravação
  • Clicando com o botão direito na página web e vendo a lista de comandos possíveis que o selenium disponibiliza  
  • Inserindo manualmente na própria ferramenta, clicando com o botão direito na aba 'Tabela'
10. Campo Alvo.: Representa o local ou variável na qual o comando está sendo executado ou está direcionando
11. Campo Valor.: intuitivamente sabemos que é o conteúdo associado que terá cada comando quando necessário.
12. Resultado da execução
13. Log de execução
14. Descrições do comando (Reference / UI-Element), são extramente úteis no decorrer da utilização


Agora vamos começar um teste simples de uma busca pelo 'Selenium 2' no Google. Simplesmente entraremos no Google, digitaremos 'selenium 2' na caixa de texto de busca e clicaremos no botão com a lupa representada. Perceba que esta ação, gerou três comandos específicos no Selenium.:



Open.: Abertura da página web
Type.: Entrada de dados
click.: Ação do usuário clicanco na lupa do google

 
Pois bem, agora sim começa a "brincadeira" e a partir destes conceitos acima descritos já é possível ir testando e descobrindo a ferramenta. No caso, realizei a inclusão de alguns comandos simples apenas para dar a noção das possibilidades que a ferramenta fornece ao testador.



No link a seguir, estou fornecendo o arquivo do teste para que você realize em sua máquina e o altere conforme sua necessidade para realização de quantos testes julgar necessário. Neste exemplo de teste, para cada comando inseri comentários que descrevem sua funcionalidade e necessidade dentro da aplicação. 
Download - Teste Busca Google

É importante frisar que as abas 'Mensagens' e 'Reference' são extremamente úteis para elaboração e adequação dos testes, pois indicam os pontos de erros e demonstram claramente a funcão de cada comando. Além disso, os comandos de ponto de início, breakpoint e a possibilidade de regular a velocidade da execução (Fast/Slow) auxiliam na reprodução do teste.

Para finalizar, um grande entusiasta do Selenium na internet, Elias Nogueira, criou alguns desafios que possibilitam o usuário conhecer a ferramenta um pouco mais. Vale a pena conferir.:



Testar é garantir a informação!

sexta-feira, 21 de março de 2014

Automação de Testes Funcionais com Selenium

Ultimamente, venho pesquisando com certa frequência as ferramentas para automação de testes de software disponíveis no mercado. Após uma longa pesquisa na internet, visualização de tutoriais, opiniões e experiências de profissionais da área, optei por estudar e testar a fundo a ferramenta Selenium.

Na realidade, o Selenium é um conjunto de ferramentas "Open Source" para automação de testes em aplicações web, suportando diversos browsers, plataformas e linguagens de programação. Além disso, sua flexibilidade possibilita ao profissional realizar testes funcionais, de regressão e até mesmo de desempenho.

No conjunto de ferramentas Selenium, encontramos os seguintes componentes.:

Selenium IDE.: É um plug-in para o Firefox que permite a captura e reprodução de ações realizadas pelo usuário no navegador.

Selenium RC.: Possui uma API e bibliotecas específicas para várias linguagens de programação, além de um servidor que atua como um proxy para requisições web. O Selenium RC, também chamado de Selenium 1, executa aplicações javascript dentro do navegador.

Selenium WebDriver.: A principal função é automatizar ações de usuários em qualquer navegador utilizando recursos nativos para controlá-lo de forma direta, possibilitando adequação do código-fonte para qualquer necessidade específica juntamente com a integração de algum framework de testes unitários (como por exemplo, o JUnit). Pode-se dizer que é uma evolução do Selenium RC.

Selenium Grid.: Possibilita a distribuição de testes em diversas máquinas para execução em paralelo.



Nos próximos posts, passarei a detalhar a instalação, configuração e a utilização de cada um dos componentes do Selenium. A idéia é explicar de forma simples o conceito de cada componente com exemplos práticos associados.

Testar é garantir a informação!

terça-feira, 18 de março de 2014

5 Características Importantes - Inspeção de Artefatos de Software

A inspeção de artefatos de software é um tipo de revisão que pode ser aplicado em todas as fases do ciclo de vida de um software, portanto quando aplicada da forma correta torna-se uma atividade cíclica e fundamental no processo de teste. Há algum tempo trabalho com inspeção de artefatos e é possível verificar que alguns problemas se repetem com certa frequência. Sendo assim, elencarei abaixo 5 características que o analista deve possuir para realização de uma boa inspeção de artefatos.:

  • Comprometimento - O analista deve entender que a inspeção é um processo sério e formal, que implica em ações impeditivas para construção do software e/ou geração de indicadores que irão demonstrar a qualidade do produto que está sendo desenvolvido.
  • Análise Crítica - O analista deve sempre entender que não existe defeito "bobo", simplesmente existe defeito! Portanto é essencial que o analista tenha uma visão pontual do artefato que está inspecionando e a visão global do processo. Também vale a pena ressaltar que "cada artefato é único", isto significa que o artefato deve ser inspecionado de forma isolada desconsiderando o que já foi inspecionado anteriormente (O analista deve se libertar da idéia: "Já inspecionei isto antes!"). O requisito do cliente é determinante, e uma vez que este seja previsto em checklists de verificação deve ser considerado como referência exclusiva.
  • Conhecimento - Este é requisito básico e primordial para a inspeção. Um bom analista que realiza inspeção deve possuir atributos técnicos, conhecimento de negócio, entendimento de processo e documentação, bem como uma série de outros atributos. Aqui temos um ponto de atenção, pois este tipo de profissional quando alcança um certo grau de maturidade na função pode entender que alguns defeitos não são relevantes para o processo ou realizar a inspeção de forma automática, somente focando em pontos principais que defeitos ocorrem com maior frequência.
  • Precisão e Autonomia - Deve-se ter a certeza absoluta de que o defeito identificado no artefato realmente é pertinente e passível de apontamento. Lembrando que qualquer apontamento realizado de forma incorreta, poderá acarretar em conflitos desnecessários e gerar enfraquecimento da imagem equipe de qualidade.
  • Escrita - Ao identificar os defeitos, os mesmos serão documentados em alguma ferramenta ou documento específico. Dessa forma, o analista deve descrever o defeito com clareza, de forma sintética e buscando não ofender os responsáveis pela construção do artefato.



Testar é garantir a informação!

Simplificando... Garantia da Qualidade x Controle da Qualidade

Atualmente vemos uma grande confusão no mercado referente aos termos Garantia da Qualidade e Controle da Qualidade. Sem dúvidas que isto se deve ao fato de que em muitos casos os profissionais da área de tecnologia da informação não estão muito interessados na parte conceitual e teórica de seu trabalho. No entanto, este é um problema pois como posso trabalhar com algo que não sei nem explicá-lo? Ou pior, como posso querer trabalhar com algo que não quero nem explicá-lo? Pois é, e você sabe que este cenário é uma constante em nossa área.
 
Portanto, baseado em experiências de mercado, artigos de internet e livros específicos da área, neste post irei mostrar de forma simples e direta as diferenças entre Garantia e Controle da Qualidade de Software. Para distinguirmos estes termos, precisamos entender ao que se refere a Qualidade. "Qualidade é o grau no qual um conjunto de características inerentes satisfaz aos requisitos" (NBR ISO 9000:2005). No caso específico da Qualidade de Software, podemos entendê-la justamente da mesma forma, porém aplicada às necessidades e anseios do cliente referentes ao produto final de software, ou seja, o software deve estar em conformidade com todos os seus requisitos pré-determinados.

A Garantia da Qualidade de Software é um processo macro composto por algumas atividades como por exemplo o Teste de Software, Gerenciamento de Configuração e Controle da Qualidade. Na garantia de Qualidade o foco é na definição dos processos que darão subsídios e fornecerão confiança para que os produtos seja construídos corretamente de acordo com seus requisitos.

Diante desta definição, já podemos perceber que a Garantia da Qualidade é um processo macro que contempla em sua própria estrutura o Controle da Qualidade. Este por sua vez é focado em revisões e inspeções baseadas em checklists como foco na detecção e remoção de defeitos antes que os produtos sejam finalizados.

Na imagem abaixo, podemos verificar a relação entre os termos.:




A tabela abaixo demonstra as principais diferenças entre as duas atividades.:


Quality Assurance
Quality Control
1. Garantia da qualidade garante que o processo é definido e apropriado.
1. As atividades de controle da qualidade focam na descoberta de defeitos em i específicos.
2. Metodologia e padrões de desenvolvimento são exemplos de garantia da qualidade.
2. Um exemplo de controle da qualidade poderia ser: "Os requisitos definidos são os requisitos certos?".
3. Garantia da qualidade é orientada a processo.
3. Controle da qualidade é orientado a produto.
4. Garantia da qualidade é orientada a prevenção.
4. Controle da qualidade é orientado a detecção.
5. Foco em monitoração e melhoria de processo.
5. Inspeções e garantia de que o produto de trabalho atenda aos requisitos especificados.
6. As atividades são focadas no inicio das fases no ciclo de vida de desenvolvimento de software.
6. As atividades são focadas no final das fases no ciclo de vida de desenvolvimento de software.
7. Garantia da qualidade garante que você está fazendo certo as coisas e da maneira correta.
7. Controle da qualidade garante que os resultados do seu trabalho são os esperados conforme requisitos.

Fonte: Quality Assurance is not Quality Control.

Bom, como vimos os conceitos não possuem nenhuma dificuldade fora do comum mas sem o conhecimento dos mesmos torna-se inviável a estruturação de qualquer equipe de qualidade e/ou o entendimento de áreas que atuam baseadas nestes conceitos. Cada vez mais as grandes organizações entendem e investem em Qualidade de Software, portanto o envolvimento e comprometimento nesta área por parte dos profissionais já é tratado como um diferencial mercadológico.

Testar é garantir a informação!