O documento discute a implementação de testes automatizados para vários clientes, incluindo a rastreabilidade dos casos de teste, a arquitetura do projeto integrado com reuso de código, e o processo de versionamento e publicação de versões para teste.
2. Rastreabilidade de Casos de teste ao UC no EA
Estamos em processo de definição, é uma necessidade
para podemos saber quais testes devem ser alterados e
reaplicados em caso de mudança do Caso de Uso, Regra de
Negócio, Requisitos Funcionais, ou seja, algo que gere
impacto na aplicação.
3. Arquitetura do projeto (Projeto Integrado)
+Todos os clientes em um único projeto
+Reusabilidade do código fonte e dados da planilha
-Projeto grande -Alto acoplamento -Código fonte do teste distribuído
4. Versionamento do Projeto
Projeto de testes será versionado com o mesmo processo do font, ou
seja, a cada nova versão será aberto um novo Branch.
Novo Slide.
5. Estrutura do projeto
Sai o numero de versão dos testes devido a
que o projeto será evoluído em Branch’s.
6. Dados de teste
Utilizar 2 planilhas:
- Dados Comuns a todos clientes;
- Dados de campo especifico do Cliente.
7. Versionamento do Banco de dados
Será utilizado no banco de dados um conjunto de dados básico padrão para
todos os clientes, ou seja, todos os clientes terão os mesmo dados básicos na
base de dados. (não será os dados básicos reais do cliente)
Será sempre utilizado os conf’s do cliente que vai ser testado.
Petroski está providenciando para os conf’s saírem do Banco de
Dados e ficarem somente nos Font’s específicos do cliente.
9. Publicação de Versão
Agendar as rotinas de publicação:
- Meio dia e meia noite.
Será criado uma rotina única no Jenkins que vai
publicar tudo para ‘Determinado Cliente’,
‘Determinado banco’, ‘Determinada Versão de
Aplicação’ e ‘Sempre para a maquina de testes
automatizados’ ao invés de agendar as rotinas uma
a uma.
10. Rodar testes automatizados
1- Baixa o Jboss da VM.
2- Move os arquivos de EAR do 'Server66' para
'ServerTestesAutomatizadosVMJboss‘ (via SSH).
3 - Verifica qual a versão do banco deve ser utilizada para
aquela versão de aplicação
(jbossserverclienteconfversaoBD-config.txt).
4 - Verifica qual a versão atual do banco atual (tabela de log
do liquibase no BD).
5 - Compara a versão do banco no config com o status atual
do banco.
IF(vbanco < vbancoapp) Atualiza o BD até vbancoapp
IF(vbanco > vbancoapp) Destrói o banco e constrói até
vbancoapp ou loga erro e envia e-mail.
6 - IF(vbanco = vbancoapp) Sobe o Jboss da VM.
7 - Verifica se o Selenium Grid não está no ar
IF(!Instancia Selenium_Grid.exits) Start Selenium_Grid.
8 - Dispara a Suíte de Testes pelo Selenium Grid (roda todos
os testes ao mesmo tempo em browser diferentes).
9 - Final de testes... publica resultado.
10 - Resultado tem erros? SIM-> envia e-mail, NÂO->não faz
nada.
Vai ser substituído por um banco em uma VM, ou seja, toda vez que se
quiser o banco no estado básico o Jenkins vai baixar a VM do banco e
subir novamente, assim volta para o estado inicial da VM.
Obs: Será necessário uma rotina para ter Snapshots da VM de 6 em 6
meses com o intuito de diminuir o tempo de atualização VM para o
ultimo estado do banco.
O TestNG efetua a mesma
funcionalidade do
Selenium Grid só que por
parâmetro.(Pendência
William: Comparar o
consumo de memória.)
11. Report dos testes automatizados
ReportNG
TestNG-XSLT
Pode-se aferir diariamente a evolução do projeto de testes automatizados.
17. Como fica os testes automatizados se tivermos
uma correção para a versão que já está em
produção?
V 05.04.00 - Produção
V 05.05.00 - Homologação
V 05.06.00 - Desenvolvimento
Cliente XYZ
Exemplo:
18. Fluxo de teste automatizado - Magnatas
O parâmetro passado no Jenkins manualmente (versão
aplicação) ou a ultima versão(valor default) será utilizado
para indicar qual Branch do projeto de testes vai ser
executado.
19. Máquina que possa trabalhar com:
- 3 bancos ao mesmo (SQL Server, Oracle e DB2);
- Jenkins;
- Serviço SSH;
- VM
- Snapshot do banco de dados em estado básico.
-Threads de Selenium Server no ar (x<=15 ao mesmo tempo).
Necessidade de Hardware
Necessidade de recursos (Pessoas) com
alocação para as tarefas:
- Implementar testes legado;
- Finalizar ambientes e configurações.
Será utilizado 1 VM
para cada banco de
dados.