wiki:ExpressoTestCenter/ic

Version 12 (modified by viani, 3 years ago) (diff)

--

Objetivo

Documentar os passos necessários para a criação de um ambiente com suporte a integração contínua para o projeto Expresso.

Esse documento não tem por objetivo ensinar a instalação e configuração do VirtualBox e/ou do Ubuntu. O público alvo são pessoas que já possuem um mínimo de conhecimento do ambiente Linux para poder executar a configuração do servidor de integração contínua.

Softwares Utilizados

  • Oracle VirtualBox 4.0.6 r71344: usando para criar um servidor virtual. Claro que essa documentação pode também ser aplicada em um servidor real. Usei uma máquina virtual pois eu não tinha um servidor real a minha disposição.
  • Ubuntu 11.04: usei o Ubuntu apenas por uma questão de facilidade, pode ser tranquilamente trocado por um Debian.
  • Testlink 1.9.3
  • Apache Maven 3.0.3
  • Jenkins 1.434: alguns plugins do Jenkins foram utilizados. Nessa documentação eu falo rapidamente sobre a configuração e instalação desses plugins.

Passos

Configuração do Ubuntu

Após a instalação padrão do Ubuntu, alguns pacotes adicionais são necessários. Vamos estar instalando o servidor Web Apache com suporte a PHP. Também será instalado o banco de dados PostgreSQL. Poderia ser escolhido também o MySQL. Para o Jenkins é necessário termos o Java. Nesse caso escolhi usar o openJDK (sim, precisa do JDK pois o código vai ser compilado diretamente no servidor antes da execução dos testes). Pode ser trocado pelo da Sun (Oracle). Também precisamos do subversion para poder baixar os fontes das classes automatizadas do svn do expressolivre.

Para instalar os pacotes necessários basta executar o comando abaixo:

sudo apt-get install apache2 ssh unzip php5 postgresql php5-pgsql php5-gd php5-ldap slapd subversion libapache2-svn python-genshi python-setuptools python-subversion python-psycopg2 libapache2-mod-python libapache2-mod-wsgi vim openjdk-6-jdk

Após a instalação dos pacotes, é necessário mudar a senha padrão do postgres. Para isso temos que entrar como root e depois como usuário postgres:

sudo su -
passwd postgres
su postgres
psql
alter user postgres password 'postgres';
\q
exit
exit

Baixar o Testlink de  http://www.teamst.org/. Descompactar o arquivo testlink-1.9.3.tar.gz. Será gerado um diretório testlink-1.9.3. Vamos renomear esse diretório para testlink e mover ele para dentro da pasta /var/www do Apache e após isso mudar suas permissões.

mv testlink-1.9.3 testlink
sudo mv testlink /var/www
sudo chmod 777 -R /var/www/testlink/

Temos que ativar o XMLRPC e também os testes automatizados. Essas opções vem por padrão desabilitados nessa versão do Testlink. Para isso, basta editar o arquivo /var/www/testlink/config.inc.php mudando os valores das seguintes propriedades:

$tlCfg->api->enabled = TRUE;
$tlCfg->exec_cfg->enable_test_automation = ENABLED;

Após essas mudanças vamos reiniciar o apache:

sudo apachectl restart

Agora podemos proceder com a instalação do Testlink. Toda a instalação é feita através da interface Web. Basta abrir o navegador e seguir os passos abaixo:

  1.  http://localhost/testlink (substituir localhost pelo servidor do Testlink)
  2. Selecionar "New instalation"
  3. Aceitar a licença de uso
  4. Verificação da instalação dos pré-requisitos (deve estar tudo ok, apenas alguns warnings que podemos ignorar)
  5. Preencher formulário para escolha do BD com os seguintes dados:
    1. Type: Postgres
    2. Host: localhost
    3. Database name: testlinkdb
    4. Table prefix: <deixar em branco>
    5. Database admin login: postgres
    6. Database admin password: postgres (deve ser a mesma senha que usamos anteriormente na configuração do Ubuntu)
    7. Testlink db login: testlink
    8. Testlink db password: testlink
  6. Verificação da instalação - deve estar tudo OK nesse ponto
    1.  http://localhost/testlink e logar com admin/admin

Logo após o login, será necessário a criação de um novo projeto. Proceder conforme a tela abaixo:

Clicar no link "Project". Fomos direcionado para a página principal do Testlink. Vide tela abaixo:

Vamos criar um novo plano de testes. Para isso basta clicar em "Test Plan Management". Preencher os campos conforme tela abaixo:

Agora temos que criar um campo personalizado que será utilizado pelo Jenkins. Esse campo deverá conter o nome qualificado da classe java que implementa o teste automatizado. Mais sobre isso na seção do Jenkins. Para criar um campo personalizado no Testlink devemos voltar a tela principal clicando na opção "Define Custom Fields". Criar o campo conforme tela abaixo:

Voltando para a tela principal devemos avisar ao Testlink que queremos utilizar esse campo personalizado na especificação dos testes. Para isso clicar na opção: "Assign Custom Fields". Veja tela:

Agora precisamos criar uma chave para a comunicação via XMLRPC. Para isso devemos clicar em "My settings" na tela principal. Clicar no botão "Generate a new key" na seção "API interface". Guarde essa chave pois será utilizada na configuração do plugin do Testlink lá no Jenkins.

Finalmente, devemos criar uma caso de teste automatizado. Para isso clicamos em "Test Specification" na tela principal:

Selecionar o projeto "Expresso" e criar uma suíte de teste:

A suíte vai ser criada logo abaixo do projeto Expresso. Selecionar a suíte para podermos criar os casos de teste.

Dar um nome qualquer para o caso de teste. O mais importante nessa tela é que devemos marcar o teste como automatizado e informar a classe java que implementa nosso caso de teste. Veja o exemplo:

Nesse exemplo vamos estar utilizando o classe que automatiza o envio de emails. O código das classes se encontra em  http://svn.expressolivre.org/devel/testlink/automation2.0/.

Temos que associar esse caso de teste ao nosso plano de teste. Para isso basta selecionar a opção "Add / Remove Test Cases" na tela principal:

Selecionar a suite de teste criada para depois marcar o caso de teste. Basta clicar em "Add selected" para associar o caso de teste ao plano.

O Testlink está pronto!

Instalação e Configuração do Jenkins

Baixar o Maven de  http://maven.apache.org/. A instalação é bem fácil também, basta descompactar o arquivo em qualquer diretório. No meu caso coloquei dentro do Apps também.

Baixar o Jenkins de  http://jenkins-ci.org/. O arquivo baixado é um .WAR e este deve ser colocado dentro da pasta webapps da instalação do Tomcat. Esse arquivo será descompactado automaticamente ao iniciar o Tomcat.

Para iniciar o Jenkins, basta abrir um terminal e digitar:

java -jar jenkins.war

Pronto! O Jenkins estará rodando no porta 8080 e para acessá-lo basta apontar o navegador para  http://localhost:8080. A tela principal do Jenkins é apresentada:

Para configurar o Jenkins basta selecionar a opção "Manage Jenkins". Primeiramente vamos adicionar o plugin do Testlink. Para isto basta selecionar a opção "Manage Plugins":

Clicar na aba "Available". Serão listados todos os plugins disponíveis para instalação no Jenkins. No nosso caso precisamos somente do Testlink:

TELA! (falta tirar screenshot... problema com plugins no jenkins)

Voltando a tela "Manage Jenkins", vamos a configurações adicionais. Clicar na opção "Configure System". Temos que informar ao Jenkins a localização do Maven em nossa máquina:

Para configurar o plugin do Testlink siga as instruções da tela abaixo. Note que devemos usar a chave que foi gerada na instalação do Testlink.

Temos que criar uma Job no Jenkins para rodar o teste automatizado. Para isso selecionamos a opção "New Job".

Na seção "Source Code Management" informamos o caminho onde os testes automatizados estão armazenados. Nesse caso temos os fontes no Subversion. E com relação a Check-out strategy, eu costumo deixar marcado a opção "Always check out a fresh copy". Dessa forma, a cada novo build, todos as classes java são compiladas novamente. Demora alguns segundos a mais, mas vai garantir que estamos usando uma cópia limpa.

Na seção "Build", vamos invocar o Testlink. O nome do projeto e do plano de teste devem ser os mesmos que foram criados no Testlink. O nome do build será gerado automaticamente pelo Jenkins. E aqui também devemos informar o campo personalizado que criamos no Testlink para armazenar o nome da classe que implementa os testes automatizados. Devemos ainda adicionar um "Interative Test Build Steps" onde chamaremos o maven para baixar os classes java, compilar e executar os casos de teste.

Por fim, informamos também o caminho dos relátorios gerados pelo TestNG e salvamos a configuração.

Voltando a tela principal do Jenkins, vemos a tarefa que criamos. Para fazer um teste basta clicar no ícone "Schedule a build".

Podemos acompanhar a execução desse build através da opção "Console Output".

No final do build, vemos que o plugin do Testlink procura pelos resultados da execução. Ao encontrar, ele automaticamente irá atualizar o Testlink. Nesse exemplo, temos apenas 1 caso de teste automatizado que foi executado com sucesso.

Retornando ao Testlink, vemos que foi criado um build pelo Jenkins e que o caso de teste foi executado com sucesso. Para ver o resultado no Testlink selecionar a opção "Test Execution".

Referências

Attachments