Validação de sistemas embebidos: o comportamento do sistema inteiro
A validação de sistemas embebidos verifica se o dispositivo final faz o que os requisitos e os utilizadores precisam, em hardware real e no seu ambiente real.
O Midair executa a suite de validação na sua bancada e guarda cada execução como um registo. Cada resultado aponta para o requisito que verifica.
midair run 57 · builder.conf.lock 3f9c2e1 te --tester-req="REQ-UPD-03|REQ-PWR-02" test update/wifi_credentials_kept REQ-UPD-03 FAILED expected PASSED console wpa_supplicant: no network configured test power/cut_during_update REQ-UPD-03 REQ-PWR-02 PASSED power outlet 2: off 2 s, on test power/cold_boot_x50 REQ-PWR-02 PASSED midair run 57 saved: 3 tests, 1 unexpected
O que é a validação de sistemas embebidos.E como difere da verificação e dos testes.
A validação faz uma só pergunta: o produto final faz o trabalho para que foi feito? Num sistema embebido, a resposta vem do dispositivo real, em hardware real, com a rede, a alimentação e os outros dispositivos à volta.
A verificação faz outra pergunta: cada parte cumpre a sua especificação? Uma revisão de código, uma análise estática ou um teste unitário verificam. Um cenário próximo do uso real, no dispositivo montado, valida.
Os testes são a forma de obter evidências para as duas. Um teste executa o produto, compara o resultado com um veredicto esperado e regista o que aconteceu.
Verificação
Construímos bem o produto?
- Compara com
- A especificação e o desenho: interfaces, regras de código, mapas de registos, detalhes do protocolo.
- Exemplo num gateway Wi-Fi
- O Visao reporta um overflow de inteiro em otp.cpp antes de o código chegar à placa.
- Deixa
- Ocorrências, notas de revisão e resultados de testes unitários para cada parte.
Validação
Construímos o produto certo?
- Compara com
- Os requisitos e as condições de uso real: a rede, a alimentação, os dispositivos à volta.
- Exemplo num gateway Wi-Fi
- O gateway liga-se à rede Wi-Fi em menos de 30 s depois de um corte de energia, na placa de produção.
- Deixa
- Um registo por requisito: que testes correram, em que build e bancada, e com que resultado.
Testes
O que faz realmente o produto?
- Compara com
- Um veredicto esperado para cada teste, escrito antes da execução.
- Exemplo num gateway Wi-Fi
- O wifi/connect_ping associa-se, obtém um endereço por DHCP e envia quatro pings. Qualquer perda faz o teste falhar.
- Deixa
- Veredictos, logs e mensagens do teste. São as evidências que a verificação e a validação usam.
Requisitos, testes, evidências.Siga um requisito ao longo de uma execução.
Escolha um requisito. O grafo mostra os testes com a sua etiqueta e as evidências que esses testes deixaram no registo da execução.
Requisitos
Testes e verificações
- wifi/connect_ping PASSED
- wifi/reconnect_after_ap_restart PASSED
- update/wifi_credentials_kept FAILED · esperado PASSED
- power/cut_during_update PASSED
- power/cold_boot_x50 PASSED
- delta/listening_ports PASSED
- delta/binary_hardening FAILED · esperado PASSED
- visao/new_findings FAILED · esperado PASSED
Evidências
- Registo da execuçãoExecução 57: árvore de resultados, veredictos face ao trc.xml, parâmetros
- Mensagem do teste0% of the packets to 192.168.4.1 were lost
- Log da consolawpa_supplicant: no network configured, depois da atualização
- Log de energiaTomada 2 desligada durante 2 s e ligada; traço de corrente de um PPK2
- DeltaAs portas em escuta coincidem com a linha de base
- DeltaBinary /usr/bin/agent lacks required mitigation: stack canary
- Visaootp.cpp:20:20 arithm/integer/overflow (MISRA 12.4)
- Visaootp.cpp:31:5 cpp/string/no_null_terminator (MISRA 21.17)
REQ-NET-01 Liga-se à rede Wi-Fi configurada em menos de 30 s
Coberto. Todos os resultados são os esperados.
- Testes
- 2
- Como esperado
- 2
- Inesperados
- 0
- Evidências
- 2
wifi/connect_ping PASSED
wifi/reconnect_after_ap_restart PASSED
REQ-UPD-03 Mantém as credenciais Wi-Fi depois de uma atualização do firmware
Coberto. Há resultados diferentes do esperado.
- Testes
- 2
- Como esperado
- 1
- Inesperados
- 1
- Evidências
- 3
update/wifi_credentials_kept FAILED
power/cut_during_update PASSED
REQ-PWR-02 Arranca e volta a ligar-se depois de um corte de energia
Coberto. Todos os resultados são os esperados.
- Testes
- 2
- Como esperado
- 2
- Inesperados
- 0
- Evidências
- 2
power/cut_during_update PASSED
power/cold_boot_x50 PASSED
REQ-SEC-04 Só escuta nas portas documentadas
Coberto. Todos os resultados são os esperados.
- Testes
- 1
- Como esperado
- 1
- Inesperados
- 0
- Evidências
- 1
delta/listening_ports PASSED
REQ-SEC-05 Os binários são compilados com stack canary
Coberto. Há resultados diferentes do esperado.
- Testes
- 1
- Como esperado
- 0
- Inesperados
- 1
- Evidências
- 1
delta/binary_hardening FAILED
REQ-SW-06 O código OTP não tem overflows nem strings sem terminador
Coberto. Há resultados diferentes do esperado.
- Testes
- 1
- Como esperado
- 0
- Inesperados
- 1
- Evidências
- 2
visao/new_findings FAILED
REQ-LOG-07 Regista o motivo de cada reinício
Não coberto. Nenhum teste da suite tem esta etiqueta.
- Testes
- 0
- Como esperado
- 0
- Inesperados
- 0
- Evidências
- 0
De onde vêm as ligações
- Cada teste da suite tem os IDs dos requisitos que verifica, como etiqueta no package.xml.
- O Test Environment pode executar só os testes de um requisito, por exemplo depois de uma alteração que lhe toca.
- O trc.xml guarda o veredicto esperado de cada teste. O registo da execução guarda o veredicto obtido ao lado.
- O Bublik, o visualizador de resultados onde o Midair pode publicar, filtra os resultados por requisito.
A lista de requisitos fica com a sua equipa, na ferramenta que já usa. O Midair não substitui uma ferramenta de gestão de requisitos.
tests/update/package.xml<script name="wifi_credentials_kept"> <req id="REQ-UPD-03"/> </script> <script name="cut_during_update"> <req id="REQ-UPD-03"/> <req id="REQ-PWR-02"/> </script>./run.sh --cfg=bench-b --tester-req=REQ-UPD-03
O que responde uma execução de validação.Seis perguntas de uma revisão de lançamento.
Cada início no Midair cria um novo registo com a sua própria configuração. O Midair nunca escreve por cima de uma execução, por isso as respostas continuam válidas mais tarde.
- Que build validámos?
- builder.conf.lockO builder.conf.lock fixa o commit exato de cada componente do build.
- Em que bancada, com que definições?
- env.bench-bOs valores da bancada vêm de env.<bench> e run.conf.<bench>, e a execução guarda-os.
- O que esperávamos?
- trc.xmlO trc.xml indica o veredicto esperado de cada teste. Assim, uma falha conhecida não esconde uma nova.
- O que aconteceu?
- árvore de resultadosA árvore de resultados mostra cada teste com os parâmetros, o veredicto obtido, as linhas de erro e as mensagens. O log da consola fica guardado com ela.
- O próprio dispositivo mudou?
- DeltaO Delta compara o dispositivo com uma linha de base: processos, portas, ficheiros, pacotes e o hardening dos binários.
- Que testes existem?
- te-docO te-doc gera um catálogo da suite em HTML ou PDF e um relatório dos resultados.
Quando executar uma validação.Cinco momentos comuns.
- Antes de um lançamento, depois de os componentes passarem nos seus próprios testes.
- Depois de uma grande alteração ao firmware, para ver se o comportamento mudou noutro ponto.
- Depois de uma nova revisão da placa ou de uma nova configuração, com a mesma suite.
- Antes de uma implementação maior, quando mais dispositivos e locais dependem do resultado.
- Quando uma regressão é difícil de explicar, para repetir o registo antigo ao lado do novo.
Perguntas.Respostas curtas.
O que é a validação de sistemas embebidos?
A validação de sistemas embebidos verifica se o dispositivo final cumpre os requisitos e as necessidades dos utilizadores em condições reais. Corre no hardware real, com a rede, a alimentação e os dispositivos que o produto vai encontrar no uso.
Qual é a diferença entre verificação e validação em sistemas embebidos?
A verificação confirma que cada parte cumpre a sua especificação, por exemplo com revisão de código, análise estática ou testes unitários. A validação confirma que o produto montado faz o trabalho certo no seu ambiente real. Os testes produzem as evidências para as duas.
O que são a validação e os testes de programas num sistema embebido?
A validação de programas executa o software embebido no hardware de destino e compara-o com os requisitos. Os testes são o método: cada teste tem um veredicto esperado e a execução regista o que aconteceu de facto.
O Midair faz a rastreabilidade entre requisitos e testes?
Em parte. Os testes de uma suite do Test Environment têm etiquetas de requisitos, e uma execução pode escolher os testes por requisito. O registo da execução guarda os veredictos e as evidências de cada teste. A lista de requisitos fica com a sua equipa, na sua própria ferramenta.
O Midair certifica o meu produto?
Não. O Midair produz evidências: registos de execução, logs, relatórios do Delta e ocorrências do Visao. Um organismo de certificação ou o seu próprio processo decide o que essas evidências provam.
De que preciso para começar?
Um build, uma bancada com o dispositivo e uma lista curta de requisitos que quer verificar antes de um lançamento. O TS Factory pode escrever os primeiros testes a partir de uma descrição curta, e a sua equipa acrescenta as etiquetas dos requisitos.
Comece por um requisito.Depois acrescente o seguinte.
Traga um build, uma bancada e o requisito que mais o preocupa. O Midair regista cada execução, por isso as evidências estão lá no momento do lançamento.
Iniciar o seu piloto