Como último post sobre a Integração com o Selenium e ferramentas de Gestão de Teste e Gestão de Defeitos criei um projeto em Java que integra o Selenium, Mantis e Testlink.
É recomendado você ler os dois post's abaixo:
- Integração Selenium e Testlink
- Integração Selenium e Mantis
- Integração do Testlink com o MantisBugTracker
Se você já leu estes dois tutoriais, continue lendo este post...
Este projeto de exemplo vai:
- Executar um script de teste no Selenium RC
- O script de teste irá falhar
- Reportar um bug no Mantis anexando uma imagem do browser no momento do erro
- Reportar o resultado do teste (que será com falha) ao Testlink
- Associar o bug aberto ao Caso de Teste no Testlink
1. Organização
Este projeto foi dividido nos seguintes pacotes, conforme descrito abaixo:
- com.blogspot.sembugs.mantis
- ConnectMantis.java: Classe que faz a conexão com o Mantis
- MantisReport.java: Classe que reporta o bug no Mantis
- com.blogspot.sembugs.test
- CasoTeste.java: Caso de Teste de exemplo
- com.blogspot.sembugs.testlink
- ResultadoExecucao.java: Classe que reporta o resultado da execução do teste
- com.blogspot.sembugs.util
- IConstantes.java: Interface com dados comuns as classes
2. Modificações
A seguir serão apresentados os trechos das classes que foram alterados e os devidos comentários sobre as alterações
MantisReport.java
Nesta classe foram feitas as seguintes alterações:
- Linha 1: Mudança do método, que agora tem como retorno um String.
- Linha 8: Criado um atributo local do tipo long para retornar o ID do bug cadastrado
- Linha 12: O atributo local é transformado em uma String e atribuido a variável bugID
- Linha 22: Adicionado o retorno do método
PS: A classe abaixo está omitindo uma série de linhas de código, sendo apresentado apenas as mais relevantes perante as alterações.
1: public static String reporIssue(String sumario, String descricao, String categoria, String informacaoAdicional, String evidencia, String nomeArquivo) {
2: IMCSession sessao = null;
3: String arquivo = nomeArquivo + ".png";
4: String bugID = null;
5:
6: try {
7: // submete o bug no Mantis
8: long id = sessao.addIssue(issue);
9: sessao.addIssueAttachment(id, arquivo, "image/png", Base64.decodeBase64(evidencia));
10:
11: // retorna o ID do bug como String, para fazer o relacionanmento do bug com o Testlink
12: bugID = String.valueOf(id);
13:
14: } catch (MalformedURLException e) {
15: System.err.println("Erro na URL de acesso ao Mantis");
16: e.printStackTrace();
17: } catch (MCException e) {
18: System.err.println("Erro na comunicacao com o Mantis");
19: e.printStackTrace();
20: }
21:
22: return bugID;
23: }
24: }
ResultadoExecucao.java
Nesta classe foram feitas as seguintes alterações:
- Linha 1: Foi adicionado um novo parâmetro para a utilização do método: Integer bugID. É esperado que seja passado o ID do bug cadastrado para fazer a associação com o Testlink, mas não é obrigatório
- Linha 5: Um verificação é feita para ver se o ID do bug será passado. Se sim há uma séria de atributos que são obtidos para que o resultado de execução do caso de teste contenha o bug associado. Isso foi adicionado porque o método da API do Testlink tem uma assinatura (parâmetros) diferente do do método que não associa o bug
- Linhas 7, 8, 9 e 10: Todos os atributos locais necessários para a associação do bug no resultado do caso de teste.
- Linha 12: Envio dos dados de resultado do teste ao Testlink utilizando o ID do bug para associação.
- Linhas 13 e 14: Se o bug não for passado (for null) o envio do resultado de execução para o Testlink utiliza outro método para esta tarefa.
1: public static void reportTestCaseResult(String projetoTeste, String planoTeste, String casoTeste, String nomeBuild, String nota, String resultado, Integer bugID) throws TestLinkAPIException {
2:
3: TestLinkAPIClient testlinkAPIClient = new TestLinkAPIClient(DEVKEY, URL);
4:
5: if (bugID != null) {
6:
7: Integer projectID = TestLinkAPIHelper.getProjectID(testlinkAPIClient, PROJETO_TESTLINK);
8: Integer testPlanID = TestLinkAPIHelper.getPlanID(testlinkAPIClient, projectID, PLANO);
9: Integer testCaseID = TestLinkAPIHelper.getTestCaseID(testlinkAPIClient, projectID, CASO_TESTE1);
10: Integer buildID = TestLinkAPIHelper.getBuildID(testlinkAPIClient, testPlanID, nomeBuild);
11:
12: testlinkAPIClient.reportTestCaseResult(testPlanID, testCaseID, buildID, bugID, false, nota, resultado);
13: } else {
14: testlinkAPIClient.reportTestCaseResult(projetoTeste, planoTeste, casoTeste, nomeBuild, nota, resultado);
15: }
16: }
CasoTeste.java
Esta classe é a mesma utilizado nos outros dois tutoriais, porém com nome diferente.
Basicamente foi alterado apenas o bloco finnally do script.
- Linha 3: Foi adicionado o método para o report do bug, atribuindo para uma variável o ID do bug que foi adicionado.
- Linha 5: Adicionado o novo método com o parâmetro do bugID, para que o bug seja associado ao resultado de execução do caso de teste.
PS: A classe abaixo está omitindo uma série de linhas de código, sendo apresentado apenas as mais relevantes perante as alterações.
1: } finally {
2: if (erro) {
3: String bugID = MantisReport.reporIssue("Erro no Caso de Teste de Pesquisa de Livros", "Erro em alguma validacao ou validacao", "Automacao", msgErro, evidenciaErro, "CasoTesteMantisNOK");
4:
5: ResultadoExecucao.reportTestCaseResult(PROJETO_TESTLINK, PLANO, CASO_TESTE1, BUILD, msgErro, resultado, Integer.parseInt(bugID));
6:
7: CasoTeste.fail(msgErro);
8: }
9: }
3. Baixando o código-fonte
O projeto completo e funcional pode ser baixado no link abaixo (18 MB):
http://www.eliasnogueira.com/arquivos_blog/selenium/integracao/mantis_testlink/selenium-integration.zip
4. Verificando online o resultado de execução
Se você baixar o projeto e já executá-lo ( ) poderá ver que os resultados no Testlink e Mantis serão colocados em ambas aplicações que tenho online.
Para acessar ambos, utilize os seguintes dados de login:
- Usuário: convidado
- Senha: convidado
http://www.eliasnogueira.com/arquivos_blog/mantisbt-1.2.3/
Agora no Testlink, que está acessível pela URL abaixo, veremos que o resultado reportado foi com falha, está dentro do mesmo horário de criação do bug e tem o bug associado, conforme figura.
Bom pessoal, por enquanto é isso! Abraço a todos!
Elias,
ResponderExcluirEstou tentando realizar a integração entre as ferramentas "Testlink X Selenium X Mantis", gostaria de saber se poderia disponibilizar novamente o link para download do codigo fonte ou mesmo uma indicação de onde posso encontra-lo.
Graças aos teus posts, consegui realizar as integrações entre "Testlink(1.9.2) X Mantis(1.2.8)" com sucesso, porem gostaria de implantar a solução completa integrando tambem o Selenium.
Tenho algumas duvidas e sugestões quanto "Solução(T.M.S.)" e gostaria de compartilhar essas e tambem contar com vários "Helps"!rs
Desde já agradeço a atenção.
Thyago Borges
Oi Thyago!
ResponderExcluirObrigado por alertar pelo link quebrado. Ele já está corrigido agora.
Qualquer coisa manda as tuas duvidas ai. Podemos trocar varias figurinhas!
Grande abraço!