Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Introdução
Softwares para computadores de bordo de satélites são reativos por natureza, pois
respondem a estímulos ou eventos. Este tipo de software é também complexo devido a
sua forte interação com o hardware do computador, sensores, atuadores e outros
dispositivos presentes em satélites. Além disso, é de difícil substituição em caso de
falhas devido ao aspecto não pilotado da missão [Santiago et at. 2006]. Desta forma, o
processo de verificação e validação assume papel importante durante todo o ciclo de
vida desse tipo de software.
O processo de verificação e validação tem como objetivo assegurar que o
software cumpra com suas especificações e atenda às necessidades para o qual está
sendo desenvolvido. Este processo deve estar ativo durante todo o ciclo de vida do
software, começando com as revisões de requisitos e continuando com as revisões de
projeto e as inspeções de código até chegar aos testes [Sommerville 2003].
A finalidade dos testes de software é expor defeitos latentes em um sistema
antes que o mesmo seja colocado em produção. A idéia básica da atividade de teste
envolve a execução do software e a observação do seu comportamento e de suas saídas.
Caso uma falha seja observada, o contexto da execução é armazenado e analisado para
que seja possível encontrar e corrigir os defeitos que causaram a falha. Um teste é
considerado bem sucedido se consegue expor um defeito do sistema, fazendo que o
mesmo opere incorretamente. É importante destacar que os testes são capazes apenas de
indicar a presença e nunca a ausência de defeitos em software.
Os testes funcionais (conhecidos como testes de caixa preta) consistem em uma
abordagem na qual, os testes são derivados da especificação do software. A
funcionalidade foco do teste é encarada como uma “caixa-preta” cujo comportamento só
pode ser avaliado por meio da comparação das saídas obtidas em relação às saídas
desejadas para entradas conhecidas [Sommerville 2003].
Testes estruturais (conhecidos como testes de caixa branca) são derivados do
conhecimento da estrutura e da implementação do programa. De maneira geral, esse tipo
de teste é aplicado à unidades de programa relativamente pequenas, como métodos ou
funções. O testador nesse caso utiliza os conhecimentos sobre a estrutura da
implementação para derivar os dados para o teste [Sommerville 2003].
É conhecido o fato de que a realização exaustiva de testes de software em
sistemas complexos, como os de aplicação espacial, é impraticável, pois as atividades de
testes consumiriam muito tempo, devido à complexidade desse tipo de software
[Santiago et al 2006]. Dessa forma, torna-se interessante a utilização de técnicas que
permitam a geração automática de casos de teste a partir de especificações formais que
possam ser manipuladas por computador, segundo algum critério de cobertura que
permita a redução da quantidade de casos de testes gerados a um número que seja
possível de ser executado, tentando manter o mais elevada possível a possibilidade de
encontrar erros através do conjunto de casos de testes gerados.
O uso de máquinas de estados finitos como técnica formal de descrição, para
esse fim é bem popular, devido ao fato dessa técnica lidar naturalmente com a
representação de sistemas reativos, que consistem de estados e transições entre estados
através de estímulos também conhecidos como eventos.
Embora, máquinas de estados finitos sejam usadas tradicionalmente para
representação de sistemas reativos, falta nessa técnica, facilidades para representar
características comuns dos sistemas complexos modernos, tais como hierarquia e
paralelismo. Por esse motivo torna-se interessante o uso de técnicas de mais alto nível
que ofereçam essas facilidades e possuam também o formalismo necessário para
possibilitar a manipulação de especificações de sistemas reativos pelo computador, com
o objetivo de geração de casos de teste. Entre essas técnicas de mais alto nível, podemos
citar: Statecharts [Amaral 2005], [Santiago et at. 2006], Redes de Petri [Desel et at.
2007], SDL [Wong 2003], entre outras.
Para gerar automaticamente casos de teste a partir de uma especificação formal,
faz-se necessária a utilização de algoritmos que utilizem critérios de cobertura para a
exploração do espaço de estados. Entre os algoritmos mais utilizados para esta
finalidade, podemos citar: T, UIO, DS, W, Switch Cover, entre outros [Lee et at. 1996],
[Martins et at. 2000], [Myers 1979] e [Pimont et at.1979]. De maneira geral para gerar
casos de teste utilizando essas técnicas, faz-se necessário a representação do sistema
reativo como uma máquina de estados finitos, dessa forma, caso a especificação esteja
em uma linguagem de mais alto nível como as mencionadas anteriormente, torna-se
necessária a transformação da mesma para máquina de estados finitos.
Este artigo tem como objetivo abordar uma técnica de geração de casos de teste
de caixa preta, a partir de especificações em SDL, através de um framework denominado
J-SDL. Este framework possibilita a simulação do comportamento de sistemas
especificados em SDL, em termos de mudança de estado, e também a geração
automática e direta (dispensando a transformação para maquina de estados finitos) de
casos de teste, a partir de algoritmos de exploração de estados que possam implementar
ou não algum critério de cobertura.
Referências
Amaral, A. S. (2005). Geração de casos de teste para sistemas especificados em
statecharts. Dissertação de Mestrado em Computação Aplicada - INPE, São José dos
Campos, p. 164.
Arantes, A. O., Vijaykumar, N. L. , Santiago, V. A. , Carvalho, A. R. (2008) Automatic
Test Case Generation through a Collaborative Web Application. In IASTED-
EuroIMSA, 2008, Innsbruck. Proceedings of the IASTED International Conference
Internet & Multimedia Systems & Applications. Calgary : IASTED, p. 27-32.
Desel, J., Oberweis, A., Zimmer, T. (1997). A test case generator for the validation of
high-level Petri nets. In 6th International Conference on
Emerging Technologies and Factory Automation Proceedings, p. 327 – 332.
Ellsberger, I., Hogrefe, D., Sarma, A.(1997), “SDL: Formal Object-oriented Language
for Communicating System”, Upper Saddle River: Prentice Hall Europe, 2ª Edição.
312 p. ISBN 0-13-632886-5.
Henniger, O., Hasan, U. (2000), Test generation based on control and data dependencies
within multi-process SDL specifications. In 2nd Workshop of the SDL Forum Society
on SDL and MSC (SAM 2000), Grenoble, França.
ITU (2002) “ITU-T recomendation Z100: Specification and Description Language
SDL”, http://www.itu.int/ITU-T/studygroups/com17/languages/Z100.pdf, Março.
Lee, D. e Yannakakis, M. (1996) “Principles and Methods of Testing Finite State
Machines – A Survey”. In Proceedings of the IEEE, p. 84-88.
Martins, E., Sabião, S. B. e Ambrósio, A. M. (2000) “ConData: a tool for automating
specification-based test case generation for communication systems”. In 33rd Hawaii
International Conference on System Sciences.
Myers, G. J. (1979) “The art of software testing”, John Wiley &Sons, 1th edition, New
York, USA .
Pressman, R. S. (2000),”Software engineering: a practitioner's approach, McGraw-Hill
International Editions”, 5th edition.
Pimont, S. e Rault, J.C. (1979). An approach towards reliable Software. In 4th
International Conference on Software Engineering, Munich, Germany, p. 220-230.
Santiago, V., Amaral, A. S. M., Vijaykumar, N.L., Mattiello-Francisco, M. F., Martins,
E., Lopes, O.C. (2006), A Practical Approach for Automated Test Case Generation
using Statecharts. In Second International Workshop on Testing and Quality
Assurance for Component-Based Systems (TQACBS 2006) in the IEEE International
Computer Software and Applications Conference (COMPSAC 2006), Vol. II, p.183-
188, Chicago, EUA.
Schimitt, M., Ek, A., Grabowskij., Hogrete, D. e Kock, B. (1998) Autolink – Putting
SDL-based test generation into practice. In IFIP TC6 11th International Workshop
on Testing Communicating Systems, p.227-244.
Sommerville, I. (2003), “Software engineering”, Harlow: Addison Wesley, 6ª Edição, p.
592.
Wong, W. E., Sugeta T., Qi Y. e Maldonado J. C. (2005). Smart debugging software
architectural design in SDL, Journal of Systems and Software, Volume 76, Number
1, pp. 15-28.
Wong, W. E., Sugeta T., Li J. J. e Maldonado J. C.(2003).Coverage testing software
architectural design in SDL, Journal of Computer Networks, Volume 42, Issue 3, p.
359-374.
Wong, W. E., Sugeta T. e Maldonado J. C. (2005). Structural and Mutation Testing for
SDL Specifications: A Case Study. In Proceedings of The 6th IEEE Latin-American
Test Workshop (LATW), Salvador, Bahia, Brasil.
Wong, W. E., Sugeta T. e Maldonado J. C. (2004). Mutation Testing Applied to
Validate SDL Specifications. In Proceedings of The 16th IFIP International
Conference on Testing of Communicating Systems (TestCom), Oxford, United
Kingdom, p.193-208.