Sie sind auf Seite 1von 30

UNIVERSIDADE FEDERAL DO TOCANTINS

CAMPUS UNIVERSITRIO DE PALMAS


Cincia da Computao

Testando software cientfico: Uma reviso sistemtica da literatura

PALMAS
2014

UNIVERSIDADE FEDERAL DO TOCANTINS


CAMPUS UNIVERSITRIO DE PALMAS
Cincia da Computao

Testando software cientfico: Uma reviso sistemtica da literatura


Autor correspondente. Tel.: + 1 9704917096.
Endereos de email: upuleegk@cs.colostate.edu (U. Kanewala),
bieman@cs.colostate.edu (J.M. Bieman).
http://DX.doi.org/10.1016/j.infsof.2014.05.006
0950-5849/ 2014 Elsevier B.V. Todos os direitos reservados.artigo
Upulee Kanewala, James M. Bieman
Computer Science Department, Colorado, EUA
2014 Elsevier B.V.
Acadmicas: Izana Silva Carneiro, Leticia Crisstomo, Marina Medeiros Mller e Rayane Veras Soares

Trabalho apresentado ao Curso de Cincia da Computao da Universidade Federal do Tocantins, como parte integrante
da disciplina Leitura e Produo de Textos Cientficos.
Professor: Patrick Letouze.

Resumo
Contexto: O software cientfico desempenha um papel importante na tomada de decises crticas,
por exemplo, ao fazer previses do tempo com base em modelos climticos, e no cmputo de
evidncias para publicaes de pesquisa.
Recentemente, cientistas tiveram de retratar publicaes devido a erros causados por falhas de
software. Testes sistemticos podem identificar tais falhas no cdigo.
Objetivo: Este estudo visa identificar desafios especficos, as solues propostas e problemas no
resolvidos enfrentados durante o teste de software cientfico.
Mtodo: Realizamos uma reviso de literatura sistemtica para identificar e analisar a literatura
relevante. Identificamos 62 estudos que forneceram informao relevante sobre testes de software
cientfico.
Resultados: Consideramos que desafios enfrentados ao testar o software cientfico se encaixam em
duas categorias principais: (1) desafios para testar software que ocorrem devido a caractersticas do
software cientfico, tais como problemas de orculo e (2) desafios para testar software que ocorrem
devido a diferenas culturais entre os cientistas e a comunidade de engenharia de software tal como
entender o cdigo e o modelo que ele implementa como entidades inseparveis. Alm disso, ns
identificamos mtodos para potencialmente superar estes desafios e suas limitaes. Finalmente
descrevemos desafios no resolvidos e como praticantes e pesquisadores de engenharia de software
podem ajudar na sua superao.
Concluses: O software cientfico apresenta desafios especiais para testes. Especificamente, as
diferenas culturais entre os cientistas desenvolvedores e engenheiros de software, bem como as
caractersticas do software cientfico, tornam os testes mais difceis. Tcnicas existentes, tais como
a deteco do cdigo clone podem ajudar a melhorar o processo de testes. Engenheiros de software
devem considerar desafios especiais impostos pelo software cientfico, tais como problemas de
orculo, ao desenvolver tcnicas para testes.

Sumrio
1. Introduo ........................................................................................................................................ 1
2. Mtodo de pesquisa .......................................................................................................................... 2
2.1 Planejando a RSL ........................................................................................................................... 2
2.1.1. Questionrio ............................................................................................................................... 2
2.1.2. Elaborao e validao do protocolo de reviso ........................................................................ 3
2.2. Realizando a reviso ..................................................................................................................... 4
2.2.1. Identificao de estudos relevantes e estudos primrios ............................................................ 4
2.2.2. Avaliao de extrao e qualidade de dados .............................................................................. 4
2.3. Relatando a reviso ....................................................................................................................... 5
3. Resultados ........................................................................................................................................ 5
3.1 QP1: Como o software cientfico definido na literatura? ............................................................ 6
3.2 QP2: Existem caractersticas especiais ou defeitos no software cientfico ou no seu
desenvolvimento que dificultam os testes? ...................................................................................... 9
3.4 QP4: H desafios que no puderam ser respondidos atravs de tcnicas existentes? .................. 19
4. Discusso ....................................................................................................................................... 19
4.1 Principais resultados .................................................................................................................... 19
4.2 Tcnicas potencialmente tis em testes de software cientfico .................................................. 20
5. Concluso e trabalho futuro ........................................................................................................... 22
Agradecimentos ................................................................................................................................. 22
Pontos fortes e fracos da RSL ............................................................................................................ 21
Referncias ......................................................................................................................................... 24

1. Introduo

Software cientfico amplamente utilizado nos campos da cincia e engenharia. O software


desempenha um papel importante na tomada de decises crticas em campos como a indstria
nuclear, a medicina e a militar [65,66]. Por exemplo, em simulaes de armas nucleares, cdigo
usado para determinar o impacto de modificaes, uma vez que estas armas no podem ser testadas
em campo [62]. Modelos climticos fazem previses do clima e avaliam a mudana climtica [17].
Alm disso, os resultados de software cientfico so usados como evidncia em publicaes de
pesquisa [66]. Devido complexidade do software cientfico e o domnio de conhecimento
especializado necessrio, cientistas muitas vezes desenvolvem os programas eles prprios ou esto
intimamente envolvidos com o seu desenvolvimento [60,47,69,7]. Mas cientistas desenvolvedores
podem no estar familiarizados com prticas de engenharia de software aceitas [69,65]. Esta falta de
familiaridade pode afetar a qualidade do software cientfico [20].
O teste de software uma atividade que afetada. Devido falta de anlises sistemticas de
software cientfico, falhas sutis podem permanecer sem deteco. Estas falhas sutis podem causar a
mudana dos dados de sada do programa sem que haja pane no programa. Falhas de software como
erros pontuais causaram a perda de preciso em programas de processamento de dados ssmicos
[27]. Falhas de software comprometeram o desempenho da mquina de medir por coordenadas
(CMM) [1]. Alm disso, os cientistas tm sido forados a retractar o trabalho publicado devido a
falhas de software [51]. Hatton et al. chegaram concluso que vrios sistemas de software escritos
para geocientistas produziram resultados razoveis ainda que essencialmente diferentes [28]. H
relatos de cientistas que acreditam que era preciso modificar o modelo da fsica ou desenvolver
algoritmos novos, mas posteriormente descobriam que os problemas reais eram pequenas falhas no
cdigo [18].
Podemos definir software cientfico, de forma ampla, como software usado para fins
cientficos. Software cientfico desenvolvido, principalmente, para melhor compreender ou fazer
previses sobre os processos do mundo real. O tamanho deste software varia de 1.000 a 100.000
linhas de cdigo [66]. Os desenvolvedores de software cientfico variam entre cientistas que no
possuem nenhum conhecimento de engenharia de software e desenvolvedores profissionais de
software experientes, com um conhecimento considervel sobre engenharia de software.
Para desenvolver software cientfico, cientistas desenvolvem primeiro modelos
discretizados. Estes modelos discretizados so ento traduzidos em algoritmos que so, por sua vez,
codificados utilizando uma linguagem de programao. Falhas podem ser introduzidas durante
todas essas fases [15]. Desenvolvedores de software cientfico geralmente executam processos de
validao para garantir que o modelo cientfico est mimetizando corretamente os fenmenos
fsicos de interesse [37,57]. Eles executam a verificao para garantir que o modelo computacional
est funcionando corretamente [37], usando principalmente anlises matemticas [62]. Mas
desenvolvedores de software cientfico raramente realizam testes sistemticos para identificar falhas
no cdigo [38,57,32,65]. Farrell et al mostram a importncia de fazer uma verificao do cdigo
para identificar as diferenas entre o cdigo e o modelo discretizado [24]. Kane et al. Chegaram
concluso de que testes automatizados so bastante incomuns no desenvolvimento de software
biomdico [33]. Alm disso, Reupke et al descobriram que muitos dos problemas encontrados em
sistemas operacionais mdicos so devido a testes inadequados [64]. s vezes essa falta de testes
sistemticos causada pelo surgimento de desafios especiais, relativos a este software, que se
apresentam ao realizar testes [20]. Este trabalho relata uma reviso sistemtica da literatura (RSL)
que identifica os desafios especiais colocados pelo software cientfico e prope solues para
superar estes desafios. Alm disso, ns identificamos problemas no resolvidos relacionados ao
1

teste de software cientfico. Uma RSL um meio de avaliar e interpretar toda pesquisa disponvel
relevante para uma questo de pergunta em particular ou rea do tpico ou fenmeno de interesse
[41]. O objetivo de realizar uma RSL metodicamente revisar e reunir resultados de pesquisa para
uma determinada questo de pesquisa e ajudar no desenvolvimento de diretrizes baseadas em
evidncias para os praticantes, [42]. Devido abordagem sistemtica seguida ao realizar uma RSL,
o pesquisador pode estar confiante de que ela localizou a informao necessria, tanto quanto
possvel.
Pesquisadores de engenharia de software pesquisadores realizaram RSL em diversas reas de
engenharia de software. Walia et al [77] realizou uma RSL para identificar e classificar os erros de
requisito de software. Engstrm et al. [23] realizou uma RSL sobre avaliaes empricas de tcnicas
de seleo de teste de regresso com o objetivo de encontrar uma base para pesquisa adicional em
um projeto de pesquisa conjunta da indstria e do meio acadmico. Afzal et al. [3] realizou uma
RSL sobre a aplicao testes, baseados em pesquisa, na realizao de testes no funcionais. O
objetivo deles examinar os trabalhos existentes investigando testes de software, baseados em
pesquisa, no funcionais. Enquanto estas RSLs no so restritas ao software em um domnio
especfico, nos focamos em software cientfico, uma rea que tem recebido menos ateno do que o
software de aplicativo. Alm disso, quando comparado a Engstrm et al., no limitamos a nossa
RSL a uma tcnica de teste especfica.
O objetivo geral [42] da nossa RSL identificar desafios especficos enfrentados ao testar o
software cientfico, como se tem lidado com esses desafios, e quaisquer desafios no resolvidos.
Desenvolvemos um conjunto de questes de pesquisa baseadas neste objetivo global para orientar o
processo de RSL. Ento realizamos uma pesquisa extensa para identificar publicaes que podem
ajudar a responder essas questes de pesquisa. Finalmente, ns sintetizamos as informaes
coletadas dos estudos selecionados para fornecer respostas s nossas questes de pesquisa.
Esta RSL identifica duas categorias de desafios em testes de software cientfico. A primeira
categoria so os desafios que se devem s caractersticas do software em si como a falta de um
orculo. A segunda categoria so desafios que ocorrem porque o software cientfico desenvolvido
por cientistas e/ou cientistas desempenham um papel chave em projetos de desenvolvimento de
software cientfico, ao contrrio do desenvolvimento de software de aplicativos onde os
engenheiros de software desempenham um papel chave. Identificamos as tcnicas usadas para testar
o software cientfico incluindo tcnicas que podem ajudar a superar problemas de orculo e desafios
de criao/seleo de casos de teste. Alm disso, ns descrevemos as limitaes dessas tcnicas e
problemas abertos.
Este artigo organizado da seguinte forma: Seo 2 descreve o processo de RSL e como
podemos aplic-lo para encontrar respostas para as nossas questes de pesquisa. Ns relatamos os
achados da RSL na Seco 3. A Seco 4 contm a discusso sobre os resultados. Finalmente
fornecemos concluses e descrevemos o trabalho futuro na seo 5.

2. Mtodo de pesquisa
Realizamos nossa RSL seguindo as diretrizes publicadas por Kitchenham [41]. As atividades
realizadas durante uma RSL podem ser divididas em trs fases principais: (1) planejamento da RSL
(2) realizando a reviso e (3) relatando a reviso. Descrevemos as tarefas realizadas em cada fase
abaixo.
2.1 Planejando a RSL
2.1.1 Questionrio
O objetivo principal desta RSL identificar desafios especficos enfrentados ao testar o software
cientfico, como se tem lidado com esses desafios, e quaisquer desafios no resolvidos.
Desenvolvemos as seguintes questes de pesquisa para atingir o nosso objetivo maior:
2

QP1: Como o software cientfico definido na literatura?


QP2: Existem caractersticas especiais ou defeitos no software cientfico ou no seu
desenvolvimento que dificultam os testes?
QP3: Podemos usar mtodos de teste existentes (ou adapt-los) para testar o software cientfico
eficazmente?
QP4: H desafios que no puderam ser respondidos atravs de tcnicas existentes?
2.1.2 Elaborao e validao do protocolo de reviso
Tabela 1
Critrios de incluso e excluso.
Critrios de incluso
Critrios de excluso
1. Documentos que descrevem as caractersticas do
1. Documentos que apresentam opinies sem
software cientfico que afetam experincias de teste
evidncias suficientes para sustentar a opinio
1. Estudos de caso ou estudos de experincias de teste
1. Estudos no relacionados com as questes de
de software cientfico
pesquisa
1. Documentos que analisam as caractersticas de
testes de software cientfico, incluindo estudos de caso
1. Estudos em idiomas diferentes do ingls
e relatos de experincia
1. Documentos descrevendo falhas que comumente
1. Documentos apresentando resultados sem
ocorrem no software cientfico
fornecer evidncias
1. Documentos que descrevem os mtodos de teste
1. Textos-base de conferncias de documentos
utilizados para software cientfico e fornecem uma
peridicos includos
avaliao suficiente do mtodo utilizado
1. Relatrios de experincia ou estudos de caso
descrevendo mtodos de teste utilizados para software
cientfico

O protocolo de reviso especifica os mtodos utilizados para realizar a RSL. Definindo o


protocolo de reviso antes da realizao da RSL pode reduzir o vis do pesquisador [43]. Alm
disso, nosso protocolo de reviso especifica os procedimentos de seleo de estudo, estratgia de
busca, critrios de avaliao de qualidade e estratgias de extrao de dados.
Processo de seleo de fonte e busca: usamos os bancos de dados do Google Acadmico, do
IEEE Xplore e da ACM Digital Library, e estudioso de bancos de dados uma vez que eles incluem
peridicos e conferncias que enfocam o teste de software bem como a cincia e engenharia da
computao. Alm disso, estes bancos de dados fornecem mecanismos para executar pesquisas por
palavra-chave. No especificamos um cronograma fixo para realizar a pesquisa. Conduzimos a
pesquisa em janeiro de 2013. Portanto, esta RSL inclui estudos que foram publicados antes de
janeiro de 2013. No fizemos busca por peridicos/conferncias especficos j que numa pesquisa
inicial foram encontrados estudos relevantes publicados em peridicos como o Geoscientific Model
Development1 com o qual no estvamos familiarizados anteriormente. Alm disso, ns
examinamos estudos relevantes que foram referenciados pelos estudos primrios selecionados. Ns
procuramos os trs bancos de dados supracitados usando uma sequencia de pesquisa que inclua as
palavras-chave importantes das nossas quatro questes de pesquisa. Alm disso, ns ampliamos as
palavras-chave com os seus sinnimos, produzindo a sequncia de pesquisa a seguir:
(((desafios OR problemas OR questo OR caractersticas) OR (tcnica OR mtodos OR
abordagens)) AND (teste OR examinar)) OR (erro OR falta OR defeito OR equvoco OR
problema OR imperfeio OR lacuna OR falha) AND ((cientfico OR numrico OR matemtico
OR ponto flutuante) AND (Software OR aplicativo OR programa OR projeto OR produto))
Estudo do processo de seleo: selecionamos sistematicamente os estudos primrios,
1

http://www.geoscientific-Model-Development.net/.

aplicando as seguintes trs etapas.


1. Examinamos os ttulos de documentos para remover os estudos que claramente no tinham
relao com o nosso foco de pesquisa.
2. Analisamos os resumos e palavras-chave nos estudos restantes para selecionar estudos
relevantes. Em algumas situaes, um resumo e palavras-chave no forneceram informaes
suficientes para determinar se um estudo relevante. Nesses casos, revisamos as concluses.
3. Filtramos os estudos restantes aplicando critrios de incluso/excluso da Tabela 1Error!
Reference source not found.. Estudos selecionados a partir desta etapa final so os estudos
primrios iniciais para o RSL.
Ns examinamos as listas de referncia dos estudos primrios iniciais para identificar estudos
adicionais relevantes para o nosso foco de pesquisa.
Lista de verificao de qualidade: ns avaliamos a qualidade dos estudos primrios
selecionados usando itens selecionados das listas de verificao de qualidade fornecidas por
Kitchenham e Charters [43]. As Tabelas 2 e 3 mostram as listas de verificao de qualidade que
usamos para estudos quantitativos e qualitativos, respectivamente. Ao criar a lista de verificao de
qualidade para estudos quantitativos, selecionamos questes de qualidade que avaliariam as quatro
principais fases de um estudo quantitativo: projeto, conduta, anlise e concluses [43].
Estratgia de extrao de dados: Informaes relevantes para responder as questes de
pesquisa precisavam ser extradas dos estudos primrios selecionados. Usamos formas de extrao
de dados para garantir que esta tarefa foi realizada de forma exata e consistente.
A Tabela 4 mostra a extrao de dados do que usamos.
2.2. Realizando a reviso
2.2.1. Identificao de estudos relevantes e estudos primrios
A pesquisa atravs de palavra-chave com produziu mais de 6000 correspondncias. Primeiro
examinamos os ttulos de documentos para remover os estudos que claramente no tinham relao
com o nosso foco de pesquisa. Em seguida, usamos o resumo, palavras-chave e a concluso para
eliminar outros estudos no relacionados. Depois de aplicar estas duas etapas, 94 estudos
permaneceram. Examinamos estes 94 estudos e aplicamos os critrios de incluso/excluso na
Tabela 1 para selecionar 49 documentos como estudos primrios para esta RSL. Alm disso
aplicamos os mesmos passos de seleo s referncias dos 49 estudos primrios selecionados para
encontrar estudos primrios adicionais relacionados ao foco de pesquisa. Encontramos 13 estudos
que esto relacionados ao foco de pesquisa que no estavam j includos no conjunto inicial de
estudos primrios. Os estudos primrios selecionados esto listados nas Tabelas 5 e 6. A Tabela 7
relaciona os locais de publicao dos documentos primrios selecionados. O International
Workshop on Software Engineering for Computational Science and Engineering e o Journal of
Computing in Science & and the Engineering publicaram o maior nmero de estudos primrios.
2.2.2 Avaliao de extrao e qualidade de dados
Usamos a forma de extrao de dados da Tabela 4 para extrair dados dos estudos primrios.
Muitos estudos primrios no responderam a todas as questes do formulrio de extrao de dados.
Extramos informaes importantes fornecidas pelos estudos primrios usando o formulrio de
extrao de dados. Em seguida, dependendo do tipo do estudo, ns aplicamos as perguntas de
avaliao de qualidade na Tabela 2 ou Tabela 3 a cada estudo primrio. Fornecemos respostas do
tipo 'Sim' e 'no' s nossas perguntas de avaliao de qualidade. Usamos uma escala binria visto
que no estvamos interessados em atribuir um ndice de qualidade aos estudos [19]. A Tabela 8
mostra os resultados da avaliao de qualidade para estudos primrios quantitativos. Todos os
estudos primrios quantitativos obtiveram resposta 'Sim' pergunta de avaliao de qualidade G1
(Os objetivos do estudo so declarados claramente?). A maioria dos estudos primrios quantitativos
4

obteve resposta 'Sim' para a pergunta de avaliao de qualidade G2 (Os mtodos de coleta de dados
esto descritos adequadamente?) e para a G5 (O estudo pode ser replicado?). A Tabela 9 mostra os
resultados da avaliao de qualidade para estudos primrios qualitativos. Todos os estudos
primrios qualitativos obtiveram resposta 'Sim' para a pergunta de avaliao de qualidade A (Os
objetivos do estudo so declarados claramente?) e B (A avaliao aborda os seus objetivos e
propsito declarados?). A maioria dos estudos primrios qualitativos obteve resposta 'Sim' para a
pergunta de avaliao de qualidade D (So fornecidas evidncias suficientes para sustentar as
reivindicaes?).
2.3. Relatando a reviso
Dados extrados dos 62 documentos primrios foram usados para formular respostas para as
quatro questes de pesquisa constantes da seco 2.1.1. Seguimos atentamente as orientaes
fornecidas por Kitchenham [41] na preparao do relatrio de RSL.

Tabela 2
Avaliao da qualidade para estudos quantitativos.
Pesquisa
G1:Os objetivos do estudo so
declarados claramente?
S1: O mtodo para coletar a amostra
de dados foi especificado (e.g.
correio, entrevista, internet)?
S2: H um grupo de controle?
N/A
G2: Os mtodos de coleta de dados
esto descritos adequadamente?
G3: Houve qualquer avaliao
estatstica dos resultados?
S3: O que foi observado sustentou as
reivindicaes?
G4: So relatadas ameaas validade
e/ou limitaes?
G5: O estudo pode ser replicado?

Estudo de caso

Experincia

N/A

N/A

N/A

E1: Existe um grupo de controle?

N/A

E2: Os tratamentos foram alocados


aleatoriamente?

C1: H evidncias suficientes


para sustentar as reivindicaes?

E3: H evidncias suficientes para


sustentar as reivindicaes?

Tabela 3
Avaliao da qualidade para estudos qualitativos.
Perguntas de avaliao de qualidade
A: Os objetivos do estudo so declarados claramente?
B: A avaliao aborda os seus objetivos e propsito declarados?
C: A seleo do plano amostral/populao amostrada dos casos/documentos est definida?
D: H evidncias suficientes para sustentar as reivindicaes?
E: o estudo pode ser replicado?
S3: O que foi observado sustentou as reivindicaes?
G4: So relatadas ameaas validade e/ou limitaes?
G5: O estudo pode ser replicado?

3. Resultados
Usamos os documentos primrios selecionados para fornecer respostas para as questes de
pesquisa.
5

3.1 QP1: Como o software cientfico definido na literatura?


Software cientfico definido de vrias maneiras. Sanders et al [65] usam a definio fornecida
por Kreyman et al. [44]: Software cientfico um software com um grande componente
computacional e providencia dados de apoio deciso. Kelly et al identificaram dois tipos de
software cientfico [39]:
(1) Software de aplicativo para o usurio final que escrito para alcanar objetivos cientficos (e.g.,
modelos climticos).
(2) Ferramentas que oferecem suporte escrita de cdigo que expressam um modelo cientfico e a
execuo de cdigo cientfico (e.g., Ferramenta de teste para MATLAB de software automatizado
[22]).
Tabela 4
Formulrio de extrao de dados.
Foco da pesquisa

Item dos dados

Descrio

Geral

Identificador
Bibliografia
Tipo de artigo
Objetivos do estudo
Projeto do estudo
Definio
Exemplos
Desafio/Problema

Nmero de referncia dado ao artigo


Autor, ano, Ttulo, fonte
peridico/conferncia/relatrio tcnico
Objetivos ou metas do estudo
Experincia controlada /levantamento/etc.
Definio de software cientfico
Exemplos de software cientfico
Desafios/problemas enfrentados durante o teste de software
cientfico

Descrio da falha
Causas
Mtodo de teste
Existente/novo/extenso

Descrio da falha encontrada


O que causou a falha?
Descrio do mtodo utilizado
Se o mtodo de teste novo, existente ou modificao de um
mtodo existente
O problema/desafio ao qual fornece resposta
Descrio das falhas/defeitos encontrados pelo mtodo
Evidncias da eficcia do mtodo de localizao de falhas
Limitaes do mtodo

QP1
QP2

QP3/QP4

Desafio/problema
Defeitos/falhas encontrados
Evidncias
Limitaes
Tabela 5
Estudos primrios selecionados (Parte 1).
N do
Estudo
EP1

N de
Ref.
[1]

EP2

[2]

EP3

[5]

EP4
EP5
EP6

[7]
[8]
[9]

EP7

[11]

EP8

[12]

EP9
EP10

[13]
[14]

Foco de estudo
Um estudo de caso sobre testes de pacotes de software usados em
metrologia
Tarefas de engenharia de Software realizadas durante o desenvolvimento de
software cientfico
Gerao de caso de teste para programas de ponto flutuante que utilizam
execuo simblica
Estudos de caso de projetos de desenvolvimento de software cientfico
Levantamento sobre engenheiros e cientistas computacionais
Aplicando testes metamrficos a programas sobre equaes diferenciais
parciais
Estudos de caso sobre a aplicao de testes metamrficos para programas
bio informticos
Estudos de caso sobre a aplicao de desenvolvimento dirigido por testes
em modelos climticos
Usando conjuntos de dados de referncia para testes de software cientfico
Eficcia das diferentes polticas de execuo de contrato de interface para
componentes cientficos

QP1 QP2 QP3 QP4


Estudos primrios selecionados (Parte 1).


N do
Estudo
EP11
EP12
EP13

N de
Ref.
[15]
[16]
[17]

EP14
EP15

[18]
[20]

EP16
EP17
EP18

[21]
[22]
[24]

EP19

[26]

EP20

[27]

EP21
EP22

[28]
[30]

EP23

[29]

EP24

[31]

EP25

[32]

EP26

[33]

EP27

[36]

EP28

[37]

EP29

[38]

EP30

[39]

Foco de estudo
Execuo parcial de asseres para componentes de software cientfico
Usando pseudo orculos para testar programas sem orculos
Um estudo de caso sobre o desenvolvimento de um modelo de sistema
climtico
Uma ferramenta para automatizar os testes de simulaes cientficas
Discusso sobre os desafios de software enfrentados no desenvolvimento de
programas de modelagem climtica
Estudo etnogrfico dos cientistas do clima que desenvolvem software
Um framework de unidade de teste para programas em MATLAB
Um framework para verificao contnua automatizada de simulaes
numricas
Resultados de um levantamento realizado para identificar como os cientistas
desenvolvem e usam o software em suas pesquisas
Experincias para analisar a preciso do software cientfico atravs da
anlise esttica e comparaes com implementaes independentes do
mesmo algoritmo
Experincia de programao N-version conduzida em software cientfico
Aplicando prticas de garantia de qualidade de software em um projeto de
software cientfico
Prticas de engenharia de software apropriadas para as equipes de
desenvolvimento de software cientfico identificadas atravs de um estudo
de caso
Processo de desenvolvimento de software de cinco softwares de cincia da
computao de grande escala
Avaliando a eficcia do uso de um pequeno nmero de casos de teste
cuidadosamente selecionados para testes de software cientfico
Estudo qualitativo de abordagens de desenvolvimento gil para criar e
manter software biomdico
Comparando a eficcia de casos de teste aleatrios e casos de teste
concebidos para a deteco de falhas em software cientfico
Tcnicas de engenharia de software teis para os cientistas computacionais
obtidas atravs da experincia dos cientistas que tiveram sucesso
Prticas de avaliao de qualidade de cientistas que desenvolvem software
computacional
Como a pesquisa de engenharia de software pode fornecer solues para os
desafios encontrados pelos cientistas desenvolvendo de software

QP1 QP2 QP3 QP4

Tabela 6
Estudos primrios selecionados (Parte 2).
N do
Estudo
EP31

N de
Ref.
[40]

EP32

[47]

EP33

[45]

EP34

[48]

EP35

[49]

EP36

[50]

EP37
EP38

[52]
[53]

EP39

[55]

Foco de estudo
Um estudo de caso sobre a aplicao de atividades de testes de software
cientfico
Levantamento sobre ferramentas para programas cientficos escritos em
FORTRAN
Um estudo de caso sobre o uso de uma arquitetura de testes de trs nveis
para testar programas cientficos
Aplicando testes metamrficos para programas de processamento de
imagem
Usando orculos estatsticos para testar aplicativos de processamento de
imagem
Um mtodo baseado em aprendizado para gerao automtica de casos de
teste para programas numricos
Lies aprendidas atravs de revises de cdigo de programas cientficos
Desafios enfrentaram por engenheiros de software desenvolvendo software
para cientistas no campo da biologia molecular
Um framework para gerar aleatoriamente grandes conjuntos de dados para
aplicativos de aprendizado de mquina de teste

QP1 QP2 QP3 QP4


Estudos primrios selecionados (Parte 2).


N do
Estudo
EP40
EP41

N de
Ref.
[54]
[56]

EP42

[57]

EP43
EP44

[59]
[60]

EP45

[61]

EP46
EP47

[62]
[63]

EP48
EP49

[64]
[66]

EP50

[65]

EP51

[70]

EP52

[68]

EP53

[72]

EP54

[71]

EP55

[69]

EP56

[67]

EP57

[73]

EP58
EP59
EP60

[74]
[75]
[76]

EP61
EP62

[78]
[79]

Foco de estudo

QP1 QP2 QP3 QP4

Mtodos de teste de algoritmos de aprendizado de mquinas


Aplicando testes metamrficos para testar aplicativos de aprendizado de
mquinas
Testando software de simulao de assistncia mdica usando testes
metamrficos
Levantamento de desenvolvedores de software cientfico
Anlise de qualidade dos modelos climticos em termos de densidade de
defeito
Aplicando processos de desenvolvimento gil para desenvolvimento de
software de biologia computacional
Lies aprendidas de projetos de desenvolvimento de software cientfico
Aplicao de modelagem de variabilidade na seleo de casos de teste
durante testes de frameworks cientficas com grande variabilidade
Desenvolvimento e teste de software mdico
Um levantamento para identificar as caractersticas de desenvolvimento de
software cientfico
Desafios enfrentados ao testar software cientfico identificado por meio de
entrevistas realizadas com os cientistas que desenvolvem/usam o software
cientfico
Estudo dos problemas que surgem quando os cientistas e engenheiros de
software trabalham juntos para desenvolver software cientfico
Problemas no desenvolvimento de software cientfico, identificados atravs
de estudos de caso em diferentes campos
Desafios enfrentados pelos engenheiros de software que desenvolvem
software para cientistas
Estudos de caso sobre a cultura de desenvolvimento para o usurio final
profissional
Um modelo de desenvolvimento de software cientfico identificado atravs
de estudos multidisciplinares de desenvolvimento de software cientfico
Um estudo de caso sobre a aplicao da metodologia tradicional de
desenvolvimento orientado por documentos para desenvolver software
cientfico
Reviso da literatura e estudos de caso sobre como o desenvolvimento de
software cientfico coincide com prticas geis e os efeitos do uso de
prticas geis de desenvolvimento de software cientfico
Um ambiente preparado para teste para programas numricos
Framework de teste para realizar testes de regresso em software cientfico
Um mtodo para gerao de caso de teste de software cientfico quando
existem dependncias entre parmetros de entrada
Testando programas intestveis
Diferenas de cultura ao aplicar programao extrema no desenvolvimento
de software cientfico

Tabela 7
Local de publicao
International Workshop on Software Engineering for Computational
Science and Engineering
Computing in Science & Engineering
IEEE Software
BMC Bioinformatics
Geoscientific Model Development
International Conference on Software Engineering and Knowledge
Engineering
International Journal of High Performance Computing Applications
Lecture Notes in Computer Science
Journal of the Brazilian Society of Mechanical Sciences and Engineering
International Conference on Software Testing, Verification and Validation
International Conference on Software Engineering

Tipo

Quantidade

Oficina

11,3

Peridico
Peridico
Peridico
Peridico
Conferncia

7
5
2
2
2

11,3
8,1
3,2
3,2
3,2

Peridico
Captulo de livro
Peridico
Conferncia
Conferncia

2
2
1
1
1

3,2
3,2
1,6
1,6
1,6

Local de publicao

Tipo

Quantidade

Sandia National Laboratories-Technical report


Computer Software and Applications Conference
Analytica Chimica Acta
International Workshop on Software Engineering for High Performance
Computing System Applications
ACM 81 Conference
FSE/SDP Workshop on Future of Software Engineering Research
IEEE Computational Science & Engineering
IEEE Transactions on Software Engineering
EUROMICRO International Conference on Parallel, Distributed and
Network-Based Processing
IEEE Computer
Journal of Computational Science
Rutherford Appleton Laboratory-Technical report
Journal of Experimental & Theoretical Artificial Intelligence
International Conference on Quality Software
Lecture Notes in Informatics
International Conference on e-Science
International Workshop on Random testing
Workshop on Software Engineering in Health Care
International Symposium on Empirical Software Engineering and
Measurement
Philosophical Transactions of the Royal Society A: Mathematical, Physical
and Engineering Sciences
Symposium on the Engineering of Computer-Based Medical Systems
Conference for the Association for Software Testing
Annual Meeting of the Psychology of Programming Interest Group
Symposium on Visual Languages and Human-Centric Computing
Computer Supported Cooperative Work
Empirical Software Engineering
Grid-Based Problem Solving Environments
Society of Photo-Optical Instrumentation Engineers (SPIE) Conference
Series
International Conference on Computational Science
The Computer Journal

Relatrio Tcnico
Conferncia
Peridico
Oficina

1
1
1
1

1,6
1,6
1,6
1,6

Conferncia
Oficina
Peridico
Peridico
Conferncia

1
1
1
1
1

1,6
1,6
1,6
1,6
1,6

Peridico
Peridico
Relatrio Tcnico
Peridico
Conferncia
Captulo de livro
Conferncia
Conferncia
Oficina
Conferncia

1
1
1
1
1
1
1
1
1
1

1,6
1,6
1,6
1,6
1,6
1,6
1,6
1,6
1,6
1,6

Peridico

1,6

Conferncia
Conferncia
Conferncia
Conferncia
Peridico
Peridico
Peridico
Conferncia

1
1
1
1
1
1
1
1

1,6
1,6
1,6
1,6
1,6
1,6
1,6
1,6

Conferncia
Peridico

1
1

1,6
1,6

Uma classificao ortogonal dada por Carver et al. [8]:


(1) Software de pesquisa escrito com o objetivo de publicar documentos.
(2) Software de produo escrito para usurios reais (e.g., modelos climticos).
Software cientfico desenvolvido por cientistas ou por equipes multidisciplinares, onde uma
equipe composta por cientistas e desenvolvedores de software profissionais. Um cientista
geralmente ser a pessoa responsvel por um projeto de desenvolvimento de software cientfico
[53].
Encontramos um software que ajuda a resolver uma variedade de problemas de cientficos.
Apresentamos os detalhes da funcionalidade, tamanho e as linguagens de programao do software
na Tabela 10. Nenhum dos estudos primrios relataram a complexidade do software em termos da
unidade mensurvel tal como acoplamento, coeso e complexidade ciclomtica.

3.2 QP2: Existem caractersticas especiais ou defeitos no software cientfico ou no seu


desenvolvimento que dificultam os testes?
Encontramos caractersticas que se enquadram em duas categorias principais (1) Desafios de
teste que ocorrem devido as caractersticas do software cientfico e (2) Desafios de teste que
ocorrem devido a diferenas culturais entre cientistas e a comunidade de engenharia de software.
9

Abaixo descrevemos estes desafios:


1. Desafios de teste que ocorrem devido a caractersticas do software cientfico: estes desafios
podem ser ainda mais categorizados de acordo com as atividades de teste especficas onde eles
apresentam problemas.
(a) Desafios relativos ao desenvolvimento do caso de teste:
i. Identificar os limites do domnio de entrada crtica a priori difcil devido complexidade do
software, efeitos do erro de arredondamento e comportamento computacional complexo. Isso
torna difcil aplicar tcnicas tais como partio de equivalncia para reduzir o nmero de
casos de teste [66,36,7].
ii. Selecionar manualmente um conjunto de casos de teste suficiente um desafio devido ao
grande nmero de parmetros de entrada e valores aceitos por alguns softwares cientficos
[76].
iii. Quando testar frameworks cientficas a nvel de sistema, difcil escolher um conjunto
adequado de casos de teste partindo de um grande nmero de possibilidades disponveis [63].
iv. Alguns softwares cientficos carecem de dados do mundo real que possam ser usados para
teste [55].
v. A execuo de alguns caminhos no software cientfico so dependentes dos clculos de ponto
de flutuao. Encontrar dados de teste para executar tais caminhos de programa um desafio
[5].
vi. Algumas unidades de programa (funes, sub-rotinas, mtodos) em software cientfico
contm tantas decises que testes so impraticveis [52].
vii. Dificuldades em replicar o contexto fsico onde o cdigo cientfico supostamente funciona
pode tornar o teste abrangente impossvel [67].
Tabela 8
Resultados da avaliao de qualidade estudos quantitativos.
N de
Ref.
[17]
[57]
[55]
[36]
[60]
[1]
[13]
[15]
[8]
[59]
[61]
[63]
[32]
[14]
[48]
[11]
[9]
[79]
[5]
[26]
[27]
[28]
[50]
[79]
G1:
S1:
S2, E1:

G1

S1

S2

E1

E2

G2

G3

Sim
N/A
N/A
N/A
N/A
No
No
Sim
N/A
N/A
No
No
Sim
No
Sim
N/A
N/A
No
No
Sim
No
Sim
N/A
N/A
Sim
No
Sim
Sim
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
No
No
Sim
Sim
Sim
Sim
No
N/A
N/A
Sim
Sim
Sim
Sim
No
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
Sim
No
Sim
No
Sim
N/A
N/A
Sim
No
Sim
No
Sim
N/A
N/A
No
No
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
Sim
No
Sim
No
Sim
Sim
No
N/A
N/A
Sim
No
Sim
N/A
N/A
No
No
Sim
Sim
Sim
N/A
N/A
No
No
Sim
Sim
Sim
N/A
N/A
Sim
No
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
Sim
No
N/A
N/A
Sim
Sim
Os objetivos do estudo so declarados claramente?
O mtodo para coletar a amostra de dados foi especificado?
H um grupo de controle?

S3

C1

E3

G4

G5

N/A
N/A
N/A
N/A
N/A
N/A
N/A
Sim
Sim
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
Sim
N/A
N/A
N/A
N/A
Sim

Sim
N/A
N/A
N/A
Sim
Sim
N/A
N/A
N/A
Sim
Sim
N/A
N/A
N/A
Sim
Sim
Sim
N/A
N/A
N/A
N/A
N/A
Sim
N/A

N/A
Sim
Sim
Sim
N/A
N/A
Sim
N/A
N/A
N/A
N/A
Sim
Sim
Sim
N/A
N/A
N/A
Sim
N/A
Sim
Sim
Sim
N/A
N/A

No
Sim
Sim
No
Sim
No
No
No
Sim
No
No
No
No
No
Sim
No
Sim
No
Sim
No
No
No
No
No

No
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
No
Sim
Sim
No
No
Sim
Sim
Sim

10

Resultados da avaliao de qualidade estudos quantitativos.


N de
Ref.
E2:
G2:
G3:
S3:
C1, E3:
G4:
G5:

G1

S1

S2

E1

E2

G2

G3

S3

C1

E3

G4

G5

Os tratamentos foram alocados aleatoriamente?


Os mtodos de coleta de dados esto descritos adequadamente?
Houve qualquer avaliao estatstica dos resultados?
O que foi observado sustentou as reivindicaes?
H evidncias suficientes para sustentar as reivindicaes?
So relatadas ameaas validade e/ou limitaes?
O estudo pode ser replicado?

(b) Desafios na produo esperada de valores de sada do caso de teste


(Problemas de orculo): O teste de software requer um orculo, um mecanismo que verifica se
o programa em teste produz o resultado esperado quando executado usando um conjunto de
casos de teste. Obter orculos confiveis para programas cientficos um desafio [65]. Devido
falta de orculos apropriados difcil detectar falhas sutis no cdigo cientfico [37]. As
seguintes caractersticas do software cientfico tornam um desafio criar um orculo de teste:
i. Algum softwares cientficos escritos para encontrar respostas que so previamente
desconhecidas. Portanto, apenas solues aproximadas podem estar disponveis
[20,57,78,7,39].
ii. difcil determinar a sada correta para software escrito para testar teoria cientfica que
envolve clculos complexos ou simulaes. Alm disso, alguns programas produzem sadas
complexas, tornando difcil determinar quais os dados de sada esperados
[73,65,54,11,38,61, 26,78,70].
iii. Devido s incertezas inerentes a modelos cientficos, alguns programas cientficos no
fornecem uma nica resposta correta para uma determinado conjunto de entradas. Isto torna
a determinar o comportamento esperado do software uma tarefa difcil, o que pode depender
da opinio de um especialista do domnio [1].
iv. Os requisitos no so claros ou incertos antecipadamente devido natureza exploratria do
software. Portanto, comumente, no se desenvolve orculos com base nos requisitos
[73,59,26,30].
v. Escolher tolerncias adequadas para um orculo no teste de programas numricos difcil
devido ao envolvimento de clculos de ponto flutuante complexos [61,36,40,12].
(c) Desafios na execuo do teste:
1. Devido aos longos tempos de execuo de alguns softwares cientficos, executar um grande nmero
de casos de teste para satisfazer critrios especficos de cobertura no vivel [36].
(d) Desafios na interpretao do resultado do teste:
i. Falhas podem ser mascaradas por erros de arredondamento, erros de truncamento e simplificaes
de modelo [36,28,26,9,12].
ii. Uma parte limitada do software usada regularmente. Logo, partes usadas com menos frequncia
podem conter erros desconhecidos [60,47]
iii. Programas cientficos contm uma alta percentagem de cdigo duplicado [52].
2. Desafios de teste que ocorrem devido a diferenas culturais entre cientistas e a comunidade de
engenharia de software: os cientistas geralmente desempenham um papel chave em projetos de
desenvolvimento de software cientfico.
(a) Desafios devido compreenso limitada de conceitos de teste:
i. Cientistas vm o cdigo e o modelo que ele implementa como entidades inseparveis. Portanto, eles
testam o cdigo para avaliar o modelo e no necessariamente para verificar para falhas no cdigo
[38,47,66,65].
11

ii.
iii.
iv.
v.

Os cientistas desenvolvedores focam os resultados cientficos ao invs de focar a qualidade


do software [21,7].
O valor do software subestimado [70].
As definies de verificao e de validao no so consistentes em todas as comunidades
da cincia e engenharia da computao [32].
Desenvolvedores (cientistas) tem pouco ou nenhum treinamento em engenharia de software
[20,21,26,7,8].

Tabela 9
Resultados da avaliao de qualidade estudos quantitativos.
N de
A
B
C
D
Ref.
[62]
Sim
Sim
Sim
Sim
[64]
Sim
Sim
No
Sim
[67]
Sim
Sim
No
Sim
[53]
Sim
Sim
Sim
Sim
[2]
Sim
Sim
Sim
Sim
[40]
Sim
Sim
No
Sim
[39]
Sim
Sim
Sim
Sim
[75]
Sim
Sim
No
Sim
[30]
Sim
Sim
Sim
Sim
[47]
Sim
Sim
No
Sim
[20]
Sim
Sim
No
Sim
[38]
Sim
Sim
Sim
Sim
[66]
Sim
Sim
Sim
Sim
[12]
Sim
Sim
No
Sim
[18]
Sim
Sim
Sim
Sim
[74]
Sim
Sim
Sim
Sim
[45]
Sim
Sim
Sim
Sim
[56]
Sim
Sim
Sim
Sim
[31]
Sim
Sim
Sim
Sim
[49]
Sim
Sim
Sim
Sim
[16]
Sim
Sim
No
Sim
[70]
Sim
Sim
Sim
Sim
[71]
Sim
Sim
Sim
Sim
[7]
Sim
Sim
Sim
Sim
[68]
Sim
Sim
Sim
Sim
[54]
Sim
Sim
Sim
Sim
[29]
Sim
Sim
Sim
Sim
[33]
Sim
Sim
Sim
Sim
[24]
Sim
Sim
Sim
Sim
[37]
Sim
Sim
No
Sim
[52]
Sim
Sim
Sim
Sim
[21]
Sim
Sim
Sim
Sim
[22]
Sim
Sim
No
No
[65]
Sim
Sim
Sim
Sim
[72]
Sim
Sim
Sim
Sim
[69]
Sim
Sim
Sim
Sim
[73]
Sim
Sim
Sim
Sim
[78]
Sim
Sim
No
No
A: Os objetivos do estudo so declarados claramente?
B: A avaliao aborda os seus objetivos e propsito declarados?
C: A seleo do plano amostral/populao amostrada dos casos/documentos est definida?
D: H evidncias suficientes para sustentar as reivindicaes?
E: O estudo pode ser replicado?

E
Sim
No
No
No
No
No
No
No
No
No
No
No
No
No
Sim
No
No
Sim
Sim
Sim
No
Sim
Sim
No
No
Sim
No
No
No
No
Sim
Sim
No
Sim
No
No
Sim
No

vi. Requisitos e atividades de avaliao de software no so claramente definidos para software


cientfico [69,71].
vii. O teste feito somente no que diz respeito ao problema cientfico especfico inicial abordado pelo
12

viii.
i.
ii.

iii.

iv.
v.
vi.

cdigo. Portanto, a confiabilidade dos resultados quando aplicada a um problema diferente no


pode ser garantida [53].
Os desenvolvedores no esto familiarizados com mtodos de teste [22,26].
(b) Desafios decorrentes da compreenso limitada do processo de teste
Gerenciamento e apoio oramental para os testes podem no ser fornecidos [59,30,71].
Dado que os requisitos no so conhecidos com antecedncia, os cientistas podem adotar uma
filosofia gil para o desenvolvimento. No entanto, eles no usam modelos de processo gil padro
[21]. Como resultado, testes de unidade e testes de aceite no so realizados de forma adequada.
Desenvolvimento de software tratado como uma atividade secundria o que resulta em uma falta
de reconhecimento das competncias e conhecimento necessrios para o desenvolvimento de
software [68].
Software cientfico geralmente no tem um conjunto de metas de qualidade consensual ou escrito
[52].
Frequentemente somente mtodos de teste no sistemticos ou ad hoc so usados [65,68].
Desenvolvedores vm os testes como uma tarefa tardia do processo desenvolvimento de software
[29].

(c) Desafios devido falta de aplicao de mtodos de teste conhecidos


i. A vasta utilizao de FORTRAN na comunidade cientfica torna difcil a utilizao de muitas
ferramentas de teste da comunidade de engenharia de software [47,66,21].
ii. O teste de unidade no comumente realizado ao desenvolver software cientfico [79,18]. Por
exemplo, Clune et al. concluram que o teste de unidade quase inexistente na comunidade de
modelagem climtica [12]. Razes para a falta de teste de unidade incluem:
H equvocos sobre a dificuldade e benefcios da implementao de testes de unidade
entre desenvolvedores de software cientfico [12].
A natureza legada do cdigo cientfico torna a implementao de testes de unidade
desafiadora [12].
A estrutura interna do cdigo oculta [75].
A importncia dos testes de unidade no apreciada por cientistas desenvolvedores [72].
i. Os desenvolvedores de software cientficos no esto cientes da necessidade e do mtodo de
aplicao de testes de verificao [65].
ii. H uma falta de automatizao de testes de regresso e aceitao em alguns programas cientficos
[8].
As seguintes falhas especficas so relatadas nos estudos primrios selecionados:
Uso incorreto de um nome de varivel [9].
Reporte incorreto de falhas de hardware como se fossem falhas devido a excees
ignoradas [52].
Erros pontuais [27]

3.3 QP3: Podemos usar mtodos de teste existentes (ou adapt-los) para testar o software
cientfico eficazmente?
Uso de testes em nveis de abstrao diferentes e para diferentes fins de teste. Vrios estudos
primrios relataram a realizao de testes em nveis de abstrao diferentes: testes de unidade, teste
de integrao e teste do sistema. Alm disso, alguns estudos relataram o uso de testes de aceitao e
testes de regresso. De 62 estudos primrios, 12 aplicaram pelo menos um desses mtodos de teste.
A Fig. 1 mostra a porcentagem de estudos que aplicaram cada mtodo entre os 12 estudos. O teste
de unidade foi o mtodo mais comum relatado entre os 12 estudos.
13

A Fig. 2 mostra a porcentagem do nmero de mtodos de teste aplicados pelos 12 estudos.


Nenhum dos estudos aplicou quatro ou mais mtodos de teste. Dos 12 estudos, 8 (67%) mencionam
a aplicao de apenas um mtodo de teste. Abaixo descrevemos como esses mtodos de teste foram
aplicados ao testar o software cientfico:
1. Teste de unidade: vrios estudos relatam que testes de unidade foram usados para testar
programas cientficos [33,24,17,2,40,45]. Clune et al descrevem o uso de refatorao para
extrair unidades testveis ao conduzir testes de unidade de no cdigo legado [12]. Eles
identificaram duas falhas usando testes de unidade que no poderiam ser descobertas atravs do
teste de sistema. Apenas dois estudos usaram um framework de testes de unidade para aplicar
testes de unidade automatizados [33,2] e ambos usaram JUnit2. Alm disso, Eddins [22]
desenvolveu um framework de testes de unidade para MATLAB. No encontramos evidncias
do uso de qualquer outro framework de testes de unidade.
2. Teste de Integrao: encontramos apenas um estudo aplicou testes de integrao para
garantir que todos os componentes funcionam juntos, como esperado [17].
Tabela 10
Detalhes do software cientfico relacionado nos estudos primrios.
N de Ref.
[64]

[62]
[17,20]
[67]
[53]
[2]

[57]

[55]
[60]
[40]
[1]
[75]
[15]
[30]

[61]
[24]
[63]
[12]
[12]

Descrio
Software mdico (e.g., software para analisador da
qumica do sangue e sistema de processamento de
imagem mdica)
Software de simulao armas nucleares
Software de modelagem climtica
Software embarcado para naves espaciais
Software desenvolvido para cientistas e bilogos
espaciais
Software de aquisio de dados e controle para
estaes experimentais de fonte de radiao
sincrotron (SRS) experimento estaes
Software de simulao de assistncia mdica (e.g.,
mecanismo de simulao de eventos discretos e
simulao de algoritmos de titulao de insulina)
Implementaes de algoritmos de classificao de
aprendizado de mquina
Software de modelagem climtica
Pacote de software de astronomia
Pacotes de software, fornecendo estimativas de
incerteza para medies tridimensionais
A implementao de uma simulao dependente de
tempo de um sistema fsico complexo
Implementao de algoritmos transversais de malha
cientfica
Implementaes de algoritmos solucionadores
paralelos e bibliotecas para aplicaes cientficas,
de grande escala, complexas, de engenharia multi
fsica
Software para modelagem cardaca em biologia
computacional
Simulaes numricas em dinmica de fluidos
geofsica
Programa para resolver equaes de derivadas
parciais
Calcula a trajetria dos bilhes de partculas de ar
na atmosfera
Implementao de um modelo numrico que simula
o crescimento de flocos de neve virtuais

Linguagem de Programao
N/S

Tamanho
N/S

FORTRAN
N/S
N/S
N/S

500 KLO
N/S
N/S
N/S

Java

N/S

Java, MATLAB

N/S

Perl, C

N/S

FORTRAN, C
MATLAB, C++
N/S

400 KLOC
10 KLOC
N/S

N/S

N/S

N/S

38-50 LOC

N/S

N/S

C++, Python

50 KLOC

N/S

N/S

C++

250 KLOC

C++

N/S

C++

N/S

http://junit.org/.

14

Tabela 10
Detalhes do software cientfico relacionado nos estudos primrios.
N de Ref.
[14]
[48]
[11]

[55,54]
[31]
[79]

[49]
[71]
[7]

[7]

[7]
[7]
[7]
[5]
[29]

Descrio
Implementaes de algoritmos transversais de
malha
Aplicativo de processamento de imagem
programa de bioinformtica para analisar e simular
redes de regulao genica e mapear leituras de
sequncia curta para um genoma de referncia
Implementaes de algoritmos de aprendizado de
mquina
Simulaes em mecnica dos slidos, mecnica dos
fluidos e combusto
Programa para avaliar o desempenho de um
esquema numrico para resolver um problema de
adveco-difuso do modelo
Implementao de dilatao de imagem binria
Software de infraestrutura para a comunidade de
protena estrutural
Software de previso de desempenho de um
produto que de outra forma requereria testes
empricos grandes, caros e potencialmente
perigosos para avaliao de desempenho
Fornecer previses computacionais para analisar o
processo de fabricao de produtos materiais
compostos
Simulao de comportamento do material quando
colocado sob estresse extremo
Fornecer processamento em tempo real de dados do
sensor
Calcular as propriedades das molculas usando
modelos de mecnica quntica computacional
Programa para evitar colises em aeronaves no
tripuladas
Bibliotecas numricas para utilizao pela cincia
da computao e projetos de engenharia de
software

Linguagem de Programao
N/S

Tamanho
N/S

N/S
N/S

N/S
N/S

N/S

N/S

C, C++,FORTRAN

100-500 KLOC

Ruby

2.5 KLOC

N/S
N/S

N/S
N/S

FORTRAN, C

405 KLOC

C++, C

134 KLOC

FORTRAN

200 KLOC

C++, MATLAB

100 KLOC

FORTRAN

750 KLOC

N/S

N/S

N/S

3. Teste de sistema: Vrios estudos relatam o uso de teste de sistema [33,24,64]. Em particular,
a comunidade de modelagem climtica de utiliza bastante o teste de sistema [12].
4. Teste de aceitao: Encontramos apenas um estudo que relata teste de aceitao realizado
pelos usurios para garantir que os programadores implementaram corretamente a
funcionalidade necessria [33]. Uma das razes para o teste de aceitao ser raramente utilizado
que os cientistas que esto desenvolvendo o software so, muitas vezes, tambm os usurios.
5. Teste de regresso: Vrios estudos descrevem o uso de teste de regresso para comparar a
corrente de sada com sadas anteriores para identificar falhas introduzidas quando o cdigo
modificado [24,17,31,75]. Alm disso, Smith desenvolveu uma ferramenta para auxiliar testes
de regresso [74]. Esta ferramenta permite que os testadores especifiquem o valores de variveis
a ser comparados e as tolerncias para as comparaes.
Tcnicas utilizadas para superar problemas de orculo. Anteriormente ns descrevemos
vrias tcnicas utilizadas para testar programas que no tm orculos [35]. Alm disso, vrios
estudos propem tcnicas para atenuar o problema de orculo:
1. Um pseudo orculo um programa desenvolvido independentemente que preenche a mesma
especificao que o programa em teste [1,59,24,21,62,65,78,16,27]. Por exemplo, Murphy et al
15

Percentagem

usaram pseudo orculos para testar um algoritmo de aprendizado de mquina [54].


Limitaes: Um pseudo orculo pode no incluir algumas caractersticas/tratamentos especiais
disponveis no programa sob teste e ele difcil decidir se o orculo ou o programa que est
com defeito quando as repostas so discordantes [9].

Teste de Teste de Teste de Teste de Teste de


unidade sistema aceitao Integrao regresso
Fig. 1. Percentagem de estudos que aplicaram mtodos de teste diferentes

Pseudo orculos assumem que modelos de referncia desenvolvidos independentemente no

Percentagem

resultaro nas mesmas falhas. Mas Brilliant et al. concluram que mesmo programas
desenvolvidos independentemente podem produzir as mesmas falhas [6].
2. As solues obtidas analiticamente podem servir como orculos? Por vezes, usar solues
analticas prefervel a usar pseudo orculos uma vez que eles podem identificar erros
algortmicos comuns entre as implementaes. Por exemplo, uma taxa de convergncia
calculada teoricamente pode ser comparada taxa produzida pelo cdigo para verificar se h
falhas no programa [1,38,24].

Nmero de mtodos de teste realizados


Fig. 2. Nmero de mtodos de teste aplicados pelos estudos

Limitaes: Solues analticas podem no estar disponveis para todos os aplicativos [9] e
podem ser imprecisas devido a erros humanos [65].
3. Resultados obtidos experimentalmente podem ser usados como orculos?
[1,38,59,62,65,45].
Limitaes: difcil determinar se um erro devido a uma falha no cdigo ou devido a um erro
cometido durante a criao do modelo [9]. Em algumas situaes, as experincias no podem
ser realizadas devido a questes de segurana, jurdicas ou de custo elevado [7].
4. Valores de medio obtidos atravs de eventos naturais podem ser usadas como orculos?
Limitaes: As medies podem no ser precisas e geralmente so limitadas devido ao custo
16

elevado ou perigo envolvido na sua obteno [38,66].


5. Usando o julgamento profissional de cientistas [66,40,32,65].
Limitaes: Os cientistas podem no reparar em falhas devido a m interpretao e falta de
dados. Alm disso, algumas falhas podem produzir pequenas mudanas nos dados de sada que
podem ser difceis de identificar [32]. Alm disso, o cientista no pode fornecer julgamentos
objetivos [65].
6. Usando dados simplificados de forma que a correo possa ser determinada facilmente
[78].
Limitaes: No suficiente testar usando somente dados simples; casos de teste simples
podem no revelar falhas tais como problemas de arredondamento, erros de truncamento,
condies de transbordamento, etc. [31]. Ainda mais esses testes no representam como o
cdigo utilizado na verdade [65].
7. Orculo estatstico: verifica caractersticas estatsticas de resultados de teste [49].
Limitaes: As decises de um orculo estatstico podem nem sempre estar corretas. Ainda
mais um orculo estatstico no pode decidir se um nico caso de teste passou ou falhou [49].
8. Conjuntos de dados de referncia: Cox et al. criaram conjuntos de dados de referncia com
base na especificao funcional do programa que pode ser usado para o teste caixa-preta de
programas cientficos [13].
Limitaes: Quando usando conjuntos de dados de referncia, difcil determinar se o erro
devido ao uso de equaes inadequadas ou devido a uma falha no cdigo.
9. Testes metamrficos (MT) foram apresentados por Chen et al. [10] como uma maneira de
testar programas que no tm orculos. MT operam verificando se um programa em teste se
comporta de acordo com um conjunto esperado de propriedades conhecidas como relaes
metamrficas. A relao metamrfica especifica como uma determinada alterao na entrada do
programa deveria mudar a sada. Utilizou-se MT para testar aplicaes cientficas em diferentes
reas, tais como aplicativos aprendizado de mquina [80,56], programas de bioinformtica [11],
programas de resoluo de equaes de derivadas parciais [9] e aplicaes de processamento de
imagem [48]. Ao testar programas de resoluo de equaes de derivadas parciais, o MT
descobriu falhas que no podiam ser reveladas pelo teste de valores especiais [9]. O MT pode
ser aplicado para executar testes de unidade e testes de sistema. Murphy et al desenvolveram um
framework de apoio para a realizao de testes metamrficos a nvel de funo [58]. Eles
usaram o Java Modeling Language (JML) para especificar as relaes metamrficas
automaticamente gerar cdigo de teste usando as especificaes fornecidas. Teste metamrfico
estatstico (SMT) uma tcnica para testar programas no-determinsticos a que faltam orculos
[25]. Guderlei et al aplicaram SMT para testar a implementao da funo distribuio
acumulada inversa da distribuio normal [25]. Alm disso, o SMT foi aplicado para testar
software de simulao de cuidados de sade no-determinstico [57] e um programa de
otimizao estocstica [81].
Limitaes: Enumerar um conjunto de relaes metamrficas que devem ser atendida por um
programa uma tarefa inicial crtica ao aplicar testes metamrficos. Um desenvolvedor ou
testador tem que identificar manualmente relaes metamrficas, usando seu conhecimento do
programa em teste; este processo manual pode omitir relaes metamrficas importantes que
poderiam revelar as falhas. Recentemente propusemos uma tcnica nova baseada no
aprendizado de mquina para detectar automaticamente relaes metamrficas [34].
Conforme observado na seo 3.2, selecionar tolerncias adequadas para orculos outro
desafio. Kelly et al encontraram experimentalmente que reduzir a tolerncia em um orculo
aumenta a capacidade de detectar falhas no cdigo [36]. Clune et al. concluram que dividir o
algoritmo em pequenas etapas e testar os passos independentemente reduziu os efeitos de
composio de erros de truncamento e de arredondamento [12].
Criao de caso de teste e seleo. Vrios mtodos podem ajudar a superar os desafios na
criao e seleo do caso de teste:
17

1. Hook et al. concluram que muitos defeitos podem ser identificados por um pequeno nmero
de casos de teste que empurram os limites da computao representada pelo cdigo [32]. Em
seguida, Kelly et al. concluram que testes aleatrios aliados a casos de teste especialmente
projetados para contemplar as partes do cdigo reveladas pelos testes aleatrios so eficazes em
identificar falhas [36]. Ambos os estudos utilizaram funes do MATLAB em seus
experimentos.
2. Casos de teste gerados aleatoriamente foram utilizados com testes metamrficos para
automatizar os testes de aplicaes de processamento de imagem [48].
3. Vilkomir et al desenvolveram um mtodo para gerar automaticamente casos de teste quando
um programa cientfico tem muitos parmetros de entrada com dependncias [76]. Vilkomir et
al representam o espao de entrada como um grafo direcionado. Parmetros de entrada so
representados por vetores no grafo. Os valores especficos dos parmetros e a probabilidade de
um parmetro adotar esse valor so representados por arcos. Dependncias entre valores de
parmetro de entrada so tratados com a mesclagem/diviso de vetores. Esse mtodo cria um
modelo que satisfaz a lei de probabilidade das cadeias de Markov. Casos de teste vlidos podem
ser gerados automaticamente, tomando um caminho por esse grafo direcionado. Este modelo
tambm oferece a possibilidade de gerar casos de teste aleatrios e ponderados de acordo com a
probabilidade de assumir os valores de parmetro.
4. Bagnara et al usaram execuo simblica para gerar dados de teste para programas de ponto
flutuante [5]. Este mtodo gera dados de teste para percorrer caminhos de programas que
envolvem clculos de ponto flutuante.
5. Meinke et al desenvolveram uma tcnica para a gerao automtica de casos de teste para
software numrico a partir de testes baseados em aprendizado (LBT) [50]. Os autores criaram
primeiro um modelo polinomial como uma abstrao do programa em teste. Em seguida, os
casos de teste so gerados pela aplicao de um algoritmo de satisfatibilidade para o modelo
aprendido.
6. gerao de dados aleatrios parametrizada uma tcnica descrita por Murphy et al. [55] para
a criao de dados de teste para aplicativos de aprendizado de mquina. Esse mtodo gera
conjuntos dados aleatoriamente usando propriedades de classes de equivalncia
7. Remmel et al desenvolveram uma framework de testes de regresso para um framework
cientfico complexo [63]. Eles adotaram uma abordagem de engenharia de linha de produtos de
software (SPLE) para lidar com a grande variabilidade da framework cientfica. Eles
desenvolveram um modelo de variabilidade para representar essa variabilidade e o usaram para
derivar casos de teste, enquanto se certificavam de que as combinaes de variantes necessrias
estavam cobertas. Essa abordagem requer que cientistas ajudem a identificar combinaes
inviveis.
Informaes sobre a cobertura do teste. Apenas dois estudos primrios mencionam o uso de
algum tipo de informao sobre cobertura do teste [33,2]. Kane et al. descobriu que, enquanto
alguns desenvolvedores estavam interessados em medir a cobertura de sentenas, a maioria os
desenvolvedores estava interessado em cobrir a funcionalidade significativa do programa [33].
Ackroyd et al. [2] usaram a ferramenta Emma para medir a cobertura do teste.
Verificao de assero. A verificao de assero pode ser usada para garantir a correo dos
componentes plug-and-play cientficos. Mas a verificao de assero apresenta uma sobrecarga de
desempenho. Dahlgren et al. desenvolveram um sistema de seleo de assero para reduzir a
sobrecarga de desempenho do software cientfico [15,14].
Processo de desenvolvimento de software. Vrios estudos relataram que a utilizao de
prticas geis de desenvolvimento de software cientfico melhorou as atividades de teste [73,61,79].
Alguns projetos tm usado desenvolvimento orientado por testes (TDD), onde os testes so escritos
para verificar a funcionalidade antes que o cdigo seja escrito. Mas adotar essa abordagem pode ser
um desafio cultural visto que os estudos primrios relatam que o TDD pode atrasar o
18

desenvolvimento inicial de cdigo funcional [29,2].

3.4 QP4: H desafios que no puderam ser respondidos atravs de tcnicas existentes?
Apenas um documento primrio forneceu respostas diretas para a QP4. Kelly et al. [39]
descrevem problemas de orculo como problemas-chave a resolver e a necessidade de pesquisar
sobre como realizar testes eficazes sem orculos. No encontramos outras respostas a esta pergunta
de pesquisa.

4. Discusso
4.1.

Principais resultados

O objetivo desta reviso sistemtica da literatura identificar desafios especficos enfrentados


ao testar o software cientfico, como se tem lidado com esses desafios, e quaisquer desafios no
resolvidos. As principais concluses desta reviso so as seguintes:
1. Os principais desafios em testes de software cientfico podem ser agrupados em duas categorias
principais:
Desafios de teste que ocorrem devido a caractersticas do software cientfico
- Desafios relativos ao desenvolvimento de casos de teste como a falta de dados do mundo
real e dificuldades em replicar o contexto fsico onde o cdigo cientfico supostamente
deva funcionar.
- Problemas de orculo surgem principalmente porque programas cientficos so escritos
para encontrar respostas que so previamente desconhecidas ou para executar clculos
complexos para os quais difcil determinar qual o valor de sada correto. 30% dos
estudos primrios relataram os problemas de orculo como desafios para a realizao de
testes.
- Desafios na realizao do teste tal como dificuldades na execuo dos casos de teste para
satisfazer um critrio de cobertura devido a longos tempos de execuo.
- Desafios na interpretao do resultado do teste como erros de arredondamento, erros de
truncamento e simplificaes de modelo encobrindo falhas no cdigo.
Desafios de teste que ocorrem devido a diferenas culturais entre cientistas e a comunidade
de engenharia de software.
- Desafios devido a uma compreenso limitada de conceitos de teste tal como entender o
cdigo e o modelo que ele implementa como entidades inseparveis.
- Desafios devido a uma compreenso limitada de processos de teste, o que resulta no uso
de mtodos de teste ad hoc ou no sistemticos.
- Desafios devido falta de aplicao mtodos de teste conhecidos, tal como o teste de
unidade.
1. Descobrimos como certas tcnicas podem ser usadas para superar alguns dos desafios de teste
colocados pelo desenvolvimento de software cientfico.
Pseudo orculos, solues analticas, resultados experimentais, valores de medio, dados
simplificados e julgamento profissional so amplamente utilizados como solues para
problemas de orculo em software cientfico. Mas no encontramos estudos empricos
avaliando a eficcia dessas tcnicas na deteco de falhas sutis. Novas tcnicas, como testes
metamrficos, tm sido aplicadas e avaliadas para testes de software cientfico em estudos
de pesquisa. Mas no encontramos nenhuma evidncia de que essas tcnicas so realmente
utilizadas na prtica.
Tcnicas tradicionais, tais como gerao de casos de teste aleatrios foram aplicadas para
testar software cientfico depois de modificaes para que levassem em considerao as
19

classes de equivalncia. Alm disso, estudos relatam o uso de tcnicas especficas para
executar a gerao automatizada de casos de teste para programas de ponto flutuante. Essas
tcnicas foram aplicadas apenas a um conjunto restrito de programas. A aplicabilidade destas
tcnicas precisa ser investigada na prtica.
Ao levar em considerao testes de unidade, de sistema, de integrao, de aceitao e de
regresso, poucos estudos aplicaram mais do que um tipo de teste nos seus programas. No
encontramos estudos que aplicassem mais do que trs destas tcnicas de teste.
Apenas dois estudos primrios avaliaram algum tipo de informao de cobertura de teste
durante o processo de testes.
1. Investigao da comunidade de engenharia de software pode ajudar a melhorar o processo de
testes, atravs da investigao de como realizar testes eficazes de para programas com
problemas de orculo.
4.2. Tcnicas

potencialmente teis em testes de software cientfico

Problemas de orculo so problemas chave a resolver. necessria pesquisa sobre como realizar
testes eficazes sem orculos [39]. Tcnicas como o teste baseado em propriedades e em redundncia
de dados podem ser utilizadas quando um orculo no est disponvel [4]. Asseres podem ser
usadas para executar testes com base em propriedades dentro do cdigo fonte [35]. Outra
abordagem possvel usar uma golden run [46]. Com uma execuo golden run, um rastreamento
de execuo gerado durante uma execuo livre de falha de uma entrada. Ento esse rastreamento
de execuo comparado com rastreamentos de execuo obtidos ao executar o programa com a
mesma entrada quando uma falha observada. Ao comparar os rastreamentos da golden run com a
execuo com falha a robustez do programa determinada. Pode-se tambm aplicar testes baseados
em modelos, mas testes baseados em modelos precisam de requisitos bem definidos e estveis para
desenvolver o modelo. Contudo na maioria do software cientfico, requisitos esto em constante
mudana, que pode tornar difcil aplicar testes baseados em modelos. No encontramos a aplicao
de testes baseados em propriedades, redundncia de dados, golden run e testes baseados em
modelos para testar software cientfico nos estudos primrios. Alm disso, a pesquisa sobre a
seleo de casos de teste e adequao de dados de teste no levou em considerao o efeito do
orculo usado. Orculos perfeitos muitas vezes no esto disponveis para programas cientficos.
Portanto, ser til desenvolver tcnicas de seleo/criao de testes que levem em considerao
caractersticas do orculo utilizado no teste.
Testes metamrficos so uma tcnica de teste promissora para abordar o problema de
orculo. Testes metamrficos podem ser usados para realizar tanto testes de unidade quanto de
sistema. Mas identificar as relaes metamrficas que devem ser atendidas por um programa um
desafio. Portanto, so necessrias tcnicas que possam identificar relaes metamrficas para um
programa [34].
Somente alguns estudos aplicaram novas tcnicas desenvolvidas pela comunidade de
engenharia de software para superar alguns dos desafios de testes comuns. Por exemplo, nenhum
dos estudos primrios empregou tcnicas de seleo de teste para selecionar os casos de teste,
embora a execuo de um grande nmero de casos de teste seja difcil devido aos longos tempos de
execuo de software cientfico. Mas muitas tcnicas de seleo de testes partem de um orculo
perfeito e, portanto, no vo funcionar bem para a maioria dos programas cientficos.
Vrios estudos relatam que os desenvolvedores de software cientfico usaram testes de
regresso durante o processo de desenvolvimento. Mas no conseguimos determinar se o teste de
regresso foi automatizado ou se foi utilizada alguma tcnicas de priorizao de caso de teste. Alm
disso, encontramos apenas dois estudos que utilizaram frameworks de testes de unidade para
realizar testes de unidade. Ambos os estudos relatam o uso do framework JUnit para programas
Java. Nenhum dos estudos primrios relatou informaes sobre como os testes de unidade foram
conduzidos para programas escritos em outras linguagens.
Um dos desafios ao testar programas cientficos o cdigo duplicado. Apesar de uma falha
20

estar fixa em um nico local, a mesma falha pode existir em outros locais e as falhas podem passar
despercebidas, quando h cdigo duplicado tcnicas de deteco automtica de clones seria til para
encontrar o cdigo duplicado, especialmente ao lidar com cdigo legado.
4.3.

Pontos fortes e fracos da RSL

Estudos primrios que forneceram as informaes relevantes para esta reviso de literatura
foram identificados atravs de uma pesquisa baseada em palavras chave em trs bases de dados. A
pesquisa encontrou estudos relevantes publicados em peridicos, anais de conferncias e relatrios
tcnicos. Usamos uma abordagem sistemtica, incluindo a incluso/excluso detalhada de critrios
indicados na Tabela 1 para selecionar os estudos primrios relevantes. Inicialmente ambos os
autores aplicaram o processo de seleo de estudos a um subconjunto dos resultados retornados pela
pesquisa com base em palavras-chave. Depois de verificar que ambos os autores selecionaram o
mesmo conjunto de estudos, o primeiro autor aplicou o processo de seleo de estudo para o resto
dos resultados retornados pela pesquisa com base em palavras-chave.
Alm disso, examinamos as listas de referncia dos estudos primrios selecionados para
identificar quaisquer estudos adicionais que se relacionam com nosso foco de pesquisa.
Encontramos 13 estudos adicionais relacionados ao nosso foco de busca. Esses estudos foram
encontrados pela pesquisa com base em palavras-chave, mas no passaram em uma filtragem
baseada em ttulos. Isso indica que a seleo estudos com base apenas no ttulo pode no ser
confivel e, para melhorar a confiabilidade talvez tenhamos que rever o resumo, as palavras-chave e
concluses antes de exclu-los. Esse processo consumiria muito tempo devido ao grande nmero de
resultados retornados pela pesquisa com base em palavras-chave. Depois de selecionar os estudos
primrios, utilizamos formulrios de extrao de dados para obter as informaes relevantes
consistentemente reduzindo, ao mesmo tempo, o vis. As informaes extradas foram validadas
por ambos os autores.
Usamos as perguntas de avaliao de qualidade dadas nas tabelas 2 e 3 para avaliar a
qualidade dos estudos primrios selecionados. Todos os estudos primrios selecionados so de alta
qualidade. Os estudos primrios so uma mistura de estudos observacionais e experimentais. Um
ponto fraco a dependncia das facilidades da busca baseada em palavras-chave fornecidas pelos
trs bancos de dados para selecionar o conjunto de documentos inicial. No podemos garantir que
os meios de pesquisa retornaram todos os estudos relevantes. Mas, o processo de pesquisa retornou
independente todos os estudos que conhecamos anteriormente como relevantes para as nossas
questes de pesquisa.
Muitos estudos primrios foram publicados em locais que no so relacionados com a
engenharia de software. Portanto, pode haver solues fornecidas pela comunidade de engenharia
de software para alguns dos desafios apresentados na seo 3.2, tais como problemas de orculo.
Mas no encontramos evidncias da ampla utilizao dessas solues pela comunidade de
desenvolvedores de software cientfico.
4.4. A contribuio

para a comunidade praticante e de pesquisa

Que tenhamos conhecimento, esta a primeira reviso sistemtica de literatura realizada para
identificar os desafios, as solues propostas, de teste de software e problemas no resolvidos em
testes de software cientfico. Ns identificamos desafios em testes de software cientfico usando um
grande nmero de estudos. Destacamos as solues utilizadas pelos praticantes para superar esses
desafios, bem como solues nicas que foram propostas para superar problemas especficos. Alm
disso, identificamos vrios problemas no resolvidos.
O nosso trabalho pode contribuir para concentrar os esforos de pesquisa com o objetivo de
melhorar os testes de software cientfico. Esta RSL ajudar os cientistas que esto desenvolvendo o
software a identificar desafios de teste especficos e possveis solues para super-los. Alm disso,
cientistas desenvolvedores podem tornar-se conscientes de suas diferenas culturais com a
21

comunidade de engenharia de software o que podem afetar o teste de software. Informaes


fornecidas aqui vo ajudar os desenvolvedores de software cientfico a realizar testes sistemticos e
desse modo, a melhorar a qualidade de software cientfico. Adicionalmente, h muitas
oportunidades de pesquisa de engenharia de software para encontrar solues que resolvam os
desafios identificados por esta reviso sistemtica da literatura.

5. Concluso e trabalho futuro


A realizao de testes para identificar falhas no cdigo uma tarefa importante durante o
desenvolvimento de software cientfico que tem recebido pouca ateno. Neste trabalho
apresentamos os resultados de uma reviso sistemtica da literatura que identifica desafios
especficos enfrentados ao testar software cientfico, como se tem lidado com esses desafios e
quaisquer desafios no resolvidos. Abaixo resumimos as respostas para as nossas quatro questes de
pesquisa:
QP1: Como o software cientfico definido na literatura? Software cientfico definido como
um software com um grande componente computacional. Alm disso, software cientfico
geralmente desenvolvido por equipes multidisciplinares, compostas por cientistas e
desenvolvedores de software.
QP2: Existem caractersticas especiais ou defeitos no software cientfico ou no seu
desenvolvimento que dificultam os testes? Identificamos duas categorias de desafios no teste de
software cientfico: (1) desafios de teste que ocorrem devido a caractersticas do software cientfico
tal como problemas de orculo e (2) Desafios de teste que ocorrem devido a diferenas culturais
entre cientistas e a comunidade de engenharia de software, tal como a percepo de que o cdigo e
o modelo sejam entidades inseparveis.
QP3: Podemos usar mtodos de teste existentes (ou adapt-los) para testar o software cientfico
eficazmente? Vrios estudos relatam sobre testes em diferentes nveis de abstrao, tais como testes
de unidade, teste do sistema e testes de integrao no desenvolvimento de software cientfico.
Poucos estudos relatam o uso de frameworks de testes de unidade. Muitos estudos relatam o uso de
um pseudo orculo ou resultados experimentais para tentar suprir a falta de um orculo. Alm disso,
vrios estudos de caso relatam o uso de testes metamrficos para testar programas que no tm
orculos. Vrios estudos desenvolveram tcnicas para superar os desafios da criao de caso de
teste. Essas tcnicas incluem a combinao de casos de teste gerados aleatoriamente com casos de
teste especialmente projetados, gerando casos de teste tendo em ateno as dependncias entre os
parmetros de entrada, e utilizando a execuo simblica para gerar dados de teste para programas
de ponto flutuante. Apenas dois estudos usam informao de cobertura de teste.
QP4: H desafios que no puderam ser respondidos atravs de tcnicas existentes? Problemas
de orculo so predominantes e precisam de mais ateno. Software cientfico apresenta desafios
especiais para teste. Alguns desses desafios podem ser superados atravs da aplicao de tcnicas de
teste comumente usadas por engenheiros de software. Cientistas desenvolvedores precisam
incorporar essas tcnicas de teste no seu processo de desenvolvimento de software. Alguns dos
desafios so nicos devido s caractersticas do software cientfico, tais como problemas de orculo.
Engenheiros de software precisam considerar esses desafios especiais ao desenvolver tcnicas de
teste de software cientfico.

Agradecimentos
Este projeto apoiado pelo prmio nmero 1R01GM096192 do National Institute of General
Medical Sciences Estados Unidos. O contedo exclusivamente da responsabilidade dos autores
e no representa necessariamente as opinies oficiais do National Institute of General Medical
Sciences ou dos National Institutes of Health. Agradecemos aos revisores pelas suas observaes
perspicazes sobre verses anteriores deste artigo.
22

23

Referncias
[1] A.J. Abackerli, P.H. Pereira, N. Calnego Jr., A case study on testing CMM uncertainty
simulation software (VCMM), J. Brazilian Soc. Mech. Sci. Eng. 32 (2010) 814.
[2] K. Ackroyd, S. Kinder, G. Mant, M. Miller, C. Ramsdale, P. Stephenson, Scientific software
development at a research facility, IEEE Softw. 25 (4) (2008) 4451.
[3] W. Afzal, R. Torkar, R. Feldt, A systematic review of search-based testing for non-functional
system properties, Inform. Softw. Technol. 51 (6) (2009) 957976.
[4] P. Ammann, J. Offutt, Introduction to Software Testing, first ed., Cambridge University Press,
New York, NY, USA, 2008.
[5] R. Bagnara, M. Carlier, R. Gori, A. Gotlieb, Symbolic path-oriented test datageneration for
floating-point programs, in: 2013 IEEE Sixth International Conference on Software Testing,
Verification and Validation (ICST), 2013, pp. 110.
[6] S. Brilliant, J. Knight, N. Leveson, Analysis of faults in an n-version software experiment, IEEE
Trans. Softw. Eng. 16 (2) (1990) 238247.
[7] J. Carver, R.P. Kendall, S.E. Squires, D.E. Post, Software development environments for
scientific and engineering software: a series of case studies, in: Proceedings of the 29th
International Conference on Software Engineering (ICSE 07), IEEE Computer Society,
Washington, DC, USA, 2007, pp. 550559.
[8] Jeffrey Carver, R. Bartlett, D. Heaton, L. Hochstein, What scientists and engineers think they
know about software engineering: a survey, Tech. Rep. SAND2011-2196, Sandia National
Laboratories, 2011.
[9] T. Chen, J. Feng, T.H. Tse, Metamorphic testing of programs on partial differential equations: a
case study, in: Proceedings of the 26th Annual International Computer Software and Applications
Conference, 2002 (COMPSAC 2002), 2002, pp. 327333.
[10] T.Y. Chen, S.C. Cheung, S.M. Yiu, Metamorphic testing: a new approach for generating next
test cases, Tech. Rep. HKUST-CS98-01, Department of Computer Science, Hong Kong University
of Science and Technology, Hong Kong, 1998.
[11] T.Y. Chen, J.W.K. Ho, H. Liu, X. Xie, An innovative approach for testing bioinformatics
programs using metamorphic testing, BMC Bioinform. 10 (2009).
[12] T. Clune, R. Rood, Software testing and verification in climate model development, IEEE
Softw. 28 (6) (2011) 4955.
[13] M. Cox, P. Harris, Design and use of reference data sets for testing scientific software, Anal.
Chim. Acta 380 (23) (1999) 339351.
[14] T. Dahlgren, Performance-driven interface contract enforcement for scientific components, in:
H. Schmidt, I. Crnkovic, G. Heineman, J. Stafford (Eds.), Component-Based Software Engineering,
Lecture Notes in Computer Science, vol. 4608, Springer, Berlin, Heidelberg, 2007, pp. 157172.
[15] T.L. Dahlgren, P.T. Devanbu, Improving scientific software component quality through
assertions, in: Proceedings of the Second International Workshop on Software Engineering for High
Performance Computing System Applications (SE-HPCS 05), ACM, New York, NY, USA, 2005,
pp. 7377. [16] M.D. Davis, E.J. Weyuker, Pseudo-orculos for non-testable programs, in:
Proceedings of the ACM 81 conference (ACM 81), ACM, New York, NY, USA, 1981, pp. 254
257.
[17] J.B. Drake, P.W. Jones, G.R. Carr Jr., Overview of the software design of the community
climate system model, Int. J. High Perform. Comput. Appl. 19 (3) (2005) 177186.
[18] P. Dubois, Testing scientific programs, Comput. Sci. Eng. 14 (4) (2012) 6973.
[19] T. Dyba, T. Dingsoyr, G. Hanssen, Applying systematic reviews to diverse study types: an
experience report, in: First International Symposium on Empirical Software Engineering and
Measurement, 2007 (ESEM 2007), September 2007, pp. 225234.
[20] S.M. Easterbrook, Climate change a grand software challenge, in: Proceedings of the FSE/SDP
Workshop on Future of Software Engineering Research (FoSER 10), ACM, New York, NY, USA,
2010, pp. 99104.
24

[21] S.M. Easterbrook, T.C. Johns, Engineering the software for understanding climate change,
Comput. Sci. Eng. 11 (6) (2009) 6574.
[22] S.L. Eddins, Automated software testing for matlab, Comput. Sci. Eng. 11 (6) (2009) 4855.
[23] E. Engstrm, P. Runeson, M. Skoglund, A systematic review on regression test selection
techniques, Inform. Softw. Technol. 52 (1) (2010) 1430.
[24] P.E. Farrell, M.D. Piggott, G.J. Gorman, D.A. Ham, C.R. Wilson, T.M. Bond, Automated
continuous verification for numerical simulation, Geosci. Model Develop. 4 (2) (2011) 435449.
[25] R. Guderlei, J. Mayer, Statistical metamorphic testing programs with random output by means
of statistical hypothesis tests and metamorphic testing, in: Seventh International Conference on
Quality Software, 2007 (QSIC 07), October 2007, pp. 404409.
[26] J.E. Hannay, C. MacLeod, J. Singer, H.P. Langtangen, D. Pfahl, G. Wilson, How do scientists
develop and use scientific software?, in: Proceedings of the 2009 ICSE Workshop on Software
Engineering for Computational Science and Engineering (SECSE 09), IEEE Computer Society,
Washington, DC, USA, 2009, pp 18.
[27] L. Hatton, The T experiments: errors in scientific software, IEEE Comput. Sci. Eng. 4 (2)
(1997) 2738. [28] L. Hatton, A. Roberts, How accurate is scientific software?, IEEE Trans Softw.
Eng. 20 (10) (1994) 785797.
[29] M. Heroux, J. Willenbring, Barely sufficient software engineering: 10 practices to improve
your CSE software, in: ICSE Workshop on Software Engineering for Computational Science and
Engineering, 2009 (SECSE 09), 2009, pp. 1521. [30] M.A. Heroux, J.M. Willenbring, M.N.
Phenow, Improving the development process for CSE software, in: 15th EUROMICRO
International Conference on Parallel Distributed and Network-Based Processing, 2007 (PDP 07),
February 2007, pp. 1117.
[31] L. Hochstein, V. Basili, The asc-alliance projects: a case study of large-scale parallel scientific
code development, Computer 41 (3) (2008) 5058.
[32] D. Hook, D. Kelly, Testing for trustworthiness in scientific software, in: ICSE Workshop on
Software Engineering for Computational Science and Engineering, 2009 (SECSE 09), May 2009,
pp. 5964.
[33] D.W. Kane, M.M. Hohman, E.G. Cerami, M.W. McCormick, K.F. Kuhlmman, J.A. Byrd, Agile
methods in biomedical software development: a multi-site experience report, BMC Bioinform. 7
(2006) 273.
[34] U. Kanewala, J. Bieman, Using machine learning techniques to detect metamorphic relations
for programs without test orculos, in: 2013 IEEE 24th International Symposium on Software
Reliability Engineering (ISSRE), November 2013, pp. 110.
[35] U. Kanewala, J.M. Bieman, Techniques for testing scientific programs without an orculo, in:
Proc. 5th International Workshop on Software Engineering for Computational Science and
Engineering, IEEE, 2013, pp. 4857.
[36] D. Kelly, R. Gray, Y. Shao, Examining random and designed tests to detect code mistakes in
scientific software, J. Comput. Sci. 2 (1) (2011) 4756. [37] D. Kelly, D. Hook, R. Sanders, Five
recommended practices for computational scientists who write software, Comput. Sci. Eng. 11 (5)
(2009) 4853.
[38] D. Kelly, R. Sanders, Assessing the quality of scientific software, in: First International
Workshop on Software Engineering for Computational Science and Engineering, 2008.
[39] D. Kelly, S. Smith, N. Meng, Software engineering for scientists, Comput. Sci. Eng. 13 (5)
(2011) 711.
[40] D. Kelly, S. Thorsteinson, D. Hook, Scientific software testing: analysis with four dimensions,
IEEE Softw. 28 (3) (2011) 8490.
[41] B. Kitchenham, Procedures for performing systematic reviews, Technical report, Keele
University and NICTA, 2004.
[42] B. Kitchenham, O.P. Brereton, D. Budgen, M. Turner, J. Bailey, S. Linkman, Systematic
literature reviews in software engineering a systematic literature review, Inform. Softw. Technol. 51
(1) (2009) 715.
25

[43] B. Kitchenham, S. Charters, Guidelines for performing systematic literature reviews in


software engineering (version 2.3), Technical report, Keele University and University of Durham,
2007.
[44] K. Kreyman, D.L. Parnas, S. Qiao, Inspection procedures for critical programs that model
physical phenomena, CRL Report no. 368, McMaster University, 1999.
[45] P.C. Lane, F. Gobet, A theory-driven testing methodology for developing scientific software, J.
Exp. Theor. Artif. Intell. 24 (4) (2012) 421456.
[46] G. Lemos, E. Martins, Specification-guided golden run for analysis of robustness testing
results, in: 2012 IEEE Sixth International Conference on Software Security and Reliability (SERE),
June 2012, pp. 157166.
[47] L.S. Chin, D. Worth, C. Greenough, A survey of software testing tools for computational
science, Tech. Rep. RAL-TR-2007-010, Rutherford Appleton Laboratory, 2007.
[48] J. Mayer, R. Guderlei, On random testing of image processing applications, in:Sixth
International Conference on Quality Software, 2006 (QSIC 2006), October 2006, pp. 8592.

26