8º Congresso de Pós-Graduação
GERAÇÃO AUTOMÁTICA DE CASOS DE TESTE A PARTIR DE CASOS DE USO
Autor(es)
JOSE EDIELSON MOREIRA MENDES
Orientador(es)
PLÍNIO ROBERTO SOUZA VILELA
1. Introdução
Atualmente quase todos os países fazem uso de sistemas de computadores para realizar suas tarefas diárias (Myers, Sandler et al.,
2004; Ammann e Offutt, 2008). Os canais de comunicação nacionais, até mesmo, industriais e educacionais dependem de sistemas
computacionais (Myers, Sandler et al., 2004; Ammann e Offutt, 2008). As indústrias utilizam softwares nos processos de fabricação
de seus produtos, empresas de telecomunicações dependem quase que integralmente de sistemas computacionais e os órgãos públicos
estão cada vez mais dependentes de sistemas informatizados. Prova disso aconteceu recentemente quando uma pane no sistema de
uma grande empresa de redes de computadores de longa distância provocou a paralisação de serviços de órgãos públicos e de
empresas privadas, tais como bancos, lotéricas, entre outras. Os serviços que não ficaram totalmente paralisados tiveram uma grande
queda de desempenho, devido a pane provocada na rede.
Os sistemas de computação estão cada vez mais presentes no dia a dia das empresas e das pessoas, tornando-as assim cada vez mais
dependentes de tais sistemas. Uma falha em um software pode trazer diversas conseqüências para empresas e pessoas como um todo,
desde pequenos problemas de ordem organizacional e/ou pessoal a prejuízos financeiros(Myers, Sandler et al., 2004).
Sendo assim, torna-se necessário os sistemas serem confiáveis, livres de falhas e com um alto nível de qualidade. Uma das peças
chaves no processo da garantia da qualidade e confiabilidade do software é o teste de software (Tian, 2005). O teste de software tem
por objetivo principal detectar o maior número de defeitos possíveis, a fim de garantir a qualidade e confiabilidade do software
(Myers, Sandler et al., 2004). O teste de software realizado de maneira bem estruturada, embasada em métodos e técnicas
consolidadas, tende a trazer inúmeros benefícios às empresas e às pessoas. Mas, infelizmente, a prática de teste de software é
comumente negligenciada(Myers, Sandler et al., 2004), devido ao custo gerado pela atividade de teste de software(Bertolino, 2007).
Entretanto maior ainda é o custo da não realização da atividade de teste de software.
2. Objetivos
O principal objetivo do projeto foi apoiar o processo de teste de software, com intuito de minimizar custo e tempo na elaboração de
casos de testes e estabelecer uma técnica de especificação de casos de uso com anotações. Para atingir o objetivo, foi criado um
modelo baseado em um meta modelo de caso de uso extraído de (Williams, 2001), que serviu como base para a geração dos casos de
teste executáveis a partir de casos de uso.
Para dar suporte ao processo de geração dos casos de testes executáveis foi desenvolvida uma ferramenta de software com interface
Web, que permitiu de maneira prática e eficiente extrair os dados a partir dos casos de uso anotados.
A ferramenta desenvolvida permite-nos gerar casos de testes executáveis, em formato JUnit, a partir da leitura de casos de usos
escritos em uma linguagem natural e complementados por anotações.
3. Desenvolvimento
Casos de Uso
O caso de uso foi introduzido por Jacobson em 1987 (Jacobson, 2004) e entre 1995 e 1997 foi introduzido na UML (Linguagem de
Modelo Unificado) (Alhir, 2003). Atualmente é uma das técnicas mais utilizadas para especificação de funcionalidades de sistemas
(Alhir, 2003) (Berg van den, Mehmet et al. 1999) (Rumbaugh, Jacobson et al. 2004).
Fundamentalmente o caso de uso é descrito em um formato textual e um diagrama gráfico que é uma espécie de “tabela de conteúdo”
das funcionalidades de um sistema e descreve as relações entre as funcionalidades e entre estas com os usuários externos do sistema
(Rumbaugh, Jacobson et al. 2004).
Geração de Casos de Testes a partir de Casos de Uso
A utilização de diagramas de casos de uso é uma técnica amplamente utilizada na definição dos requisitos funcionais de sistema e sua
correta implementação tem influência direta na qualidade do software(Gutiérrez, Escalona et al., 2008). Sendo assim, é de suma
importância que os casos de uso sejam verificados, a fim de identificar possíveis defeitos inseridos no sistema.
A utilização de casos de uso para geração de casos de testes é um tema que vem crescendo consideravelmente no meio acadêmico,
prova disso é numero artigos que vêm sendo publicado sobre o tema nos últimos anos, a relação de alguns artigos publicados pode ser
obtida em(Gutiérrez, Escalona et al., 2004; Neto, Subramanyan et al., 2007).
Uma maneira de reduzir o esforço e o custo na fase de teste de software, mas ainda assim preservando a sua eficácia, é a geração
automática de casos de teste a partir de artefatos utilizados nas fases iniciais de desenvolvimento de software, tal como o caso de uso
(Somé e Cheng 2008).
Trabalhos Correlatos
Diferentes abordagens têm sido propostas para geração de casos de testes a partir de casos de uso. Dentre as várias abordagens,
podemos destacar duas: (Nebut e Fleurey, 2006) e (Gutiérrez, Escalona, Mejías, Torres et al., 2007), pois são abordagens que geram
scripts de testes executáveis.
A abordagem de Nebut e Fleury (Nebut e Fleurey, 2006), gera casos de testes executáveis, a partir de casos de uso, onde, casos de uso
são descritos no formato de diagramas de atividades e auxiliados por contrato, que são as pré e pós-condições do caso de uso. Um
modelo comportamental é criado no formato de diagramas de seqüência, que é utilizado para a geração dos scripts de testes
executáveis no formato JUnit.
Em Gutiérrez, Escalona, Mejías e Torres (2007), os casos de uso são escritos em um formato textual, utilizando-se de um template,
que serve como base na geração dos possíveis cenários do caso de uso que serão os objetivos de testes. Com o uso do método de
particionamento de classes de equivalência as variáveis de testes são definidas e os testes são então gerados com o uso de uma
arquitetura baseada no JUnit.
Limitações no uso de casos de uso
Alguns autores concordam que um caso de uso pode ser utilizado para derivar casos de testes (Fröhlich e Link 2000; Williams 2001;
Dranidis, Tigka et al. 2003), e que casos de testes gerados a partir de casos de uso podem assegurar que os requisitos do sistema sejam
atendidos (Dranidis, Tigka et al. 2003; Somé e Cheng 2008). Entretanto, o uso de casos de uso para geração de casos de testes tem as
suas limitações, entre elas, estão:
Casos de uso são escritos em uma linguagem natural informal, podendo gerar diferentes interpretações, propensas a erros e
incompletude(Dranidis, Tigka et al. 2003; Somé e Cheng 2008).
Uma segunda limitação é garantir uma cobertura adequada para as seqüências de ações de um caso de uso, ou seja, garantir com que
os casos de testes gerados a partir das seqüências de ações do caso de uso tenham um alto grau de probabilidade de encontrar defeitos
no sistema(Somé e Cheng 2008).
Uma terceira dificuldade é que importantes restrições que definem a seqüencia entre um caso de uso e outro são expressas
implicitamente, ou seja, elas são anotadas informalmente nos casos de uso(Somé e Cheng 2008), o que dificulta a automação e
seleção de um conjunto adequado de casos de teste.
4. Resultado e Discussão
A ferramenta desenvolvida em C Sharp, ASP .Net e SQL Server na plataforma Webe implementou a arquitetura proposta pelo
projeto, que é composta por quatro módulos, o módulo caso de uso, onde ficam as informações dos casos de uso, o módulo
parâmetro, onde são definidas as classes de dados utilizadas nos casos de uso, o módulo dados, onde são definidas as partições de
dados que serão utilizadas na execução dos testes e o módulo teste que agrupa as informações dos outros módulos para asim gerar os
scripts de testes executáveis.
Para testar as funcionalidades da ferramenta, um exemplo de caso de uso com operações básicas de manutenção foi utilizado, o qual
continha as operações de inclusão, exclusão, alteração e consulta. Na realização dos testes a ferramenta se mostrou funcional e prática,
atingindo o objetivo proposto, ou seja, a geração dos scripts de testes executáveis no formato JUnit.
5. Considerações Finais
Como dito anteriormente o uso de caso para geração de casos de testes possuem algumas limitações e tais limitações são encontradas
nas ferramentas citadas na literatura.
Neste projeto a ferramenta desenvolvida apesar de ter sido testada e considerada funcional, carece de um estudo empírico, que avalie
de maneira mais completa e eficaz as suas funcionalidades.
Referências Bibliográficas
Mayers, G. et al (2004). The Art of Software Testing. Wiley. ISBN 0471469122.
Tian, J. (2005). Software Quality Engineering: Testing, Quality Assurance, and Quantifiable Improvement.
Ammann, P. and J. Offutt (2008). Introduction to Software Testing. New York, Cambridge University Press.
Williams, C. E. (2001). Towards a Test-Ready Meta-model for Use Cases. Workshop of the pUML-Group held together with the
UML. 2001, on Practical UML-Based Rigorous Development Methods - Countering or Integrating the eXtremists, GI.
Bertolino, A. (2007). Software Testing Research: Achievements, Challenges, Dreams. 2007 Future of Software Engineering, IEEE
Computer Society.
Alhir, S. S. (2003). Learning UML, O'Reilly & Amp; Associates, Inc.
Jacobson, I. (2004). "Use cases - Yesterday, today, and tomorrow." Software and System Modeling 3(3): 210-220.
Berg van den, K., Mehmet, et al. (1999). Use Cases in Object-Oriented Software Development. Enschede, Universiteit Twente,
AMIDST/CTIT.
Somé, S. S. and X. Cheng (2008). An approach for supporting system-level test scenarios generation from textual use cases.
Proceedings of the 2008 ACM symposium on Applied computing. Fortaleza, Ceara, Brazil, ACM.
Fröhlich, P. and J. Link (2000). Automated Test Case Generation from Dynamic Models. Proceedings of the 14th European
Conference on Object-Oriented Programming, Springer-Verlag.
Nebut, C. and F. Fleurey (2006). "Automatic Test Generation: A Use Case Driven Approach." IEEE Trans. Softw. Eng. 32(3):
140-155.
Dranidis, D., K. Tigka, et al. (2003). Formal modelling of use cases with X-machines. SEEFM'03 - 1st South-East European
Workshop on Formal Methods, Thessaloniki, Greece.
Anexos
Download

8º Congresso de Pós-Graduação GERAÇÃO