0
FACULDADE BOA VIAGEM
Bruno Eduardo de Souza Silva
Processo de Testes de Aplicações Mobile: Uma Abordagem Prática com Base
na Norma ISO/IEC/IEEE 29119
Recife
2014
1
Bruno Eduardo de Souza Silva
Processo de Testes de Aplicações Mobile: Uma Abordagem Prática com Base
na Norma ISO/IEC/IEEE 29119
Monografia apresentada como requisito para
conclusão do Curso de Ciência da Computação da
Faculdade Boa Viagem (FBV).
Orientador: Victor Hazin da Rocha
Recife
2014
2
Catalogação na fonte Biblioteca da Faculdade Boa Viagem, Recife/PE
S586pSilva,
Bruno Eduardo de Souza.
Processo de Testes de Aplicações Mobile: uma abordagem prática
com base na norma ISSO/IEC/IEEE 29119 / Bruno Eduardo de
Souza Silva. - Recife : FBV | DeVry, 2014.
64 f. : il.
Orientador(a) : Victor Hazin da Rocha.
Trabalho de Conclusão de Curso (Computação) - Faculdade
Boa Viagem | DeVry.
1.
Engenharia de software. 2. Testes de software.
Processo de testes. I. Título.
CDU 004[14.1]
Ficha catalográfica elaborada pelo bibliotecário: Jadinilson Afonso CRB-4/1367
3.
3
Bruno Eduardo de Souza Silva
Processo de Testes de Aplicações Mobile: Uma Abordagem Prática com Base
na Norma ISO/IEC/IEEE 29119
Monografia apresentada como pré-requisito para conclusão do Curso de Ciência da
Computação da Faculdade Boa Viagem (FBV).
Aprovada em:
Recife, 16 de Junho de 2014
Banca Examinadora
_________________________________________________________
Orientador
________________________________________________________
1o Examinador
_______________________________________________________
2o Examinador
4
Dedico este trabalho à minha família.
5
AGRADECIMENTOS
Em primeiro lugar, agradeço a Deus.
Agradeço aos meus pais, Paulo e Janaci, por toda dedicação e amor, por sempre
me apoiarem em cada passo da minha vida, por acreditarem em mim, por todo
esforço feito para que eu chegasse aonde cheguei e por sempre mostrar que o
estudo é o melhor caminho, sendo humilde e respeitando ao próximo.
Agradeço aos meus irmãos Flávia e Neto, obrigado por confiarem em mim e por me
incentivarem sempre, e que eu possa servir de inspiração para vocês. E a minha
sobrinha Bruna, que chegou para iluminar a nossa família com sua pureza e fofura.
Agradeço também aos meus avós José e Nair, meus grandes exemplos de força,
amor, respeito e união, que mesmo nas dificuldades sempre se mantem unidos e me
ensinaram que a família é o bem mais precioso que se pode ter na vida.
Agradeço a minha segunda família, a família Ferraz, que são para mim uma
inspiração de dedicação, educação e respeito e que me ensinaram e ensinam até
hoje como ser uma pessoa melhor, obrigado por tudo, sou extremamente grato a
vocês, em especial ao meu padrinho Carlos e minha tia Ana.
Agradeço à toda minha família, que direta ou indiretamente contribuíram para minha
educação e formação, obrigado por fazerem parte da minha vida e que continuemos
essa família unida que sempre se mostra firme em qualquer momento de
dificuldade.
Agradeço também a minha Rebecca, que teve tanta paciência comigo e que mais
me incentivou na realização deste trabalho, logo peço desculpas pela ausência e
pelos meus dias nervosos. Também faço um agradecimento ao meu sogro, sogra e a
minha cunhada.
Ao meu orientador, Victor Hazin, muito obrigado por me incentivar sempre a concluir
o trabalho e pela pressão imposta para que eu concluísse as atividades e prazos, e
pela paciência, sempre estando disponível para que eu tirasse minhas duvidas e
para explicações.
Agradeço aos meus amigos do C.E.S.A.R, que me incentivaram nessa caminhada, e
meus amigos da faculdade, em especial Emídio Oliveira, que me ajudou bastante
com o aplicativo Android.
Finalmente, agradeço aos meus professores da FBV, não só aos atuais, mas
também aqueles que já passaram pela faculdade e que colaboraram muito na minha
formação.
6
”Não é na ciência que está a felicidade, mas na aquisição da ciência”.
Edgar Allan Poe
7
RESUMO
Testes de software já é um conceito consagrado como necessário para a obtenção
da qualidade e um programa, assim como processos de software, que tem por
objetivo padronizar o desenvolvimento de um programa. A norma internacional
ISO/EIC/IEEE 29119 determina um padrão um processo de testes. Com o
crescimento do mercado de aplicativos para dispositivos moveis, é clara a
necessidade de garantir a qualidade desses aplicativos. Este trabalho tem como
objetivo apresentar um processo de testes para aplicativos de pequeno porte de
dispositivos móveis baseado na norma ISO/EIC/IEEE 29119, para atingir o objetivo,
foi realizado um experimento para validar o processo proposto e os resultados serão
apresentados neste trabalho.
Palavras-chave: Engenharia de Software. Testes de Software. Processos de Testes.
8
ABSTRACT
Software testing is already an established concept as necessary for the achievement
of quality and program, as well as software processes, which aims to standardize the
development of software. The international standard ISO/IEC/IEEE 29119 determines
a pattern for process of testing. With the growth of market of applications for mobile
devices is a clear need to ensure the quality of these applications. This work aims at
presenting a process of testing for small-sized mobile applications based on
ISO/IEC/IEEE 29119 international standard , to achieve the goal, an experiment was
conducted to validate the proposed process and results will be presented in this
paper.
Keywords: Software Engineering. Software Testing. Test Processes.
9
LISTA DE ILUSTRAÇÕES
Figura 1 – Ciclo de visa dos testes.............................................................................18
Figura 2 – Modelo em cascata...................................................................................23
Figura 3 – Processos de teste segundo a ISO/IEC/IEEE 29119................................25
Figura 4 – Atividades do processo organizacional.....................................................26
Figura 5 – Atividades do processo de gerenciamento...............................................27
Figura 6 – Atividades do processo de planejamento de testes..................................28
Figura 7 – Atividades do processo de monitoração e controle de testes...................29
Figura 8 – Atividades do processo de conclusão de testes.......................................30
Figura 9 – Atividades do processo dinâmico..............................................................31
Figura 10 – Atividades do processo de projeto e implementação de testes..............32
Figura 11 – Atividades do processo de configuração e manutenção do ambiente de
testes..........................................................................................................................33
Figura 12 – Atividades do processo de execução de testes......................................33
Figura 13 – Atividades do processo de relatório de incidentes de testes..................34
Figura 14 – Técnicas de teste cobertas pela norma ISO/IEC/IEEE 29119-4.............36
Figura 15 – Modelo multicamadas contendo os processos.......................................38
Figura 16 – Processos de Gerenciamento de Testes................................................40
Figura 17 – Processos Dinâmicos de Teste...............................................................47
Figura 18 – Árvore de eventos de um aplicativo de bloco de notas...........................50
Figura 19 – Cronograma do projeto de testes............................................................56
Figura 20 – Árvore de eventos derivada da aplicação em uso..................................57
Figura 21 – Fluxo da função inserir valor...................................................................58
10
LISTA DE TABELAS
Tabela 1 – Definições de Teste de Software..............................................................15
Tabela 2 – Princípios de teste de software.................................................................17
Tabela 3 – Atividades genéricas para processo de software.....................................22
11
LISTA DE QUADROS
Quadro 1 – Especificação dos campos dos casos de teste.......................................51
Quadro 2 – Caso de teste da função inserir valor......................................................58
12
LISTA DE ABREVIATURAS E SIGLAS
CASE
Computer-Aided Software Engineering
ABNT
Associação Brasileira de Normas Técnicas
IEEE
Institute of Electrical and Electronics Engineers
ISO
International Organization for Standardization
IEC
International Electrotechnical Commission
NBR
Norma Brasileira Regulamentadora
ISTQB
International Software Testing Qualifications Board
BSTQB
Brazilian Software Testing Qualifications Board
App
Aplicativo
Abinee
Associação brasileira de indústria elétrica e eletrônica
13
SUMÁRIO
1.
INTRODUÇÃO ................................................................................................... 14
2.
REFERENCIAL TEÓRICO ................................................................................ 16
2.1.
TESTE DE SOFTWARE ................................................................................. 16
2.2.
ESTRATÉGIA DE TESTES ............................................................................ 19
2.3.
PROCESSO DE TESTES DE SOFTWARE ................................................... 22
2.4.
NORMA INTERNACIONAL ISO/IEC/IEEE 29119 .......................................... 24
2.4.1.
ISO/IEC/IEEE 29119-1: 2013 ...................................................................... 25
2.4.2.
ISO/IEC/IEEE 29119-2: 2013 ...................................................................... 25
2.4.3.
ISO/IEC/IEEE 29119-3: 2013 ...................................................................... 35
2.4.4.
ISO/IEC/IEEE 29119-4: 2013 ...................................................................... 36
2.4.5.
ISO/IEC/IEEE 29119-5: 2013 ...................................................................... 36
3.
PROCESSO DE TESTES .................................................................................. 38
3.1.
PROCESSO ORGANIZACIONAL ................................................................. 39
3.2.
PROCESSOS DE GERENCIAMENTO DE TESTES ..................................... 40
3.2.1.
PLANEJAMENTO DE TESTES .................................................................. 41
3.2.2.
MONITORAÇÃO E CONTROLE ................................................................. 45
3.2.3.
CONCLUSÃO ............................................................................................. 47
3.3.
PROCESSOS DINÂMICOS DE TESTE ......................................................... 48
3.3.1.
PROJETO E ELABORAÇÃO DE TESTES ................................................. 48
3.3.2.
EXECUÇÃO E RELATÓRIO DE INCIDENTES........................................... 53
4.
VALIDAÇÃO DO PROCESSO DE TESTES ..................................................... 55
4.1.
CONTEXTUALIZAÇÃO ................................................................................. 55
4.2.
EXECUÇÃO DO PROCESSO ........................................................................ 56
4.3.
RESULTADOS OBTIDOS .............................................................................. 61
5.
5.1.
CONSIDERAÇÕES FINAIS ............................................................................... 62
TRABALHOS FUTUROS................................................................................ 62
14
1. INTRODUÇÃO
Testes de software vêm se tornando cada vez mais uma necessidade junto ao
desenvolvimento de um programa, visto que o custo médio com testes ultrapassa
50% do custo total do software [1] e a regra 10 de Myers [1] afirma que quanto mais
cedo os defeitos forem encontrados, menor o custo para resolvê-los, e caso um
defeito seja encontrado quando o software já está em produção, o custo desse
defeito pode ser catastrófico.
Como o mercado de smartphones disparou nos últimos anos, pesquisas da Abinee,
citam o crescimento médio de 100% em 2013 [2] e em 2014 smartphones já ocupam
65% do mercado de telefonia no Brasil [3], um nicho de mercado também vem
crescendo rapidamente, que é o de desenvolvimento de aplicativos para dispositivos
móveis, como por exemplo, smartphones e tablets [4]. O que implica diretamente na
falta de qualidade de alguns aplicativos é que com a alta demanda e prazos cada
vez mais curtos devido à pressa para publicar um aplicativo, algumas empresas
desenvolvedoras acabam por negligenciar os testes destes aplicativos[5].
A importância desse trabalho se reflete em auxiliar na obtenção da conformidade e
alcançar a qualidade esperada para organizações que desenvolvem pequenos
aplicativos e não dedicam o esforço necessário para planejamento de testes, seja
por falta de tempo, experiência ou mesmo de recursos.
O principal objetivo deste trabalho é desenvolver um processo de testes de
aplicativos de pequeno porte desenvolvidos para dispositivos móveis, onde é usada
como base a especificação genérica para processos de testes apresentada na
norma ISO/IEC/IEEE 29119-2. O processo proposto nesse trabalho traz uma
abordagem prática alinhada com alguns dos princípios da metodologia ágil, de forma
que uma pequena organização consiga governar, gerenciar, implementar e executar
testes de software para qualquer ciclo de vida de desenvolvimento de um software
[6].
Os objetivos específicos do processo proposto neste trabalho são os seguintes:

Padronizar a execução dos testes, facilitando o entendimento e reduzindo o
esforço para projetar os casos de teste;
15

Melhoria da qualidade do software, pois o processo garante uma melhor
cobertura do software a ser testado;

Redução dos custos associados ao risco de se encontrar um defeito no
software em produção;
Os capítulos subsequentes deste trabalho serão apresentados da seguinte forma: no
capitulo 2 serão discutidos os conceitos e fundamentos necessários para a
elaboração deste trabalho; o capitulo 3 é composto pelo processo de testes de
software proposto neste trabalho, onde tem como objetivo o teste de aplicações de
pequeno porte para dispositivos móveis; já o capitulo 4 realiza um experimento para
validar a proposta sugerida neste trabalho; finalmente o capitulo 5 são apresentadas
as conclusões referentes à este trabalho.
16
2. REFERENCIAL TEÓRICO
Esse capítulo apresenta os conceitos de testes de software, processos de teste de
software e estratégia de teste, fundamentais para o entendimento do trabalho
proposto. A seção 2.1 apresenta os conceitos fundamentais de testes de software.
Já a seção 2.2 apresenta uma visão geral do processo de teste de software e dos
processos genéricos que compõem o teste de software, do nível organizacional ao
nível de projeto. Finalmente na seção 2.3 são apresentados conceitos fundamentais
sobre estratégias de testes, como as principais técnicas, tipos de teste entre outros
conceitos que serão abordados neste trabalho.
2.1. Teste de software
Para desenvolver qualquer software, é necessário aplicar algum tipo de teste,
mesmo que seja feito apenas pelos próprios desenvolvedores para avaliar se o que
foi desenvolvido está funcionando, [1], empiricamente, as organizações que
desenvolviam software perceberam a necessidade de definir padrões e técnicas que
garantem a conformidade do software com o que se espera que ele faça, reduzindo
o risco de erros no software em produção [7]. A Tabela 1 apresenta algumas
definições de teste de software.
Tabela 1 – Definições de Teste de Software
Teste de software é um processo de execução de um
Myers [1]
programa com a intenção de encontrar erros, com o
intuito e agregar valor ao programa de elevando sua
qualidade e confiabilidade.
Teste tem como objetivos: Encontrar defeitos, ganho de
ISTQB [8]
confiança na qualidade, fornece informações para a
tomada de decisão e prevenção de defeitos.
Verificar se o software é executado de forma controlada
Rios & Moreira [9]
e está fazendo o que deveria fazer, de acordo com os
seus requisitos, e não está fazendo o que não deveria
fazer.
17
Esses e diversos outros conceitos e definições de teste de software podem ser
encontrados na literatura como em [10], [11] e [7], chegando a uma definição comum
de que teste de software tem como objetivo principal de encontrar erros, garantir a
qualidade do sistema que está sendo testado e se ele esta em conformidade com o
que foi planejado.
Teste de software consiste em uma atividade de um tema mais vasto, conhecido
como validação e verificação. Segundo [10], verificação consiste no conjunto de
tarefas que garantem que determinada função implementada no software está
correta e validação consiste em um conjunto de tarefas que asseguram que o
software foi implementado de acordo com os requisitos do cliente.
O objetivo de um teste é encontrar um defeito, falha ou um erro no sistema que está
sendo testado. De acordo com [12], as diferenças entre defeito, erro, falha e
incidente são:

Defeito: Uma falha em um componente ou sistema que pode fazer com que o
componente ou sistema para de executar a sua função, por exemplo, uma
declaração incorreta ou definição de dados. Um defeito, se encontrado
durante a execução, pode provocar uma falha do sistema ou no componente.

Erro: Uma ação humana que produz um resultado incorreto.

Falha: Desvio do componente ou sistema a partir de sua entrega, serviço ou
resultado esperado. Uma falha é um erro que foi para produção.

Incidente: Qualquer evento que ocorra que requer investigação.
Myers [1] diz que o teste de software leva em considerações conceitos econômicos
e psicológicos, apesar de ser uma tarefa técnica. E também definiu os princípios
para o teste de software apresentados na Tabela 2.
Do ponto de vista psicológico, a atividade de encontrar erros em um programa é
mais adequada do que a atividade de demostrar que o programa não contém erros;
e que um teste que foi dado como “mal sucedido” é por que não encontrou erros e o
programa produziu os resultados esperados corretamente [1].
18
Tabela 2 – Princípios de teste de software
Número
1.
2.
Principio
A parte mais necessária de um caso de teste é a definição do
resultado ou saída esperada.
Um programador deve evitar a tentativa de testar o seu próprio
programa.
3.
Os casos de teste não devem ser grandes e exaustivos.
4.
Analisar abundantemente os resultados de cada teste.
5.
Casos de teste devem ser escritos com entradas que são inválidas
e não esperadas, como também com entradas válidas e esperadas.
Examinar um programa para ver se ele não faz que é proposto, é
6.
apenas metade da batalha; a outra metade é verificar se o
programa faz o que não é proposto.
7.
8.
Evite casos de teste descartáveis, a menos que o programa seja
também descartável.
Nunca faça um teste assumindo que nenhum erro vai ser
encontrado.
A probabilidade de encontrar mais erros numa seção de um
9.
programa é proporcional ao número de erros já encontrados
naquela seção.
10.
Testar é uma tarefa extremamente criativa e intelectualmente
desafiante.
Fonte: [1]
Do ponto de vista econômico, é impossível testar um software a ponto de encontrar
todos os erros que ele possa produzir, mesmo em um programa pequeno, então
deve se levar em conta critérios e estratégias para que o teste de software encontre
o máximo de erros no menor tempo possível dentro do planejado [1].
Cada teste é um processo, e para [7] um processo consiste em um conjunto de
atividades inter-relacionadas que transformam determinadas entradas em saídas. O
ciclo de vida de um teste de software definido por [9] é apresentado na Figura 1.
19
Figura 1 – Ciclo de visa dos testes
Fonte: [9]
Testes ad hoc são testes em que não há um roteiro para executar, ou seja, são
executados à medida que o testador vai usando o programa e encontrando
aleatoriamente bugs e reportando aos desenvolvedores, de acordo com [12]:
“[...] Teste realizado informalmente; nenhuma preparação formal de teste
ocorre, não é usada nenhuma técnica de projeto de teste reconhecida, não
há expectativas para os resultados e arbitrariedade orienta a atividade de
execução de teste”. (ISTQB, 2014, p. 8, tradução nossa).
Porém, ao utilizar estratégias e técnicas de teste, para que os testes de software
proporcionem uma cobertura adequada e para que métricas possam ser obtidas, é
necessário que estes testes sejam reportados aos stakeholders [13] de alguma
forma, seja como um relatório ou através de ferramentas CASE [14], que auxiliam no
processo de desenvolvimento de um software.
2.2. Estratégia de testes
Para que ao testar um software se tenha um máximo proveito dos testes, é
importante que estes testes estejam sendo conduzidos por uma estratégia de testes,
de acordo com [15] a estratégia guia o projeto de testes e pode ser um método para
direcionar o projeto de testes para o time, ajudando a determinar quando e onde
aplicar os diferentes tipos de teste e quais testes são mais importantes para
determinado software.
20
Uma estratégia de testes deve conter tipos de testes, níveis, abordagens e métodos
para guiar o time na execução dos testes; também deve incluir uma avaliação dos
riscos de teste, assim como planos para treinamento ou educação do time de teste
[15].
A estratégia de teste deve conter as características ou funcionalidades que serão
testadas, o objetivo geral, e os objetivos específicos para determinado conjunto de
características [15].
Quanto aos níveis de teste, a estratégia de testes deve especificar o nível de teste
que ira adotar para execução. Os principais níveis de teste segundo [8]:

Teste de componente: São testes com acesso ao código, que devem procurar
defeitos e verifica o funcionamento dos módulos que são testáveis
separadamente, testes de componente podem incluir tanto testes funcionais
quanto testes de características específicas não funcionais (robustez,
memoria);

Teste de Integração: Para testar as interfaces entre os componentes ou
sistemas diferentes, ou seja, testa se houve impacto, algum conflito ou
surgimento de erros ao integrar componentes ou sistemas, e estes testes
podem ocorrer antes ou depois da fase de testes de sistema, porem há riscos
que devem ser levantados, quanto à garantia de apenas um lado da
integração;

Teste de sistema: Teste de sistema deve levar em consideração o sistema
como um todo como definido pelo escopo do projeto, há varias maneiras de
derivar testes de sistema, como por exemplo, por requisitos, casos de uso,
por riscos, entre varias formas que surgem na literatura, O teste de sistema
deve tratar requisitos funcionais e não funcionais, e o testador deve estar
pronto para lidar com requisitos incompletos, incoerentes ou ate mesmo com
a falta deles;

Teste de aceite: Teste de aceite geralmente é de responsabilidade do cliente
ou do usuário do sistema, é quando o sistema é avaliado pelo cliente ao
termino do projeto, os stakeholders podem também ter envolvimentos no
teste de aceite;
21
Quanto aos tipos de teste, cada tipo de teste tem como foco um objetivo em
particular que pode ser teste de uma funcionalidade, ou de uma característica do
software ou para verificar se mudanças não causaram impacto no produto, aponta
[8], que indica os principais tipos de teste que são: testes funcionais, testes não
funcionais, testes estruturais e testes de regressão.

Testes funcionais, como já diz o nome, deve verificar as funções do produto
se estão se comportando como planejado, ou seja, deve verificar “o que” o
sistema faz. Testes de função devem ser realizados em todos os níveis de
teste, seguindo a especificação do artefato a ser testado;

Testes não funcionais se referem a atributos que geralmente não podem ser
avaliados como aprovado ou reprovado, e sim medir as características
colhidas se estão de acordo com o que foi acordado no planejamento do
sistema. Testes não funcionais podem ser feitos em todos os níveis de teste e
incluem testes de carga, estresse, usabilidade entre outros tipos, testando
“como” o sistema funciona;

Testes estruturais se referem à cobertura do software, que consiste na
extensão em que os testes desenvolvidos alcançam toda a estrutura do
software, a fim de validar a arquitetura do sistema, e podem ser aplicados em
todos os níveis de teste;

Teste de regressão consiste em reexecutar um teste em um sistema para
verificar se alguma modificação feita após os testes não causou nenhum
impacto ou inseriu algum bug no sistema, ou de um defeito que não foi
coberto anteriormente. Teste de regressão não incide em refazer um teste que
na execução anterior encontrou um defeito e foi corrigido.
Na estratégia de testes, também devem ser descritas as técnicas de modelagem de
teste, que consistem em identificar as condições e os casos de teste através de
analise da documentação ou do software em questão, onde [8] considera técnicas
baseadas em especificação ou experiência como técnicas caixa-preta e técnicas
baseadas em estrutura como técnicas caixa-branca.
22
Os critérios de conclusão, suspensão e retomada também são definidos na
estratégia de testes e devem ser acordados com os stakeholders na fase de
planejamento. Critérios de saída, segundo [12]:
“[...] conjunto de condições genéricas e específicas, acordadas com as
partes interessadas para permitir um processo a ser oficialmente concluído.
O objetivo do critério de saída é evitar uma tarefa de ser considerada
concluída quando ainda restam partes da tarefa que não foram concluídas.
Critérios de saída são usados para relatar contra e planejar quando parar de
testar.” (T. Gilb, D. Graham apud ISTQB, 1993, p. 22).
Já os critérios de retomada são aqueles que são definidos quando as atividades de
teste que foram interrompidos devem ser retomadas e critérios de suspenção
consistem em critérios usados para parar temporariamente uma ou mais atividades
de teste [12].
Os riscos do projeto e do produto devem ser levantados e declarados, assim como a
estratégia de mitigação dos mesmos deve ser documentada no plano de teste. Um
cronograma com as atividades referentes à estratégia de testes e as atividades de
treinamento e educação também compõem a estratégia de testes [12].
Como testes de software é tido como um projeto que anda paralelamente ao
desenvolvimento do software [9], é necessário que um processo de testes seja
adotado, padronizando e organizando o ciclo de vida dos testes, permitindo que se
tenha um controle do que está sendo testado e para que seja possível obter as
medidas de qualidade e conformidade esperadas na execução dos testes.
2.3. Processo de testes de software
Segundo [10], processo consiste em um conjunto de atividades, ações e tarefas para
desenvolvimento de produtos, onde uma tarefa consiste em um pequeno e bem
definido objetivo, uma ação equivale a um conjunto de tarefas que resultam em um
artefato e uma atividade é um esforço no sentido amplo, independente do campo de
atuação, tamanho ou complexidade do projeto.
Na Tabela 3 são apresentadas as cinco atividades que são consideradas essenciais
por [10], para uma metodologia genérica de processo de software.
23
Tabela 3 – Atividades genéricas para processo de software
Comunicação
É fundamental uma boa comunicação com os stakeholders para
compreensão dos objetivos e levantamento das necessidades
que ajudarão a definir as funções e características do projeto.
Planejamento
Definição das atividades, dos riscos recursos necessários, os
produtos resultantes e o cronograma de trabalho.
Modelagem
Criar um modelo do software para que erros de arquitetura sejam
previstos e corrigidos antes da implementação. Criar um “esboço”
do software antes de começar a desenvolvê-lo de fato.
Construção
Combina a geração de código e dos testes de software.
Emprego
O software é entregue ao cliente que deve avaliar o produto e
retornar o resultado da avaliação para a organização que o
desenvolveu.
Fonte: [10]
Um modelo de processo de software é uma abstração de um processo de software,
fornecendo informações parciais sobre o desenvolvimento. Existem diversos
modelos de processo de software, porem os modelos mais conhecidos são o modelo
em cascata, desenvolvimento evolucionário e a engenharia de software baseada em
componentes [11].
O modelo adotado para o desenvolvimento deste trabalho é o modelo cascata, onde
as atividades de teste estão bem definidas e para a organização que irá testar o
software em questão, as fases de desenvolvimento são abstraídas, porém outros
modelos de processo de software também podem ser considerados.
O modelo cascata é composto por fases bem definidas fluindo por todas as
atividades genéricas, onde as fases estão encadeadas e uma fase não pode ser
começada sem que a anterior seja concluída, a Figura 2 exemplifica o modelo em
cascata.
24
Figura 2 – Modelo em cascata
Fonte: [11]
Assim como o desenvolvimento de software tem um processo definido, o projeto de
testes também deve ter um processo definido, acompanhando, monitorando e
gerando artefatos e reportando os incidentes que ocorrem durante a execução dos
testes do sistema em questão.
2.4. Norma Internacional ISO/IEC/IEEE 29119
A norma internacional ISO/IEC/IEEE 29119 foi desenvolvida para definir um modelo
padrão de processos e para guiar o desenvolvimento do processo de testes de
software, apresentando conceitos, fundamentos e modelos genéricos que orientam o
responsável pelos testes de uma organização a definir um processo de teste para a
organização quanto para cada projeto ou produto, de acordo com sua
particularidade. A seguir serão apresentados os processos de teste de software que
foram definidos na norma internacional ISO/IEC/IEEE 29119, com o objetivo de
padronizar os testes de software. A ISO/IEC/IEEE 29119 foi dividida em quatro
partes:

Parte 1 – Conceitos e definições, publicada em setembro de 2013;
25

Parte 2 – Processos de teste, publicada em setembro de 2013;

Parte 3 – Documentação de teste, publicada em setembro de 2013;

Parte 4 – Técnicas de teste, ainda não publicada;

Parte 5 – Testes dirigidos por palavras-chave, em fase de desenvolvimento;
2.4.1. ISO/IEC/IEEE 29119-1: 2013
A primeira parte da norma ISO/IEC/IEEE 29119 tem como objetivo apresentar os
conceitos, definições e fundamentos de teste de software, contextualizando os
termos utilizados com o intuito de facilitar o uso das partes conseguintes da norma
ISO/IEC/IEEE 29119 [7].
2.4.2. ISO/IEC/IEEE 29119-2: 2013
A segunda parte da norma ISO/IEC/IEEE 29119 define um modelo de processos de
teste de software genérico que pode ser usado por qualquer organização ao
executar qualquer forma de teste [6]. Os processos de testes especificados na
norma ISO/IEC/IEEE 29119-2 podem ser usados para governar, gerenciar e
implementar testes de software para qualquer ciclo de vida de desenvolvimento de
software e independe do tamanho da atividade de testes.
Sobre a conformidade dos processos apresentados, a conformidade completa (full
conformance) implica que todos os requisitos e todos os conjuntos de processos
definidos em [6] foram satisfeitos. Já para alcançar a conformidade ajustada (tailored
conformance), é necessário que se justifique o porquê de certos processos não
adotarem a plena conformidade.
O modelo de processo adotado por [6] é o modelo multicamadas, onde um grupo de
três processos pode ser executado durante o ciclo de vida, como mostrado na
Figura 3.
26
Figura 3 – Processos de teste segundo a ISO/IEC/IEEE 29119
Fonte: [6]
Processo organizacional de testes
O primeiro processo a ser demonstrado é o processo organizacional de testes, que
tem como objetivo desenvolver e gerenciar as especificações organizacionais de
teste [6], a politica de testes e a estratégia organizacional de testes são exemplos de
especificações organizacionais, pois o processo organizacional não depende de
projeto, e contem os propósitos, práticas, objetivos e o escopo geral de testes da
organização.
A política de testes consiste nas diretrizes de teste e nas especificações de teste que
uma empresa deve adotar para garantir a qualidade do software que ela está a
desenvolver, enquanto a estratégia organizacional de testes deve informar, em
linhas gerais, detalhes técnicos de como a organização trata os testes e não deve
ser especifico a um único projeto [6].
A Figura 4 demonstra as atividades contidas no processo organizacional de teste e
são aplicados tanto para política quanto para a estratégia de testes organizacional.
27
Figura 4 – Atividades do processo organizacional
Fonte: [6].
Processos de gerenciamento de testes
A norma ISO/IEC/IEEE-2 apresenta três processo de gerenciamento de testes, que
são mostrados na Figura 5, e o processo de gerenciamento de testes pode ser
aplicado em nível de projeto, como para gerenciamento de testes em determinadas
fases de teste e também para diferentes tipos de teste. Quando aplicado em nível de
projeto, o gerenciamento de testes é responsável por todos os testes do projeto,
tendo como base o plano de testes.
28
Figura 5 – Atividades do processo de gerenciamento
Fonte: [6].
O primeiro processo gerencial, o processo de planejamento de testes, é usado para
desenvolver o plano de testes, de acordo com as atividades executadas na Figura 6,
no processo de planejamento de teste as atividades podem ser sequenciais ou não,
permitindo mudanças e atualizações no plano de teste [6].
29
Figura 6 – Atividades do processo de planejamento de testes
Fonte: [6].
O segundo processo, monitoração e controle apresentado em [6], tem como objetivo
acompanhar o desenvolvimento dos testes e guiar para a direção correta caso os
testes estejam decorrendo de forma não esperada. Também é responsável pela
monitoração e controle de riscos e cronograma de testes. A Figura 7 ilustra as
atividades deste processo.
30
Figura 7 – Atividades do processo de monitoração e controle de testes
Fonte: [6].
O ultimo processo gerencial, o processo de conclusão, tem suas atividades
apresentadas na Figura 8, e tem como objetivo realizar os procedimentos de
conclusão de teste, como arquivar os dados e artefatos de teste, limpar o ambiente
de testes, identificar as lições aprendidas e realizar o relatório de completude de
testes. O processo de conclusão também pode ser usado em nível de projeto, como
para uma fase ou tipo de teste especifico [6].
31
Figura 8 – Atividades do processo de conclusão de testes
Fonte: [6].
Processos dinâmicos de teste
Os testes dinâmicos são associados a fases do processo de testes, como por
exemplo, testes unitários ou de integração, ou a um tipo de teste especifico, como
testes de desempenho ou usabilidade. Os processos de teste dinâmicos, mostrados
na Figura 9, são os responsáveis pelo planejamento, criação execução e relatório
dos ciclos de teste e servem como entrada para os processos de gerenciamento,
onde estes testes dinâmicos são monitorados e respondem às entradas atualizando
o plano de testes ou tomando alguma ação de controle [6].
32
Figura 9 – Atividades do processo dinâmico segundo a ISO/IEC/IEEE 29119
Fonte: [6].
O processo de projeto e implementação de testes tem como atividades principais a
criação dos casos de teste e suas atividades estão representadas na Figura 10 em
sequencia logica, mas na prática algumas atividades ocorrem em paralelo. Sempre
que se julgar necessário, é possível voltar ao processo de projeto e implementação
de testes, no caso de novos cenários serem descobertos e necessitam ser
documentados [6].
33
Figura 10 – Atividades do processo de projeto e implementação de testes
Fonte: [6].
O processo de configuração e manutenção do ambiente de testes é responsável
pelas atividades de preparar e manter o ambiente em que os testes serão
executados. A Figura 11 apresenta as atividades desse processo.
34
Figura 11 – Atividades do processo de configuração e manutenção do ambiente de testes
Fonte: [6].
O processo de execução dos testes consiste em realizar os procedimentos de
execução de teste de acordo com o planejado no processo de projeto e
implementação de testes e suas atividades são mostradas na Figura 12. De acordo
com [6] o processo de execução pode ser executado mais de uma vez e pode ser
necessário que todos os testes disponíveis não sejam executados em uma única
iteração devido a incidentes que podem ser encontrados durante a execução,
interrompendo o processo até que o critério de retomada seja satisfeito.
Figura 12 – Atividades do processo de execução de testes
Fonte: [6].
35
O ultimo processo dinâmico de testes é o processo de relatório de incidentes, que
tem como objetivos reportar os incidentes encontrados no relatório de incidentes e
caso seja um reteste, deve ser atualizado o resultado para que os stakeholders
possam definir a ação a ser tomada para correção do incidente [6]. A figura 13
apresenta as atividades desse processo.
Figura 13 – Atividades do processo de relatório de incidentes de testes
Fonte: [6].
Esse processo genérico apresentado pela norma ISO/IEC/IEEE 29119-2 define
apenas as etapas necessárias para que um projeto de testes execute com sucesso,
porém é imprescindível o apoio das demais partes da norma ISO/IEC/IEEE 29119, a
primeira, que trata de conceitos e definições gerais de teste, e a terceira que
abrange a documentação de acordo com cada processo apresentado na segunda
parte.
2.4.3. ISO/IEC/IEEE 29119-3: 2013
A terceira parte da norma ISO/IEC/IEEE 29119 substituindo a norma IEEE 829:2008
[16], tratando especificamente da documentação dos processos de testes
apresentados na segunda parte desta norma, ou seja, para cada processo que
necessita de uma entrada ou gera um artefato que possa ser documentável, a
terceira parte da norma mostra modelos genéricos de documentos a serem seguidos
36
e exemplos de documentos gerados para organizações ágeis assim como para
organizações que adotam os processos clássicos de desenvolvimento [17].
Sobre a conformidade dos documentos apresentados, a conformidade completa (full
conformance) implica que todos os campos e todos os conjuntos de requisitos
definidos em [17] foram satisfeitos. Já para alcançar a conformidade ajustada
(tailored conformance), é necessário que se justifique o porquê de certos requisitos
não adotarem a conformidade plena.
2.4.4. ISO/IEC/IEEE 29119-4: 2013
A quarta parte da norma ISO/IEC/IEEE 29119 aborda um tema relevante na área de
testes, técnicas de projeto de testes, também conhecido como métodos de teste ou
técnicas de projeto de casos de teste, apresentando padrões internacionais para
projeto de casos de teste que podem ser usados no processo de projeto e
implementação de testes, apresentados em [6], independente da organização ou
modelo de processo de software adotado [18]. Esta norma está em processo de
aprovação e até o presente momento não foi publicada, porém está disponível um
diagrama informando as técnicas de teste cobertas pela ISO/IEC/IEEE 29119-4,
como apresentada na Figura 14.
2.4.5. ISO/IEC/IEEE 29119-5: 2013
Há também uma quinta parte da ISO/IEC/IEEE 29119, que trata de uma técnica de
testes conhecida como Keyword-Driven Testing, ou testes dirigidos por palavraschave, aonde as palavras-chave são nomes associados a um conjunto de ações que
são necessários para executar um passo especifico em um caso de teste [19]. Esta
norma está em processo de desenvolvimento e não há informações suficientes para
detalhá-la.
37
Figura 14 – Técnicas de teste cobertas pela norma ISO/IEC/IEEE 29119-4
Fonte: [6].
38
3. PROCESSO DE TESTES
De acordo com [8], o processo fundamental de teste compreende nas seguintes
atividades: planejamento e controle, análise e modelagem, implementação e
execução do teste, a avaliação de critérios de saída e relatórios e atividades de
encerramento do teste. O processo proposto nesse trabalho contempla as atividades
necessárias para execução de testes de aplicativos para dispositivos moveis
baseados em gestos.
Visto que é uma tendência no mercado de tecnologia o surgimento de pequenas
organizações especializadas em desenvolvimento de aplicativos devido à demanda
vinda de grandes empresas para terceirizarem a concepção de ‘apps’ [20], é
necessário um processo que garanta a qualidade do software, e que a execução
deste processo seja ágil, onde o mercado está exigindo que os softwares sejam
desenvolvidos com os prazos cada vez mais curtos, o que abre uma brecha para
que defeitos e comportamentos indesejados apareçam quando o software está em
produção [5].
O processo proposto neste trabalho será apresentado da seguinte forma: primeiro
serão definidos todos os passos de cada processo, em seguida serão detalhadas as
atividades correspondentes a cada uma das etapas, visando manter o máximo de
simplicidade e coerência com um processo ágil para testes de aplicativos de
dispositivos móveis.
Nas seções a seguir, serão determinados os processos que irão compor cada fase
do processo de teste, indicando de uma forma prática, como cada atividade de cada
processo deve ser implementada para que o projeto de testes cumpra com eficácia o
principal objetivo que o teste de software tem, que é encontrar defeitos e garantir a
que o que foi implementado é de fato o que o software deve fazer [1].
Para garantir a agilidade do processo de testes na execução do projeto de testes, foi
composto um modelo multicamadas de processos, apresentado na Figura 15. O
modelo de processo de testes foi desenvolvido com base no modelo descrito em [6]
alinhado com os princípios definidos em [21], onde um dos fundamentos do
manifesto é que a redução de processos tende a agilizar o desenvolvimento do
software.
39
Figura 15 – Modelo multicamadas contendo os processos
Processos
Organizacionais
de Teste
Processos de Gerenciamento de Teste
Processo de
Monitoração e
Controle
Processo de
Planejamento
Processo de
Conclusão
Processos Dinâmicos de Teste
Processo de
Planejamento e
Elaboração
Processo de Execução
e Relatório de
Incidentes
Fonte: Autoria Própria, 2014.
3.1. Processo Organizacional
O processo organizacional de testes tem como principal função desenvolver e
manter o processo de testes de uma organização, para que se torne reutilizável e
proporcione o desenvolvimento da organização em relação à qualidade do processo
de testes [22].
O processo organizacional de testes tem como processos o desenvolvimento da
política de testes, que consiste nas diretrizes de teste e nas especificações de teste
que uma empresa deve adotar para garantir a qualidade do software que ela está a
desenvolver, e a definição das estratégias de testes organizacional, que são as
estratégias aplicadas às diversas abordagens de teste na organização [6].
Nesses processos serão definidas as atividades que compreendem a criação da
política e das especificações de testes organizacionais adequadas ao contexto de
aplicações móveis em dispositivos com interação por toques. É no processo
organizacional que ocorre a coleta dos requisitos para a especificação de testes, a
partir das práticas adotadas pela organização usada nos testes de software, de
40
informações obtidas dos stakeholders [13], e informações colhidas de outros
processos e/ou projetos. Assim como a política de testes da organização também vai
sendo definida a partir dessas atividades de coleta de informações, aprimorando o
processo de testes da organização [5].
As especificações organizacionais de teste não serão detalhadas neste trabalho,
pois o mesmo tem como foco principal a definição de um processo de testes para
produto, onde o contexto organizacional já deve estar fomentado, de acordo com a
especificação adotada na norma ISO/IEC/IEEE 29119-3, onde é exemplificada a
definição dos documentos gerados nos processos de política de testes e de
especificação organizacional de teste para organizações ágeis; e tendo como base o
documento de norma ISO/IEC/IEEE 29119-2, que define a formação e interação
entre esses processos (Processo Organizacional de Politica de Testes e Processo
Organizacional de Estratégia de Testes) para determinar o processo organizacional.
3.2. Processos de Gerenciamento de Testes
Os processos de gerenciamento de testes são processos que atuam em nível de
projeto, podendo ser adaptados de acordo com a particularidade de cada projeto de
testes [22] e tem como funções o planejamento, monitoração e controle dos testes
de um projeto, também são responsáveis pela atualização do plano de testes do
projeto em questão.
Para este trabalho, cada processo de gerenciamento foi ajustado para satisfazer a
necessidade de haver menos atividades separadas, o que comprometeria a
agilidade do processo, e como a contribuição deste trabalho é gerar um processo de
testes para pequenas aplicações seguindo a norma ISO/IEC/IEEE 29119, o
enxugamento de cada processo é fundamental, pois há atividades que não serão de
fato necessárias para a execução do processo.
Nas subseções a seguir serão apresentados e detalhados os processos de
gerenciamento de testes. Na Figura 16, é apresentado o modelo de fluxo dos
processos de gerenciamento relacionado com os outros processos e são mostradas
as macro atividades de cada processo definidas para este trabalho.
41
Figura 16 – Processos de Gerenciamento de Testes
Processos
Organizacionais
de Teste
Processos de Gerenciamento de Teste
Processo de Planejamento
Processo de Conclusão
- Organizar o Planejamento
- Identificar e analisar riscos
Processo de Monitoração e Controle
- Relatório Final de Testes
- Projetar a estratégia de testes
- Desenvolver o plano de testes
- Monitorar o processo de testes
- Controlar o processo de testes
Processos de
Gerenciamento
de Teste
Fonte: Autoria Própria, 2014.
3.2.1. Planejamento de testes
O processo de planejamento de testes tem como objetivo o desenvolvimento do
plano de testes, que pode ser para o projeto como um todo ou apenas para uma
fase específica do projeto [6].
Neste trabalho, algumas atividades do processo de planejamento de testes serão
desconsideradas e outras serão fundidas para que o processo tenha um
desenvolvimento ágil, diminuindo a carga de um processo extenso que por conter
diversas atividades aninhadas, pode vir a engessar o processo e causar impacto no
planejamento.
42
A atividade de identificar contexto será absorvida pela atividade de organização do
plano de testes, pois o contexto dos testes já é definido como aplicação para
dispositivos móveis, já as atividades de riscos e mitigação de riscos são fundidas em
uma só, pois ao identificar os riscos de um projeto de aplicação móvel as ações e
ações de mitigação já serão definidas em uma mesma atividade.
As atividades correspondentes à estratégia de teste e a atividade de definição de
pessoal e cronograma são unidas à atividade de projeto da estratégia de testes,
enquanto estratégias que definem a formação do plano de testes como as atividades
de registro do plano de testes, ganho de consenso do plano de testes e
comunicação da disponibilidade do plano de testes serão substituídas pela atividade
de desenvolvimento do plano de testes, pois as atividades citadas dispensam muito
tempo e comunicação com os stakeholders quando normalmente não existe esse
tempo de espera para um projeto de pequeno porte.
Organizar o desenvolvimento do plano de testes
Essa atividade consiste em identificar os possíveis stakeholders [6] e obter com o
auxílio deles a definição das atividades, cronograma e o envolvimento dos mesmos
com o projeto.
Exemplos:

Validar com o cliente o cronograma de testes, e mantê-lo informado sobre
cada entrega do projeto;

A partir de uma pesquisa de mercado, identificar um grupo de usuários do
produto e colher uma amostragem para realização de testes de usabilidade;
Identificar e analisar riscos
Identificar todos os riscos que podem vir a impactar no desenvolvimento do projeto
de testes, e a partir desse mapeamento identificar os riscos que estão relacionados
com o teste do software. De acordo com [10] os riscos devem ser definidos de
acordo com:
43

O tamanho do produto, onde o risco do projeto é diretamente proporcional ao
tamanho do produto a ser desenvolvido ou modificado;

O
impacto
no
negócio
-
Esses
riscos
são
associados
mais
ao
desenvolvimento do produto, geralmente são levantados na fase de
planejamento do produto e já devem ter sua estratégia de contingência e
mitigação alinhada com o projeto de testes;

As características do cliente - Deve ser considerado que cada cliente tem
suas necessidades, porém este risco também deve ser levantado desde o
início do processo e o planejamento de testes não deve levar em
consideração, pois é um risco do projeto de desenvolvimento como um todo e
não apenas do projeto de testes.

A definição do processo - Se os processos definidos estão sendo ou não
utilizados, e se os processos estão causando impacto no projeto de testes e
quais impactos seriam esses.

A tecnologia a ser utilizada, - Os riscos de usar determinada tecnologia, ou
novas abordagens e técnicas se tratando de testes, podem surgir e causar
impacto no projeto;

O tamanho da experiência da equipe – O tamanho da experiência da equipe é
inversamente proporcional à severidade dos riscos apontados no projeto de
testes.
Feito o levantamento dos riscos potenciais para os testes é necessário realizar uma
análise de cada risco e classificá-los de acordo com tipo do risco e o impacto que ele
deve causar. As atividades de mapear cada risco com a ação que deve ser tomada
e caso necessário, montar uma estratégia de mitigação dos riscos é de
responsabilidade da gerencia do projeto [10] enquanto a função do projeto de testes
é de levantar e analisar os potenciais riscos.
Projetar a estratégia de testes
Esta atividade consiste em, inicialmente, estimar os recursos necessários para
implementar os requisitos definidos no processo organizacional, com o auxílio da
estratégia de testes e da política de testes.
44
A estratégia de testes apresentada neste trabalho terá o foco no produto, e como
este trabalho foi desenvolvido com a finalidade de testar um software para
dispositivos moveis de pequeno porte, a estratégia de testes será baseada no fato
de que estes aplicativos requerem um curto tempo de desenvolvimento e testes, e
que as especificações tratadas pela estratégia de testes organizacional e politicas de
teste organizacionais não serão levados em conta para a implementação desta
estratégia de testes.
A fase de testes unitários [10] não será abordada neste trabalho, o mesmo se aplica
às fases de teste de componente e teste de integração [1], a menos que a aplicação
em si defina que estas fases de testes devam ser implementadas, elas deverão
fazer parte do escopo negativo do projeto. Os testes de aceitação também não
serão abordados neste trabalho, pois esta é uma atividade do cliente ao receber o
software [1].
Quanto aos níveis de testes adotados, serão os testes de sistema, pois essa fase é
de imprescindível importância para os testes, onde nesse nível de testes que o
sistema é testado como um todo, tratando os requisitos funcionais e não funcionais
do sistema [1].
A técnica a ser adotada na estratégia de testes proposta será a técnica de testes
caixa-preta, onde a aplicação será testada sem o conhecimento do código-fonte da
aplicação, ou seja, não importa como a aplicação foi projetada e desenvolvida, a
técnica caixa-preta é usada para testar o aplicativo simulando o uso do programa
[15].
Quanto aos tipos de testes que serão adotados pela estratégia, para que o software
seja validado e verificado com eficácia, serão adotados os seguintes tipos de testes:

Funcionais, pois as funcionalidades do software devem ser garantidas e
validadas de acordo com o que foi planejado.

Configuração, para validar se o software funciona corretamente em diferentes
ambientes de hardware e software.

Instalação, pois é necessário verificar se o processo de instalação e
desinstalação é efetivo e não impacta no funcionamento de outros softwares.
45

Testes não funcionais são testes que variam também de acordo com a
necessidade do cliente e englobam testes de confiabilidade, usabilidade,
eficiência, manutenibilidade e portabilidade [23].
Quanto ao ambiente de testes, a estratégia adotada não requer muitas
especificações de ambiente, apenas de aparelhos disponíveis com rede de dados ou
sem fio configurada.
Para definir os critérios de aceitação, suspensão e continuidade de testes, é
necessário determinar esses critérios junto aos stakeholders, ao inicio do projeto,
pois dependendo do cliente, os critérios de aceitação podem ser mais flexíveis,
permitindo entregas mais rápidas, ou clientes mais rígidos, onde a verificação deve
seguir à risca os critérios determinados no contrato [10].
Desenvolver plano de testes
A atividade de desenvolvimento do plano de testes do projeto consiste em reunir as
informações obtidas anteriormente e montar o plano de testes para que seja
aprovado pelos stakeholders [6].
É importante levar em consideração que o plano de testes tem foco no produto,
porém, usualmente empresas desenvolvem seu próprio modelo de plano de testes
padrão para determinados softwares, enquanto o propósito deste trabalho é
desenvolver um processo de testes com foco no produto, formando um modelo de
plano de testes para aplicações de dispositivos moveis de pequeno porte, com o
objetivo de proporcionar a redução dos processos e agilidade entre desenvolvimento
e teste [21].
O documento do plano de testes proposto para este projeto terá como modelo o
documento de plano de testes para organizações ágeis, definido em [17], porém as
informações contidas no plano de testes serão dirigidas ao projeto de testes do
produto.
3.2.2. Monitoração e Controle
Para que este trabalho, os processos de monitoração e controle tiveram suas
atividades ajustadas de acordo com que seja satisfeita a necessidade tornar o
46
processo de testes mais ágil [21], garantindo a redução de processos, e como a
contribuição deste trabalho é gerar um processo de testes para pequenas aplicações
seguindo as definições propostas na norma ISO/IEC/IEEE 29119, o enxugamento de
cada processo é fundamental, pois a norma contempla um processo de testes
completo e haverá atividades que não serão de fato necessárias para a execução do
processo.
O processo de monitoração e controle tem como principais objetivos determinar as
medidas adequadas para verificar se o progresso dos testes está indo de acordo
com o que foi definido no planejamento e monitorar as atividades de teste, checando
se os riscos mudam ou se surgem novos riscos, essas medidas devem refletir na
atualização do plano de estratégia de testes [6].
Monitorar
Essa atividade consiste em monitorar o progresso do planejamento e implementação
dos testes do processo dinâmico, se ele está alinhado ao plano de testes, na
monitoração dos riscos que foram definidos no processo de planejamento e também
no caso de novos riscos relacionados ao projeto serem detectados, identificando
aqueles que devem ser mitigados ou levantados para os stakeholders [5].
Controlar
Na fase de controle será onde as ações correspondentes às medidas tomadas nas
atividades anteriores, ou seja, se caso o progresso de testes não está indo de
acordo com o plano de testes, deverão ser tomadas ações para que a maneira que
esteja testando o software torne a se alinhar com o planejado [6].
Nessa atividade é que deve ser estabelecido se as atividades de teste estão prontas
para serem iniciadas, checando se todos os artefatos e atividades necessários para
iniciar ou dar continuidade à atividade de teste, esses artefatos são concebidos tanto
na fase de planejamento quanto no processo dinâmico, que será mostrado no item
3.3.
E no caso de mudanças ocorridas no plano de teste, elas deverão entrar como
atualização, e deverão ser expostas aos stakeholders. Na fase de controle que se
47
verifica se os critérios de conclusão são satisfeitos, para que a decisão de conclusão
de testes seja tomada.
Ao final das atividades do processo de monitoramento e controle, as saídas obtidas
serão os seguintes artefatos:
a) O relatório de status dos testes, que consiste no resultado da execução de
um ciclo de testes ou de vários ciclos, indicando se o projeto de testes pode
passar para o processo de conclusão.
b) O documento com as diretivas de controle, que consiste no mapeamento
das mudanças no plano de testes, nos testes, riscos e outros fatores (dados
utilizados, ambiente e pessoal).
3.2.3. Conclusão
O processo de conclusão dos testes consiste em compilar os resultados obtidos nas
execuções e desenvolver o relatório final de testes, quando todas as features do
software foram cobertas e verificadas, ou seja, quando o critério de conclusão é
alcançado [6].
Nessa fase também onde é possível obter as lições aprendidas, que consistem em
identificar os pontos positivos e pontos negativos do projeto e levantar as ações que
devem ser tomadas para melhora do processo organizacional.
Relatório final de testes
Com a execução dos testes concluída, ou de um ciclo de execução concluído, o
próximo passo é relatar o processo de testes em um documento, assim que os
critérios de completude forem alcançados, e que a aplicação esteja pronta para ser
publicada para entrar em produção. Este documento é necessário para que o
cliente, ao desejar refazer uma regressão no sistema para que ele possa ser
homologado para produção, checar o que de fato foi testado e se está de acordo
com o que foi planejado inicialmente e se está cobrindo os requisitos do software
devidamente.
48
3.3. Processos dinâmicos de teste
Os processos apresentado neste trabalho tem como objetivo principal auxiliar o
projeto de testes de aplicativos desenvolvidos para dispositivos móveis com
interação através de gestos, tais como: toque simples, duplo toque, pinça, entre
outros diversos gestos de interação.
Seguindo um modelo de processo ágil de desenvolvimento, visando ter mais
agilidade no processo de teste por se tratar de pequenas aplicações, o processo de
testes foi definido com o seguinte ciclo de vida: projeto e implementação e execução
e relatório de testes. Após a exposição de cada fase do processo, será feito um
mapeamento com as atividades para cada fase do processo baseado no modelo
apresentado na norma ISO/IEC/IEEE 29119-2. A Figura 17 ilustra os processos
dinâmicos de teste.
Figura 17 – Processos Dinâmicos de Teste
Processos de
Gerenciamento de
Testes
Processos
Organizacionais de
Teste
Processos Dinâmicos de Teste
Processo de Planejamento e
Elaboração
Processo de Execução e Relatório
de Incidentes
- Estudo de Viabilidade
- Configuração do Ambiente
- Gerar Árvore de Eventos
- Criar casos de teste
- Execução e Analise dos Testes
- Relatório de Incidentes
Fonte: Autoria Própria, 2014.
3.3.1. Projeto e elaboração de testes
Esta é uma fase de extrema importância na execução de um projeto de testes e
ocorre sempre em paralelo com as outras atividades e é definida pelas seguintes
49
atividades: realizar o estudo da viabilidade, definição e configuração do ambiente de
testes, geração da arvore de eventos e a criação dos casos de teste.
Estas etapas foram definidas para que o processo de testes seja otimizado, evitando
a perda de tempo com planejamentos excessivos, já que a finalidade deste processo
é verificar e validar aplicações de dispositivos com interação por gestos que são de
pequeno porte. Caso necessário, essas atividades podem ser alteradas e
complementadas como explicado em [16].
Essa fase terá como saída os seguintes artefatos: a árvore de eventos, os casos de
teste definidos e implementados e o plano de testes atualizado, definido de acordo
com o projeto.
Estudo de viabilidade
O estudo da viabilidade consiste em avaliar o esforço para o software ser testado, ao
receber um documento de requisitos, ou na falta dele a própria aplicação pode servir
como uma entrada válida, ou com modelos de protótipos, que de acordo com [24] é
uma poderosa ferramenta para construção de GUI, que consiste em uma versão
provisória do software para que o usuário possa ter uma experiência de uso e que
também seja capaz de fornecer outros requisitos que possam ser implementados na
próxima fase ou em um protótipo posterior.
Feito o estudo de viabilidade do projeto de testes, pode surgir a necessidade de
atualizar o planejamento das atividades de teste, reavaliar os riscos e redefinir o
escopo, o esforço e recursos necessários para o projeto de testes, atualizando o
plano de testes.
Definição e configuração do ambiente de testes
A fase de definição e configuração do ambiente de testes também pode ser
executada no processo de projeto e implementação, e na abordagem definida neste
trabalho, tem como objetivo definir o ambiente necessário para a execução dos
testes, que será basicamente delimitado pela própria aplicação a ser testada, e caso
aplicável, a montagem de ambiente de testes automatizados, banco de dados,
servidores, entre outras configurações.
50
Gerar árvore de eventos
A árvore de interação consiste em um mapeamento de todas as iterações entre os
componentes da GUI que são orientados a eventos [25], ou seja, dada uma
aplicação em uso, a finalidade da árvore de eventos é realizar o mapeamento de
todas as iterações possíveis entre os componentes da interface GUI do sistema para
que os casos de teste sejam criados afim de garantir a cobertura de todos os
componentes da interface e que passe por todas as combinações dos eventos, pelo
menos uma vez.
Para gerar a árvore de interação é necessário realizar, a partir de cada tela do
aplicativo em execução, o mapeamento de cada componente que compõe a tela e
obter as relações entre os componentes da interface gráfica, que são definidas pelos
eventos que são disparados por estes componentes normalmente são disparados
por botões, check boxes, combo boxes, áreas sensíveis a gestos da aplicação,
gestos estes que podem ser os mais diversos, como toque simples, toque múltiplo
(dois ou mais pontos), pinça, toque longo, rolagem horizontal e vertical, entre outras
iterações [26], que devem ser levadas em conta na fase de criação dos casos de
teste.
Quando as telas são mapeadas e as iterações são definidas, a árvore de eventos
está pronta para que os casos de teste sejam criados. Essa etapa é muito
importante para o processo de teste, pois é nela que é definida a cobertura e se o
critério de cobertura planejado inicialmente deve ser alcançado, implicando a
realização de um novo planejamento a partir do feedback obtido nessa fase do
processo.
Caso não haja aplicação implementada e esta tenha um documento de prototipação
disponível, dependendo do grau de fidelidade do documento e se essa prototipação
já foi previamente validada com os stakeholders, é possível adiantar ou pular a
etapa de verificação das telas e interações e partir para a geração do gráfico de
fluxo de eventos e da árvore de eventos.
Para ilustrar o processo de criação de uma árvore de eventos, a Figura 18 apresenta
o resultado da derivação de uma árvore de eventos a partir de um aplicativo de
bloco de notas simples, onde só contém as seguintes funcionalidades: criar texto,
editar, salvar e apagar um registro.
51
Figura 18 – Árvore de eventos de um aplicativo de bloco de notas
Fonte: Autoria Própria, 2014.
Para que o desenvolvimento da árvore de eventos seja ágil e não cause impacto no
processo, é recomendado usar meios manuais, como um quadro branco ou papel e
caneta, para formar o esboço da árvore, e se necessário documentar através de
uma ferramenta CASE [14].
Criação de casos de teste
Tomando como entrada para essa fase os artefatos de saída gerados na fase
anterior, que são árvore de eventos e o plano de testes, junto da própria aplicação
em execução ou dos protótipos/requisitos, os casos de teste devem ser gerados,
usando o modelo descrito a seguir.
52
Cada campo da especificação de um caso de teste proposto na norma
ISO/IEC/IEEE 29119-3, será detalhado e justificado o porquê de ser desconsiderado
ou fundido a outro campo, ao ser desenvolvido para este trabalho, como mostrado
no Quadro 1.
Quadro 1 – Especificação dos campos dos casos de teste
ID
Adotando o padrão numérico crescente seguido de nome do caso de
teste , pois ele facilitará na identificação do rastreamento e relatório de
defeitos.
Objetivo
Esse campo será o mais importante da especificação dos casos de
teste, pois é nele que estarão as informações necessárias para
execução do teste, como pré-condições, dependências e deverá ser
especificado o objetivo e o cenário do teste.
Prioridade
As especificações propostas de cobertura e estratégias de testes
dispensam priorização de casos de teste devido ao porte da aplicação.
Rastreabilidade
A rastreabilidade não é um campo de extrema importância devido às
aplicações testadas ser de pequeno porte e os seus defeitos poderão
ser facilmente rastreados.
Pré-condições
Este campo poderá ser utilizado, porem será unido ao campo ‘Objetivo’,
porque em certas condições ele pode não ser de fato necessário.
Entradas
Este campo poderá ser utilizado, porem será unido ao campo ‘Objetivo’,
porque em certas condições ele pode não ser de fato necessário.
Resultados Esperados
Campo que define qual será a saída ou comportamento esperado do
teste, que será comparado ao resultado obtido na execução do mesmo.
Resultado Real e
Este campo não é deveras útil para a proposta do trabalho, pois se ele
Resultado de Teste
for removido não irá impactar na execução ou resultado dos casos de
teste.
Fonte: Autoria Própria, 2014.
O modelo de caso de teste definido pela norma ISO/IEC/IEEE 29119-3 é tomado
como base para o desenvolvimento do modelo de caso de teste apresentado nesta
abordagem, porém, para garantir a agilidade e fluidez do processo de especificação,
53
alguns campos que compõem o modelo de caso de teste foram desconsiderados,
porém a testabilidade ainda é garantida, pois a remoção destes campos não irá
impactar na execução dos testes. Como saída desse processo se obtém a
especificação dos casos de testes, que neste trabalho poderá ser um anexo, ou
compor o plano de testes.
3.3.2. Execução e relatório de incidentes
Esta fase do processo de testes é de grande importância para este trabalho, pois é
nessa fase que é sugerida a abordagem proposta no mesmo, que consiste em uma
serie de atividades que irão validar a proposta os casos de teste e cenários de teste
para que o software seja validado.
Para que o processo dinâmico de testes atenda aos requisitos desejáveis para um
processo ágil, como foi definido em [21] que uma característica de um processo ágil
é a diminuição de processos, foi identificado que, como a aplicação a ser testada
necessita de um feedback rápido e coerente, os processos de execução e relatório
de testes definidos em [6] foram unificados e suas atividades reorganizadas,
atendendo a essa premissa do manifesto ágil. As atividades do processo de
execução e relatório sessão discutidas a seguir.
Execução e análise de testes
A fase de execução consiste basicamente na execução das atividades de teste
planejadas anteriormente, em que o software em questão é devidamente testado,
executando os testes, os resultados dos testes são comparados e é gerado o
relatórios de incidentes de teste, que encontra-se no apêndice deste trabalho.
O processo de execução é iniciado quando uma versão de teste é liberada pelos
responsáveis pelo desenvolvimento do software. Os testes que foram gerados no
processo de planejamento e implementação de testes são executados e os
resultados destes testes são comparados aos resultados esperados definidos nos
casos de teste.
Os testes devem ser executados em forma de ciclo, ou seja, de acordo com [6] os
testes podem ser interrompidos a qualquer momento por fatores, como defeitos
54
críticos que impeçam a continuidade dos testes ou uma nova versão intermediaria
ser lançada, por exemplo; e podem vir a executar varias vezes até que o resultado
dos testes satisfaça os critérios de aceitação, que são definidos no momento que o
cliente fecha o contrato com a equipe de testes.
A partir dos resultados obtidos na execução dos testes, é feita uma analise desses
resultados dos testes [6], para descobrir se um incidente encontrado na execução do
ciclo atual é um bug e se já está documentado por outros ciclos ou pelos
desenvolvedores, e se caso não for um bug conhecido, identificar o cenário em que
ele ocorre e rastrear o incidente, categorizando ele no relatório de incidentes como
incidente ou defeito.
Criar/atualizar o documento de relatório de incidentes
Concluídas as etapas anteriores de execução dos testes, onde os testes já foram
executados, analisados e tiveram seus incidentes categorizados, a última fase do
processo tem como finalidade relatar e documentar todos os incidentes encontrados
na execução do ciclo de testes. Os incidentes relatados devem ser compilados em
um documento para que os desenvolvedores e outros envolvidos tenham um retorno
sobre o problema encontrado e que possam decidir qual ação será tomada referente
a este bug [8], criando, ou caso já exista uma versão do documento criada,
atualizando o relatório de incidentes.
O documento de relatório de incidentes para organizações ágeis, apresentado em
[17], será seguido como modelo para a formação do relatório de incidentes proposto
neste trabalho, pois esse modelo entra em conformidade com o objetivo deste
trabalho, que é documentar os incidentes encontrados de uma forma rápida e de
fácil entendimento.
Com o relatório criado, é sinalizado que a execução de um ciclo de testes foi
concluída com sucesso. O relatório de testes é então analisado pelo responsável
pelo processo de monitoração e controle que tomará as providencias para que os
incidentes encontrados sejam resolvidos e novos ciclos de teste venham a ser
executados.
55
4. VALIDAÇÃO DO PROCESSO DE TESTES
Este capítulo tem como objetivo validar a proposta deste trabalho, que consiste em
apresentar um processo de testes de software para aplicações de dispositivos
móveis de pequeno porte com base nos princípios da agilidade [21], visando a
melhoria da qualidade do software.
4.1. Contextualização
Para validar a proposta deste trabalho, foi criado um cenário, onde é realizado um
projeto de testes para uma aplicação destinada a dispositivos móveis. As respectivas
informações a respeito deste cenário serão especificadas a seguir.
A organização responsável pelo projeto de testes em questão é uma startup [27]
formada por um time de estudantes universitários, uma empresa que está com o
modelo de negócios em fase de afirmação, no entanto não possui um processo de
testes definido de acordo com padrões internacionais, porém isso não quer dizer que
ela não possa implementar um processo para melhorar a qualidade dos seus testes.
A estratégia de testes organizacional e politica de testes organizacional adotadas
pela organização seguirão o modelo proposto para organizações ágeis em [17].
A empresa solicitante, em reunião com a equipe define o como será o aplicativo: um
gerenciador de gastos, rodando na plataforma móvel Android [28], onde o usuário
pode definir um limite para seus gastos e armazená-los de acordo com o tipo, se foi
em dinheiro, credito ou debito; detalhando a data e o local; o usuário poderá
acompanhar seus gastos a qualquer momento. O fluxo de telas, capturadas do
próprio aplicativo encontra-se no apêndice.
Como explicado na seção 2.1, é necessário definir critérios de aceitação com os
stakeholders para que sejam obtidas métricas para o processo de testes. Na reunião
de fechamento de contrato, é definido que o projeto terá uma duração de 5 dias por
ciclo de execução e os critérios de aceitação também são definidos, onde o cliente
solicita que o critério de aceitação será 98% de todos os testes funcionais tendo
status como ‘aprovado’ e que os 2% dos testes que não foram aprovados não
causem impactos na execução do software, que o aplicativo execute em pelo menos
56
três resoluções diferentes [29] e que execute nas plataformas mais recentes do
sistema [30].
Os riscos definidos no contrato são: O prazo de entrega, que por ser curto, deve ser
otimizado; O cliente solicitar mudança de requisitos, o que pode implicar em um
replanejamento do projeto e o aplicativo não funcionar em determinados aparelhos,
visto que a plataforma em que será desenvolvido tem uma grande gama de
aparelhos com diferenças de hardware [31].
Outros aspectos do projeto como custos e recursos, pessoal, riscos externos e a
nível organizacionais, cronogramas e estimativas de desenvolvimento, entre outros
aspectos gerenciais, não entrarão em mérito na execução deste estudo de caso, que
se restringe a testes de software, porem eles devem ser levados em conta, pois
indiretamente influenciarão na execução do projeto.
4.2. Execução do processo
Para a execução de um ciclo de testes, que deve durar 5 dias, foi montado um
cronograma, como mostrado no Figura 19, onde está especificado o planejamento
de um ciclo de testes, e para cada instancia de testes dinâmicos, o cronograma deve
ser atualizado, adicionando a quantidade de dias e as atividades referente à este
novo ciclo.
Como o projeto de testes é um projeto distinto do projeto de desenvolvimento e deve
ocorrer em paralelo durante o ciclo de desenvolvimento do software [6], desde o
inicio do projeto o engenheiro de testes, encarregado de montar o plano de testes,
deve começar a desenvolvê-lo, com base nas especificações da politica
organizacional, estratégia organizacional e com as especificações definidas pelo
cliente, usando o modelo definido neste trabalho, os campos são preenchidos de
acordo com a necessidade e requerimentos do projeto.
Quanto à estratégia de testes deste ciclo, será adotada a especificação da estratégia
de testes proposta na subseção 3.2.1, aplicando testes funcionais utilizando a
técnica caixa-preta. De acordo com o que foi definido em [17], a estratégia de testes
pode ser documentada como parte do plano de testes, e os casos de testes
gerados, serão documentados também como parte do plano de testes, garantindo a
57
redução de documentos [21], para que esses proporcionem a possibilidade de testes
de regressão.
Figura 19 – Cronograma do projeto de testes
Ciclo
Ciclo 1
ID dos dias
1
2
3
4
5
Atividade por processo
Organizarr o desenvolvimento do plano de testes
Identificar e analisar riscos
Projetar a estrategia de testes
Desenvolver plano de testes
Monitoração e controle
Processo de conclusão
Estudo de Viabilidade
Configuração do Ambiente
Gerar Árvore de Eventos
Criar casos de teste
Execução e analise dos testes
Relatorio de incidentes
Fonte: Autoria Própria, 2014.
A partir das informações obtidas nos processos anteriores, o próximo passo é
realizar o planejamento e implementação dos testes. O primeiro passo é dispor da
aplicação e realizar o mapeamento das interações entre os componentes GUI e
gerar a arvore de eventos, que é demonstrada na Figura 20. O próximo passo é
começar a criação dos casos de teste, realizando a cobertura de todas as iterações
entre os componentes, garantindo que o critério de cobertura de todos os eventos
disparados por estes componentes sejam invocados ao menos uma vez.
58
Figura 20 – Árvore de eventos derivada da aplicação em uso
Fonte: Autoria Própria, 2014.
59
Quanto aos tipos de teste adotados na estratégia, a prioridade do ciclo é testar as
funcionalidades principais do sistema, a partir da árvore de eventos são gerados os
casos de teste relativos às funções fundamentais, como registrar gastos nas
modalidades disponíveis; visualizar a lista de gastos; ativar, desativar e alterar o
limite de gastos e remover um registro de gastos.
Como exemplo de formação de um grupo de casos de teste, usaremos a
funcionalidade registrar um gasto na modalidade crédito. A figura 21 mostra o
mapeamento da função isolada da árvore de eventos.
Figura 21 – Fluxo da função inserir valor
Fonte: Autoria Própria, 2014.
A partir da função extraída da árvore, deve ser derivado em primeiro lugar o caso de
teste do ‘caminho feliz’, onde o testador realiza os passos para gerar o registro de
um gasto com sucesso. Este será o caso de teste base para a geração dos próximos
casos de teste e esta estratégia será tomada a partir de todas as funcionalidades
principais do software.
O quadro a seguir mostra o caso de teste para a função inserir valor, onde o usuário
deve selecionar o campo, inserir um valor válido, confirmar e verificar se o valor
persiste no campo após a confirmação.
Quadro 2 – Caso de teste da função inserir valor
ID: CT-001 – Inserir valor válido
Objetivo: realizar a função de inserir um dado valido no campo
valor.
Pré-condições: N/A
Entradas: N/A
Resultado esperado: O valor deve persistir no campo após a
confirmação da tarefa.
Fonte: Autoria Própria, 2014.
60
Os próximos casos de teste podem ser derivados para a validação de dados
inválidos inseridos em um campo, testando valores positivos, negativos, valores
limite e com formatação diferente do esperado. Para cada campo que possa receber
um valor ou dado deve haver um caso de teste com as diretivas necessárias para
sua execução, não se deve generalizar nestes testes validando vários campos de
uma vez, pois isso poderá dificultar no rastreamento de incidentes e na priorização
quando houver um ciclo de regressão.
Quando a fase de planejamento e implementação obter testes suficientes para que
critérios de cobertura sejam satisfeitos e já tenha sido gerada uma quantidade
considerável de casos de teste, a execução já pode ser preparada, onde o ciclo de
execução é gerado e os testes que foram preparados são dispostos para execução,
aonde a cada execução o documento de relatório vai sendo alimentado, com
informações colhidas e os resultados obtidos no decorrer da execução dos testes.
Novos casos de testes podem surgir durante a fase de execução e devem ser
documentados no plano de testes e adicionados ao ciclo, verificando também se
esses casos de testes irão impactar no cronograma e execução dos testes. Ao final
da execução de cada ciclo de testes, o relatório de incidentes e sumario de testes
são alimentados com as informações e resultados dos testes executados, estes
documentos gerados encontram-se no apêndice deste trabalho.
Feita a execução e preparado o relatório de incidentes e sumario de testes, o
próximo passo é a validação das correções apontadas no documento de incidentes,
de forma que, se houver tempo disponível para uma nova execução, validar que as
alterações feitas não causaram impacto em outras partes do sistema, um ciclo de
regressão com os mesmos testes deve ser preparado e executado completamente e
se, caso não haja tempo hábil, é necessário realizar uma priorização dos casos de
teste a serem reexecutados, dando preferencia aos que falharam e aos que podem
ter sofrido algum tipo de impacto pelas alterações.
Quando o processo de execução é concluído, não necessariamente foi porque
nenhum bug foi encontrado, pois segundo [7] é impossível testar exaustivamente
qualquer software, e sim porque os critérios de aceitação foram alcançados com
sucesso e o software já está disponível para ser publicado para os usuários finais.
61
É altamente recomendado ao cliente que realize testes de aceitação [8] para validar
se o software está de acordo com o planejado e se o projeto de testes foi bem
sucedido ou não. Também são reunidos todos os entregáveis e repassados como
versão final para o cliente e este também deve validar os documentos entregues,
apontando para a equipe de testes se o processo foi satisfatório e se não, as causas
apontadas pelo cliente.
Também pode ser feita uma analise do processo, levantando os pontos positivos e
as possibilidades de melhoria, apontando o que foi proveitoso, o que poderia ser
desenvolvido e sugestões de melhorias para o próximo projeto.
4.3. Resultados obtidos
O resultado do experimento de validação do processo de teste proposto neste
trabalho testes foi satisfatório e mostra que o emprego do processo de testes no
projeto de testes para um aplicativo de pequeno porte desenvolvido para dispositivos
móveis é mais efetivo que testes ad hoc, pois além de garantir uma cobertura maior,
possibilita o rastreio dos defeitos e possibilitam que testes de regressão sejam
executados mais facilmente, pois os testes gerados já estão documentados e
também tem o apoio do relatório de incidentes para priorizar o ciclo de regressão.
62
5. CONSIDERAÇÕES FINAIS
Este trabalho apresentou uma solução para aplicação de processo de testes de
software para aplicativos de pequeno porte de dispositivos móveis. A proposta
apresentada foi satisfatória e pode se concluir que a adoção de um processo de
testes é eficaz quando gerada de acordo com a necessidade do projeto, no caso
deste trabalho, visando a agilidade nos processos e na execução dos testes.
A principal contribuição deste trabalho foi divulgar o novo padrão internacional de
testes de software, onde foi desenvolvido um processo genérico, para que
organizações adotem um processo de testes para a melhoria da qualidade tanto do
processo organizacional, quanto dos produtos desenvolvidos pela organização.
O objetivo geral deste trabalho foi alcançado e mostra que o emprego do processo
de testes no projeto de testes para um aplicativo de pequeno porte desenvolvido
para dispositivos móveis é mais efetivo que testes ad hoc, pois além de garantir uma
cobertura maior, possibilita o rastreio dos defeitos e possibilitam que testes de
regressão sejam executados mais facilmente, pois os testes gerados já estão
documentados e também tem o apoio do relatório de incidentes para priorizar o ciclo
de regressão.
Os objetivos específicos propostos neste trabalho foram alcançados, pois foi
possível padronizar a execução de testes através do processo e da estratégia de
testes propostos, garantir a melhoria do processo devido à maior cobertura de testes
do aplicativo e a reduzir os custos, pois o processo é reutilizável.
5.1 Trabalhos Futuros
Como o tema de validação e verificação é bastante amplo e proporciona diversas
frentes de pesquisa, há uma série de aspectos que podem ser abordados a fim de
complementar a pesquisa proposta nesse trabalho.
Em virtude do escopo definido para o desenvolvimento deste trabalho, alguns pontos
importantes tiveram que ficar para trabalhos futuros como: Documentação para o
processo de testes, pois há uma parte da norma ISO/IEC/IEEE 29119 que trata
63
exclusivamente de documentação de testes; testes não funcionais e outras técnicas
de teste, que podem ser explorados com a publicação da quarta parte da
ISO/IEC/IEEE 29119; automação de testes, que é um campo de pesquisa que vem
ganhando espaço na área de testes de software e também abordando novas
estratégias de teste.
Como este trabalho foi proposto para um alvo especifico de software, que são
dispositivos móveis, outra sugestão para trabalhos futuros seria validar o processo
em outros ecossistemas e também em plataformas diferentes, assim como
desenvolver novos processos com base na ISO/IEC/IEEE 29119 para cada tipo de
software.
64
REFERENCIAS
[1] MYERS, G. J.;; SANDLER, C. e BADGETT, T. The Art of Software Testing. 3.
ed. [S.l.]: John Wiley & Sons, 2012. p. 256
[2] ABINEE. Smartphones puxam desempenho do segmento de
Telecomunicações. Disponível em: <http://www.abinee.org.br/noticias/com88.htm>.
Acesso em: 27 maio. 2014.
[3] ABINEE. Smartphones já representam 65% do mercado de celulares no país.
Disponível em: <http://www.abinee.org.br/noticias/com246.htm>. Acesso em: 27
maio. 2014.
[4] TWENEY, D. MOBILE APP GROWTH EXPLODING, AND THIS SHOWS NO
SIGNS OF LETTING UP. Disponível em: <http://venturebeat.com/2013/07/10/stateof-the-apposphere/#tkvSv0DbkuURQJUt.99>. Acesso em: 27 maio. 2014.
[5] LISKAUKAS, S. “Pressa” é vilã na qualidade dos aplicativos móveis
brasileiros. Disponível em:
<http://convergenciadigital.uol.com.br/cgi/cgilua.exe/sys/start.htm?infoid=33949&sid=
17#.U13qv_ldWSo>. Acesso em: 27 abr. 2014.
[6] INTERNATIONAL STANDARD ISO / IEC / IEEE Software and systems
engineering — Part 2: Test processes. . Geneva: [s.n.], 2013.
[7] INTERNATIONAL STANDARD ISO / IEC / IEEE Software and systems
engineering — Part 1: Concepts and definitions. . Geneva: [s.n.], 2013.
[8] INTERNATIONAL SOFTWARE TESTING QUALIFICATIONS BOARD (ISTQB).
Certified Tester Foundation Level Syllabus. Disponível em:
<http://www.istqb.org/downloads/viewdownload/16/15.html>. Acesso em: 27 abr.
2014.
[9] RIOS, E. e MOREIRA, T. Teste de software. [S.l.]: Alta Books, 2006. p. 222
[10] PRESSMAN, R. S. Engenharia de Software: uma abordagem profissional.
Tradução Mario Moro Fecchio Ariovaldo Gressi. 7. ed. Porto Alegre: AMGH Editora,
2012. p. 780
[11] SOMMERVILLE, I. Engenharia de software. Tradução Selma Shin Shimizu
Melnikoff; Reginaldo Arakaki; Edilson de Andrade Barbosa. 8. ed. [S.l.]: ADDISON
WESLEY BRA, 2007. p. 568
[12] ISTQB. Standard glossary of terms used in Software Testing. . [S.l: s.n.],
2014.
[13] FREEMAN, R. E. Strategic Management: A Stakeholder Approach. Illustrada
ed. [S.l.]: Cambridge University Press, 2010. p. 292
[14] KUHN, D. L. Selecting and effectively using a computer aided software
engineering tool. [S.l: s.n.], 1989. .
[15] PAGE, A.;; JOHNSTON, K. e ROLLISON, B. How We Test Software at
Microsoft. Redmond: Microsoft Press, 2009. p. 448
[16] IEEE. IEEE Standard for Software and System Test Documentation. . New
York: IEEE-SA Standards Board, 2008.
65
[17] INTERNATIONAL STANDARD ISO / IEC / IEEE Software and systems
engineering — Part 3: Test documentation. . Geneva: [s.n.], 2013.
[18] ISO/IEC/IEEE 29119-4: Test Techniques. Disponível em:
<http://www.softwaretestingstandard.org/part4.php>. Acesso em: 27 maio. 2014.
[19] ISO/IEC/IEEE 29119-5: Keyword-Driven Testing. Disponível em:
<http://www.softwaretestingstandard.org/part5.php>. Acesso em: 24 maio. 2014.
[20] DRINKWATER, D. Businesses too slow to deploy mobile apps, but there’s
hope for the future: study. Disponível em: <http://tabtimes.com/news/ittech-statsresearch/2013/01/25/businesses-too-slow-deploy-mobile-apps-there-hope-futurestudy>. Acesso em: 27 abr. 2014.
[21] BECK, K. et al. Manifesto for Agile Software development. Disponível em:
<http://agilemanifesto.org/>. Acesso em: 28 abr. 2014.
[22] KASURINEN, J. Advances in Computers. In: MEMON, A. (Ed.). Advances in
Computers: Volume 85. 1. ed. Lappeenranta, Finland: Academic Press, 2012. v. 4p.
1–63.
[23] ABNT. NBR ISO/IEC 9126 Engenharia de software - Qualidade de produto
Parte 1 : Modelo de qualidade. . Rio de janeiro: [s.n.], 2003.
[24] REHMAN, T. U.;; KHAN, M. N. A. e RIAZ, N. Analysis of Requirement
Engineering Processes, Tools/Techniques and Methodologies. International Journal
of Information Technology and Computer Science, v. 5, n. 3, p. 40–48,
doi:10.5815/ijitcs.2013.03.05, 2013.
[25] MEMON, A. M.;; SOFFA, M. Lou e POLLACK, M. E. Coverage criteria for GUI
testing. In: ESEC/FSE-9: PROCEEDINGS OF THE 8TH EUROPEAN SOFTWARE
ENGINEERING CONFERENCE HELD JOINTLY WITH 9TH ACM SIGSOFT
INTERNATIONAL SYMPOSIUM ON FOUNDATIONS OF SOFTWARE
ENGINEERING. Anais... New York, NY, USA: ACM Press, 2001.
[26] GOOGLE. Gestures. Disponível em:
<http://developer.android.com/design/patterns/gestures.html>. Acesso em: 10 maio.
2014.
[27] BLANK, S. Search versus Execute. Disponível em:
<http://steveblank.com/2012/03/05/search-versus-execute/>. Acesso em: 28 abr.
2014.
[28] GOOGLE. Android, the world’s most popular mobile platform. Disponível
em: <http://www.android.com/>. Acesso em: 6 maio. 2014.
[29] GOOGLE. Supporting Multiple Screens. Disponível em:
<http://developer.android.com/guide/practices/screens_support.html>. Acesso em: 28
abr. 2014.
[30] GOOGLE. Supporting Different Platform Versions. Disponível em:
<http://developer.android.com/training/basics/supporting-devices/platforms.html>.
Acesso em: 28 abr. 2014.
[31] GOOGLE. Device Compatibility. Disponível em:
<http://developer.android.com/guide/practices/compatibility.html>. Acesso em: 28 abr.
2014.
Download

0 FACULDADE BOA VIAGEM Bruno Eduardo de Souza Silva