Automação de Teste de Software – Parte 1- Definição de Ferramentas

Em uma postagem anterior no artigo Automação de Testes de Software é só record and play #SQN comentei brevemente sobre diretrizes que havia traçado para dicas de automação de teste de software. Lembrando ainda para quem não conferiu, essa postagem originou o webinar que leva o mesmo nome. Mas a ideia agora em minhas próximas postagens é tentarmos aprofundar um pouco mais em cada tópico citado.

Para começar o primeiro ponto explorado será:

1. Definição de Ferramentas

Quando pensamos iniciar a automação de testes de algum software uma das primeiras dúvidas que pairam em nossas mentes é sobre qual seria a melhor ferramenta de automação a adotar? Essa é uma escolha que precisa ser bem analisada, considerando principalmente o custo x benefício que ela proporcionará para o projeto no geral.

DefinicaoFerramentaAutomacao

Encontrará muitas opções no mercado, open source e share, e nesse momento é que começa a pesar sua escolha: será que uma ferramenta free poderia atender todas minhas necessidades? De acordo com tamanho do projeto eu tenho recursos para investir em uma ferramenta share?

Quando falamos em ferramenta de automação não podemos esquecer que para que os testes sejam executados automaticamente,  precisamos pensar em uma ferramenta de integração contínua também. Para quem não conhece o termo, veja a figura 2 que a exemplifica abaixo:

IntegracaoContinua
Funcionamento da Integração Contínua [2]

Ainda segundo Martin Fowler[3] a definição de integração contínua é:

Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver múltiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.

Então, algumas questões importantes que deveriam ser consideradas para definição da ferramenta de automação e de integração contínua são:

  • Custo x Benefício – Analisar prós e contras em utilizar determinada ferramenta, as linguagens de programação suportadas, recursos disponíveis e se ela se adéqua as necessidades de sua aplicação.

          Em meio a tanta informação recomendo que entre em contato com pessoas que trabalham ou já trabalharam com essa ferramenta, e sentir delas um pouco o que foi vivenciar esse período. Seria uma forma de coletar informações do uso na prática dos pontos positivos negativos de utilizá-la. Dessa forma, conhecendo cases reais de experiências com essas ferramentas, poderá abstrair dessas práticas o que deve e principalmente o que não deve seguir, evitando repetir possíveis erros já cometidos por esses profissionais. Em resumo, seria uma forma de tirar lições aprendidas dessa ferramenta.

          E é claro que o custo com relação a adquirir a ferramenta, valores de licença também deverão ser considerados.

  • Usabilidade –  Com relação a facilidade de manusear essa ferramenta, ela é intuitiva? Fácil de utilizar? Algumas são via comando mas outras possuem uma interface “amigável” que se considerar o fator que será comentado abaixo facilitará a vida do testador que inicialmente não tem muito conhecimento na ferramenta selecionada para automação\integração contínua.
  • Conhecimento da equipe – Se a ferramenta cogitada não for conhecida entre a equipe de teste uma outra questão que deverá ser pensada é com relação a capacitação da equipe para trabalhar com a ferramenta. Nesse caso, pese também que haverá o período de aprendizagem até que todos os envolvidos estejam familiarizados com ela.
  • Suporte – Como qualquer aplicação essas ferramentas estão suscetíveis a erros, é recomendado identificar quanto a respaldo de suporte você teria para aquela ferramenta, meios de comunicação, tempo de retorno para possíveis soluções, durante o projeto essas são questões que são importantes e ter um suporte que te auxilie em uma necessidade pode fazer diferença também.

Falando um pouco da experiência em vivenciar essa etapa, na verdade quando comecei a participar em projetos de automação aqui na MATERA Systems essa etapa já haviam completado. Nós usamos para automação as ferramentas Qf-Test para as aplicações java SE e Selenium para aplicações java EE. Para executar as builds da integração contínua utilizamos o TeamCity.

Conclusão

Diria que a escolha da ferramenta seria o primeiro passo, no entanto existem outras questões importantes que deverão ser avaliadas antes de colocarmos “a mão na massa”, ou seja, antes de começar de fato automatizar que veremos ao longo das próximas postagens. Gostaria de ressaltar para que se atente a todas etapas, as defina muito bem de forma que não encontre “surpresas” desagradáveis no curso do projeto. O tempo investido também é custo, ninguém quer gastar tempo e energia em um projeto para chegar no meio chegarem a conclusão que a ferramenta selecionada não foi a melhor opção a ser adotada. A dica aqui é atentar-se na decisão do custo x beneficio da ferramenta que estou selecionando, considerando todos os detalhes que comentamos.

Referências:

[1] http://www.wthreex.com/rup/process/artifact/ar_tstenv.htm

[2] http://pt.slideshare.net/luthiano/integracao-continua-em-projetos-net

[3] http://www.devmedia.com.br/integracao-continua-uma-introducao-ao-assunto/28002

[4] http://www.devmedia.com.br/automacao-de-teste-de-software-com-qf-test/33424

Links:

[1] http://www.matera.com/br/2015/07/10/automacao-de-testes-de-software-e-so-record-and-play-sqn/

[2] https://www.youtube.com/watch?time_continue=3&v=VbV_wMb9byA

[3] http://www.qfs.de/en/qftest/

[4] http://www.seleniumhq.org/

[5] http://www.matera.com/br/2011/11/29/teamcity-conheca-a-ferramenta-e-seus-principais-beneficios/

 

Ferramentas de apoio para equipes de projetos de TI

Ferramentas, ferramentas, ferramentas. Todo profissional de TI que se preza utiliza pelo menos um aplicativo que o auxilia nas tarefas do dia-a-dia. Seja uma IDE famosa, um client de banco de dados ou até o bom e velho notepad. O fato é que esses aplicativos podem melhorar e muito a produtividade não só de uma pessoa, mas de uma equipe inteira, melhorando a visibilidade que está sendo feito (ou não está sendo feito), melhorando a qualidade do que é entregue, evitando erros, medindo o progresso e muito mais. Segue uma lista com algumas ferramentas que são uma mão na roda para sua equipe:

 

Jira: O Jira é uma ferramenta de bug tracker. Pensando melhor, é uma ferramenta de bug, project, version e history tracker. É um aplicativo bastante completo onde é possível registrar uma tarefa, classificar como bug, features ou itens de backlog; incluir numa determinada versão; indicar que a tarefa está sendo executada, que já foi executada ou que nem começou e quem é responsável por ela. Além disso, possui alguns plugins para acompanhamento do progresso do projeto, com gráficos de pizza, gráficos de barra, últimas atualizações, filtro por versão, filtro por status etc. É uma ferramenta paga, mas vale a pena. Mais informações https://www.atlassian.com/software/jira

Mantis: Ferramenta de bug tracker. Esse é só de bug tracker mesmo, mas bastante útil e fácil de utilizar. É bem mais simples que o Jira, mas cumpre seu papel. Através do mantis é possível registrar as tarefas, classificar em categorias personalizáveis, associar a tarefa a alguém, indicar o status da tarefa, definir a prioridade e associar a determinada versão. Não tem gráficos, mas é possível acompanhar o que foi entregue em cada versão, através de um roadmap. Essa ferramenta é gratuita. Mais informações em https://www.mantisbt.org/

Kunagi: Kunagi é uma ferramenta para gerenciamento de projetos baseados na metodologia Scrum. A ferramenta permite definir diferentes papéis no projeto, como PO, SM ou Team. É possível também incluir os épicos do projeto, separar em sprints com suas respectivas tarefas e visualizar o progresso das sprints através de gráficos de burndown e whiteboards que exibem o progresso da tarefa. Possui também a opção de gerar estimativas baseadas na técnica de planning poker, inclusive com a imagem das cartas para serem escolhidas. A ferramenta é bastante completa, mas sua interface é um pouco confusa, precisando de um certo tempo para se acostumar com ela. O kunagi é gratuito e possui um demo online no site. Mais informações  em http://kunagi.org/

 Wiki: Wiki? Sim, Wiki! Mas não digo Aquela wiki, de onde você copia o conteúdo para seus trabalhos escolares. Falo de uma wiki interna mesmo. Configurar uma wikipédia interna é uma ótima opção para compartilhar o conhecimento dentro da empresa. Serve até como uma forma de documentar os projetos, mapear os processos internos e compartilhar dicas. O mais interessante é que todo mundo pode contribuir para a manutenção dessa documentação. Os envolvidos no projeto, os testadores, o cara do comercial, todo mundo.

Teamcity: O teamcity é uma ferramenta de integração contínua que permite ter uma visão do estado atual do código, exibindo as últimas alterações no projeto, praticamente em tempo real. Além disso, a ferramenta permite a execução de testes automáticos a cada commit, exibindo um status do sucesso ou de falha, com detalhes do que falhou. Uma outra característica bastante interessante dessa ferramenta é a possibilidade de realizar uma checagem pré-commit, ou seja, você pode verificar se suas alterações vão passar nos testes automáticos antes mesmo de fazer o commit. O teamcity possui versão paga e gratuita. Mais informações em https://www.jetbrains.com/teamcity/whatsnew/  e http://www.matera.com/br/2011/11/29/teamcity-conheca-a-ferramenta-e-seus-principais-beneficios/

Crucible: O crucible é uma ferramenta de revisão de código. Através dela é possível criar uma revisão de determinado código para que outros membros da equipe possam validar e sugerir melhorias ou apontar problemas. A ferramenta permite criar revisões a partir de códigos que já foram para o svn ou que ainda não foram enviados (através de patchs do código local). O código é apresentado em um visualizador formatado com cores, destacando os trechos alterados e permite incluir comentários em pontos específicos do visualizador. Alertas são enviados para o email do autor sempre que alguém incluir um comentário no código submetido por ele. O crucible é uma ferramenta paga e o preço varia conforme o número de usuários que terão acesso a ferramenta. Mais informações em https://www.atlassian.com/software/crucible/overview e http://www.matera.com/br/2011/12/20/revisao-de-codigo-com-crucible/

Ferramentas de Inspeção de Código

Com a evolução de softwares desenvolvidos para web, cresceu também o uso das ferramentas de inspeção de páginas que auxiliam o desenvolvimento na depuração do código HTML, Javascript, CSS e validação de acessibilidade da página.

Os navegadores mais utilizados, como Firefox, Chrome, Internet Explorer e Opera já possuem  estas ferramentas.  Pode-se citar  como exemplo o Firebug, Chrome Developer Tools, Opera Dragonfly e Developer Toolbar.

Em alguns navegadores elas já vem por padrão, entretanto às vezes é necessário instalar via plugin. Para utilizar, basta acessar o menu do navegador e procurar pela ferramenta, ou utilizar a tecla de atalho F12.

Abaixo segue uma descrição de algumas funcionalidades de diagnóstico oferecidas:


HTML

Além de conseguir mostrar o código HTML gerado por uma página, os inspetores permitem editar este código e quase instantaneamente ver  o resultado. Isto porque a ferramenta exibe o código de forma hierárquica,  o que possibilita visualizar a estrutura da página codificada, facilitando a realização de modificações. Um exemplo seria verificar como ficaria o layout de uma página após a adição de um novo componente, e isto poderia ser feito para vários navegadores.


CSS

Com relação ao CSS, os inspetores proporcionam para o desenvolvedor uma gama de recursos para inserção e edição.

Por exemplo, ao  clicar em um componente da página, o inspetor lista quais são os CSS aplicados naquele componente e permite que o desenvolvedor desabilite um atributo, altere ou insira um novo. As modificações são refletidas no mesmo instante, ajudando o desenvolvedor a definir o layout da página de forma visual. Desta forma se reduz o tempo de desenvolvimento, por evitar recompilar  todo o projeto antes de ter certeza da alteração.


Javascript

A maioria das ferramentas disponibilizam um recurso que é a depuração de código Javascript. Este recurso serve para acompanhar uma função, verificar se a sintaxe dos comandos está conforme o padrão especificado e se a ação desejada é executada no momento correto.

A análise das funções e comandos são feitas por meio de interrupções, que param a execução do código e deste ponto em diante é possível acompanhar passo a passo a chamada.

Validação de página

No caso da ferramenta Firebug, há um recurso que faz a validação da acessibilidade de uma página HTML. O objetivo é verificar se a estrutura da página está conforme as normas da W3C. É exibido ao usuário a quantidade de erros existentes, apontando o que está fora das normas. A fim de que a página fique mais acessível, também é demostrada a forma correta de utilizar os componentes e seus atributos.


As ferramentas de diagnósticos só devem ser utilizadas com o intuito de tornar mais ágil o desenvolvimento, poupando tempo de compilação, apenas para testar um novo layout ou uma função. Porém, se após as mudanças, o desenvolvedor constatar que as novas alterações são necessárias, ele deve realizá-las no código fonte da aplicação, pois toda vez que uma página é atualizada as mudanças feitas através do inspetor são desfeitas, voltando ao estado original.


Referências:

http://tableless.com.br/ferramentas-de-diagnostico/

http://www.matera.com/br/2012/07/o-que-e-css-e-qual-sua-importancia/

http://www.w3schools.com/js/default.asp

http://www.w3.org/