5 APLICAÇÃO A UM SOFTWARE ESPACIAL EMBARCÁVEL
5.4. Atividades do processo de testes
5.4.4. Executar teste de integração hardware / software
Como pré-requisito para a execução dos procedimentos de testes, temos a análise estática que verifica a estrutura do código fonte e o atendimento de algumas métricas. As figuras seguintes apresentam os resultados desta análise.
110
Figura 5.8 – Aderência ao padrão de código MISRA-C.
Fonte: LDRA TBrun (2016).
A Figura 5.8 mostra a aderência ao padrão MISRA-C:2012, na qual podemos identificar que todos os métodos do componente de software atendem aos requisitos deste padrão de codificação. A Figura 5.9 apresenta o resultado da análise estática para a métrica Testabilidade, na qual podemos identificar que o método “sm_run” não passou. Isto em decorrência da quantidade de métodos dependentes (Fan-Out) deste, conforme podemos identificar através dos detalhes apresentados na Figura 5.10.
Figura 5.9 – Testabilidade do código.
Fonte: LDRA TBrun (2016).
111
Figura 5.10 – Detalhes da métrica Testabilidade do código.
Fonte: LDRA TBrun (2016).
A Figura 5.11, apresenta o resultado da análise estática para a métrica de qualidade de código Clareza, indicando que o código fonte apresenta informações suficientes para seu entendimento.
Figura 5.11 – Clareza do código.
Fonte: LDRA TBrun (2016).
A Figura 5.12, apresenta o resultado da análise estática para a métrica de qualidade Manutenabilidade do código fonte, na qual podemos identificar que o método “sm_run” novamente não passou.
112
Figura 5.12 – Manutenabilidade do código.
Fonte: LDRA TBrun (2016).
Através dos detalhes apresentados na Figura 5.13, identificamos que este método possui alta Complexidade Ciclomática e uma alta quantidade de Nós.
Isto se deve a natureza da estrutura do código referente a máquina de estados.
Melhorias para acomodar estas métricas poderiam impactar na segurança da máquina de estado e seu funcionamento para aplicações críticas e seguras.
Figura 5.13 – Detalhes da manutenabilidade.
Fonte: LDRA TBrun (2016).
Quanto à análise dinâmica, a Figura 5.14 apresenta o resultado para a análise de cobertura do código inicial, segundo o tipo Cobertura de Declaração segundo as métricas da norma DO-178C.
113
Figura 5.14 – Cobertura de código inicial.
Fonte: LDRA TBrun (2016).
A Figura 5.15 apresenta os detalhes da análise de cobertura de código inicial, no qual identificamos que apenas dois métodos (sm_init e sm_main) atingiram a cobertura de 100% de suas estruturas.
Figura 5.15 – Detalhamento da cobertura do código inicial.
Fonte: LDRA TBrun (2016).
A Figura 5.16 apresenta a porcentagem de cobertura identificada pela análise dinâmica nos arquivos do componente de software. Conforme mostra o quadro,
114
a média da cobertura de declaração está em 8% e a média de cobertura de ramo em 7%.
Figura 5.16 – Cobertura após a análise dinâmica inicial.
Fonte: LDRA TBrun (2016).
Os procedimentos de testes foram executados conforme podem ser vistos em ANEXO A – PROCEDIMENTOS DE TESTES, o gráfico da Figura 5.17 mostra o avanço da cobertura de código para declaração e ramo, combinados com os resultados da análise dinâmica. O resultado e o cumprimento da cobertura de requisitos e da estrutura do código são avaliados na atividade seguinte.
Figura 5.17 – Avanço da cobertura estrutural.
Fonte: Produção do autor.
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Inicial SM_PT01 SM_PT02 SM_PT03 SM_PT04 SM_PT05 SM_PT06 SM_PT07 SM_PT08 SM_PT09 SM_PT10 SM_PT11 SM_PT12 SM_PT13 SM_PT14 SM_PT15 SM_PT16 SM_PT17 SM_PT18 SM_PT19 SM_PT20 SM_PT21 SM_PT22 SM_PT23 SM_PT24 SM_PT25 SM_PT26 SM_PT27 SM_PT28 SM_PT29 SM_PT30
Stetament Coverage Branch Coverage
115 5.4.5. Análise de cobertura
Conforme ilustra o gráfico da Figura 5.17, todos os procedimentos de teste foram executados, os quais foram desenvolvidos com base nos requisitos.
Entretanto, podemos verificar que com a execução de todos os procedimentos de teste alcançou-se um índice de 100% de cobertura para o tipo Cobertura de Declaração conforme as métricas da norma DO-178C, enquanto a cobertura do tipo Cobertura de Ramo atingiu 93%.
A Figura 5.18 mostra os procedimentos que não atingiram todas as métricas para cobertura de código, enquanto a Figura 5.19 detalha estes procedimentos e a cobertura alcançada para cobertura de Declaração e Ramo.
Conforme orienta o processo proposto, isto justifica uma avaliação dos requisitos e procedimentos de testes associados para verificar se há a necessidade de alterá-los ou criar novos procedimentos de teste com base nestes requisitos.
Figura 5.18 – Cobertura de código conforme a DO-178C.
Fonte: LDRA TBrun (2016).
116
Figura 5.19 – Detalhamento da cobertura dos procedimentos.
Fonte: LDRA TBrun (2016).
Deve-se desenvolver novos procedimentos de teste para complementar os procedimentos executados, os quais atingiram a cobertura de requisito, mas não foram suficientes para atingir 100% da estrutura do código, sendo este um requisito oriundo da norma DO-178C para o nível A.
Os procedimentos de teste que devem ser desenvolvidos, estão este no escopo dos testes de baixo nível de software, uma vez que verificam estruturas de repetição e estruturas de decisão. Com isto, observamos que não há a necessidade de desenvolver os testes de integração de software.
Está customização do processo proposto, deve-se ao fato de que o software utilizado possui uma estrutura de componentes simples e não apresenta complexidade e tamanho significativos. Com isto, os testes executados ao nível de integração de hardware / software foram suficientes para cobrir a estrutura do código, com exceção de pequenas partes que devem ser concluídas com a execução de procedimento de testes em baixo nível de software.
117 5.4.6. Geração dos casos de testes
A Tabela 5.8, apresenta os procedimentos de teste complementares, os quais foram desenvolvidos para atingir a cobertura estrutural do código fonte, especialmente, do tipo cobertura de ramo.
Tabela 5.8 – Procedimentos de teste complementares.
Requisito Caso de Teste
Associado Descrição
SM_REQ37 PT_31
Verifica no estado OPERATIONAL a transição do modo OPEN para RETRACT ao detectar b_Panel
= 0, entretanto de modo complementar verifica a condição “FALSE” para o procedimento
“panelOpen”.
SM_REQ38 PT_32
Verifica no estado OPERATIONAL a não transição do modo RETRACT para CLOSE, entretanto de modo complementar verifica a condição “FALSE“
para o procedimento “retract”.
Fonte: Produção do autor.