Na Engenharia de Testes na fase de Planejamento devemos criar um Plano de Testes conciso e eficaz, adotando a metodologia ágil. O que isso quer dizer?, deve conter no documento aquilo que realmente tem valor para as pessoas interessadas no projeto. Não adianta escrever um documento de 50 páginas aonde ninguém vai ler ou dar valor. O plano de testes funciona como um contrato entre os times envolvidos, então deve ser claro e conciso e ao mesmo tempo venha trazer eficácia para o time de testes. Para isso você precisa entender os Artefatos/Documentos gerados no desenvolvimento do sistema, segue os principais abaixo:
• Artefatos de Entrada:
– Plano do projeto ;
– Requisitos funcionais e não-funcionais ;
– Documentação referente aos projetos/sistemas relacionados.
Agora vamos falar de Boas Práticas:
Sempre usar ferramentas para Gestão dos Testes e Bug Tracker (TestLink, JIRA, TestRail, Mantis, Bugzilla, etc);
Envolver os profissionais de testes desde a elicitação inicial dos requisitos do software (workshops);
Definir uma estratégia para priorização dos testes com foco no negócio do software (priorizar requisitos mais importantes);
Descrever bem o que a área de Testes vai fazer e não vai fazer;
Descrever bem os Critérios
de Suspensão da versão.
É algo fundamental colocar as Premissas e Acordos entre as áreas envolvidas, um exemplo seria:
"Fica acordado que o analista de Sistemas/Negócio que conhece bem do sistema e ou arquiteto
do projeto deverão prestar consultoria em pelo menos 1h diária, para a equipe de
testes em casos de dúvidas geradas na revisão dos documentos, e na criação do Plano de Teste como também na criação do Ambiente para a realização dos Testes."
Outra coisa muito importante é não esquecer de criar um Plano de Testes que contém os requisitos não funcionais do projeto, como Testes de Segurança e Performance, problema aqui põem todo projeto a perder.
Na minha Pós-graduação em testes de Software o professor pediu para fazer um plano de testes e criar o desenho do sistema. De acordo com professor está de Acordo com o esperado de um bom plano de testes, seguindo o que ele faz no Instituto CESAR de Curitiba.
Existe outra forma de fazer um Plano de Teste, Planos de Testes por Iteração, são Planos de Testes enxutos pra cada Iteração do Projeto.
Segue um exemplo do que seria um Plano de Teste em 18 páginas, coloquei referências bibliográficas para melhor aprofundamento no assunto, não sendo necessário colocar no plano de testes: Plano de Testes - LINK
Depois de Configurar o Python e o Robot Framework vamos Instalar e configurar o Jenkins, antes disso vamos criar uma conta no Bitbucket, segue o link abaixo: https://bitbucket.org/
Agora vamos instalar o jenkins, segue o link abaixo e instale a versão de acordo com o seu sistema operacional.
Agora vamos instalar o Plugins necessário para realizar nosso teste, siga o caminho abaixo
Gerenciar Jenkins - Gerenciar Plugins
Agora ele vai mostrar a tela de Plugins com as seguintes opções Atualizações, Disponíveis, Instalados e Avançado. Seleciona a aba Disponíveis.
GIT plugin, Robot Framework plugin, SCM API Plugin, Selenium HTML report, Selenium Plugin.
Agora confirme a instalação, e o jenkins vai iniciar o processo de instalação.
No Windows após a instalação reinicie a maquina.
Agora vamos configurar nosso teste, antes disso vamos instalar o GIT cliente para Windows. https://git-scm.com/download/win
No linux use o comando abaixo:
Agora vamos começar nosso build automatizado, a gente vai utilizar nosso WebDemo da primeira postagem, dessa vez a gente vai fazer tudo remoto.
Selecione os Passos 1. Novo job - 2. Construir projeto de múltiplas configurações - 3. OK
** Não esqueça de colocar um nome ao seu Job/Projeto.
Vamos Primeiramente configurar o GIT:
Selecione as opção 1. GIT 2. Adicione o caminho do sistema "https://reiload@bitbucket.org/robotframework/webdemo.git" 3. Adicione as credenciais seu login e senha criado no bitbucket.org.
Caso der o erro: Failed to connect to repository : Could not init C:\Windows\TEMP\hudson862793913918641728tmp, precisamos passar o caminho do GIT instalado para o Jenkins, o caminho padrão no windows é "C:\Program Files (x86)\Git\bin" , você adiciona em Gerenciar Jenkins - Configurar o sistema - Git installations - Path to Git executable:
Agora ao voltar para o menu o erro não mais vai aparecer.
Em Trigger de builds, vamos fazer ele consultar periodicamente se houve mudança no servidor, selecione a opção: Consultar periodicamente o SCM, e adicione "*H/5 * * * *" aqui ele vai consultar a cada 5 minutos se houve uma modificação ele vai rodar o build novamente.
No campo Build, vamos adicionar o comando para executar os nossos testes, selecione a opção "Executar no comando windows"
Em Matriz de configuração adicione Rodar cada configuração em sequência, agora vá na opção Build, Clique a opção "Adicionar passo no build" em seguida selecione a opção "Executar shell" se você for executar no Linux e no windows você seleciona a opção "Executar no comando Windows".
No campo texto adicione o comando:
pybot --variable BROWSER:Chrome login_tests
Você pode adicionar outros clicando no menos comando novamente adicionando o texto abaixo:
pybot --variable BROWSER:IE login_tests
pybot --variable BROWSER:firefox login_tests
Em seguida vamos adicionar uma ação após a realização do teste, no campo Ações de pós-build, clique no botão "Adicionar ação de pós-build", selecione a opção "Publish Robot Framework test results", vamos adicionar ao campo Thresholds for build result, como 50% e 100%, como mostra a figura abaixo:
Após salva o nosso Job, vamos voltar para a tela inicial do Jenkins, em seguida vamos executar nossos testes, siga os passos Coloque o cursor do mouse em cima do nome do nosso projeto e em seguida clique na opção "Construir agora", automaticamente o Jenkins vai começar os testes em background, espere alguns minutos para termino do teste.
Quando executei meus testes a primeira vez houve falha devido ao firewall bloquear o jenkins, adicione o jenkins no seu firewall do windows ou linux como permitido.
Agora vamos melhorar nosso projeto adicionando Matriz de configuração, vai criar uma matriz dividida pelos Browsers que vamos usar firefox | chrome | IE , vamos adicionar o Eixo Definido pelo Usuário , no nome vamos adicionar o valor: BROWSER, no campo Valores vamos adicionar: firefox chrome IE.
Em Matriz de configuração adicione Rodar cada configuração em sequência, agora vá na opção Build, Clique a opção "Adicionar passo no build" em seguida selecione a opção "Executar shell" se você for executar no Linux e no windows você seleciona a opção "Executar no comando Windows".
No campo texto adicione o comando:
pybot --variable BROWSER=$BROWSER login_tests
Agora nosso projeto esta perfeito, esta mostrando todos os browsers, sendo executado 8 testes para cada Browser.
Caso você não consiga realizar os passos segue um vídeo em english mostrando como se faz. https://vimeo.com/96527858
A pouco tempo na Pós-graduação em Testes de Software, o professor passou um trabalho sobre Integração Continua e Build de Testes Automatizado, nesta postagem, fiz o exemplo prático do nosso trabalho, vamos instalar o Jenkins e rodar um teste automatizado em um repositório git nas nuvens, para isso vamos usar o Robot Framework, no entanto vamos fazer em Python como é uma linguagem simples e dinâmica as pessoas que nunca programaram vão aprender com facilidade.
3. Neste passo vamos executar um demo para testar o Robot Framework e o Python.
Baixe o arquivo no site abaixo e extraia o mesmo no C: ou Home do linux.
Agora vamos executar os seguinte comando no CMD ou Shell do Linux, entre na pasta do webdemo pelo cmd ou shell
3.1 Primeiro vamos executar o servidor, podemos criar um script no notepad++, é somente adicionar os comandos abaixo, save as como .bat na área de trabalho.
cd\ cd webdemo python demoapp/server.py pause
** Se executamos o comando antes de iniciar o servidor, vamos visualiza a falha abaixo.
3.2 Agora vamos executar os comando para iniciar os testes, abra outro CMD ou Shell.
Nosso primeiro teste passou com sucesso, no entanto o restante dos testes no browser Chrome e IE falhou, neste caso precisamos baixa o driver para executar nesses browser, vamos baixar nos links abaixo e extraia dentro da pasta C:\Python27\Scripts\
No Chrome nossos testes foram realizados com sucesso, no entanto no IE mostrou o
seguinte erro "This is the initial start page for the WebDriver server."
No IE, vamos Habilitar o Modo Protegido e colocar o nível para Baixo, em sites confiáveis
adicione o http://localhost e salve e feche o IE , isso irá resolver nosso problemas no caso
do IE 11 baixe um o arquivo o .reg e adicione ao registro, o mesmo se encontra no site abaixo: http://heliumhq.com/files/docs/
Fiz um script para pegar o IP e o MAC de um range de IPs, é necessário quando você quer saber todos os Set-Top-Box que estão na rede, e enviar comandos de atualização, ou se comunicar com um Set-Top-Box específico.
Nesse primeiro script quero pegar um IP através de um MAC específico em um range de ips:
# Importa a api do NMAP import nmap
# Instancia o objeto nmap.PortScanner. nm = nmap.PortScanner()
# host 127.0.0.1, portas de 1 a 255 cidr2='127.0.0.1-255'
# insere os argumentos ao objeto nm usando a funcao scan. a=nm.scan(hosts=cidr2, arguments='-sP')
# Trata os dados for k,v in a['scan'].iteritems(): if str(v['status']['state']) == 'up':
try: if (str(v['addresses']['mac'])=="68:15:90:78:F7:23"): print "IP: " + str(v['addresses']['ipv4']) except: pass
-------------------------------------------------------------------------------------------------------------------
# Nesse script vai listar todos os dados encontrados.
# Pode remover print str(v), nesse caso vai exibir a lista de ips e macs da rede.
import nmap
nm = nmap.PortScanner()
cidr2='192.168.1.99/24'
a=nm.scan(hosts=cidr2, arguments='-sP')
for k,v in a['scan'].iteritems():
if str(v['status']['state']) == 'up':
print str(v)
try: print str(v['addresses']['ipv4']) + ' => ' + str(v['addresses']['mac'])
except: print str(v['addresses']['ipv4'])
Criei um Passo a passo para instalação do Python e Pydev para iniciar o desenvolvimento de Script automatizados em python, uma linguagem super simples e prática de programar, como é orientado a indentação o código fica super arrumado.
Segue os passos para Instalação do Python no Linux:
1. Primeiro Instale as dependências, insira os comandos no Terminal (Shell) do Linux:
** Observação mude a url no passo 2.2 pra versão que deseja.
3. Extrair o arquivo:3.1 -> tar -xvf Python-2.7.5.tgz
3.2 -> cd Python-2.7.5
4. Agora fazer a instalação:comandos:
4.1 -> ./configure
4.2 -> make
4.3 -> sudo make install
Passos para Instalação PyDev:
1. Baixar o eclipse (Recomendo a última versão mais estável).
Passo a Passo no site abaixo: http://www.vivaolinux.com.br/dica/Eclipse-42-Instalacao-no-Ubuntu-e-derivados
2. Abra o Eclipse.
3. Menu Help - Install New Software
4. Seleciona o Botão "ADD"
5. Insira um Nome no campo name.
6. Insira a URL do pydev no campo location: http://pydev.org/updates
7. Clique no botão "Ok" em seguida click em "Select ALL".
8. Agora é só confirmar clique em seguir ou next e por fim finalizar.
- Caso no eclipse não queira seguir a mesma ordenação de pastas, você pode associar ao seu projeto, basta criar um novo projeto vazio e associar ao local no computador.
Exemplo:
/home/reinaldo/workspace/PastaDoProjeto
1. Para fazer a associação siga o caminho no eclipse abaixo:
Properties-Resource-Linked Resources-NEW
2. Adicionar os dados do seu projeto:
Adicionar Name: PROJECT_LOC
Adicionar em location: <O caminho do projeto>.
Nesse post vamos fazer uma classe genérica para reportar o resultado do teste realizado para o TestLink.
Vamos listar as coisas que devemos fazer primeiro para criar o reporte no testlink.
1. Precisamos criar primeiro os seguinte itens:
Test Project Management
Test Plan Management.
Como estes dois Itens não mudam todo tempo, recomendo fazer manualmente no inicio do projeto, caso você queira fazer, já digo que a ultima versão do TestLink 1.9.12 esta com um bug quando você tenta fazer várias vezes o Test Plan Management, a tela fica em branco, pode ser problema de memória, mas não perdi muito tempo com isso.
2. Necessário criar o
Builds / Releases.
Criamos uma função para criar o Build - create_build(self, newBuildID, buildName, buildNotes), passamos como paramêtro ID do build, nome do build, descrição do mesmo.
3. Pegar o ID do Test Case passando o Nome como parâmetro para a função testCaseIDByName(self, TESTCASE).
4. Pegar o ID doTest Plan passando o Nome do Test Plan como parâmetro para a função getTestPlanId(self, NEWTESTPLAN).
5. Agora vamos realizar o reporte do teste realizado, passando os dados (id do caso de teste, id do plano de teste, buildname, resultado do teste -> PASSED=p , FAILED=f , BLOCKED=b, descrição do teste realizado) para a função reportTCResult(self, tcid, tpid, buildname, Result, notes). Exemplo:
"""
Class Testlink to connection with server TestLink
Author: Reinaldo M.R.J
Date: 10-12-2014 - Version: 0.X
"""
import testlink
class class_Testlink(object):
def __init__(self):
# Endereço do Servidor xmlrpc
TESTLINK_SERVER_URL = '.../lib/api/xmlrpc/v1/xmlrpc.php'
# Chave gerada pelo TestLink
TESTLINK_DEVKEY = 'bdcc743a0cd80052bf8c28XXXXXXXX'
tlh = testlink.TestLinkHelper(TESTLINK_SERVER_URL, TESTLINK_DEVKEY)
self.myTestLink = tlh.connect(testlink.TestlinkAPIClient)
# Nome do Projeto, caso você tenha vários poderia enviar como parâmetro para classe.
self.Project = "XXXXXXXX"