Inserção das Melhores Práticas de Teste de Software no Ciclo de Desenvolvimento de Sistemas Embarcados Automotivos

Documentos relacionados
SAMUEL HEITOR DE CAMARGO LOURENÇO INSERÇÃO DAS MELHORES PRÁTICAS DE TESTE DE SOFTWARE NO CICLO DE DESENVOLVIMENTO DE SISTEMAS EMBARCADOS AUTOMOTIVOS

Fundamentos em Teste de Software. Vinicius V. Pessoni

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Projeto de Sistemas I

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Protocolo de comunicação para redes móveis aplicado ao trânsito

PROFESSOR: CRISTIANO MARIOTTI

Processos de Desenvolvimento de Software

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Tipos de teste de software

Processo de Desenvolvimento de Sites

Qualidade de Software. Profa. Cátia dos Reis Machado

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

Abordagem de Processo: conceitos e diretrizes para sua implementação

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

ENGENHARIA DE SOFTWARE I

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

GARANTIA DA QUALIDADE DE SOFTWARE

Engenharia de Software

ENQUALAB 2013 QUALIDADE & CONFIABILIDADE NA METROLOGIA AUTOMOTIVA. Elaboração em planos de Calibração Interna na Indústria Automotiva

Engenharia de Software

PROJETO Pró-INFRA/CAMPUS

Suporte a redes CAN para Aplicações Embarcadas

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

Introdução à Computação

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Metodologia para Planejamento, Execução e Controle de Teste de Software. Roteiro

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Engenharia de Software I

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

PRÓ-REITORIA DE EXTENSÃO, PESQUISA E INOVAÇÃO DIRETORIA DE PESQUISA E INOVAÇÃO Proposta de Projeto de Pesquisa

INTEGRAÇÃO DE APLICAÇÕES UTILIZANDO WEB SERVICE 1. Kellen Kristine Perazzoli 2 ; Manassés Ribeiro 3

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

VISÃO SISTÊMICA EM GERENCIAMENTO DE PROJETOS PARA WEB

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Universidade Paulista

Processos de Software

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

A importância do PDTI na implantação da Governança de TI nas Prefeituras Brasileiras

Técnicas de Caixa Preta de Teste de Software

ISO/IEC 12207: Gerência de Configuração

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

IntroduçãoaoGuia SWEBOK. Ernani Lopes Isensee 2014

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

Testes Orientação Visão Conceitual em Testes Versão 0.3

ERP Enterprise Resource Planning

Universidade Federal de Goiás UFG Campus Catalão CAC Departamento de Engenharia de Produção. Sistemas ERP. PCP 3 - Professor Muris Lage Junior

IW10. Rev.: 02. Especificações Técnicas


Roteiro SENAC. Análise de Riscos. Planejamento do Gerenciamento de Riscos. Planejamento do Gerenciamento de Riscos

Teste de Software. Ricardo Argenton Ramos Engenharia de Software I

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

UFG - Instituto de Informática

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

Chamada de Participação V Competição de Avaliação - IHC 2012

SETIS- III Seminário de Tecnologia Inovação e Sustentabilidade 4 e 5 de novembro de 2014.

Teste de Software Parte 1. Prof. Jonas Potros

Introdução ao Modelos de Duas Camadas Cliente Servidor

6 Construção de Cenários

Carta para a Preservação do Patrimônio Arquivístico Digital Preservar para garantir o acesso

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP

Gerenciamento de projetos.

Feature-Driven Development

4 Segmentação Algoritmo proposto

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

UNIP Ciência da Computação / Sistemas de Informação TED I - Orientações Gerais para Elaboração dos Documentos

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

PROCEDIMENTO DA QUALIDADE

a) Teste das funções do sistema com outros sistemas b) Teste de componentes que em conjunto compõem a função do sistema

Gerenciamento de Riscos do Projeto Eventos Adversos

Introdução ao Design

Especialização em Engenharia de Software e Banco de Dados

SISTEMAS DISTRIBUIDOS

Verificação é um processo para se determinar se os produtos, (executáveis ou

Wilson Moraes Góes. Novatec

3 Qualidade de Software

Introdução a Computação

Análise de Dados do Financeiro

Modelo para Documento de. Especificação de Requisitos de Software

Requisitos de Software

Projeto 2.47 QUALIDADE DE SOFTWARE WEB

Análise e Projeto Orientado a Objetos. Modelagem de Domínio

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Arquitetura dos Sistemas de Informação Distribuídos

Uso do Netkit no Ensino de Roteamento Estático

Transcrição:

Inserção das Melhores Práticas de Teste de Software no Ciclo de Desenvolvimento de Sistemas Embarcados Automotivos Samuel Heitor De Camargo Lourenço 1, Jandira Guenka Palma 1 1 Departamento de Computação Universidade Estadual de Londrina (UEL) Caixa Postal 10.011 86057-970 Londrina PR Brasil samuel.hcl@gmail.com, jgpalma@uel.br Abstract. Embedded systems have characteristics that make them challenging not only in development but also for software testing. Due to these characteristics, coupled with rigorous safety standards to which they are subjected, especially in the automotive environment, its development process requires a specific set of typical test strategies and techniques, sometimes also adapted, as well as additional testing techniques to ensure compliance of the final product to the established technical standards. This paper focuses in the analysis of the existing testing techniques and its application in the automotive embedded software development process, taking into account the feasibility of application of these techniques due to the peculiar characteristics of the system under consideration. Resumo. Sistemas embarcados possuem características que os tornam desafiadores não só em seu desenvolvimento, mas também para o teste de software. Devido à essas características, aliadas à rigorosas normas de segurança às quais são submetidos, principalmente no meio automotivo, seu processo de desenvolvimento requer um conjunto específico e até mesmo adaptado das técnicas e estratégias típicas de teste, bem como técnicas adicionais de teste para garantir o atendimento do produto final às normas técnicas estabelecidas. O foco deste trabalho de conclusão de curso é a análise das técnicas de teste de software existentes, e a aplicação destas técnicas no processo de desenvolvimento de software embarcado automotivo, levando em conta a viabilidade de aplicação dessas técnicas, devido às características peculiares do sistema em questão. 1. Introdução Os sistemas embarcados automotivos, em geral, são sistemas de grande especificidade e com software altamente dependente da plataforma de hardware, plataforma esta que pode mudar de acordo com o projeto. Sendo assim, seu processo de desenvolvimento utiliza ferramentas muito específicas, utilizadas principalmente para emulação e simulação. Estas ferramentas também são utilizadas no desenvolvimento dos testes de software, que são de extrema importância para a verificação, devido à criticidade do produto, que é regido por leis e normas de qualidades específicas para a indústria automotiva. No entanto, certas técnicas de teste têm de ser adaptadas para aplicação no sistema, com algumas delas não sendo possíveis de aplicação.

Além da análise das técnicas de teste de software existentes, e a viabilidade de aplicação destas técnicas no processo de desenvolvimento de software embarcado automotivo, este trabalho também irá propor soluções visando a possibilidade de automação dos testes e analisará a inserção destas técnicas de teste no decorrer do desenvolvimento do software, com o objetivo de diminuir o retrabalho e a latência entre a identificação de uma anomalia e sua correção, bem como de aumentar a qualidade do software desenvolvido. 2. Fundamentação Teórico-Metodológica e Estado da Arte Para compreender qual técnica de teste é mais adequada para cada característica de um sistema embarcado automotivo e para melhor aplicá-las durante o ciclo de desenvolvimento é preciso entender os conceitos fundamentais de teste de software, as estratégias utilizadas para se testar o software, bem como as características dos sistemas embarcados automotivos. Sendo assim, com os conceitos mostrados abaixo nesta seção, será desenvolvido este trabalho. 2.1. Técnicas de Teste de Software Segundo Roger S. Pressman [1] o teste de software é um elemento crítico da garantia de qualidade de software. O teste é uma revisão de especificação, projeto e codificação. [7] Neste trabalho serão utilizados os conceitos fundamentais de teste de software. As técnicas fundamentais de teste de software se dividem basicamente em duas abordagens, os testes de caixa branca (white box tests) e os testes de caixa preta (black box tests) descritos a seguir [1]. O teste de caixa branca, também chamado de teste estrutural, é uma técnica onde os casos de teste são derivados com base na estrutura de controle do programa, ou seja, diretamente do código fonte do software. Os testes de caixa branca englobam as seguintes técnicas: Teste de caminho básico: os casos de teste são derivados com o objetivo de executar cada instrução do programa pelo menos uma vez; Teste de condição: esta técnica põe à prova as condições lógicas contidas no código fonte do programa; Teste de fluxo de dados: seleciona os caminhos de teste de acordo com o uso de variáveis; Teste de laços: esta técnica concentra-se exclusivamente na validade de construções de laços. Os testes de caixa preta se concentram nos requisitos funcionais do software, portanto, são derivados diretamente dos requisitos. Nos testes de caixa preta não se considera a estrutura interna, ou seja, não é baseado no código fonte do software. Os testes de caixa preta são executados considerando-se as saídas produzidas para determinado conjunto de entradas. Os testes de caixa preta englobam as seguintes técnicas:

Particionamento de equivalência: técnica que divide as entradas de um programa em classes de dados e os casos de teste são derivados a partir dessas classes, que podem ser um valor numérico, um intervalo de valores ou um conjunto de valores relacionados. Análise de valor limite: os erros tendem a ocorrer com maior frequência nas fronteiras do domínio de entrada. Esta técnica concentra-se no teste destes valores que estão nas fronteiras; Técnicas de grafo causa-efeito: nesta técnica são levantadas as possíveis condições de entrada (que são as causas) e as possíveis ações do programa (que são os efeitos), as causas e os efeitos são relacionados através de um grafo, que é convertido em uma tabela de decisão, de onde são derivados os casos de teste; Testes de comparação: técnica utilizada quando há redundância de hardware ou software, isto é, dois ou mais sistemas semelhantes que trabalham simultaneamente. É feita a comparação entre as saídas geradas em ambos os sistemas para um mesmo conjunto de entrada. Pressman, em [1], ressalta ainda que os testes de caixa preta não substituem os testes de caixa branca. Os testes de caixa preta são uma abordagem complementar pois descobrem erros que não seriam descobertos somente com os testes de caixa branca. Há ainda variações destas abordagens, que utilizam técnicas de caixa preta e caixa branca simultaneamente e são chamadas de teste de caixa cinza. 2.2. Estratégias de Teste de Software As estratégias para aplicação dessas técnicas de teste em um projeto de desenvolvimento de software também serão estudadas neste trabalho. A abordagem clássica, descrita por Pressman [1], descreve como cada etapa de desenvolvimento serve como base para o planejamento de uma correspondente etapa de teste. Molinari, em [9], apresenta essa abordagem como é mais conhecida: o modelo V. As características deste modelo são: A fase de levantamento de requisitos serve como base para os testes de validação, que são testes funcionais de alto nível (caixa preta) onde será avaliado se o software funciona da maneira especificada pelos requisitos; A fase de projeto de sistema serve como base para os testes de integração, que são testes executados após a integração dos módulos do sistema, testando-se interfaces de comunicação entre os módulos; A fase de projeto de módulo serve como base para os testes unitários, que são executados nos módulos individuais do sistema (unidades) e são testes de caixa branca. [4] Ainda outras abordagens, como o Test Driven Development (TDD) sugerem uma mistura entre teste e desenvolvimento. Segundo Kent Beck [3], o objetivo principal do TDD é obter código limpo e que funcione. Para isso, os testes são elaborados primeiro no desenvolvimento e o desenvolvedor já conhece o que será testado antes de iniciar a codificação. Sendo assim, o software é programado para passar nos testes, o que

minimiza os erros encontrados e garante maior conformidade entre requisitos e o software implementado. Para Glenford Myers [2], o teste de software é a execução de um programa com a intenção de descobrir erros. Para ser eficaz, um caso de teste deve ter alta probabilidade de revelar um erro. Sendo assim, um teste bem sucedido é aquele que revela um erro no software. Pressman [1] ainda complementa que o teste não garante a ausência de erros, ele só pode revelar se os defeitos analisados do software estão presentes. 2.3. Sistemas Embarcados Automotivos A definição de um sistema embarcado, segundo Heath [6], é de um sistema desenvolvido para controlar uma função ou um conjunto de funções, baseado em um microprocessador, e que não é projetado para ser programado como os computadores pessoais, que possuem grande interação com o usuário. Nos sistemas embarcados automotivos, o desenvolvimento é feito utilizando-se o sistema operacional OSEK. O objetivo do OSEK é prover uma arquitetura aberta para as unidades de controle distribuídas do veículo. Ele provê uma interface entre o microcontrolador e a aplicação, agindo com uma plataforma e trazendo uma certa medida de reaproveitamento de código para os sistemas embarcados automotivos. [8] A comunicação interna entre as unidades de controle do veículo se dá principalmente através do barramento CAN (Controller Area Network). O CAN é um protocolo que implementa basicamente as duas camadas mais baixas do modelo OSI (Open Systems Interconnection). [5] É um protocolo baseado em mensagens, onde todos os nós da rede recebem todas as mensagens. Cabe a cada nó da rede decidir se a mensagem será descartada, ou será mantida para ser processada. [10] 2.4. Estado da Arte Shrove [11] faz uma abordagem similar ao que é proposto neste trabalho ao descrever em seu artigo os desafios da execução da atividade de testes em sistemas embarcados em geral. O autor elenca os principais desafios do teste de sistemas embarcados como: Separação entre o ambiente de desenvolvimento e a plataforma de execução; Uma vasta quantidade de arquiteturas diferentes; Poucos recursos computacionais e restrições de tempo de execução nas plataformas de sistemas embarcados; Padrões rigorosos de qualidade e segurança; Inexperiência dos testadores neste tipo de teste. Para atacar estas dificuldades e propor maneiras minimizá-las e até de solucionálas, Shrove se vale das técnicas típicas de teste de software descritas anteriormente nesta seção, bem como de técnicas atípicas de teste que envolvem hardware e são aplicáveis a software embarcado devido a sua característica de estar estreitamente atrelado ao hardware. Estas técnicas incluem teste de drivers de hardware e de pacotes de suporte ao

hardware utilizado (Board Support Package, BSP), teste de middleware, que é uma porção do software desenvolvida por terceiros geralmente com propósitos de arquitetura de sistema como gerenciamento de eventos e de memória e protocolos de comunicação, e finalmente, o teste do hardware em si, que envolve testes de placas impressas de circuito e testes de consumo de energia. [11] 3. Objetivos O objetivo geral deste trabalho de conclusão de curso é identificar e aplicar as técnicas de teste de software que são mais adequadas no ciclo de desenvolvimento de software embarcado automotivo. Para o detalhamento mais preciso dos objetivos deste trabalho, elencamos os seguintes objetivos específicos: Estudar as diversas técnicas de teste de software existentes e as estratégias de inserção dessas técnicas no ciclo de desenvolvimento de software. Aplicar as técnicas de teste que melhor se enquadram no desenvolvimento de software embarcado automotivo. Esta aplicação se dará levando-se em conta a especificidade do sistema, as características peculiares do sistema, tanto de desenvolvimento quanto de atuação do sistema, o que leva à incapacidade ou não de aplicação de uma determinada técnica de teste em questão. Realizar a aplicação das técnicas através de um estudo de caso cujo objeto de estudo será uma Unidade de Controle Eletrônica (Electronic Control Unit, ECU) utilizada em um automóvel, como o painel de instrumentos (também chamado de cluster) ou uma unidade de bloqueio e rastreamento veicular. Propor aplicações de ferramentas mais adequadas para cada característica do sistema, levando-se em conta a possibilidade e viabilidade de automação dos testes. 4. Procedimentos Metodológicos / Métodos e Técnicas Inicialmente haverá um estudo das técnicas de teste de software existentes e das estratégias disponíveis para aplicação dessas técnicas no desenvolvimento de software, a estratégia tradicional e a estratégia de desenvolvimento voltada ao teste. Após isso será estudado e analisado o objeto de estudo: o ciclo de desenvolvimento de software embarcado automotivo, com suas características diferenciadas, padrões de plataforma, protocolos de comunicação, técnicas de teste direcionadas ao produto, que neste trabalho é uma Unidade de Controle Eletrônica (Electronic Control Unit, ECU) utilizada em um automóvel, como o painel de instrumentos (também chamado de cluster) ou uma unidade de bloqueio e rastreamento veicular. Então será feito um estudo de caso onde será proposto a inserção de boas práticas de teste de software durante o desenvolvimento do software, utilizando-se das ferramentas específicas ao software embarcado automotivo, analisando a viabilidade de automação dos testes e sugerindo técnicas práticas, voltadas à realidade do processo de

execução dos testes, para melhora na execução dos testes e aumento da qualidade do software. Como conclusão para o trabalho, serão analisados os resultados obtidos das etapas anteriores. As etapas de desenvolvimento deste trabalho foram divididas da seguinte maneira: 1. Levantamento e revisão da bibliografia. 2. Estudo das Técnicas de Teste de Software. 3. Análise e estudo das estratégias existentes para aplicação das técnicas de teste no decorrer do desenvolvimento do software. 4. Análise e levantamento das características peculiares dos sistemas embarcados automotivos e de seu desenvolvimento. 5. Proposta de inserção das práticas de teste de software mais adequadas a cada característica, no ciclo de desenvolvimento do software. 6. Análise dos resultados obtidos e escrita do trabalho. 7. Conclusão. 5. Cronograma de Execução O seguinte cronograma de desenvolvimento será seguido neste trabalho. As atividades nesta tabela se referem às atividades descritas na seção anterior. Atividade 1 Tabela 1. Cronograma de Execução Abr Mai Jun Jul Ago Set Out Nov X Atividade 2 X X X X Atividade 3 X X X Atividade 4 X X X Atividade 5 X X Atividade 6 X X Atividade 7 X 6. Contribuições e Resultados Esperados A contribuição principal deste trabalho é o estabelecimento de uma base de conhecimento em teste de software embarcado automotivo que seja adaptada à realidade do processo de desenvolvimento do software por levar em conta quais técnicas são mais adequadas ao sistema em questão.

A nível acadêmico, espera-se obter um maior conhecimento sobre todas as técnicas de teste de software existentes e as estratégias utilizadas para a aplicação destas técnicas no ciclo de desenvolvimento de software. Também conhecer mais a respeito do desenvolvimento de sistemas embarcados automotivos. Outro resultado esperado é o estabelecimento de uma base para estudos futuros sobre o tema e o estreitamento dos vínculos entre universidades e as empresas do ramo, visando desenvolvimento tecnológico.

7. Assinaturas Londrina, 15 de abril de 2013. Aluno Samuel H. De C. Lourenço Orientador Jandira Guenka Palma

Referências [1] Pressman, Roger S. (2001) Software Engineering: A Practitioner's Approach, Third Edition, New York. [2] Myers, Glenford J. (2005) The Art of Software Testing, Second Edition, New Jersey. [3] Beck, Kent. (2002) Test Driven Development by Example, Addison Wesley. [4] The Institute of Electrical and Electronics Engineers (1986) IEEE Standard for Software Unit Testing, New York. [5] Lopes, Chris Andrew Confortini (2009) CAN Controller Area Network, Trabalho de Conclusão de Curso, UEL. [6] Heath, Steve. (2003) Embedded Systems Design, Second Edition, Burlington Newness. [7] Campos, Renan Barbosa (2008) Estudo da implantação do teste de software no ciclo de desenvolvimento visando equipes pequenas, Trabalho de Conclusão de Curso, UEL. [8] The Osek Group, (2005) OSEK/VDX Operating System Specification, Version 2.2.3. [9] Molinari, Leonardo. (2008) Testes funcionais de software, Visual Books. [10] Pazul, Keith. (1999) Controller Area Network (CAN) Basics, Microchip Technology. [11] Shrove, Michael T. (2012) Embedded Software Testing: Embedded Testing using Traditional and Non-Traditional Testing Techniques, University of Alabama in Huntsville.