34 - Implementação » Histórico » Versão 2
Redmine Admin, 11/05/2019 22:38
1 | 2 | Redmine Admin | h1. 3.4 - Implementação |
---|---|---|---|
2 | |||
3 | Do ponto de vista da entrega, existe uma complementação da implementação realizada pela área de engenharia. |
||
4 | |||
5 | O sistema quando chega nesse estágio, já está testado funcionalmente e já foram realizados alguns builds e deploys da etapa de desenvolvimento. |
||
6 | |||
7 | O sistema é validado no ambiente do Ministério do Planejamento, com a infraestrutura similar com a que será utilizada em produção. |
||
8 | |||
9 | São feitos ajustes apenas para adequação de variáveis de ambientes, mas deve ser construído um job similar ao construído na etapa da construção/engenharia. |
||
10 | |||
11 | Como o ambiente é similar ao final, tratamos nessa etapa os testes não funcionais, avaliamos os scripts e seguimos o manual de implantação com a finalidade de validar sua execução. |
||
12 | |||
13 | |||
14 | h1. 3.4.1 - Testes Automatizados |
||
15 | |||
16 | Em complemento aos eixos de Estruturação [[1.3 - Qualidade]] e Engenharia [[2.4.1 - Testes]], seguem algumas diretrizes e premissas a serem validadas na implementação dos artefatos de testes automatizados: |
||
17 | |||
18 | * %*{color:green}Testes de Interface/Fumaça*%: |
||
19 | |||
20 | >> *Premissas:* |
||
21 | > # O Percentual de cobertura de testes a ser atingido estará descrito no Contrato ou na Ordem de Serviço; |
||
22 | > # É sugerido que o percentual seja definido e aplicado para cada História de Usuário, de acordo com os critérios que o Líder de Projeto e Dono do Produto definirem durante o projeto; |
||
23 | > # Para permitir a rápida identificação da história e dos critérios testados, é importante que o relatório gerado pelo teste automatizado retorne de forma clara a história e critério testado; |
||
24 | > # É de suma importância que a implementação venha parametrizada e preparada para apontar/configurar qual o ambiente será utilizado para a execução dos testes de interface; |
||
25 | > # Testes de interface automatizados %{color:red}não devem fazer a acesso direto a banco de dados% a menos que se tenha uma justificativa para o uso de tal implementação. |
||
26 | |||
27 | >> *Momento a ser executado:* A cada nova TAG entregue pela Fábrica via processo automatizado de build e deploy; |
||
28 | |||
29 | * %*{color:green}Teste unitário*%: |
||
30 | |||
31 | >> *Premissas:* |
||
32 | > # O Percentual de cobertura de testes a ser atingido estará descrito no Contrato ou na Ordem de Serviço; |
||
33 | > # %{color:blue}Por conta da natureza deste tipo de teste que executa de forma isolada arquivos/classes, efetuando a simulação de valores fictícios (mock's) para as demais dependências, o Ministério do Planejamento entende que estes devem ser priorizados *somente* em casos aonde a implementação efetiva de parte da aplicação ainda não possa ser desenvolvida por completo ou é dependente de componente/serviço de terceiro que pode não estar acessível ou pronto no momento do desenvolvimento. Caso este não seja o caso, os *Testes de Integração devem ser priorizados* no lugar dos Unitários em comum acordo com o Líder de Projeto e a *cobertura atingida por eles* pode ser utilizada de forma *equivalente* para o percentual exigido em contrato para os Testes Unitários;% |
||
34 | |||
35 | |||
36 | >> *Momento a ser executado:* A cada nova TAG entregue pela Fábrica via processo automatizado de build e deploy ; |
||
37 | |||
38 | * %*{color:green}Teste de integração*%: |
||
39 | |||
40 | >> *Premissas:* |
||
41 | > # O Percentual de cobertura de testes a ser atingido estará descrito no Contrato ou na Ordem de Serviço e *em comum acordo com o Líder de Projeto*, poderá ser utilizado de forma *equivalente* para o atendimento do percentual de *Testes Unitários*; |
||
42 | > # O comportamento do sistema não deve ser simulado através de valores fictícios (mocks) |
||
43 | > # Deve ser gerado em tempo de execução banco e massa de dados em memória (Ex: Banco H2 em Java ou SQLite em PHP) para a simulação dos cenários de testes necessários, sendo este Banco destruído ao final da execução dos testes; |
||
44 | > # Recomenda-se que o ponto de partida dos testes sejam sempre as portas de entrada do sistema (serviços REST, Controladoras, etc.), desta forma torna-se mais prático e eficiente percorrer todo o código fonte e quantidade de classes de testes que precisarão ser criadas será muito menor; |
||
45 | > > > *Exemplo:* |
||
46 | > > > * Classe Controladora que expõe o serviço REST acessa: |
||
47 | > > > > > * Classe de Repositório/Regra de Negócio que acessa: |
||
48 | > > > > > > > * Classe de Modelo/Entidades |
||
49 | |||
50 | |||
51 | |||
52 | >> *Momento a ser executado:* A cada nova TAG entregue pela Fábrica via processo automatizado de build e deploy; |
||
53 | |||
54 | |||
55 | |||
56 | h1. 3.4.2 - Testes Não Funcionais |
||
57 | |||
58 | * São testes não funcionais, os realizados com a objetivo de validar ou verificar algum aspecto que não envolvem funcionalidades do sistemas, ou seja, que testam requisitos não funcionais. |
||
59 | |||
60 | * Em complemento a [[1.3 - Qualidade]], no contexto do Ministério do Planejamento os testes não funcionais são hora parametrizados pelas áreas de negócios, hora definidos por aspectos da infraestrutura e segurança. |
||
61 | |||
62 | * Nos testes de segurança é usada a ferramenta OWASPZAP que testa a lista de vulnerabilidade elencadas pela OWASP a cada dois anos. |
||
63 | |||
64 | * Além disso, podem ser usados inspeções de aplicações feitas por equipamentos de segurança, a depender do projeto. |
||
65 | |||
66 | * Já nos aspectos de confiabilidade e desempenho é usada a ferramenta Jmeter. |
||
67 | |||
68 | * Os testes de manutenibilidade e usabilidade são feitos de forma manual e pontual. |
||
69 | |||
70 | * A própria aferição pelas áreas de negócios da navegabilidade e a instalação e na esteira dos ambientes valida alguns aspectos desses testes. |
||
71 | |||
72 | * A depender do tipo de teste a ser executado, os critérios de qualidade e aceitação devem ser acordados com o Líder de Projeto e precisam estar de acordo com os artefatos previstos no respectivo Contrato que será utilizado. |
||
73 | |||
74 | * Os artefatos entregues deverão ser armazenados no repositório Git quando se tratarem de código-fonte de uma aplicação de teste ou no Redmine quando se tratar de documentos formais e evidências de execução. |