Escolar Documentos
Profissional Documentos
Cultura Documentos
Assinatura:
i
Sumário
1 Introdução 1
1.1 Contextualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Organização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Oráculos de Teste 6
2.1 Oráculos de Teste: Definições e Conceitos . . . . . . . . . . . . . . . . . . . 7
2.1.1 Taxonomia de Oráculos . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1.1 Oráculo Humano . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.2 Dificuldade na Implementação de Mecanismos de oráculos . . . . . 14
2.2 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
ii
4.4 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5 Proposta de Trabalho 42
5.1 Proposta de Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.1 Objetivos do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.1 Atividades requisitadas pelo Programa de Pós-Graduação . . . . . . 44
5.2.2 Atividades Técnicas . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2.3 Cronograma de Atividades . . . . . . . . . . . . . . . . . . . . . . . 46
Referências Bibliográficas 54
iii
Lista de Figuras
iv
Lista de Tabelas
v
Capı́tulo
1
Introdução
1.1 Contextualização
Software de alta qualidade é uma meta desejada por muitos desenvolvedores, por isso, eles
têm desprendido muita atenção com questões de validação, verificação e, em particular,
teste de software. Em consequência disso, pesquisadores têm concentrado esforços em
definições de técnicas, critérios e ferramentas que contribuam para que tais atividades
sejam executadas com uma maior qualidade e custo reduzido (Delamaro et al., 2007).
Em geral, o conjunto das atividades conhecidas como “V,V & T” (Verificação e Validação
e Teste de Software) caracteriza uma das atividades que mais retardam e encarecem o
processo de desenvolvimento de software, no entanto sua aplicação contribui para que
seja atingido um nı́vel adequado de qualidade dos produtos finais. Por isso, o teste de
software constitue uma área de pesquisa muito ativa e interessante da engenharia de
software, contribuindo para a garantia de que o sistema de software faz o que foi projetado
para fazer. Convencionalmente, o trabalho de teste é feito por testadores experientes em
processos de testes manuais. Trabalho exaustivo, executabilidade e escassez de tempo de
projeto são alguns dos fatores que levam pesquisas a questionarem a eficiência do teste.
A maneira como tudo isso poderia ser feito automaticamente sem interferência humana
tem sido foco debates em eventos cientı́ficos da área (Jin et al., 2008).
Nesse sentido, a automatização da atividade de teste desempenha papel fundamental,
contribuindo para a o aumento da produtividade e caracterizando a forma mais popular
1
CAPÍTULO 1. INTRODUÇÃO
2
CAPÍTULO 1. INTRODUÇÃO
vida real. Exemplos disso são as imagens médicas, gráficos baseados em entretenimento
e interfaces GUI.
1.2 Motivação
É crescente o número de setores sociais diretamente envolvidos, ou até controlados, por
sistemas computacionais. Os sistemas de software desenvolvidos hoje atingem, direta ou
indiretamente, milhões de pessoas. Diante disso a responsabilidade em escrever programas
corretos é evidente, haja vista que importantes funções e tarefas são atribuı́das a eles
(Myers e Sandler, 2004). Contudo, paradigmas intermediadores capazes de providenciar
suporte para o teste pouco evoluı́ram ao longo dos últimos anos e continuam a ser um
dos elementos mais caros da engenharia de software (Hummel e Atkinson, 2005). O
surgimento de diferentes linguagens de programação elevou a capacidade do ser humano
em termos de desenvolvimento de software. A complexidade dos sistemas requeridos
cresceu proporcionalmente a essa capacidade humana (Sommerville, 1995). Nesse sentido,
são valorizados os esforços que configuram contribuições para a qualidade dos sistemas de
software antes de sua liberação para uso.
Uma GUI é caracterizada por ser o meio que permite a interação com dispositivos
digitais por meio de elementos gráficos como ı́cones e outros indicadores visuais que con-
trastam com a interface de linha de comando fornecendo conforto e facilidade aos usuários
finais dos sistemas de software (Fischer et al., 2009). Sendo assim, GUIs configuram um
ambiente rico em recursos para várias aplicações e, a partir delas, os usuários podem fa-
cilmente trabalhar com vários aplicativos simultaneamente, sendo capazes de organizar e
organizar as janelas de aplicativos na tela de plataformas computacionais e computadores.
Os usuários podem clicar em sites da Web, copiar e colar dados de uma aplicação para
outra, e adaptar a aparência de seus desktop da forma que lhe for conveniente. Embaladas
pela evolução das linguagens de programação e dos sistemas computacionais, as interfaces
GUI são muito comuns em diversas áreas de conhecimento. Exemplos evidentes são dis-
positivos móveis como PDA’s (Personal Digital Assistant) e Smartphones que ganharam
muito conforto com interfaces sensı́veis ao toque, auto-explicativas e atrativas.
GUIs configuram o método de interface humano-computador mais popular. Em siste-
mas complexos, as GUIs chegam a representar 60% do código das aplicações. Uma abor-
dagem popular para o desenvolvimento de GUIs é uso de algum editor WYSIWYG (What
You See Is What You Get), comumente denominados editores GUI (Jigloo SWT/Swing
GUI Editor for Eclipse and WebSphere, 2009; M. Stuart., 2009; Swing Designer v7.2.0,
2009; Visual Editor V1.2, 2009). Em geral, editores GUI usam uma visão estática da
interface gráfica, chamada de exibição de design, para apoiar seu desenvolvimento (Li e
3
CAPÍTULO 1. INTRODUÇÃO
1.3 Objetivos
A meta principal desta monografia é apresentar a proposta de um projeto de mestrado
que dá continuidade a trabalhos anteriores realizados no grupo de pesquisa de Engenha-
ria de Software do ICMC/USP. A proposta é um dos trabalhos previstos pelo projeto
de pesquisa intitulado “Definição de oráculos de teste para programas com saı́da gráfica
usando recuperação baseada em conteúdo” financiado pelo Conselho Nacional de Desen-
volvimento Cientı́fico e Tecnológico (CNPQ) sob o processo 551002/2007-7. O referido
4
CAPÍTULO 1. INTRODUÇÃO
procura utilizar técnicas de CBIR para permitir que oráculos de teste, capazes de apoiar
o teste de sistemas de software com saı́das gráficas ou, interfaces GUI, sejam definidos
de forma flexı́vel. Dentro do cenário apontado, considerando o custo e a dificuldade ine-
rentes, pode-se afirmar que a automatização é um ponto essencial no aprimoramento da
qualidade e na diminuição do custo da atividade de teste. Assim, a contribuição deste
trabalho baseia-se na definição de técnicas e desenvolvimento de ferramentas que possi-
bilitem a automatização do mecanismo de oráculo, de vital importância no contexto de
teste de software.
Resumidamente, este trabalho tem como objetivo principal a exploração de um pro-
tótipo que emprega conceitos de CBIR para apoiar à criação de oráculos de teste, que
neste caso poderão ser chamados de “oráculos gráficos”, capazes de testar sistemas de
software com interfaces GUI. CBIR é uma técnica que, por meio de extratores de ca-
racterı́sticas de imagem e funções de similaridade, é capaz de recuperar imagens de um
banco de dados seguindo juı́zos de similaridade com uma imagem modelo. Diante disso,
o paradigma explorado deve fornecer meios para que o testador escolha as caracterı́s-
ticas a serem utilizadas, defina como as caracterı́sticas devem ser comparadas e possa
adicionar novas caracterı́sticas a serem comparadas pelo sistema. É importante salien-
tar que em trabalhos anteriores (Oliveira, 2008; Oliveira et al., 2009a) foi implementado
um núcleo responsável pelas tarefas comuns a qualquer tipo de caracterı́sticas e por uma
série de “módulos” organizados na forma de plugins, que se encarregam de implementar
o processamento necessário para cada tipo de caracterı́stica. Dessa forma, aumenta-se a
flexibilidade do oráculo e permite-se que novas caracterı́sticas possam der adicionadas de
maneira simples.
1.4 Organização
∙ Sistematização do plano geral do trabalho a ser escrito. Organização dos capı́tulos:
5
Capı́tulo
2
Oráculos de Teste
Considerações Iniciais
O processo de teste é, para a maioria dos sistemas em desenvolvimento, o meio mais
importante pelo qual uma aplicação é submetida para ter sua conformidade com especi-
ficações verificada (Hunter e Strooper, 2001). Uma verificação manual dos resultados de
execuções de teste é uma atividade demorada e, às vezes propensa a erros. Sendo assim,
diz-se que qualquer método ou técnica de teste de software depende da avaliação de um
oráculo de teste, isto é, algum método que seja capaz de julgar a corretitude do resultado
particular da execução de uma aplicação em teste (Baresi e Young, 2001). Nesse sentido,
um oráculo ideal deve prover meios para que uma execução seja classificada como bem su-
cedida ou falha. Em diversas pesquisas cujo o tema principal é o teste de software, sejam
elas uma abordagem acerca de novos métodos para a geração de casos de teste ou, então,
novos critérios de teste para diferentes domı́nios, a existência de um oráculo de teste deve
ser assumida explicita ou tacitamente. No entanto, muitas vezes as aplicabilidades dos
oráculos não são descritas nem exploradas (Oliveira et al., 2009b).
Teste de software é o processo de execução de programas com a intenção de encontrar
erros. A essência do teste de software é a de determinar um conjunto de casos de teste para
o software está sendo testado (Myers e Sandler, 2004). Uma das partes mais difı́ceis e caras
de testes é a geração de dados de teste, que tradicionalmente tem sido feito manualmente
(DeMillo e Offutt, 1991). À medida que cresce a complexidade das aplicações e, em
6
CAPÍTULO 2. ORÁCULOS DE TESTE
7
CAPÍTULO 2. ORÁCULOS DE TESTE
oráculos são fontes externas de informações sobre as funções. O oráculo pode ser uma
especificação do programa, uma tabela de exemplos ou, simplesmente, o conhecimento do
programador de como um programa deve funcionar.
Nesse sentido, oráculos de teste devem ser uma parte integrante do processo de teste.
Para verificar a exatidão dos resultados, um oráculo deve saber quais são os resultados e
comportamentos esperados e ser capaz de apresentar os resultados da avaliação dos tes-
tes durante o teste de software. Testadores que seguem métodos sistemáticos, em geral,
devem fazer a seleção e execução de dados de teste de testes disponı́veis. O processo de
teste também inclui a criação do(s) oráculo(s), acompanhamento de execução dos testes,
e a verificação de resultados, embora esta, muitas vezes, seja feita de modo informal e im-
preciso. Com exceção dos testes que, obviamente, podem se exceder o tempo de execução
e não precisam de um oráculo, o valor de todos os outros testes dependem da presença de
resultados precisos para um veredicto acerca da corretitude de uma execução qualquer.
O esforço de instruções necessárias para gerar esses resultados de forma independente é
extremamente alta, e os erros nesses cálculos manuais invalidam a verificação. Reconhe-
cendo que tais esforços vão ser gastos, o pressuposto é haja um oráculo disponı́vel para
determinado teste. Se esta hipótese é falsa, então teste é de pouco valor (Brown et al.,
1992).
Um exemplo de aplicação são os testes funcionais que requerem um oráculo para de-
terminar a corretitude de seus casos de teste (Peters e Parnas, 1998). Resume-se que,
nesse caso, um oráculo de teste é um mecanismo para julgar se os resultados de determi-
nado caso de teste “passaram” ou “não passaram” em determinada execução da aplicação
em teste (Chan et al., 2006). Os custos desse tipo de teste, dependendo do domı́nio da
aplicação, não são baixos. Fazendo um estudo do montante de custo gerado a partir do
teste, Peters e Parnas (1998) observa que, em linhas gerais, despesas com pessoal são um
fator limitante. O mesmo autor ainda discutiu a necessidade de oráculos, afirmando que
os oráculos configuram fontes de preciosas informações sobre as funções em teste. Supos-
tamente, estes constituem as respostas corretas, sem dúvida contra as quais os resultados
dos testes podem ser medidos. Diante disso, infere-se que embora a automatização por
completa do teste de software seja um problema indecidı́vel, a parcial ou condicional au-
tomatização do teste é algo muito viável (Peters e Parnas, 1994). No que se refere à
automatização do teste de software, métodos de geração automática de oráculos de teste
é o primeiro de todos a considerar. Certamente, se testadores desejarem julgar a regulari-
dade de um programa, eles devem saber claramente quais os resultados esperados a cada
execução (Jin et al., 2008).
Infere-se que códigos de teste e oráculos para teste de integração constituem parte
da arquitetura geral do sistema. Oráculos para componentes e unidades individuais são
8
CAPÍTULO 2. ORÁCULOS DE TESTE
9
CAPÍTULO 2. ORÁCULOS DE TESTE
autores, há uma divisão global comum entre os pesquisadores que dedicam esforços nesse
nicho de pesquisa. A referida divide os oráculos em:
∙ passivos: oráculos menos complexos e que apenas recebem como entrada o par
comportamento desejado, comportamento produzido. Em outras palavras, um orá-
culo passivo é capaz apenas de verificar o comportamento de um componente, mas
não reproduzı́-lo. Nesse contexto, testes com oráculos passivos têm apenas um ele-
mento comparador que é capaz de confrontar ou, então, verificar uma determinada
propriedade, entre dois objetos, e produzir um veredicto entre a igualdade dos dois.
(vou criar uma figura que diferencie os dois tipos de oráculos. OK !?)
O que é observado na maioria das abordagens sobre oráculos de teste é que a auto-
matização da interpretação correta dos resultados do teste parece ser um ponto crucial.
Quando uma figura humana faz o papel de oráculo, os teste são geralmente imprecisos,
propenso a erros e consomem muito tempo do projeto de desenvolvimento dos sistemas.
Enquanto oráculos automatizados, de uma forma ou de outra configuram fontes que con-
duzem à eficiência, viabilidade e confiabilidade no processo de testes (Fenkam et al., 2002).
A automatização dos mecanismos de oráculos configura um componente essencial para as
atividades de testes de software. Em linhas gerais, um oráculo pode ser automatizado das
10
CAPÍTULO 2. ORÁCULOS DE TESTE
mais diferentes maneiras em função do domı́nio da aplicação em teste. A seguir são expli-
citados alguns métodos firmados que contribuem para a automatização dos mecanismos
de teste e, assim, podem apoiar o teste de diferentes domı́nios de sistemas:
11
CAPÍTULO 2. ORÁCULOS DE TESTE
Ainda na linha dos esforços dedicados à identificação e classificação dos diferentes ti-
pos de oráculos, é destacado o trabalho de Hoffman (2006). O referido trabalho trata
especificamente dos benefı́cios que a utilização de um oráculo automatizado pode trazer
ao processo de desenvolvimento de um programa e apresenta um resumo de uma série
de trabalhos cientı́ficos que visam a descrever as diferentes finalidades e utilizações dos
oráculos automatizados de verificação e validação de software. A Tabela 2.1 é baseada
na pesquisa realizada por Hoffman (2006). Ela exibe vários tipos de oráculos, algumas
de suas caracterı́sticas mais relevantes, as vantagens, desvantagens, e as implicações em
que estão incluı́dos para automatização de testes. Segundo as ideias do autor, os orácu-
los automatizados podem ser classificados classes bem distintas quanto à sua forma de
automatização.
Como pode ser notado na Tabela 2.1, a abordagem de Hoffman (2006) deixa claro que
o processo de teste de uma aplicação pode, simplesmente, não ter a disponibilidade de
um oráculo automatizado, fato que dificulta a identificação de erros complexos. Existem,
ainda, os casos em que o oráculo existe apenas de maneira aproximada ou parcial. A
abordagem também revela que é possı́vel que seja automatizado um tipo de oráculo refe-
renciado pelo autor como “verdadeiro”. Esta modalidade de oráculo automatizado é capaz
de gerar resultados de teste de maneira independente do programa a ser testado e devem
prever saı́das apenas para as entradas utilizadas no teste. Outra modalidade de oráculo
automatizado identificado é conhecido como oráculo (estratégia) de “consistência”, que é
aquele que baseia-se na execução de um programa para avaliar a correção de outras execu-
ções. Um oráculo de “referência própria” pode ser configurado a partir da soma de dados
12
CAPÍTULO 2. ORÁCULOS DE TESTE
ao resultado esperado juntamente com a própria estrutura e com os dados do teste. Para
finalizar, Hoffman (2006) caracteriza um oráculo “heurı́stico” como uma abordagem muito
simples que consiste da verificação de algumas caracterı́sticas que relatem se a execução
está correta ou não. Cabe ressaltar que a implementação de um oráculo heurı́stico para
apoiar o teste de sistemas que tenham interfaces GUI é proposta no Capı́tulo 5.
13
CAPÍTULO 2. ORÁCULOS DE TESTE
embora o oráculo resultante geralmente seja menos complexo que o sistema real, o que
muitas vezes acontece é que os erros detectados pelo oráculo são devido a uma falha na
implementação do próprio oráculo e não uma falha na implementação do sistema real.
Um caso adverso a tudo isso é quando a documentação do sistema de software em teste é
matemática. Nesse caso particular, é possı́vel derivar um oráculo automatizado a partir
de tais especificações. Sendo assim, um oráculo, em forma de um programa, pode fazer a
avaliação dos resultados do teste de uma forma barata e confiável (Peters e Parnas, 1998).
14
CAPÍTULO 2. ORÁCULOS DE TESTE
15
CAPÍTULO 2. ORÁCULOS DE TESTE
16
CAPÍTULO 2. ORÁCULOS DE TESTE
funcionalidade geral de uma maneira confiável, ou, então, calculam o resultado correto
manualmente. Para o autor essas abordagens são insatisfatórias no sentido de que elas são
caras ou de validade duvidosa. De fato, para sistemas de software sem uma especificação
independente e documentada, o único padrão para a correção é uma aplicação alternativa
ou um conjunto de teste em si. Esta é uma alternativa atraente para oráculos de teste,
haja vista que a verificação de um resultado geralmente é mais simples e barata do que
uma computação de resultado. Coppit e Haddox-Schatz (2005) defende que a computação
dos fatores de um número é mais difı́cil do que o simples fato de verificar dois objetos
qualquer.
Ainda na linha das abordagens que utilizam especificação formal, Peters e Parnas
(1998) desenvolveram um TOG (Test Oracle Generator ) que é capaz de produzir um
oráculo de teste pra um sistema qualquer a partir de sua documentação. Esta abordagem,
segundo o autores, é precisa, relativamente legı́vel, requer uma declaração mı́nimo de
requisitos, pode ser escrita em termos da estrutura de dados ou, então, por meio de uma
notação relativamente expressivo. Como vantagens da abordagem os autores destacam
que a abordagem enaltece o valor da documentação do programa, uma vez que vai ser
usada no apoio ao teste do programa. Outro ponto positivo da abordagem é que ela
disponibiliza uma análise de testes mais rápidos, por conseguinte, reduz custos. Quanto
às desvantagens da abordagem, Peters e Parnas (1998) destacam que a documentação
utilizada para gerar o oráculo pode ser tão complexa quanto o gerados de oráculo e, por
isso, deve ser verificada com cuidado. Outro gargalho identificado na pesquisa é que,
dependendo do domı́nio da aplicação em teste, o TOG pode se mostrar um programa não
trivial, o que também exige verificações cuidadosas. Por fim, o último ponto negativo
notado na abordagem é que certas classes de comportamento de um programa podem não
ser facilmente especificado e, assim, avaliados por meio destes métodos.
Concluı́-se que o software é um dos mais complexos e variáveis artefatos construı́dos
de forma regular. Requisitos de qualidade de software usados em um ambiente podem ser
muito diferentes e incompatı́veis para outro ambiente ou domı́nio de aplicação (Oliveira,
2008). Um exemplo disso é que enquanto os métodos para a geração automática de orá-
culos de teste de especificações formais têm sido descritas na literatura, tais especificações
formais raramente são usados na indústria, o que limita a aplicabilidade desses métodos.
A respeito das abordagens analisadas, foi possı́vel notar que a grande maioria utiliza espe-
cificações formais como fonte para derivação de oráculos de teste. Nesse sentido, nota-se
que especificações formais normalmente não têm alguns detalhes algorı́tmicos. Isso difi-
culta a geração de oráculos ativos, pois a especificação contém construções que não podem
ser traduzidas diretamente para linguagem de implementação. Isto coloca uma restrição
17
CAPÍTULO 2. ORÁCULOS DE TESTE
severa na classe de especificações para que oráculos ativos possam ser utilizados de forma
eficaz (McDonald e Strooper, 1998).
18
Capı́tulo
3
Revisão Bibliográfica Sistemática
Considerações Iniciais
Quando se conduz uma revisão de literatura sem o pré-estabelecimento de um protocolo
de revisão há um direcionamento por interesses pessoais, o que leva a resultados pouco
confiáveis. No que diz respeito à Engenharia de Software, as pesquisas conduzida com
a negligência de protocolos caracterizam por serem pouco abrangentes, não passı́veis de
repetição, pouco confiáveis e dependente de revisores (Mafra e Travassos, 2006). Uma
Revisão Sistemática (RS) é caracterizada por ser um meio de avaliar e interpretar todas
as pesquisas disponı́veis, referentes a uma questão de pesquisa particular, tema, área ou
fenômeno de interesse. As revisões sistemáticas têm por objetivo apresentar uma avaliação
justa de um tema de pesquisa, utilizando uma metodologia confiável, rigorosa e auditável
(Kitchenham, 2004).
Em linhas gerais, uma RS é um método de pesquisa cientı́fica, planejado para responder
a uma, ou mais, pergunta especı́fica e que utiliza métodos explı́citos e sistemáticos para
identificar, selecionar e avaliar criticamente os estudos e para coletar e analisar os dados
destes estudos incluı́dos na revisão. Em outras palavras, uma RS implica na forma mais
adequada para se identificar, avaliar e interpretar toda pesquisa importante para um tema
em particular (Biolchini et al., 2005). Resume-se que uma revisão sistemática configura
um alicerce para novas atividades de pesquisa acerca de determinado tema. Realizou-se
uma RS com intuito de aferir o estado da arte acerca de oráculos que apoiem o teste de
19
CAPÍTULO 3. REVISÃO BIBLIOGRÁFICA SISTEMÁTICA
programas cuja interação se dá por meio de GUIs. Neste cenário, o objetivo da RS é
efetuar um levantamento bibliográfico para caracterizar quais oráculos de teste têm sido
utilizados para apoiar o teste de sistemas de software com GUIs. Para atingir este objetivo,
foi realizada uma revisão sistemática, cujos resultados são apresentados nessa seção. Esta
Seção configura uma sı́ntese da pesquisa desenvolvida. Definições são formalizadas a partir
dos resultado da RS adicionados a alguns trabalhos já conhecidos pelos autores. Com
isso, firmam-se alguns pontos de fundamental importância para a confecção de oráculos
no contexto de GUIs.
20
CAPÍTULO 3. REVISÃO BIBLIOGRÁFICA SISTEMÁTICA
∙ palavras-chave:
∙ data dos trabalhos: É importante salientar que foram buscadas apenas abordagens
novas, sendo assim, apenas trabalhos publicados a partir do ano 2000 foram anali-
sados.
∙ idioma dos trabalhos: Inglês. É sabido que o inglês pode ser considerado o idioma
mais aceito internacionalmente para trabalhos cientı́ficos, sendo assim pode ser con-
siderada a lı́ngua ideal para que o trabalho possa ser repetido em diversos contextos
sem nenhum prejuı́zo.
21
CAPÍTULO 3. REVISÃO BIBLIOGRÁFICA SISTEMÁTICA
22
CAPÍTULO 3. REVISÃO BIBLIOGRÁFICA SISTEMÁTICA
Um exemplo prático disso pode ser elucidado por meio de uma GUI hipotética “X”
que contenha um componente principal “M”. Esse, por sua vez, contém um botão “B”
que quando acionado por meio de um clique do mouse faz com que o background (plano
de fundo) de “M” seja pintado da cor preta. Em outras palavras, isso implica dizer que
quando “B” for clicado, ou seja, quando determinado evento for iniciado a partir de “B”,
o valor da propriedade Cor do widget “M” será alterado para preto.
23
CAPÍTULO 3. REVISÃO BIBLIOGRÁFICA SISTEMÁTICA
24
CAPÍTULO 3. REVISÃO BIBLIOGRÁFICA SISTEMÁTICA
25
CAPÍTULO 3. REVISÃO BIBLIOGRÁFICA SISTEMÁTICA
10, 12, 13, 14, 16 e 17) apresentam resultados qualitativos. Por fim, 9% das obras (id 12)
configuram ferramentas para a confecção automatizada de oráculos para interfaces GUIs.
Ainda é possı́vel fazer outras afirmações embasadas nos resultados da RS realizada.
Uma delas é que a maioria dos trabalhos com abordagens acerca de oráculos para GUI
incluı́am os autores Atif Memon e Qing Xie. Entre obras selecionadas, 63% tinham
um desses dois pesquisadores como primeiro autor. Outra constatação é que não foram
encontradas abordagens que utilizem técnicas de processamento de imagem para apoiar
a construção dos oráculos, ou seja, não há nada na literatura que faça abordagens de
oráculos para GUIs utilizando a aparência das interfaces. Sendo assim, concluı́-se que
todos os oráculos aplicavam-se aos eventos das interfaces GUI. Resume-se que, na grande
maioria das abordagens, o estado esperado é obtido por meio de especificações formais
de uma GUI. Ou seja, a partir do conjunto de elementos GUI e suas propriedades, é
possı́vel que oráculos sejam ajustados. (Pretendo atualizar este subcapı́tulo inserindo
umas análises, já prontas, de mais uns 3 ou 4 trabalhos)
26
CAPÍTULO 3. REVISÃO BIBLIOGRÁFICA SISTEMÁTICA
software de Processamento de Imagem, ou seja, que tenham algum tipo de saı́da gráfica.
Uma das dificuldades encontradas durante a realização da pesquisa é o fato de ser notável
que as pesquisas na área de teste de programas do meio gráfico são escassas. Por isso, é
valorizado todo documento que faça um levantamento do estado da arte relacionado ao
estabelecimento de qualidade desse tipo de aplicações, ou seja, sistemas do meio gráfico,
dentre os quais está o domı́nio GUI. A RS apresentada é valorizada por configurar o
armazenamento contı́nuo das informações e a garantia de abrangência da pesquisa por
partes de pesquisadores interessados no tema, o que constitui sólida contribuição. A
seção seguinte busca aprofundar os conceito de CBIR, bem como elucidar a forma com
que essa tecnologia será pode ser empregada na configuração de oráculos de teste para
interfaces GUI.
27
Capı́tulo
4
CBIR no Apoio a Oráculos de Teste
Considerações Iniciais
É notável o aumento do uso de documentos digitalizados por parte de diversas organiza-
ções no contexto atual. Seu uso está em constante crescimento, sendo armazenados em
diferentes bases de dados que podem ser acessadas por meio de redes de comunicação
como a internet. O uso em larga escala deste tipo de documento levou à necessidade de
criação de eficientes algoritmos de recuperação, indexação e técnicas de classificação de
imagens. Cabe ainda citar que diversas áreas da ciência foram amplamente beneficiadas
por tal evolução, com destaque especial para a área das ciências médicas. No diagnós-
tico auxiliado por computador, conhecido como esquema CAD, o médico sintetizará um
diagnóstico levando em consideração o resultado de processamento de um sistema com-
putadorizado, que pode executar baseando-se em processamentos e análises de imagens
ou até em dados clı́nicos de pacientes (GATO et al., 2004).
Esse cenário favorável forçou o aprimoramento da tecnologia e o barateamento das
operações digitalizadas, como exemplo, os exames médicos. Naturalmente isso fez com
que fossem criados sistemas computacionais que suportassem a demanda das tarefas de
análise de imagens (TRAINA, 2006). Em paralelo, muitos pesquisadores voltaram suas
pesquisas para a área do processamento de imagens e da computação gráfica como um
todo, fazendo com que novas tecnologias e métodos de trabalho surgissem na área. O
CBIR foi um deles. Este capı́tulo busca aprofundar os conceitos de CBIR e introduzir
28
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
a maneira que esta tecnologia será explorada para a configuração de oráculos de teste
capazes de apoiar o teste de sistemas com interfaces GUI.
29
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
30
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
∙ Aquisição: consiste em, por algum meio fı́sico, obter as imagens digitais a serem
utilizadas.
31
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
32
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
Uma função de distância ou, similaridade, é um algoritmo que compara dois vetores de
caracterı́sticas e retorna um valor não negativo. Quanto menor o valor retornado, maior
é a semelhança entre a imagem modelo e a imagem procurada. Existem várias funções
de distância disponı́veis para comparar vetores de caracterı́sticas. Alguns exemplos são
a distância Euclidiana entre histogramas (Hafner et al., 1995; Swain e Ballard, 1991), a
distância de Mahalanobis entre o valor médio das caracterı́sticas da imagem (Manjunath
e Ma, 1996; Smith, 1997), ou métricas derivadas de critérios de otimização relacionados
(Rubner et al., 1998). Vasconcelos (2004) faz uma profunda análise sobre a eficiência
da avaliação de sistemas de CBIR usando funções de similaridade probabilı́sticas. A
partir da composição do vetor de caracterı́sticas e da definição da função de similaridade
a ser empregada, o sistema está pronto para realizar as consultas. A recuperação por
similaridade pode ser por abrangência (usa a distância a partir de um ponto de referência
para a recuperação da imagem) ou pelos 𝑘 − 𝑣𝑖𝑧𝑖𝑛ℎ𝑜𝑠 mais próximos (a partir de um
ponto de referência recupera as 𝑘 imagens mais similares a imagem de consulta) (Ciaccia
et al., 1997).
33
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
34
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
o grau de acerto do sistema CAD, essa abordagem está distante de ser precisa, no sentido
que a forma identificada pelo sistema pode ser bastante diversa da massa indicada na
mamografia e ainda assim ser considerada como correta.
A área médica é, de fato, rica em exemplos como esse, no qual um oráculo gráfico
com certo grau de precisão poderia ser muito útil. O trabalho de Paquerault et al. (2004)
compara três métodos de segmentação, também aplicados em imagens mamográficas para
a identificação de microcalcificações. Nesse caso, o resultado dos algoritmos de segmenta-
ção, que identificam regiões de interesse na imagem são sobrepostas à imagem original e
fica por conta de um “oráculo humano” avaliar qual deles produziu o resultado mais exato.
O uso de um oráculo automatizado nesse caso seria de grande importância, adicionando
parâmetros objetivos de comparação e com isso diminuindo a probabilidade de enganos.
Um segundo exemplo é quando a saı́da do programa é dada através de uma interface
gráfica. Suponha-se que o resultado esperado é dado por uma imagem, resultado de uma
execução anterior do programa ou de outro programa como no caso do teste de regressão ou
da aplicação do teste de mutação. Como mostra a Figura X (sera criada e inserida),
uma GUI é composta de diversos componentes cujo comportamento, conhecido pelos
usuários, indica a correção ou não da execução do programa. Por exemplo, uma área
preenchida numa barra de “progresso” ou um um “checkbox” marcado ou não determinam
se o resultado esperado foi ou não alcançado.
Existem, porém, diversos fatores que podem fazer com que a representação gráfica
de duas execuções com o mesmo resultado não seja exatamente a mesma. Por exemplo,
quando as duas execuções – que produz a imagem de referência e a que se deseja analisar –
são executados em ambientes diferentes, com look-and-feel diversos. Tal situação torna-se
cada vez mais comum, dada a portabilidade alcançada por meio de algumas linguagens
de programação ou se considerarmos aplicações WEB cuja aparência para o usuário final
depende, também, do cliente (WEB browser) utilizado. A Figura Y (será criada e
inserida) mostra o resultado de duas execuções que apresentam o mesmo comportamento
e portanto deveriam ser consideradas “iguais” do ponto de vista de um oráculo de teste.
No detalhe, pode-se notar que a comparação pixel-a-pixel para os componentes checkbox
no lado esquerdo da figura produziria o resultado incorreto sob essa perspectiva.
Nos dois casos, o problema que se tem é o de utilizar uma imagem de referência que
pode não corresponder exatamente ao resultado esperado. Ou, ainda, de se ter apenas
uma aproximação do resultado (imagem) esperado. A utilização dos conceitos de CBIR
pode ajudar nesse contexto à medida que permite que sejam extraı́das das imagens as
caracterı́sticas relevantes para a comparação. Por exemplo, a área e o perı́metro de uma
região de interesse podem ser comparadas com as mesmas caracterı́sticas da imagem de
referência na qual o médico especialista marcou manualmente. Embora o resultado da
35
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
comparação não seja, em geral, exatamente igual, resultados muitos próximos devem
indicar que a execução do sistema CAD acertou na identificação da região de interesse.
O uso de CBIR não tem como objetivo indicar quando duas imagens são iguais ou não
mas sim apontar o quão próximas elas estão, fato que pode ser positivamente explorado
na construção de oráculos de teste. Para permitir que CBIR possa ser utilizada de forma
eficiente, este artigo propõe uma arquitetura que permite ao testador criar seus oráculos
gráficos de forma flexı́vel e simples, independentemente do domı́nio a que se destine. O
trabalho do testador é definir os extratores, a função de de similaridade e as regiões da
imagem em que devem ser aplicados.
4.2.1 Arquitetura
Para que se possa utilizar os conceitos de CBIR, conforme descrito anteriormente, foi
desenvolvido um framework chamado O-FIm (Oracle for Images) que tem como obje-
tivo permitir ao testador construir um oráculo de teste, procurando atender os seguinte
requisitos:
∙ flexibilidade: o testador deve ser capaz de criar oráculos para diversas aplicações
em diversos domı́nios distintos. Tudo o que ele precisa fazer é definir e implementar
os extratores de caracterı́sticas e funções de similaridade que pretende usar no seu
oráculo;
∙ simplicidade: o framework provê uma API simples, que o testador pode rapidamente
aprender e utilizar;
4.2.2 Plugins
Os plugins representados na Figura W são as contribuições do testador para a criação do
oráculo. Eles são adicionados ao framework através de chamadas ao núcleo e podem ser
de dois tipos: extrator ou função de similaridade.
O primeiro tipo de plugin representa um extrator de caracterı́sticas. Nele o testador
deve implementar os seus algoritmos de processamento de imagem que irão identificar
uma caracterı́stica presente numa imagem e quantificá-la.
36
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
37
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
Pode-se perceber que, propositadamente, a API fornecida por essas duas interfaces
são bastante simples, mas suficientes para permitir sua utilização no O-FIm. A Figura Q
(a figura será refeita ) sumariza essas duas classes e o relacionamento entre elas. Deve-se
notar que na criação de um oráculos faz-se a instanciação de um objeto ISimilarity que,
por sua vez, agrega um ou mais extratores.
4.2.3 Núcleo
O núcleo do O-FIm permite que o testador instale e remova plugins e provê uma API
sobre a qual o testador pode construir seus oráculos. Para instalar e remover plugins, o
núcleo provê um programa que pode ser invocado diretamente na linha de comando. Por
exemplo, para instalar um plugin pode-se executar:
∙ MyExtractor: o nome a ser dado ao plugin. O núcleo irá associar esse nome às
classes que representam o plugin. Este será o nome que deve ser utilizado pelo
usuário quando oráculos forem configurados com esse plugin
Com a instalação de plugins permite-se que eles possam ser reutilizados na construção
de diferentes oráculos.
38
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
O núcleo provê, também, uma API que permite, de forma pragramática, a criação de
um oráculo. Na Figura 3 esse tipo de interação é representada pela aplicação do testador
que acessa os métodos da API do núcleo. As principais funções fornecidas pelo núcleo
estão na classe br.oraculos. Oracle que implementa:
4.3 Contexto
Com a finalidade de demonstrar a aplicabilidade da estrutura construı́da apresentada na
Seção anterior e enfatizar a viabilidade da utilização de CBIR para a construção de orá-
culos, foi implementada uma interface gráfica capaz de viabilizar todas as funcionalidades
do núcleo de um modo prático e rápido. Esta interface já foi utilizada com sucesso em
alguns estudos de caso que se resumiam no teste de alguns esquemas CAD. Esta subseção
visa a apresentar os principais aspectos relacionados à interface que servirá de base para
a realização da proposta de trabalho contida no Capı́tulo ??
39
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
40
CAPÍTULO 4. CBIR NO APOIO A ORÁCULOS DE TESTE
41
Capı́tulo
5
Proposta de Trabalho
Considerações Iniciais
Um ponto particularmente delicado na automatização de um oráculo aparece quando as
saı́das a serem comparadas se encontram num formato não trivial, como, por exemplo, a
tela de uma interface gráfica ou uma outra imagem produzida pelo programa sendo con-
siderado. Neste caso, pode-se optar por construir oráculos definindo-se anotações sobre a
saı́da considerada correta. É possı́vel, por exemplo, criar um banco de dados que armazene
caracterı́sticas convencionais (textos ou números) sobre a saı́da esperada. Em seguida,
analisa-se a saı́da do programa em teste e gera-se, também, caracterı́sticas convencionais
que poderão ser comparadas com o oráculo previamente definido. Como é possı́vel inferir,
esta tarefa é árdua e exige intensa participação do usuário que, provavelmente, pode ser
variável e inexata. Fatores relacionados à fadiga, experiência do usuário sobre a imagem
e até mesmo nı́vel de exigência na interpretação podem inviabilizar esta abordagem.
Uma abordagem inovadora é a utilização dos conceitos de CBIR, que vêm sendo desen-
volvidos nas últimas décadas como ferramenta para consultar bancos de imagens, parti-
cularmente para facilitar a recuperação de imagens similares a uma determinada imagem
modelo. A similaridade entre imagens é definida por meio da comparação de caracterı́sti-
cas extraı́das geralmente por técnicas de processamento de imagens, referentes a aspectos
de cor, textura e forma. Este tipo de recuperação de informação pode ser utilizado nos
mais diversos campos de conhecimento, tendo sido bastante explorado na área médica. A
42
CAPÍTULO 5. PROPOSTA DE TRABALHO
43
CAPÍTULO 5. PROPOSTA DE TRABALHO
de um modo que sejam capturados screenshots para que neles sejam realizados os testes.
É importante salientar que para isso serão estados os componentes do toolkit Swing, que
é uma famosa biblioteca de desenvolvimento de interfaces GUI em linguagem Java. Parte
fundamental do trabalho será a implementação de extratores de caracterı́sticas de ima-
gem, funções de similaridades, filtros de pré-processamento imagens e heurı́sticas capazes
de avaliar interfaces GUI implementadas a partir da biblioteca Swing.
Para que os objetivos identificados sejam cumpridos, são previstas duas grandes etapas
no desenvolvimento do projeto. A primeira é a de estudar e determinar as caracterı́sticas
que podem ser extraı́das das interfaces GUI para comparação. A segunda é a concretiza-
ção do oráculo gráfico propriamente dito, na qual técnicas de processamento de imagens
devem ser estudadas e implementadas, para que se possa extrair e comparar as carac-
terı́sticas de interesses especı́ficos para domı́nios GUI. Sumarizando, o objetivo principal
deste projeto é a construção de um ambiente batizado de “oráculo gráfico” que utiliza
técnicas de recuperação de imagem baseada em conteúdo para comparar o resultado da
execução de determinada GUI em teste, com o resultado esperado, também na forma
gráfica. Objetiva-se ainda a criação de um protótipo de uma ferramenta que permita
ao testador definir e parametrizar oráculos de teste para GUI em seu ambiente. Sendo
assim, o trabalho proposto segue a tendência do uso da automação para apoio ao teste
e, por isso, pretende-se apresentar um estudo de viabilidade de aplicação industrial do
teste de software automatizado para GUIs. Em resumo, o objetivo principal do trabalho
é a implementação de um oráculo passivo e heurı́stico capaz de apoiar o teste de sistemas
cuja a interação se dá por meio de interfaces GUI.
Ao final do projeto pretende-se ter uma visão mais aprimorada sobre os problemas
relacionados com a automatização de oráculos que utilizem informações na forma de ima-
gens, em lugar de informações convencionais como texto ou sinais. Deve-se disponibilizar
um protótipo de uma ferramenta de automatização de oráculo que emprega as técnicas
de recuperação de imagem baseada em conteúdo, o que constitui sólida contribuição.
5.2 Atividades
As atividades apresentadas nesta seção são divididas entre atividades requisitadas pelo
Programa de Pós-Graduação do ICMC e atividades técnicas propriamente ditas para o
desenvolvimento do trabalho proposto, o cronograma completo das atividades a serem
desenvolvidas é apresentado na Figura 5.1 sendo descritas a seguir:
44
CAPÍTULO 5. PROPOSTA DE TRABALHO
45
CAPÍTULO 5. PROPOSTA DE TRABALHO
∙ Implementação de sistemas cuja interação se dá por meio de GUI que utilizam
Swing como biblioteca
∙ Pesquisa sobre a aplicação do oráculo gráfico em sistemas prontos
∙ Estudo e integração dos experimentos com a ferramenta Proteum
9 elaboração de artigos.
46
Referências Bibliográficas
Agerholm, S.; jean Lecoeur, P.; Reichert, E.; Electronique, D. Formal specification and
validation at work: A case study using vdm-sl. In: Proceedings of Second Workshop
on Formal Methods in Software Practice, ACM, 1998.
Andrews, J.; Fu, R.; Liu, V. Adding value to formal test oracles. In: Automated Software
Engineering, 2002. Proceedings. ASE 2002. 17th IEEE International Conference on,
2002, p. 275–278.
Ballard, D. H.; Brown, C. M. Computer vision. New Jersey: Prentice-Hall Inc, 1982.
Bellotti, R.; Carlo, F. D.; Tangaro, S.; Gargano, G.; Maggipinto, G.; Castellano, M.; Mas-
safra, R.; Cascio, D.; Fauci, F.; Magro, R.; Raso, G.; Lauria, A.; Forni, G.; Bagnasco,
S.; Cerello, P.; Zanon, E.; Cheran, S. C.; Torres, E. L.; Bottigli, U.; Masala, G. L.;
Oliva, P.; Retico, A.; Fantacci, M. E.; Cataldo, R.; Mitri, I. D.; Nunzio, G. D. A com-
pletely automated cad system for mass detection in a large mammographic database.
Medical Physics, v. 33, n. 8, p. 3066–3075, 2006.
Disponı́vel em http://link.aip.org/link/?MPH/33/3066/1
Biolchini, J.; Mian, P. G.; Natali, A. C. C.; Travassos, G. H. Sytematic review in software
engineering. Relatório Técnico, RT–ES 679/05 System Engineering and Computer Sci-
ence Dept., COOPE/UFRJ, 2005.
47
REFERÊNCIAS BIBLIOGRÁFICAS
Disponı́vel em http://alarcos.inf-cr.uclm.es/doc/MetoTecInfInf/Articulos/
es67905.pdf
Brown, D.; Roggio, R.; Cross, J.H., I.; McCreary, C. An automated oracle for software
testing. Reliability, IEEE Transactions on, v. 41, n. 2, p. 272–280, 1992.
Chan, W.; Cheung, S.; Ho, J.; Tse, T. Reference models and automatic oracles for the
testing of mesh simplification software for graphics rendering. In: Computer Software
and Applications Conference, 2006. COMPSAC ’06. 30th Annual International, 2006,
p. 429–438.
Ciaccia, P.; Patella, M.; Zezula, P. M-tree: An efficient access method for similarity se-
arch in metric spaces. In: VLDB ’97: Proceedings of the 23rd International Conference
on Very Large Data Bases, San Francisco, CA, USA: Morgan Kaufmann Publishers Inc.,
1997, p. 426–435.
Cultural, L. Grande enciclopédia larousse cultural. N. 18. São Paulo: Nova Cultural,
1998.
Datta, R.; Joshi, D.; Li, J.; Wang, J. Z. Image retrieval: Ideas, influences, and trends of
the new age. ACM Comput. Surv., v. 40, n. 2, p. 1–60, 2008.
Disponı́vel em http://dx.doi.org/10.1145/1348246.1348248
48
REFERÊNCIAS BIBLIOGRÁFICAS
Delamaro, M. E.; Maldonado, J. C. Proteum - a tool for the assessment of test adequacy
for c programs: User’s guide. In: In Proceedings of the Conference on Performability
in Computing Systems (PCS 96, 1996, p. 79–95.
DeMillo, R. A.; Lipton, R. J.; Sayward, F. G. Hints on test data selection: Help for the
practicing programmer. Computer, v. 11, n. 4, p. 34–41, 1978.
El-Naqa, I.; Yang, Y.; Galatsanos, N.; Nishikawa, R.; Wernick, M. A similarity lear-
ning approach to content-based image retrieval: application to digital mammography.
Medical Imaging, IEEE Transactions on, v. 23, n. 10, p. 1233–1244, 2004.
Fenkam, P.; Gall, H.; Jazayeri, M. Constructing corba-supported oracles for testing: a
case study in automated software testing. In: Automated Software Engineering, 2002.
Proceedings. ASE 2002. 17th IEEE International Conference on, 2002, p. 129–138.
Fischer, T.; Sadeghi, A.-R.; Winandy, M. A pattern for secure graphical user inter-
face systems. In: Database and Expert Systems Application, 2009. DEXA ’09. 20th
International Workshop on, 2009, p. 186–190.
Gaede, V.; Günther, O. Multidimensional access methods. ACM Comput. Surv., v. 30,
n. 2, p. 170–231, 1998.
Gonzalez, R. C.; Woods, R. E. Digital image processing (3rd edition). Upper Saddle
River, NJ, USA: Prentice-Hall, Inc., 2006.
Hafner, J.; Sawhney, H. S.; Equitz, W.; Flickner, M.; Niblack, W. Efficient color his-
togram indexing for quadratic form distance functions. IEEE Trans. Pattern Anal.
Mach. Intell., v. 17, n. 7, p. 729–736, 1995.
49
REFERÊNCIAS BIBLIOGRÁFICAS
Hummel, O.; Atkinson, C. Automated harvesting of test oracles for reliability testing.
In: COMPSAC ’05: Proceedings of the 29th Annual International Computer Software
and Applications Conference, Washington, DC, USA: IEEE Computer Society, 2005, p.
196–202.
Hunter, C.; Strooper, P. Systematically deriving partial oracles for testing concurrent
programs. In: ACSC ’01: Proceedings of the 24th Australasian conference on Computer
science, Washington, DC, USA: IEEE Computer Society, 2001, p. 83–91.
Jigloo SWT/Swing GUI Editor for Eclipse and WebSphere Cloudgarden v4.5.3. Online,
http://www.cloudgarden.com/jigloo/ - (accessado em 10/12/2009), 2009.
Jin, H.; Wang, Y.; Chen, N.-W.; Gou, Z.-J.; Wang, S. Artificial neural network for
automatic test oracles generation. In: Computer Science and Software Engineering,
2008 International Conference on, 2008, p. 727–730.
Li, J.; Liu, H.; Seviora, R. Constructing automated protocol testing oracles to accom-
modate specification nondeterminism. In: Computer Communications and Networks,
1997. Proceedings., Sixth International Conference on, 1997, p. 532–537.
Li, P.; Wohlstadter, E. View-based maintenance of graphical user interfaces. In: AOSD
’08: Proceedings of the 7th international conference on Aspect-oriented software deve-
lopment, New York, NY, USA: ACM, 2008, p. 156–167.
Lieberman, H.; Rozenweig, E.; Singh, P. Aria: An agent for annotating and retrieving
images. Computer, v. 34, n. 7, p. 57–62, 2001.
50
REFERÊNCIAS BIBLIOGRÁFICAS
Manjunath, B.; Ma, W. Texture features for browsing and retrieval of image data. Pat-
tern Analysis and Machine Intelligence, IEEE Transactions on, v. 18, n. 8, p. 837–842,
1996.
Mayer, J.; Guderlei, R. On random testing of image processing applications. In: QSIC
’06: Proceedings of the Sixth International Conference on Quality Software, Washing-
ton, DC, USA: IEEE Computer Society, 2006, p. 85–92.
Memon, A.; Banerjee, I.; Hashmi, N.; Nagarajan, A. Dart: A framework for regres-
sion testing ”nightly/daily builds”of gui applications. In: ICSM ’03: Proceedings of
the International Conference on Software Maintenance, Washington, DC, USA: IEEE
Computer Society, 2003a, p. 410.
Memon, A.; Nagarajan, A.; Xie, Q. Automating regression testing for evolving gui
software. Journal of Software Maintenance, v. 17, n. 1, p. 27–64, 2005.
Memon, A.; Xie, Q. Using transient/persistent errors to develop automated test oracles
for event-driven software. In: Automated Software Engineering, 2004. Proceedings.
19th International Conference on, 2004a, p. 186–195.
Memon, A. M. Employing user profiles to test a new version of a gui component in its
context of use. Software Quality Control, v. 14, n. 4, p. 359–377, 2006.
Memon, A. M.; Banerjee, I.; Nagarajan, A. What test oracle should I use for effective
GUI testing? In: Proceedings of the IEEE International Conference on Automated
Software Engineering, IEEE Computer Society, 2003b, p. 164–173.
51
REFERÊNCIAS BIBLIOGRÁFICAS
Memon, A. M.; Xie, Q. Studying the fault-detection effectiveness of GUI test cases for
rapidly evolving software. IEEE Trans. Softw. Eng., v. 31, n. 10, p. 884–896, 2005.
Myers, G. J.; Sandler, C. The art of software testing. 2 ed. John Wiley & Sons, Inc.,
Hoboken, New Jersey, 234 p., 2004.
Oliveira, R. A. P.; Delamaro, M. E.; Nunes, F. L. S. O-FIm - Oracle for Images. In:
Sessão de Ferramentas 2009 - XVI Sessão de Ferramentas - SBES (Simpósio Brasileiro
de Engenharia de Software), Fortaleza – CE – Brasil, 2009a, p. 1 – 6.
Paiva, A.; Faria, J. C. P.; Vidal, R. F. A. M. Towards the integration of visual and formal
models for gui testing. Electr. Notes Theor. Comput. Sci., v. 190, n. 2, p. 99–111, 2007.
Paquerault, S.; Yarusso, L. M.; Papaioannou, J.; Jiang, Y.; Nishikawa, R. M. Radial
gradient-based segmentation of mammographic microcalcifications: observer evaluation
and effect on cad performance. Med Phys, v. 31, n. 9, p. 2648 – 2657., 2004.
Peters, D.; Parnas, D. L. Generating a test oracle from program documentation: work
in progress. In: ISSTA ’94: Proceedings of the 1994 ACM SIGSOFT international
symposium on Software testing and analysis, New York, NY, USA: ACM, 1994, p.
58–65.
52
REFERÊNCIAS BIBLIOGRÁFICAS
Peters, D. K.; Parnas, D. L. Using test oracles generated from program documentation.
IEEE Transactions on Software Engineering, v. 24, n. 3, p. 161–173, 1998.
Petrakis, E.; Faloutsos, C.; Lin, K.-I. Imagemap: an image indexing method based on
spatial similarity. Knowledge and Data Engineering, IEEE Transactions on, v. 14,
n. 5, p. 979–987, 2002.
Rapps, S.; Weyuker, E. Selecting software test data using data flow information. Soft-
ware Engineering, IEEE Transactions on, v. SE-11, n. 4, p. 367–375, 1985.
Reddi, V. J.; Connors, D.; Cohn, R.; Smith, M. D. Persistent code caching: Exploiting
code reuse across executions and applications. In: CGO ’07: Proceedings of the In-
ternational Symposium on Code Generation and Optimization, Washington, DC, USA:
IEEE Computer Society, 2007, p. 74–88.
Richardson, D.; Aha, S.; O’Malley, T. Specification-based test oracles for reactive sys-
tems. In: Software Engineering, 1992. International Conference on, 1992, p. 105–118.
Rubner, Y.; Tomasi, C.; Guibas, L. A metric for distributions with applications to image
databases. In: Computer Vision, 1998. Sixth International Conference on, 1998, p.
59–66.
Smeulders, A.; Worring, M.; Santini, S.; Gupta, A.; Jain, R. Content-based image
retrieval at the end of the early years. Pattern Analysis and Machine Intelligence,
IEEE Transactions on, v. 22, n. 12, p. 1349–1380, 2000.
Smith, J. Integrated spatial and feature image systems: Retrieval. Tese de Doutora-
mento, School of Arts and Sciences - Columbia University, New York City -New York
- USA, 1997.
Disponı́vel em citeseer.ist.psu.edu/smith97integrated.html
Sneed, H. M.; Mérey, A. Automated software quality assurance. IEEE Trans. Softw.
Eng., v. 11, n. 9, p. 909–916, 1985.
Sommerville, I. Software engineering. 5 ed. Redwood City, CA, USA: Addison Wesley
Longman Publishing Co., Inc., 1995.
53
REFERÊNCIAS BIBLIOGRÁFICAS
Traina, C., J.; Traina, A.; Faloutsos, C.; Seeger, B. Fast indexing and visualization of
metric data sets using slim-trees. Knowledge and Data Engineering, IEEE Transactions
on, v. 14, n. 2, p. 244–260, 2002.
Treharne, H.; Draper, J.; Schneider, S. Test case preparation using a prototype. In: B
’98: Proceedings of the Second International B Conference on Recent Advances in the
Development and Use of the B Method, London, UK: Springer-Verlag, 1998, p. 293–311.
Tse, T. H.; Lau, F. C. M.; Chan, W. K.; Liu, P. C. K.; Luk, C. K. F. Testing
object-oriented industrial software without precise oracles or results. Commun. ACM,
v. 50, n. 8, p. 78–85, 2007.
Wilkins, P.; Ferguson, P.; Smeaton, A. F. Using score distributions for query-time
fusion in multimediaretrieval. In: MIR ’06: Proceedings of the 8th ACM international
workshop on Multimedia information retrieval, New York, NY, USA: ACM, 2006, p.
51–60.
Xie, Q. Developing cost-effective model-based techniques for gui testing. Tese de Dou-
toramento, College Park, MD, USA, adviser-Memon, Atif, 2006a.
Xie, Q. Developing cost-effective model-based techniques for gui testing. In: ICSE ’06:
Proceedings of the 28th international conference on Software engineering, New York,
NY, USA: ACM, 2006b, p. 997–1000.
Xie, Q.; Memon, A. M. Designing and comparing automated test oracles for gui-based
software applications. ACM Trans. Softw. Eng. Methodol., v. 16, n. 1, p. 4, 2007.
Ye, M.; Feng, B.; Zhu, L. Automated oracle based on multi-weighted neural networks
for gui testing. Information Technology Journal 6, v. 3, p. 370–375, 2007.
Zhu, H. A note on test oracles and semantics of algebraic specifications. In: Quality
Software, 2003. Proceedings. Third International Conference on, 2003, p. 91–98.
54