35

Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Embed Size (px)

Citation preview

Page 1: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007
Page 2: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE

Ana Maria Ambrosio 06/out/2007

Page 3: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Tópicos

• Visão geral do INPE

• Metodologia de teste CoFI

• Aplicação da CoFI no projeto QSEE: lições aprendidas e resultados obtidos

Page 4: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

INPE

Instituto Nacional de Pesquisas Espaciais

Missão: Produzir ciência etecnologia nas áreas espacial edo ambiente terrestre eoferecer produtos e serviçossingulares em benefício doBrasil.

Subordinado ao Ministério de Ciência e tecnologia - MCT

Page 5: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Instalações do INPE

Page 6: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Principais áreas de atuação

Engenharia e Tecnologia Espacial

Ciências espaciais e atmosféricas

Observação da Terra

Previsão de tempo e estudos climáticos

Laboratório de Integração e Testes

Centro de rastreioe controle de satélites

Page 7: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Áreas favorecidas pelo programa espacial brasileiro no contexto do INPE

energia

ecosistemas

desastres

biodiversidade

agricultura

saúde

clima

Page 8: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Missões espaciais realizadas

MECB – Missão espacial completa brasileira

SCD1/93 SCD2/98 SCD2A/97

CBERS – China-BrazilEarth Resources Satellite

CBERS1/99 CBERS2/03 CBERS2B/07

SACI-1/99

Satélites científicos etecnológicos

SACI-2/99 Satec/03 Mirax -

CBERS3 -CBERS4 -

Page 9: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Metodologia de geração de teste para sistemas embarcados

COFI

Conformidade e Falhas Injetáveis

Page 10: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Motivação

• “Os excelentes resultados de geração automática de teste de software, apresentados pela academia ainda não estão sendo adotados na indústria. “

Fonte: Lai, 2002

Page 11: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Condado

ConDado

senddata (U, SENDrequest) recdata (L, CR)senddata (L, CC) recdata (U, SENDconfirm)senddata (U, DATArequest, “xHn*e”, 2, 14) recdata (L, DT)senddata (L, ACK) recdata (L, DISrequest)senddata (L, DISrequest) recdata(U, DISindication)

Seqüência abstrata de casos de teste

Idle

WaitConnection

Connected

WaitDisconnection

T1: ?U.SENDrequest !L.CR

T2: ?L.CC !U.SENDconfirm counter := 0

T3: ?U.DATArequest(SDU, NbofSegment, Blkbound) !L.DT(SDU) counter := counter + 1

T5: ?L.DISrequest !U.DISindication

T4: ?L.ACK counter > Blkbound !L.DISrequest

inicial(Idle)trans(Idle,t1,WCon,L0,Ln):-

transmitu(‘SENDr',L2,Ln).receiveu(‘CR',L0,L1),

trans(WCon,t2,C,L0,Ln):-transmit(‘CC’,L2,Ln).

receiveu(‘SEND',L0,L1),

...

Geração automática de teste a partir de FSM/EFSM

Page 12: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Dificuldades

• teste de conformidade com geração automática:

– baseada em métodos formais,– requer um modelo formal completo que

represente o comportamento do software difícil de ser obtido

– pode gerar um número intratável de casos de testes

Page 13: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

CoFI- Conformidade e Falhas Injetáveis

• Sistematizar a criação de casos de testes

• Atender necessidades de teste de software em aplicações espaciais

• Fazer uso das técnicas e ferramentas de geração automática de teste a partir de FSM/EFSM

• Incluir a técnica de injeção de falhas

Objetivo:

Page 14: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Visão geral da CoFI

Passos de

transformação da

descrição do

software

diagramas UMLTest Engine

Sistema de Teste Sistema em Teste

FIMFICUTLT

...

Canal de teste ...Canal de teste

Pontos de Controle e

Observação

Passive FerryActive Ferry

Ferry Channel

UUTRoteiro

Executável

Descrição formal

do software

FinNOK( f )<f1>----------------------------TM( FinFail_rep(f ))

TC(...)----------------------a1: verifica sintaxe

do pacote TC

StartOK [bit2=1]----------------------------TM(StartSucc_rep)

PrNOK(p, f) <f1>-----------------------------TM(PrFail_rep(p, f))

PrOK(p) [bit1=1]---------------------------TM(PrSucc_rep(p))

TC Inicializ

ado

TC Aceito

TC recebid

o

AccOK [bit3=1]-----------------------------

TM(AccSucc_rep)a9: avaliar viabilidade

de execução

ViabiliddNOK( f )----------------------------TM(StartFail_rep( f ))

Sintaxe correta

ViabiliddOK------------------------------a8: disparar execução

Inicial

StartNOK( f )<f1>----------------------------TM( StartFail_rep(f ))

FinNOK( f )<f1>----------------------------TM(FinFail_rep(f ))

Seqüência Teste

Casos de teste

Casos de falha

Especificações textuais

Arquitetura de teste

Page 15: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

1. SERVIÇO /propósitos de teste

CENÁRIOS NORMAIS CENÁRIOS EXCEPCIONAIS

5. Diagrama Seqüência Normal

6. Diagrama Estados Normal

10. Diagrama Seqüência Excepcional

Seqüência de teste CoFI

2. Usuários, meio físico

8. Matriz de Transições

3. Entradas, Saídas, Arq. Teste, PCOs

7. Deriva casos de teste 12. Deriva casos de falha

4. Casos de uso

11. Diagrama Estados Excepcional

9. Modelo de Falhas

Definição do contexto da IUT

Transformações

Geração automática

Passos da CoFI

Page 16: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Decomposição do SuT na CoFI

Por serviço (ou por propósito de teste), que por sua vez é dividido em cenários

Por tipo de comportamento: – normal;– exceções especificadas, – caminhos furtivos (entradas inoportunas) – tolerância a falhas (falhas provocadas pelo hardware)

Page 17: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Modelos parciais do comportamento

Serviços

Tipo de comportamento

Tolerância à Falhas

Caminhos Futivos

Exceções especificadas

Normal

S1 S2 S3 Sn...

Page 18: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Aplicação da CoFI no projeto

QSEE – Qualidade de Software Embarcado em aplicações Espaciais :

lições aprendidas e resultados obtidos

Page 19: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Projeto QSEE Qualidade de Software Embarcado em aplicações Espaciais

• Transferência de tecnologia do INPE para a indústria nacional de software

• Uso das normas ECSS pela Ciências Espaciais e Atmosféricas (CEA/INPE) no desenvolvimento de software de cargas úteis de satélite

• Desenvolvimento de um processo de aceitação de software para o INPE apoiado na abordagem de Verificação e Validação Independente de Software

Objetivos:

Page 20: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

SWPDC - aplicação em teste

• software embedded in an Payload Data handling Computer that controls scientific experiments on-board of a MIRAX satellite under development at INPE

• C language; Labview

• Main functions:– Scientific data aquisition– housekeeping, test & diagnostic data preparation – error recognition and handling mechanism for commmunication,

memory and processor failures – Communication with OBDH, event processors, thermistors

Page 21: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Ambiente de teste do SWPDC

Page 22: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

`

`

QSEE-TAS EPPs Simulator

SWPDC embarcado Na placa do PDC

Watchdog simulationMem. error

Restrições,Facilidades de Teste

Modelo de falhas de hardware: memória, processador comunicação

Page 23: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Ambiente de teste no INPE

Page 24: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Criação dos modelos de estado

Segurança Aguardando Adq E!

CmdPararAquisicaoDadosRspCmdRec

SegurançaDesligando CmdMudarModoNom,Tipo,00

ObsTimeoutObsDispararTimer8184ms

ObsFim8184ms

CmdTransmDadosCientRspNenhumDado

ObsDispararTimer8184s

Segurançacom

dados E!

Nominal Adq

CmdPararAquisicaoDadosRspCmdRec

ObsInterrAqsDdoCient

CmdMudarModoSegRspCmdRec

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer5s

ObsFim5s

NominalAdq Sem

dados

NominalNaoAdqCom 2pc

CmdTransmDadosCient,Tipo,00ObsTimeout

NominalNaoAdqSem pc

CmdTransmDadosCientRspDadosCient,CSR,1

NominalAdq com

dados

CmdTransmDadosCientRspNenhumDado

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer8184ms

ObsFim8184ms

Nominal Aguardando Adq

880s

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer880s

ObsFim880sObsRelatoBuffer90%

ObsSobrepDadosCient

Nominal Aguardando Adq

800sCmdMudarModoNom

RspCmdRecObsIniciaAqsDdoCientObsDispararTimer800s

NominalCom

Dados

ObsFim800s

CmdTransmDadosCientRspDadosCientObsAtéCSR,0

Segurança

EPP OFFObsLigarPDC

ObsDispararTimer60s

ObsFim60s

ObsFim30s

LigandoEPPs

CmdLigarEPP1RspCmdRec

CmdLigarEPP2RspCmdRec

ObsDispararTimer30s

SegurançaEPPs ON

ObsDesligarPDC ObsPDCDesligado

Nominal Prep.HK

CmdPrepDadosHKRspCmdRec

Aguarda cmd

Tx-HKCmdTransmDadosHK(2X)RspDadosHK

ObsHKParaVerRelatos

S1

S2

S3...

Sn

EspecificaçãoServiços

Modelos

Tipos de comportamento

Entradas/Saídas

(Norm)

(SExc)

(SPat)

(M&Pr)

Nomes dos eventosComandos para o injetor de falhas

Tipos de falhas de hw, parâmetros, temporizadores

Test Environmnt

QSEE-TAS PDC

SWPDC

EPPsSim

Ambiente de teste

Page 25: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Tipos de falhas x entradas/saídasDados corrompidos CmdTurnOnEPP2,CKS{badcks}

CmdPrepMemoryDumpData,Mem,18,EndI,8000,EndF,FFFF

Comando repetido CmdTransTestData_2X

Comando fora-de-ordem

Comando truncado CmdTurnOffEPP1,NU,{sup}

Comando atrasado ou adiantado

ObsEndT

Erro simples ObsSingleError

Erro duplo ObsDoubleError

Primeira ocorrência da falha de processador

ObsErrorProc1

Segunda ocorrência da falha de processador

ObsErrorProc2

Comunicação

Memória

Processador

Page 26: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

S4 - serviço Dados de teste – M&Pr

CmdTurnOnPDC ObsStartTimer60s

ObsEnd60s

CmdTurnOnEPP1 RspCmdRec

CmdTurnOnEPP2 RspCmdRec

ObsStartTimer30s

ObsEnd30s

ObsErrorProc1 ObsWriteHKReport

CmdPrepTestData RspCmdRec

ObsStarTimer10s

ObsDoubleError ObsWriteHKReport

ObsEnd10s

CmdTransmTestData

RspTestData,CSR,1

ObsSingleError ObsCorrectError

ObsWriteHKReport

ObsErrorProc2 ObsWriteHKReport

ObsReset

CmdTransmCientData

RspNoData

ObsTurnOffPDC ObsPDC_Off

Page 27: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Derivação de casos de teste e casos de falhas

MME para edição

Condado para

geração

Arquivo de saída CTest.seq

`

Type_OK-------------

a2:próximo

Sub-type_OK

----------------a2: próximo

Cksum_OK---------------a3: analisaresposta

Apid_OK------------------a2: próximo

AppData_OK-------------------a2: próximo

Subtipocorreto

Tipocorreto

DadoAplaceito

Verificando

campos

APIDcorreto

Comprimentocorreto

Lenght_OK---------------a2:próximo

InicialTC(...)-----------------------a1: verifica sintaxe

do pacote TC

AccOK [N=0 ^ bit3=0]----------------------------

-

AccOK [N=0 ^ bit3=1]-----------------------------

TM(AccSucc_rep)

Campos

corretos

CmdDesc----------------------------TM( StartFail_rep( f ))

TC(...)----------------------a1: verifica sintaxe

do pacote TC

StartOK [N>1 ^ bit2=1]----------------------------TM(StartSucc_rep)

CmdDesc-----------------------------TM(PrFail_rep( p, f ))

PrOK(p) [N>2 ^ bit1=1]---------------------------

TM(PrSucc_rep)

PrOK(p) [p<N ^ bit1=0]-----------------------TM(PrSucc_rep)

TcInicializa

do

TCAceito

Execução em

Progresso

Final

TCrecebid

o

CmdDesc----------------------------TM(FinFail_rep( f ))

PrNOK(p, f )-----------------------------TM(PrFail_rep( p, f ))

AccOK [N=0 ^ bit3=1]-----------------------------

TM(AccSucc_rep)a4: avaliar viabilidade

de execução

ta----------------------------TM( StartFail_rep( f ))

Sintaxecorreta

ViabiliddOK---------------

respostainicial

atrasada

Resposta final

atrasada

Resposta prog

atrasada

tb----------------------------TM( StartFail_rep( f ))

ta----------------------------TM( PrFail_rep( f ))

tb----------------------------TM( PrFail_rep( f ))

ta [p<N]----------------------------TM( PrFail_rep( f ))

ta [p=N]----------------------------TM( FinFail_rep( f ))

tb--------------------------TM( FinFail_rep( f )) Inicial

Type_OK-------------

a2:próximo

Sub-type_OK

----------------a2: próximo

Apid_OK------------------a2: próximo

AppData_OK-------------------a2: próximo

Subtipocorreto

Tipocorreto

DadoAplaceito

verificando

campos

APIDcorreto

Comprimentocorreto

Lenght_OK---------------a2:próximo

Apid_NOK(*)-------------------------TM(AccFail_rep(0))

Lenght_NOK------------------------TM(AccFail_rep(1))

Type_NOK----------------------TM(AccFail(3))

Sub-type_NOK----------------------TM(AccFail(4))

AppData_NOK----------------------TM(AccFail(5))

Cksum_NOK----------------------TM(AccFail(2))

Inicial

TC(...)------------------------a1: verifica sintaxedo pacote TC

final

SExc M&P

CmdDesc----------------------------TM( StartFail_rep( f ))

TC(...)----------------------a1: verifica sintaxe

do pacote TC

StartOK [N>1 ̂bit2=1]----------------------------TM(StartSucc_rep)

CmdDesc-----------------------------TM(PrFail_rep( p, f ))

PrOK(p) [N>2 ̂bit1=1]---------------------------

TM(PrSucc_rep)

PrOK(p) [p<N ̂bit1=0]-----------------------TM(PrSucc_rep)

TcInicializa

do

TCAceito

Execução em

Progresso

Final

TCrecebid

o

CmdDesc----------------------------TM(FinFail_rep( f ))

PrNOK(p, f )-----------------------------TM(PrFail_rep( p, f ))

AccOK [N=0 ̂ bit3=1]-----------------------------

TM(AccSucc_rep)a4: avaliar viabilidade

de execução

ta----------------------------TM( StartFail_rep( f ))

Sintaxecorreta

ViabiliddOK---------------

respostainicial

atrasada

Resposta final

atrasada

Resposta prog

atrasada

tb----------------------------TM( StartFail_rep( f ))

ta----------------------------TM( PrFail_rep( f ))

tb----------------------------TM( PrFail_rep( f ))

ta [p<N]----------------------------TM( PrFail_rep( f ))

ta [p=N]----------------------------TM( FinFail_rep( f ))

tb--------------------------TM( FinFail_rep( f )) Inicial

SPat

Segurança Aguardando Adq E!

CmdPararAquisicaoDadosRspCmdRec

SegurançaDesligando CmdMudarModoNom,Tipo,00

ObsTimeoutObsDispararTimer8184ms

ObsFim8184ms

CmdTransmDadosCientRspNenhumDado

ObsDispararTimer8184s

Segurançacom

dados E!

Nominal Adq

CmdPararAquisicaoDadosRspCmdRec

ObsInterrAqsDdoCient

CmdMudarModoSegRspCmdRec

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer5s

ObsFim5s

NominalAdq Sem

dados

NominalNaoAdqCom 2pc

CmdTransmDadosCient ,Tipo,00ObsTimeout

NominalNaoAdqSem pc

CmdTransmDadosCientRspDadosCient,CSR,1

NominalAdq com

dados

CmdTransmDadosCientRspNenhumDado

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer8184ms

ObsFim8184ms

Nominal Aguardando Adq

880s

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer880s

ObsFim880sObsRelatoBuffer90%

ObsSobrepDadosCient

Nominal Aguardando Adq

800sCmdMudarModoNom

RspCmdRecObsIniciaAqsDdoCientObsDispararTimer800s

NominalCom

Dados

ObsFim800s

CmdTransmDadosCientRspDadosCientObsAtéCSR,0

Segurança

EPP OFF

ObsLigarPDCObsDispararTimer60s

ObsFim60s

ObsFim30s

LigandoEPPs

CmdLigarEPP1RspCmdRec

CmdLigarEPP2RspCmdRec

ObsDispararTimer30s

SegurançaEPPs ON

ObsDesligarPDC ObsPDCDesligado

Nominal Prep.HK

CmdPrepDadosHKRspCmdRec

Aguarda cmd

Tx-HKCmdTransmDadosHK(2X)RspDadosHK

ObsHKParaVerRelatos

Type_OK-------------

a2:próximo

Sub-type_OK

----------------a2: próximo

Apid_OK------------------a2: próximo

AppData_OK-------------------a2: próximo

Subtipocorreto

Tipocorreto

DadoAplaceito

verificando

campos

APIDcorreto

Comprimentocorreto

Lenght_OK---------------a2:próximo

Apid_NOK(*)-------------------------TM(AccFail_rep(0))

Lenght_NOK------------------------TM(AccFail_rep(1))

Type_NOK----------------------TM(AccFail(3))

Sub-type_NOK----------------------TM(AccFail(4))

AppData_NOK----------------------TM(AccFail(5))

Cksum_NOK----------------------TM(AccFail(2))

Inicial

TC(...)------------------------a1: verifica sintaxedo pacote TC

final

CmdDesc----------------------------TM( StartFail_rep( f ))

TC(...)----------------------a1: verifica sintaxe

do pacote TC

StartOK [N>1 ^ bit2=1]----------------------------TM(StartSucc_rep)

CmdDesc-----------------------------TM(PrFail_rep( p, f ))

PrOK(p) [N>2 ^ bit1=1]---------------------------

TM(PrSucc_rep)

PrOK(p) [p<N ^ bit1=0]-----------------------TM(PrSucc_rep)

TcInicializa

do

TCAceito

Execução em

Progresso

Final

TCrecebid

o

CmdDesc----------------------------TM(FinFail_rep( f ))

PrNOK(p, f )-----------------------------TM(PrFail_rep( p, f ))

AccOK [N=0 ^ bit3=1]-----------------------------

TM(AccSucc_rep)a4: avaliar viabilidade

de execução

ta----------------------------TM( StartFail_rep( f ))

Sintaxecorreta

ViabiliddOK---------------

respostainicial

atrasada

Resposta final

atrasada

Resposta prog

atrasada

tb----------------------------TM( StartFail_rep( f ))

ta----------------------------TM( PrFail_rep( f ))

tb----------------------------TM( PrFail_rep( f ))

ta [p<N]----------------------------TM( PrFail_rep( f ))

ta [p=N]----------------------------TM( FinFail_rep( f ))

tb--------------------------TM( FinFail_rep( f )) Inicial

Segurança

EPP OFF

NominalNaoAdq

ObsDesligarPDC ObsPDCDesligado

Iniciação

Standby

ObsLigarPDCObsDispararTimer60s

ObsFim60s

ObsFim20s

Nominal Aguardando Adq

CmdPararAquisicaoDadosRspCmdRec

ObsInterrAqsDdoCient

CmdMudarModoSegRspCmdRec

LigandoEPPs

SegurançaAguardan

do

SegurançaEPPs ON

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer10s

ObsFim10sCmdTransmDadosCient

RspDadosCientObsDispararTimer10s

Nominalcom

dados

CmdLigarEPP2RspCmdRec

ObsDispararTimer10s

CmdMudarModoNomRspCmdRec

ObdDispararTimer20s

CmdTransmDadosCientObsNenhumDado

ObsDisparaTimer20s

SegurançaAguardan

do 10s

ObsFim10s

CmdReiniciarAquisicaoObsTimeout

CmdReiniciarAquisicaoRspCmdRec

CmdPararAquisicaoDadosRspCmdRec

Nominal Aguardan

do

ObsFim20sObsIniciaAqsDdosCientObsDispararTimer10s

Segurança Aguardando Adq E!

CmdPararAquisicaoDadosRspCmdRec

SegurançaDesligando CmdMudarModoNom,Tipo,00

ObsTimeoutObsDispararTimer8184ms

ObsFim8184ms

CmdTransmDadosCientRspNenhumDado

ObsDispararTimer8184s

Segurançacom

dados E!

Nominal Adq

CmdPararAquisicaoDadosRspCmdRec

ObsInterrAqsDdoCient

CmdMudarModoSegRspCmdRec

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer5s

ObsFim5s

NominalAdq Sem

dados

NominalNaoAdqCom 2pc

CmdTransmDadosCient ,Tipo,00ObsTimeout

NominalNaoAdqSem pc

CmdTransmDadosCientRspDadosCient,CSR,1

NominalAdq com

dados

CmdTransmDadosCientRspNenhumDado

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer8184ms

ObsFim8184ms

Nominal Aguardan

do Adq 880s

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer880s

ObsFim880sObsRelatoBuffer90%ObsSobrepDadosCient

Nominal Aguardan

do Adq 800s

CmdMudarModoNomRspCmdRec

ObsIniciaAqsDdoCientObsDispararTimer800s

NominalCom

Dados

ObsFim800s

CmdTransmDadosCientRspDadosCientObsAtéCSR,0

Segurança

EPP OFF

ObsLigarPDCObsDispararTimer60s

ObsFim60s

ObsFim30s

LigandoEPPs

CmdLigarEPP1RspCmdRec

CmdLigarEPP2RspCmdRec

ObsDispararTimer30s

SegurançaEPPs ON

ObsDesligarPDC ObsPDCDesligado

Nominal Prep.HK

CmdPrepDadosHKRspCmdRec

Aguarda cmd

Tx-HKCmdTransmDadosHK(2X)RspDadosHK

ObsHKParaVerRelatos

Norm

Modelos

Page 28: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

File.seq

Arquivo com casos de teste de uma máquina

Page 29: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Resultados

11 serviços foram definidos

97 modelos gerados

770 casos de teste

51 erros

Page 30: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Serviços Modelos

Norm SExc SPat Com M&Pr Total

S1 Inicialização 2 1 1 1 1 6

S2 Dados Científicos 2 2 1 1 1 7

S3 Dados de Housekeeping 3 3 3 1

111

S4 Dados de Teste 2 4 4 1 1 12

S5 Dados de Diagnóstico 2 4 4 2 2 14

S6 Descarga de Memória 5 3 5 2 1 16

S7 Mudança de modo de operação 1 0 0 0

12

S8 Carga e execução de programa 1 5 4 3

215

S9 Sintaxe de mensagem do OBDH 1 0 0 1

02

S10 Sintaxe de mensagem dos EPPs 1 0 0 1

02

S11 Comandos Especiais4 0 0 2 4 10

Total 24 24 22 13 14 97

Page 31: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Casos de falha

Tipo de falha de hw Casos de falha Erros

Comunicação 283 31

Processador 80 5

Memória 88 3

Total 451 39

319 normais

451 Casos de falha

12

39770 casos

51 erros

Page 32: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Comentários sobre os resultados do projeto QSSE

Os resultados surpreenderam com 51 erros ainda encontrados

Considerando que a validação se deu sobre um software fornecido por uma empresa Brasileira de Software proeminente, desenvolvido por uma equipe competente sob rigorosas regras de garantia de qualidade

45% erros de código 33% erros de não-conformidade nos documentos 22% ambos

Considerando que todas as não-conformidades entre código e documentos foram computadas.

Atenção às falhas é mais efetivo que no comportamento normal para a validação

Page 33: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Lições aprendidas – CoFI em um caso real

O esforço de criar os modelos foi compensado pela superior

organização dos testes alcançada com a aplicação da metodologia CoFI em comparação com o projeto dos testes de forma ad-hoc

Os modelos voltam a atenção dos testadores para falhas e exceções que podem ocorrer durante a operação do software levando ao projeto de situações que os desenvolvedores normalmente não pensam

Os casos de teste gerados pela Condado são auto-contidos, i.é, cada caso pode ser executado independentemente, desta forma o veredicto não depende da ordem de execução dos casos e facilita a re-execução.

Page 34: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

Comentários sobre a metodologia de teste CoFI

A metodologia CoFI reduz a distância entre a prática (geração de teste a partir de uma especificação textual) e o uso de métodos formais (especificação em autômatos)

É de fácil aprendizagem e permite automação dos passos, pois usa modelos UML

Possibilita reuso em teste, porque a geração parte da especificação

Orienta a definição de experimentos determinísticos para Injeção de Falhas

Page 35: Metodologia de geração de teste para sistemas embarcados – uma experiência no INPE Ana Maria Ambrosio 06/out/2007

[email protected]

Sputnik – 1º satélite artificial a orbitar a terra - USRR 1957

Estação Espacial Internacional

Construção 1998 - 2005