ALANO BRANCO UMA METODOLOGIA DE TESTE EXPLORATÓRIO VISANDO AUTOMAÇÃO DE TESTES EM APLICAÇÕES MÓVEIS PARA SMARTPHONES JOINVILLE SC - PDF
ALANO BRANCO UMA METODOLOGIA DE TESTE EXPLORATÓRIO VISANDO AUTOMAÇÃO DE TESTES EM APLICAÇÕES MÓVEIS PARA SMARTPHONES JOINVILLE SC
Download "ALANO BRANCO UMA METODOLOGIA DE TESTE EXPLORATÓRIO VISANDO AUTOMAÇÃO DE TESTES EM APLICAÇÕES MÓVEIS PARA SMARTPHONES JOINVILLE SC"
Gonçalo Santiago Castelo
1 ALANO BRANCO UMA METODOLOGIA DE TESTE EXPLORATÓRIO VISANDO AUTOMAÇÃO DE TESTES EM APLICAÇÕES MÓVEIS PARA SMARTPHONES JOINVILLE SC 2011
2 UNIVERSIDADE DO ESTADO DE SANTA CATARINA UDESC CENTRO DE CIÊNCIAS TECNOLÓGICAS - CCT DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO - DCC ALANO BRANCO UMA METODOLOGIA DE TESTE EXPLORATÓRIO VISANDO AUTOMAÇÃO DE TESTES EM APLICAÇÕES MÓVEIS PARA SMARTPHONES Trabalho de Conclusão de Curso aprovado como requisito para obtenção do grau de Bacharel, no Curso de Graduação em Ciência da Computação na Universidade do Estado de Santa Catarina. Orientador:Prof.Dr.Marco Aurélio Wehrmeister JOINVILLE SC 2011
3 ALANO BRANCO UMA METODOLOGIA DE TESTE EXPLORATÓRIO VISANDO AUTOMAÇÃO DE TESTES EM APLICAÇÕES MÓVEIS PARA SMARTPHONES Trabalho de Conclusão de Curso aprovado como requisito para obtenção do grau de Bacharel, no curso de Graduação em Ciência da Computação na Universidade do Estado de Santa Catarina. Banca Examinadora: Orientador: Prof.Dr. Marco Aurélio Wehrmeister. Universidade do Estado de Santa Catarina, UDESC, Brasil. Membro: Profª. Drª. Carla Diacui Medeiros Berkenbrock. Universidade do Estado de Santa Catarina, UDESC, Brasil. Membro: Prof. M.Sc. Ricardo Ferreira Martins. Universidade do Estado de Santa Catarina, UDESC, Brasil. Joinville SC 2011
4 Dedico esse trabalho de conclusão de curso aos meus amigos e familiares que tornaram possível minha jornada de estudos ao logo da vida. A minha noiva e futura esposa que esteve ao meu lado durante todo esse período.
5 5 AGRADECIMENTOS Agradeço inicialmente a Deus pelo dom da vida e por estar presente sempre. A minha querida família, em especial ao meu pai Onofre e a minha mãe Dalva pelo amor, dedicação, paciência e incentivo em todos os momentos da minha vida. Vocês são meus exemplos de vida. A minha noiva e futura esposa Thaís pela paciência, incentivo e por me fazer uma pessoa cada vez melhor. Ao meu orientador, Prof. Dr. Marco Aurélio Wehrmeister pela confiança, incentivo, amizade e profissionalismo nesses semestres de orientação. Aos demais professores do curso de Ciência da Computação que sempre contribuíram de alguma maneira. Aos meus amigos de longa data que também sempre se preocuparam em saber como estava o trabalho, sempre com palavras de incentivo. Muito Obrigado.
6 6 RESUMO Aplicações móveis fazem parte de nossas vidas cada vez mais e, muitas vezes, perdas significativas são causadas a pessoas por resultados inesperados de tais programas. Isso pode ser evitado ou minimizado desenvolvendo-se um produto de qualidade e, para isso, é indispensável a realização de testes do software. Neste contexto, atividades de teste de software são muito importantes, pois visam identificar erros no software para a sua posterior reparação. Erros podem ser evitados ou reduzidos desenvolvendo-se um produto de qualidade e, para isso, é indispensável a realização de testes durante todo o ciclo de desenvolvimento do software, acarretando em aumento de trabalho e tempo de projeto. A técnica de teste exploratória de software consiste em testar o sistema de forma não-sistemática, sendo eficaz em identificar casos especiais de teste, os quais não são facilmente capturados por técnicas formais. Os resultados de uma sessão de teste exploratório não são necessariamente diferentes dos testes que usam roteiros, e essas duas abordagens de teste são compatíveis e comumente utilizadas por organizações que desenvolvem software. Neste contexto, este trabalho propõe uma metodologia de teste exploratório através da captura de informações na sessão do usuário em aplicações móveis de smartphones. Os dados coletados são analisados e usados para gerar casos de testes, visando a automação da execução destes casos de teste. A metodologia proposta consiste em executar teste exploratório em aplicação móvel em smartphone realizando a captura de informações nas sessões do usuário, visando auxiliar a criação de casos de teste para aplicação em questão. Para validar a metodologia proposta, um estudo de caso foi realizado usando uma aplicação real, o sistema de estacionamento online (SEonline) da cidade de Joinville. Os resultados obtidos demonstram a aplicabilidade da metodologia proposta. Palavras-chave: Teste de software, testes exploratório, teste de roteiro, aplicações móveis, smartphone.
7 7 ABSTRACT Mobile applications are part of our lives. Unexpected results from such programs can cause significant losses to people that use these applications. This harm can be minimized (or even avoided) by developing software with high quality. Hence, to achieve the necessary high quality in mobile applications software, it is indispensable to use testing techniques. The mentioned errors can be avoided or decreased, whether software is tested during the whole development cycle. Exploratory test is a technique consists in testing software in a nonsystematic fashion. It can be very effective in identifying special testing cases, which aren't easily identified and captured by formal techniques. The results of the exploratory test aren't necessarily different from testing techniques that use formal plans. In fact, these approaches are complementary testing techniques, and are usually used by software developer organizations. In this context, this work proposes an exploratory testing methodology that captures user data during the use of smartphones mobile applications. The collected data is analyzed and used to create test cases, aiming at automating the execution of these test cases. The proposed methodology consists in performing exploratory test on mobile applications for smartphones, performing extract information on user sessions. This information is used to assist the creation of test cases for the application under test. To validate the proposed approach, a case study has been conducted using a real-word application, namely the control system of Joinville city s rotating parking (Seonline). The obtained results demonstrate the applicability of the proposed. Keywords: Software testing, exploratory testing, script testing, mobile applications.
8 LISTA DE FIGURAS Figura 1 - Diagrama de atividades da metodologia para testes exploratórios. Fonte SILVA (2009) Figura 2 - Tarefas e entregas do procedimento de teste de funcionalidade e estabilidade. Fonte BACH (2009) Figura 3 - Modelo entidade relacionamento da ferramenta SMTE. Fonte SILVA (2009) Figura 4 - Visão geral da ferramenta LTS-BT. Fonte CARTAXO (2006) Figura 5 - Visão geral do processo de geração de casos de teste automatizados a partir de testes exploratórios. Fonte PETROSKI (2006) Figura 6 Proposta de processo de teste exploratório Figura 7 - Modelo de caso de uso da captura de dados Figura 8 - Código fonte captura XML Figura 9 - Modelo arquivo XML Figura 10 - Estrutura do software Seonline Figura 11 - Tela de Login e Senha do SEOnline Figura 12 - Tela de trabalho monitoras(es) SEOnline Figura 13 - Tela descritiva mensagem SEOnline Figura 14 - Tela do gerenciador demonstrando situação aberta do monitor(a) Figura 15 - Foto smartphone tela de login e senha Figura 16 - Foto smartphone tela principal do sistema Figura 17 - Foto da tela descritiva de mensagem do sistema Figura 18 - Visualização no Gerenciador a mensagem enviada
9 12 LISTA DE TABELAS E QUADROS Tabela 1 - Principais objetivos de teste de software. Adaptado de PETROSKI (2006) Tabela 2 - Guia de cenários de teste. Adaptado de RICARDO (2007) Tabela 3 - Planilha de execução. Adaptado de RICARDO (2007) Tabela 4 - Comparação entre processos das metodologias. Adaptado de SILVA (2009) Tabela 5 - Definição e critérios de avaliação de funcionalidade e estabilidade. Adaptado de BACH (1999) Tabela 6 - Áreas da metodologia para testes exploratórios suportados pela ferramenta SMTE. Adaptado de SILVA (2009) Tabela 7 - Comparativa dos critérios de análise dos trabalhos correlatos... 42
10 13 LISTA DE SIGLAS E ABREVIATURAS TCC XML USB PTF TAFLogger UML LTS-BT SMTE TAF UFs RBC TGF AUT MDL RTMDL PC Trabalho de Conclusão de Curso Extensible Markup Language Universal Serial Bus Phone Test Framework Test Automation Framework Log Unified Modeling Language Labeled Transition System-Based Testing Software de Metodologia Teste Exploratório Test Automation Framework Utility Functions Raciocínio Baseado em Casos Trivial Graph Format Formato Aldebaran Arquivos IBM Rational Rose Arquivos IBM Rational Rose RealTime Computador Pessoal
11 SUMÁRIO 1. INTRODUÇÃO OBJETIVOS Objetivo Geral Objetivos Específicos JUSTIFICATIVA E METODOLOGIA ESTRUTURA DO TRABALHO FUNDAMENTAÇÃO TEÓRICA INTRODUÇÃO TESTE DE SOFTWARE Casos de Teste Fases do Teste Objetivos do Teste TESTE EXPLORATÓRIO TESTE AUTOMATIZADO TRABALHOS CORRELATOS INTRODUÇÃO METODOLOGIAS DE TESTES EXPLORATÓRIOS Metodologia proposta por RICARDO (2007) Metodologia proposta por SILVA (2009) Metodologia de Teste proposto por DALCIN (2007) Procedimento de Teste proposto por BACH (1999) Considerações FERRAMENTA PARA AUTOMATIZAÇÃO DE TESTE Ferramenta SMTE Ferramenta LTS-BT Ferramenta de geração de casos de teste automatizados Considerações METODOLOGIA DE TESTE EXPLORATÓRIO PARA SMARTPHONES INTRODUÇÃO PLANEJAMENTO ESPECIFICAÇÃO DOS CENÁRIOS DOS TESTES EXECUÇÃO DOS TESTES RELATÓRIO DE TESTE... 49
12 12 5. AUTOMAÇÃO DA CAPTURA DE DADOS SMARTPHONE INTRODUÇÃO VISÃO GERAL DA CAPTURA DE DADOS DETALHE DO ARQUIVO FORMATO XML VALIDAÇÃO INTRODUÇÃO DESCRIÇÃO DO APLICATIVO ALVO DO TESTE APLICANDO A METODOLOGIA NO CONTEXTO DO SEONLINE CONCLUSÕES E TRABALHOS FUTUROS TRABALHOS FUTUROS REFERÊNCIAS APÊNDICE A PLANEJAMENTO DE TESTE APÊNDICE B ESPECIFICAÇÃO DE CENÁRIOS DE TESTE APÊNDICE C PLANILHA DE EXECUÇÃO DE TESTE APÊNDICE D RELATÓRIO DE TESTE... 70
13 13 1. INTRODUÇÃO Atualmente, as empresas de desenvolvimento de software necessitam entregar seus produtos no menor tempo e utilizando o mínimo de recursos. Segundo DUSTIN,RASHKA e PAUL (1999), mais de 90% dos desenvolvedores já perderam a data de entrega, sendo que perder prazos é uma prática comum em 67% dos desenvolvedores. Ainda, 91% dos programadores foram forçados a remover funcionalidades durante o ciclo de desenvolvimento para cumprir prazos. Segundo HWANG e CHAE (2008), prazos para entrega das aplicações móveis são cada vez mais curtos. Devido a pressão para o término do desenvolvimento, e o ciclo de vida das versões são cada vez menores. Neste contexto, as empresas recorrem à automatização dos testes de software visando diminuir o ciclo de desenvolvimento e os custos das atividades de verificação e validação, melhorando sua confiabilidade. Atualmente, software em dispositivos móveis vem sendo cada vez mais utilizados, como por exemplo, em smartphones para acessar a Internet, comprar produtos, ouvir música, jogar e até para controlar estacionamentos rotativos públicos. Os erros que ocorrem neste aplicativos podem ser insignificantes (do ponto de vista das perdas que os usuários podem ter), ou até causar enormes prejuízos, dependendo da complexidade da aplicação (MULLER, et al, 2007). Com a finalidade de evitar que erros em software ocorram, entende-se que é conveniente testá-los com qualidade, evitando perdas significativas decorrentes de resultados inesperados de execução. De acordo com Chernonozhkin (2001), o teste de software frequentemente corresponde à cerca de metade do custo total do desenvolvimento do sistema. Segundo Vianna (2006), o custo de não testar é ainda maior, uma vez que o custo da detecção de um erro após a entrega do produto é, no mínimo, o dobro do que se o mesmo tivesse sido detectado em tempo de desenvolvimento do sistema. Assim, faz-se do teste de software uma atividade crucial no processo de desenvolvimento. O planejamento do teste deve iniciar na etapa de análise de requisitos, sendo revisto sistematicamente e continuamente durante todo o processo de desenvolvimento (BOURQUE et at., 2001). Foram encontradas na literatura diversas modalidades de testes de softwares. Dentre eles, pode-se citar o teste exploratório e o de roteiro.
14 14 O teste exploratório ou teste ad-hoc é definido como sendo, simultaneamente, aprendizagem, projeto de testes e execução de teste (BACH, 2003). Os testes não são definidos antecipadamente em um plano de testes, mas projetados, executados e modificados conforme o processo de desenvolvimento do software avança. Além disso, testes exploratórios são de grande importância em algumas situações: (i) sabe-se pouco a respeito do produto, (ii) quando o projeto tem pouca ou nenhuma documentação específica do sistema ou esta é de baixa qualidade ou desatualizada, (iii) quando os processos de testes não estão definidos, como parte da preparação de teste de roteiro (BACH, 2009). O teste de roteiro é um processo de teste cujos passos são definidos em um documento formal (i.e. o plano de teste), e podem ser executados de forma manual ou automática. Também é um processo conhecido como Scripted test (SILVA, 2009). Assim, segundo (EICKELMANN; RICHARDSON, 1996), o teste fica suscetível a erros e é custoso, tanto financeiramente e quanto em termos de consumo de tempo quando realizado manualmente. E se aplicado corretamente, o processo automatizado de teste de software pode aumentar significativamente a quantidade de testes realizados durante um curto espaço de tempo ou reduzir o tempo de cada teste, segundo (HICKS; SOUTH; OSHISANWO, 1997). O teste exploratório não leva à resultados necessariamente diferentes do teste de roteiro, sendo que as duas abordagens de teste são compatíveis e complementares (PETROSKI, 2006). Uma ferramenta para auxiliar a execução de testes exploratórios em aplicações móveis é o TAFLogger, um software interno desenvolvido pela Motorola (KAWAKAMI et al., 2007), que foi projetado para executar em telefones celulares. Cada sessão de teste exploratório é realizada com o auxílio do TAFLogger e produz um log, onde todas as ações realizadas sobre o telefone pelo testador são registradas. Tendo em vista o apresentado, este trabalho propõe uma metodologia que utiliza a abordagem do teste exploratório na captura de informações referentes à sessão de uso de aplicações móveis, por parte do usuário, em smartphones. Os dados capturados auxiliam a criação de casos de testes da aplicação, que serão posteriormente executados automaticamente por ferramentas de automação de teste. Assim, os erros encontrados nas sessões de testes poderão ser reproduzidos tanto no smartphone no qual os dados foram coletados, como em qualquer outro modelo de smartphone que tenha a mesma aplicação e também em simuladores de smartphones usados no ambiente de desenvolvimento.
15 OBJETIVOS Objetivo Geral Proporcionar uma metodologia de teste exploratório em aplicação móvel realizando a captura de dados nas sessões de uso destas aplicações pelo usuário Objetivos Específicos a) Realizar captura de dados nas sessões do usuário em smartphone para analisar através da atividade de log e aplicar caso de teste exploratório. b) Fornecer métodos de teste exploratórios para criar casos de testes e efetivar a execução dos casos de teste automatizados. 1.2 JUSTIFICATIVA E METODOLOGIA A justificativa para o proposto trabalho está em que as aplicações móveis fazem parte de nossas vidas cada vez mais e, muitas vezes, perdas significativas são causadas a pessoas por resultados inesperados de tais programas. Isso pode ser evitado ou minimizado desenvolvendo-se um produto de qualidade e, para isso, é indispensável a realização de testes do software. Podemos resumir alguns problemas em aberto para desenvolvimento de uma metodologia de teste exploratório em aplicações móveis, nos seguintes itens: (i) complexidade encontrada nos sistemas para aplicações móveis, (ii) dificuldade para encontrar ferramentas gratuitas e de código aberto para captura de sessões em aplicações móveis, e (iii) necessidade de teste exploratórios para aplicações móveis que auxilie no desenvolvimento, bem como na manutenção de aplicações móveis; e (iv) problemas no reuso das informação coletadas nas sessões de utilização de aplicativos móveis em outras atividades de teste destas aplicações.
16 16 Pode-se dizer que a maioria dos problemas mencionados acima estão relacionados com a complexidade do projeto de aplicativos móveis modernos e, como citado anteriormente, a utilização de metodologia de teste exploratória para aumentar o nível de qualidade destas aplicações. Assim, para superar essas limitações encontradas na criação de metodologias de testes e também a captura de dados na sessão de usuário de uma aplicação móvel, propõe-se um conjunto de atividades em uma metodologia de teste exploratório que permite capturar os dados do usuário em uma sessão de uso, armazenando-os em um arquivo XML para uso em outras atividades do processo de testes. Inicialmente foi realizado o levantamento bibliográfico sobre o contexto e conceitos de metodologias de testes exploratórios, ferramentas utilizadas para automatização de testes em aplicações móveis, captura de dados em aplicações móveis. Na etapa seguinte, um levantamento dos trabalhos relacionados com os temas abordados neste trabalho foi realizado, visando encontrar os problemas e como eles foram solucionados pelos autores. Os pontos positivos e negativos de cada trabalho foram analisados e discutidos. Posteriormente a metodologia proposta por Dalcin (2007) foi estudada mais profundamente. Esta metodologia para aplicação de testes de software serviu como base conceitual para o desenvolvimento da metodologia de teste exploratório para aplicações móveis proposta neste trabalho, pois diversas características de metodologias seguiam a norma IEEE 829. A partir deste trabalho foram identificadas diversas características que seriam uteis no contexto de aplicações móveis, as quais foram adaptadas neste trabalho para a criação da metodologia de teste exploratório em aplicações móveis. A captura de dados nas sessões do usuário no smartphone é um item essencial para a metodologia proposta, uma vez que os dados capturados no teste exploratório inicial podem ser usados posteriormente na automação da execução de casos de teste. Para a validação deste trabalho foi realizada um estudo de caso, onde seguiram-se os seguintes passos: (i) testes exploratórios em uma aplicação móvel do sistema de estacionamento rotativo da cidade de Joinville, o SEOnline; (ii) capturas de dados digitados na sessão do usuário em uma aplicação móvel com o arquivo em formato XML; (iii)- utilização de planilhas para documentar e apoiar a metodologia de teste exploratório e suas atividades a serem testadas. Por fim, as atividades executadas durante a validação deste trabalho foram analisados e os resultados foram reportados.
17 ESTRUTURA DO TRABALHO O Capítulo 2 apresenta conceitos e considerações a respeito de teste de software, teste exploratório e aplicações móveis. Os trabalhos correlatos são descritos no Capítulo 3 na forma um estudo comparativo, onde algumas metodologias de testes exploratórios, de captura de dados em smartphones, além de teste automatizado são discutidas. A metodologia proposta neste trabalho é descrita no Capítulo 4. Os passos de captura de informações em aplicações móveis qualquer, analise dos dados para criação de caso de teste são detalhados. O Capítulo 5 apresenta a captura de dados das sessões de uso de aplicativos móveis. Esta captura suporta a atividade inicial da metodologia de teste exploratório proposta neste trabalho. No Capítulo 6 é relatado um estudo de caso que foi feito para validar a metodologia proposta através da sua aplicação no sistema de estacionamento rotativo da cidade de Joinville, o SEOnline. Finalizando, o capitulo 7 discute as conclusões deste trabalho, enfatizando as principais contribuições e sugestões para trabalhos futuros.
18 18 2. FUNDAMENTAÇÃO TEÓRICA 2.1 INTRODUÇÃO O objetivo deste capítulo é fornecer embasamento teórico para os leitores acerca dos conceitos utilizados neste trabalho. Em vista da importância dos testes como forma de garantir a qualidade do que está sendo desenvolvido, são apresentados os principais conceitos que envolvem a atividade de teste de software. O teste exploratório e a de captura de dados serão discutidos pois estas atividades farão parte da metodologia proposta para testes exploratórios em aplicações móveis de smartphones. Inicialmente, são feitas considerações a respeito dos testes de software e sua importância. Após, são apresentados os elementos e situações utilizadas para teste exploratório. Por fim são apresentadas algumas ferramentas de captura de dados como testes automatizados para smartphones. 2.2 TESTE DE SOFTWARE O desenvolvimento de software envolve várias atividades diferentes, onde são altas as chances de ocorrerem falhas humanas. No processo de desenvolvimento podem ocorrer enganos, tanto nas fases iniciais como as fases de análise e especificação, como nas fases de projeto e implementação. Segundo Rocha et al. (2001), apud Dalcin, (2007), o desenvolvimento de software é acompanhado por atividades de testes que visam garantir a sua qualidade. A atividade de teste de software é um elemento de um tema amplo chamado Verificação e Validação (SOMMERVILLE, 2003), onde: Verificação refere-se ao conjunto de atividades que garante que o software implementa corretamente uma função específica, e; Validação refere-se ao conjunto de atividades que garante que o software que foi construído atende às exigências do cliente.
19 19 A definição de verificação e validação abrange muitas das atividades às quais referimos como garantia da qualidade de software. Segundo (CRAIG e JASKIEL, 2002) apud (CARTAXO, 2006), uma das definições mais aceitas sobre teste diz que testar é um processo concorrente no ciclo de vida da engenharia de software a fim de medir e melhorar a qualidade da aplicação que está sendo testada. O entendimento tradicional do processo de teste (uma fase final e independente do processo de desenvolvimento propriamente dito) tem se mostrado bastante ineficiente devido aos altos custos associados com a correção de erros encontrados e manutenção do software. Segundo (McGREGOR e SYKES, 2001) apud (CARTAXO, 2006), tal fato contribuiu para a definição de métodos e técnicas sistemáticas de teste compreendendo um conjunto de tarefas que pode ser aplicado ao longo do processo de desenvolvimento. O objetivo do teste é cumprido quando identifica os defeitos que causam falhas no sistema. O que é diferente de testes que têm por objetivo demonstrar que o software está de acordo com suas especificações, sendo aceitável quando as falhas não observadas durante a execução. Para Dijkstra apud Cartaxo (2006) teste de software pode ser apenas usado para mostrar a presença de bugs, mas nunca sua ausência, referenciando ao fato de que testar completamente é inviável em sistemas reais Casos de Teste No procedimento de teste de software é necessário determinar o conjunto de casos de teste que será aplicado sobre o software em questão. Segundo JORGENSEN (1995) um caso de teste é composto por: Entradas: o Condição Inicial: assegura a condição (ou estado) inicial do software para que o caso de teste possa ser executado; o Dados de entrada: dados que serão fornecidos como entrada para a funcionalidade do software que está sendo testada
20 20 Saídas: o Passos: passos a serem seguidos durante a execução do caso de teste, identificados pelos métodos de teste. o Resultados esperados: respostas esperadas do sistema, para a entrada fornecida; o Pós-condição: representa o estado final do sistema, após o teste. Estando o caso de teste definido, o testador deve inicializar a aplicação de acordo com a condição inicial e exercitá-la aplicando passos descritos no caso de teste. Os resultados são coletados até que a pós-condição seja alcançada. Os resultados coletados são comparados com as saídas esperadas para verificar se o software passou ou não no teste, isto é, se o software se comporta como o esperado Fases do Teste As atividades de teste podem ser divididas de acordo com a fase do desenvolvimento e a abordagem empregada. Segundo BOURQUE et al. (2001), há três fases do teste que podem ser visualizadas: unitário, integração e sistema. O teste unitário (ou teste de unidade ou teste de módulo) é a fase em que se testam as menores unidades de software desenvolvidas. Cada unidade é testada individualmente, pois não dependem de outras partes do sistema. Assim, o objetivo é encontrar falhas de funcionamento dentro de uma parte pequena funcionando independentemente das outras partes do software. Na fase do teste de integração, o objetivo é encontrar falhas provenientes da integração interna dos componentes de um sistema (módulos unitários possivelmente já testados). Verifica-se a presença de erros associados as interfaces entre os módulos, quando estes são integrados para construir a estrutura do software, conforme descrito nas especificações do sistema e do projeto do software. Finalizando, o objetivo do teste de sistema é executar todo o sistema, levando em considerações as especificações de requisitos funcionais e não-funcionais do sistema. Os
21 21 testes são executados em condições reais de ambiente, interfaces sistêmicas e quantidade de dados. Além disso, o testador deve se comportar como se fosse um usuário final, testando não somente o projeto com um todo mas também o comportamento das funcionalidades esperadas pelo cliente. Nesta fase, avaliam-se ainda as interfaces externas com outras aplicações, utilitários, dispositivos de hardware, sistemas operacionais, etc Objetivos do Teste O teste de software verifica diversas as propriedades do software alvo. Além das funcionalidades implementadas, outras características como: usabilidade, segurança, desempenho, qualidade e tolerância a falhas. Os principais objetivos de teste de software podem ser verificados na Tabela 1. Nome do teste Objetivo Permitir ao cliente verificar o comportamento do sistema de acordo com Aceitação seus requisitos que, provavelmente, foram especificados no contrato. Tem como objetivo verificar se o sistema funciona conforme esperado em diferentes configurações de hardware e/ou software, além de testar Instalação diferentes condições, e.g., espaço insuficiente em disco e interrupção de energia. O procedimento de instalação também pode ser testado. É o testo o software antes de ser liberado para todos os usuários. É conduzido por um conjunto selecionado de usuários internos (alpha) ou Alpha/Beta externos (beta), os quais relatam possíveis problemas na utilização do produto. Verifica se o comportamento observado do sistema sob teste está de acordo Funcional com as especificações de requisitos funcionais. É o re-teste seletivo do sistema (ou seus componentes) a fim de verificar se modificações ocorridas após a última bateria de testes não causaram efeitos Regressão colaterais inesperados. Os testes de regressão devem ser conduzidos cada vez que uma mudança no sistema é realizada. Testa o desempenho do sistema em situações normais e de pico, verificando Performance se está de acordo com os requisitos de desempenho especificados, e.g.,
22 22 capacidade e tempo de resposta. Testa o sistema a fim de determinar o limite máximo de carga e stress que o Stress software poderá suportar. Tem como objetivo avaliar o comportamento do software após a ocorrência Recuperação de um erro ou outras condições anormais. Avalia a facilidade de utilização e aprendizado do sistema, Usabilidade garantindo que os requisitos de usabilidade sejam cumpridos, de acordo com as especificações do usuário. Tabela 1 - Principais objetivos de teste de software. Adaptado de PETROSKI (2006) 2.3 TESTE EXPLORATÓRIO O termo teste exploratório, refere-se a uma abordagem de teste diferente do teste orientado, ou teste com roteiro (KANER et al., 2002). Ao invés de realizar uma análise seqüencial de necessidades (ou requisitos), seguida pela concepção, documentação e execução de casos de teste, o teste exploratório é um processo em que o testador aprende, elabora o projeto do teste e executa simultaneamente os testes enquanto explora o produto (BACH, 2009a). Neste caso, o testador projeta casos de testes na medida em que os testes são realizados, ao invés de prapará-lo antes do início dos testes. E segundo COPELAND (2004), as informações coletadas pelo testador na execução de um conjunto de testes servem de guia para projetar e executar o próximo conjunto de testes. Segundo BACH (2009c), o teste exploratório deve ser utilizado nas seguintes situações: o Necessidade em fornecer feedback rápido sobre um novo produto ou serviço. o Necessidade de aprender o produto rapidamente. o Diversificar os testes e melhorá-los. o Encontrar o erro mais importante no menor espaço de tempo. o Investigar e isolar um defeito específico. o Investigar a situação de risco em especial, a fim de avaliar a necessidade de testes com script nessa área.
23 23 De acordo com BACH (2009b), o resultado de uma sessão de teste exploratório é um conjunto de notas sobre o produto, falhas encontradas, e o registro de como o produto foi testado. Os elementos que compõem o teste exploratório são: o Exploração do produto: descobrir e registrar o objetivo e as funções do produto, tipos de dados processados e áreas de potencial instabilidade. Esta fase depende do entendimento da tecnologia utilizada, informações sobre o produto e usuários, e a quantidade de tempo disponível para fazer o trabalho. o Projeto de teste: determinar as estratégias de operação, observação e avaliação do produto. o Execução do teste: operar o produto, observar o comportamento e utilizar informações para formar hipóteses de como o produto funciona. o Heurística: são guias ou regras que ajudam o testador a decidir o que fazer, o que deverá ser testado e como testá-lo. o Resultados: é o resultado do teste. Este é finalizado uma vez que o testador produz resultados que atendam os requisitos especificados. Este teste caracteriza-se pela dinamicidade. Para isso, BACH (2009c) busca uma maneira de planejar os testes e documentar sua execução, a fim de saber o que foi testado, o que foi encontrado e quais são as propriedades para os próximos testes, sem obstruir a flexibilidade de testar o produto de forma exploratória. Para realizar teste exploratório em celulares é necessária uma ferramenta de captura de dados relativos às ações realizadas sobre o celular pelo testador. O TAFLogger (ver seção 3.3.3) é um exemplo de software para auxiliar a execução de testes exploratórios em software embutidos para telefones celulares produzidos pela Motorola Ltda (KAWAKAMI et al., 2007). Nas sessões de teste exploratório, registram-se todas as ações realizadas pelo testador no software do telefone. Os dados principais registrados no teste do TAFLogger são: horários de início e fim da sessão, notas de texto digitadas pelo testador (comentários genéricos, possíveis problemas no telefone e bugs), teclas pressionadas e os estados do telefone. Todo o registro das interações é realizado da utilização de uma biblioteca de funções proprietária chamada de PTF (Phone Test Framework). Assim, o registro de uma sessão exploratória do TAFLogger é armazenado em um arquivo de formato XML (Extensible Markup Language) que será utilizada para representar os casos, o qual pode ser adquirido do telefone através da sua porta USB (ESIPCHUK; VALIDOV, 2006).