SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
1
CROWD TESTING:
O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
Moisés Armani Ramírez1
Margrit Reni Krug2
Resumo: Controlar a qualidade de um produto de software é uma atividade que
exige tempo, esforço e conhecimento técnico sobre teste de software e sobre o
sistema a ser testado. Não há garantia de que um software esteja livre de defeitos
e quanto mais se tentar aproximar desse percentual, maiores serão os custos do
projeto. Diversas metodologias tentam reduzir os custos em testes sem impactar
na qualidade do sistema. Contudo, existe um antigo e profundo impasse: esforço
necessário de teste versus tempo disponível para testes. Este trabalho aborda o
conceito de crowd testing e apresenta como uma multidão pode contribuir na
qualidade de software a fim de amenizar o impasse entre qualidade, esforço e
tempo. Como não há trabalhos científicos que abordem o assunto, a proposta
deste trabalho foi utilizar os conceitos de crowdsourcing e do processo de teste de
software para, então, identificar como e onde o crowd testing pode ser utilizado no
controle da qualidade de software. Trata-se de uma pesquisa exploratória
baseada em bibliografias cientificas e documentais para a definição de crowd
testing.
Palavras-chave: Crowd testing. Crowdsourcing. Teste de software. Qualidade de
software.
CROWD TESTING:
THE POWER OF THE CROWD IN SUPPORT OF SOFTWARE QUALITY
Abstract: Controlling the software quality is an activity that requires time, effort and
technical knowledge on software testing and on the system being tested. There is no
guarantee that software is 100% defect-free and the more you try to approach this
percentage, the higher the costs of the project. Several methods attempt to reduce
testing costs without impacting the system quality. However, there is an ancient and
profound dilemma: testing effort required versus time available for testing. This paper
discusses the crowd testing concept and presents how a crowd can contribute to the
software quality to ease the standoff between effort and time. Since there are no
scientific studies that address the subject, the purpose of this study was to use the
1
Analista de testes de software, CTFL. E-mail: armaniramirez@gmail.com
2
Orientadora, Prof. Dra. E-mail: margritk@unisinos.br
2
crowdsourcing concepts and the software testing process, then identify how and
where the crowd testing can be used in software quality control. This is an
exploratory research based on scientific bibliographies and documentation for the
crowd testing definition.
Keywords: Crowd testing. Crowdsourcing. Software testing. Software quality.
1 INTRODUÇÃO
Durante as décadas de 1970, 1980 e 1990, os testes eram efetuados pelos
próprios desenvolvedores do software (BASTOS et al., 2007). Desde então, a busca
pela melhoria do processo de teste de software, visando sua eficácia e eficiência,
tem sido constante. Modelos de maturidade do desenvolvimento de software e
melhoria do processo de software como o CMMI (Capability Maturity Model
Integration) e o MPS.br (Melhoria do Processo de Software Brasileiro) trouxeram
expressivos avanços para a área de qualidade de software. Atualmente, os métodos
ágeis, como o Scrum, possuem uma proposta bastante diferente quanto ao processo
de teste de software tradicional. Métodos ágeis eliminam uma série de
documentações e processos burocráticos visando rapidez na execução de projetos,
mas sem deixar de lado a sua qualidade.
De acordo com QAI (2006), a qualidade do software é definida pelo
atendimento dos requisitos especificados no projeto e pelo atendimento das
necessidades do cliente que solicitou o software. A área de qualidade de software é
dividida em dois processos: um que garante a qualidade do software, responsável
pelo o processo que produz o software, e outro que controla a qualidade do produto,
responsável por assegurar que o software funcione conforme as especificações
(BASTOS et al., 2007).
Controlar a qualidade de um software é um processo que, além de
conhecimentos técnicos, exige também conhecimento sobre o sistema a ser testado.
Deste modo, a equipe de teste deve compreender o negócio do cliente bem como as
suas necessidades para que seja possível entregar um software com qualidade.
Contudo, testar tudo é inviável e o teste exaustivo é praticamente impossível devido
às restrições do projeto como tempo, esforço e orçamento (ISTQB, 2011). Por isso,
3
de acordo com Pressman (2006, p. 293), “você acaba de testar quando o tempo
acaba ou o dinheiro acaba”.
Todos os projetos têm as suas restrições e é responsabilidade dos gerentes e
suas equipes identificá-las, analisá-las e elaborar estratégias que reduzam os riscos
do projeto e não interfiram na qualidade do produto. O crowd testing é uma nova
ferramenta que surgiu para contribuir com a qualidade do software, mais
precisamente, no controle da qualidade. Ele tem a característica de utilizar mais
testadores do que atualmente uma empresa dispõe para testar um software,
obtendo níveis de qualidade satisfatórios e em um prazo mais curto. O crowd testing
pode ser utilizado no processo de teste de software, mas, de acordo com Narayanan
(2011 a), “não se pode ainda substituir os testes tradicionais com o crowd testing”.
O tema central deste trabalho é o estudo do conceito do crowd testing e da
sua aderência no processo de teste de software tradicional. O maior desafio foi
utilizar um conceito totalmente novo para explicar como o poder da multidão pode
ser utilizado em prol da qualidade de software. Já a principal motivação desta
pesquisa surgiu da ausência de referências bibliográficas sobre o crowd testing, fato
que estimulou ainda mais a investigação sobre o tema.
Este estudo aprofunda os conceitos do crowd testing de modo que seja
possível compreender como e onde esta atividade pode ser inserida dentro do
processo de teste de software tradicional e também possa auxiliar os profissionais
da área na utilização do crowd testing dentro dos atuais projetos de teste de
software de suas empresas ou até mesmo em empresas onde não existe nenhum
processo de teste. Ao mesmo, o estudo responde os seguintes questionamentos: (1)
a qual categoria da qualidade de software o crowd testing pertence; (2) quais são os
métodos e tipos de testes que ele utiliza; (3) qual é o nível de teste em que está
presente; (4) quais são as técnicas de testes que podem ser utilizadas; e (5) quais
são os papéis desempenhados no crowd testing. Como forma de comprovar os seus
principais conceitos, é apresentada uma pesquisa que foi realizada com
participantes de crowd testing.
4
1.1 Objetivos do trabalho
1.1.1 Objetivo geral
O objetivo geral desta pesquisa é descrever, baseando-se em conceitos,
como e onde o crowd testing pode ser inserido no processo de teste de software
tradicional e como uma multidão pode contribuir para a qualidade de software.
1.1.2 Objetivos específicos
Com a finalidade de atingir o objetivo geral, os seguintes objetivos específicos
foram estabelecidos:
• Analisar quais são os conceitos de crowdsourcing que podem ser
aplicados no crowd testing;
• Descobrir quais são os conceitos do processo de teste de software
tradicional que o crowd testing utiliza;
• Investigar e aprofundar os conceitos de crowd testing;
• Combinar o crowdsourcing, o crowd testing e o processo de teste de
software visando embasar a definição de crowd testing;
• Identificar e analisar a forma com que uma multidão pode contribuir
para a qualidade de software.
1.2 Metodologia
Do ponto de vista da forma de abordagem do problema, esta é uma pesquisa
qualitativa. Para Silva (2001, p. 20), este tipo de pesquisa “considera que há uma
relação dinâmica entre o mundo real e o sujeito, isto é, um vínculo indissociável
entre o mundo objetivo e a subjetividade do sujeito que não pode ser traduzido em
números” e não é necessário utilizar técnicas estatísticas. Para tal, foi efetuada uma
análise e interpretação de uma situação do mundo real, neste caso o crowd testing,
para descrever o seu funcionamento dentro do processo de teste de software.
Já do ponto de vista dos seus objetivos, esta é uma pesquisa exploratória. De
acordo com Gil (2010, p. 41), pesquisas como essa “têm como objetivo proporcionar
5
maior familiaridade com o problema, com vistas a torná-lo mais explícito ou a
constituir hipóteses”. Ela foi baseada em bibliografias para melhor compreender o
crowd testing e identificar como a multidão pode contribuir para a qualidade de
software. Para que a descrição deste novo conceito fosse mais assertiva, foi
realizado um levantamento, através de uma pesquisa feita com testadores de
projetos de crowd testing para conhecer as suas percepções sobre os principais
conceitos desta nova forma de testar software.
Por fim, do ponto de vista dos procedimentos técnicos, esta é uma pesquisa
bibliográfica e documental. De acordo com Gil (2010, p. 45):
A pesquisa documental assemelha-se muito à pesquisa bibliográfica. A
diferença essencial entre ambas está na natureza das fontes: Enquanto a
pesquisa bibliográfica se utiliza fundamentalmente das contribuições dos
diversos autores sobre determinado assunto, a pesquisa documental vale-
se de materiais que não recebem ainda um tratamento analítico, ou que
ainda podem ser reelaborados de acordo com os objetos da pesquisa.
Deste modo, foram utilizados materiais e artigos sobre crowd testing que não
receberam tratamento analítico e, para embasar o seu conceito, materiais
publicados, de domínio científico, sobre crowdsourcing e o processo de teste de
software foram utilizados na elaboração deste trabalho.
2 CROWD TESTING
Nos últimos anos, pessoas de todo o mundo começaram a se reunir para
executar tarefas que antes eram restritas aos empregados de uma determinada
empresa só que, agora, longe do contexto corporativo e de suas limitações. Esse
novo tipo de comportamento social não exige remuneração e é executado na forma
de colaboração (coletiva ou individual), podendo ser utilizado por organizações, das
mais diversas áreas, na criação, no desenvolvimento e na manutenção de produtos
ou serviços (HOWE, 2009).
O movimento em prol dos softwares de código aberto (ou livre) provou que as
pessoas, quando organizadas, podem produzir um produto ou serviço tão bom ou
até mesmo melhor do que as organizações privadas. A prova disso foi a capacidade
de uma multidão criar um sistema operacional (HOWE, 2009). Hoje em dia, uma
6
multidão também é capaz de se organizar para testar software e não mais apenas
para desenvolvê-lo.
Os testes baseiam-se em riscos, na cobertura de requisitos e/ou orçamento,
entre outras várias técnicas e métodos. Atualmente, até mesmo atividades de teste
podem ser transferidas para uma multidão (ROODENRIJS; PRINS, 2009). “Usar
crowdsourcing para testar é o novo fenômeno que vai ser um substituto para uma
parte de nossas atividades de teste” (ROODENRIJS; PRINS, 2009, p. 8).
O crowdsourcing utiliza o potencial que a internet tem de interligar as pessoas
para executar tarefas que antes eram executadas apenas por profissionais das
empresas. Ele funciona como intermediário entre dois polos antes desconectados de
pessoas, um que precisa de um trabalho concluído e outro que precisa trabalhar
(GERBER, 2011). De acordo com Howe (2006, p. 1), crowdsourcing é definido da
seguinte forma:
Simplesmente definido, crowdsourcing representa o ato de uma companhia
ou instituição tomar uma função, uma vez realizada por funcionários, e
externá-la a uma rede indefinida (e, geralmente, grande) de pessoas sob a
forma de uma chamada pública. Isso pode assumir a forma de peer-
production
3
(quando o trabalho é realizado colaborativamente), mas também
é frequentemente realizado por um único indivíduo. O pré-requisito crucial é
o uso do formato da chamada pública e da grande rede de trabalhadores
potenciais.
O crowd testing tem sua origem no crowdsourcing e, segundo Roodenrijs e
Prins (2009, p. 9), pode ser definido da seguinte forma: “É o uso de pessoas
(des)conhecidas, a multidão, para testar software”. Com uma definição semelhante,
Narayanan (2011 b) define o crowd testing como sendo um meio de assegurar a
qualidade do software através de testes realizados por uma multidão. Já em uma
visão menos simplista, de acordo com Forte Consulting Group (2012, p. 2): “Crowd
testing é uma comunidade de testadores que usam a sua própria infraestrutura e
recursos, proporcionando flexibilidade, economia de custos e tempo de resposta
rápido”. O seu objetivo é focar na experiência do usuário para a execução de testes
de software em situações do mundo real.
3
Novo modelo de inovação e criação de valor através de colaborações auto-organizadas que
produzem novos bens e serviços dinâmicos que rivalizam com os das maiores e mais bem-
financiadas empresas do mundo (TAPSCOTT; WILLIANS, 2007).
7
Utilizar a experiência dos usuários tem como objetivo fazer uso dos seus
feedbacks no ciclo de desenvolvimento de software, visando reduzir os custos
referentes aos problemas funcionais e de usabilidade (FORTE CONSULTING
GROUP, 2012). Como as pessoas têm prazer em transmitir seus conhecimentos e
em fazer o que de fato gostam, muitas vezes a recompensa de um feedback dado
ou trabalho realizado acaba sendo apenas a própria ação de colaborar (HOWE,
2009). Deste modo, os testadores também são motivados a participar de um projeto
de crowd testing pelo reconhecimento não financeiro, ou seja, o valor monetário nem
sempre é o mais importante. Sendo assim, as empresas têm uma oportunidade de
otimizar os seus investimentos em teste de software.
A premissa básica do crowd testing é ter habilidade de usar um grande
número de pessoas para que seja possível atingir os objetivos da estratégia de
negócio em curto prazo. Isso é possível porque o crowd testing dá valor a opinião da
multidão, produz resultados mais universais e de acordo com a vida real (FORTE
CONSULTING GROUP, 2012). Essa multidão consiste de pessoas de todas as
partes do mundo com diferentes backgrounds, culturas, conhecimentos e
criatividade. Todos podem participar, desde os iniciantes até os mais experientes
testadores, usuários ou pessoas simplesmente interessadas em testar um software.
Mesmo assim, é necessário saber o que a multidão pode ou não fazer, o porquê
eles querem testar, quais são as suas habilidades e conhecimentos (ROODENRIJS;
PRINS, 2009). O intuito não é revelar a identidade de quem está testando, uma vez
que o crowd testing preza pela confidencialidade, mas sim analisar o quanto as
pessoas podem contribuir para a qualidade do software.
O crowd testing oferece acesso a ambientes tecnicamente diversos e
arquiteturalmente exclusivos, garantindo a validação de uma aplicação particular
independente da sua infraestrutura. Contudo, para que a estratégia do crowd testing
seja eficaz, é necessária uma análise detalhada dos cenários de teste para garantir
que todos os cenários possíveis sejam cobertos (FORTE CONSULTING GROUP,
2012). Por outro lado, é possível utilizá-lo em diversas áreas ou tipos de software
mesmo sem uma análise detalhada dos cenários de teste. De acordo com
Narayanan (2011 a), o Quadro 1 apresenta as três principais áreas onde a multidão
pode atuar nos testes.
8
Quadro 1 – Principais áreas de utilização do crowd testing
Área Utilização
Aplicações web • Testar a interface do usuário
• Testar cenários específicos
Dispositivos
móveis
• Espalhar geograficamente os testes dos usuários finais
• Testar diferentes combinações de dispositivos disponíveis
• Usar uma combinação de crowd testing, emuladores e reais
dispositivos como parte da estratégia de teste
Jogos • Garantir que todos os cenários possíveis sejam cobertos
• Gerar interesse por um produto (jogo) através do marketing social
Fonte: Elaborado pelo autor
Apesar de apenas três áreas serem consideradas as principais, o crowd
testing pode ser utilizado em qualquer aplicação que possa ser acessada através da
internet e por um grande número de pessoas. Ele é um modelo democrático onde
todos podem participar dos testes, inclusive os amadores.
2.1 Participação dos testadores amadores
Em um ambiente colaborativo, as pessoas são motivadas a participar do
processo de maneira espontânea, em atividades que lhes dão prazer. Durante a
utilização do seu tempo livre, os amadores, com o seu comprometimento e
determinação, tem muito a contribuir (HOWE, 2009). De acordo com Leadbeater e
Miller (2004, p. 8), esses fatores contribuem para o surgimento uma nova
designação para o termo amador: “os Pro-Am – amadores que trabalham seguindo
os padrões profissionais”. Para os amadores, o lazer não é consumido
passivamente, mas sim ativa e participativamente.
O crowd testing consegue mobilizar tanto testadores profissionais quanto
amadores para testar software, seja utilizando metodologias, técnicas, ferramentas
ou simplesmente a vontade de encontrar defeitos. Por ser um modelo de teste
prático, os amadores e profissionais tendem aprender mutuamente em um ambiente
colaborativo. Da mesma forma, testadores profissionais com pouca ou muita
experiência têm a oportunidade de interagir, comparar os seus resultados e adquirir
novos conhecimentos.
9
A internet tem contribuído para o processo de aprendizagem dos amadores e
atualmente qualquer pessoa interessada em aprender a testar software pode obter
informações através de blogs especializados, fóruns, tutorias, listas de discussões,
entre outros meios. De acordo com Howe (2009), ao executar uma determinada
tarefa os amadores possuem a seguinte vantagem em relação aos profissionais: a
solução encontrada pode ser mais eficiente e inovadora, uma vez que os amadores
não atuam sob a influência das organizações. Nesse contexto, Leadbeater e Miller
(2004, p. 22) traçam a seguinte diferença entre profissionais das empresas e os Pro-
Ams: “os profissionais estão mais propensos a entender a teoria por trás das boas
práticas, enquanto Pro-Ams talvez tenham mais técnica e conhecimentos práticos”.
A criatividade das pessoas pode ser mais bem explorada quando elas não
estão inseridas no contexto corporativo, já que não há restrições à liberdade
intelectual ou políticas organizacionais que as impeçam de utilizar todo o seu
potencial (HOWE, 2006). Por isso, acredita-se que os testadores amadores podem
utilizar o seu poder criativo para testar diferentes cenários de teste.
Apesar de o crowd testing não exigir o domínio de técnicas de teste, ele pode
ser utilizado para aperfeiçoar as habilidades individuais e permite ter acesso a
diferentes tipos de aplicações que talvez, estando dentro de um ambiente
corporativo, o testador jamais conseguiria testá-las.
2.2 A comunidade de teste e o meio corporativo
Antes do surgimento da internet, o acesso à informação era limitado e nada
fácil. Através da sua evolução a informação passou a ser distribuída e de fácil
acesso. De acordo com Tapscott e Willians (2007, p. 21): “O acesso crescente à
tecnologia da informação coloca nas pontas dos dedos de todos as ferramentas
necessárias para colaborar, criar valor e competir”. Contudo, a arquitetura da
internet conspira contra sistemas fechados, pois permite que as pessoas aprendam,
compartilhem e distribuam conhecimentos. Pessoas com interesses em comum
passaram a se organizar em comunidades sob um modelo totalmente diferente dos
encontrados atualmente em uma empresa (HOWE, 2009).
10
As comunidades on-line “potencializam as motivações humanas básicas para
transformar o trabalho que antigamente teria sido considerado não-remunetarivo em
substancial econômico” (TAPSCOTT; WILLIANS, 2007, p. 121). As comunidades (a)
conseguem reunir e organizar pessoas diferentes de um modo eficiente, (b) motivam
a troca de ideias e ajuda mutua, (c) utilizam ferramentas tão boas ou até mesmo
melhores que as utilizadas nas empresas e (d) na maior parte dos casos, os
colaboradores abrem mão do direito autoral sobre as suas criações (HOWE, 2009).
Todo esse conjunto favorece aos indivíduos inovadores produzirem com mais
liberdade. Tapscott e Willians (2007, p. 91) destacam outro diferencial das
comunidades:
Enquanto tiverem os mecanismos para eliminar contribuições fracas, as
comunidades grandes e auto-seletivas de pessoas em constante
comunicação terão maior probabilidade de atribuir as tarefas certas às
melhores pessoas do que uma única empresa cujo conjunto de recursos é
muito menor.
O crowd testing não se caracteriza como terceirização de testes, mas, do
mesmo modo, pode oferecer consideráveis vantagens às empresas para as quais as
comunidades de teste colaboram. De acordo com Howe (2009), as comunidades on-
line oferecem eficiência na organização e execução do trabalho superior a de uma
empresa. Elas são autopoliciadas e não precisam de camadas gerenciais para
controlar o desempenho e a produtividade dos colaboradores. Deste modo, uma
multidão de testadores é capaz de executar um projeto de teste de software com a
mesma qualidade oferecida por profissionais de uma organização. Mesmo assim,
sem as mesmas informações e documentações do projeto a qualidade dos testes
tende a ser inferior a das atuais equipes de teste das empresas.
As organizações devem investir em tecnologia e na remodelação de sua
estrutura com o objetivo de se tornarem mais abertas e integradas para, então,
poder interagir com as comunidades on-line (TAPSCOTT; WILLIANS, 2007). A
mudança da mentalidade corporativa permite a troca de experiência e conhecimento
entre a empresa e a comunidade. Para Howe (2009), trabalhar com uma multidão
requer que o trabalho seja divido em pequenas partes a serem distribuídas
organizadamente entre os membros da comunidade, ou seja, o trabalhar de modo
descentralizado. No contexto do crowd testing, dividir o trabalho significa ter módulos
11
ou funcionalidades que possam ser testados separadamente e distinguir os tipos de
testes a serem executados (de sistema, segurança, performance, etc.).
2.3 A inteligência coletiva e a diversidade de testadores
A inteligência coletiva é formada por um grupo de pessoas interligadas por
interesses em comum. Porém, quanto maior forem as características comuns, menor
será a inteligência coletiva. Por outro lado, a inteligência coletiva se destaca na
medida em que a diversidade dentro do grupo aumenta e a capacidade das pessoas
expressarem seus pontos de vista individuais seja respeitada. Ainda assim, outros
fatores devem ser atendidos para que a diversidade supere a capacidade: (1) é
necessário um problema real, (2) a multidão precisa ser qualificada para resolver o
problema, (3) é necessário algum método que agregue e processe as contribuições
individuais e (4) as pessoas escolhidas devem vir de um grupo suficientemente
grande. Somente assim pode-se garantir uma variedade de abordagens e que a
capacidade de expressar a individualidade seja garantida (HOWE, 2009).
As chances de que alguém encontre a solução de um problema são maiores
quando um grande número de pessoas aplicam métodos diversificados para tentar
solucioná-lo. Da mesma forma, um grupo com pessoas escolhidas aleatoriamente
tem um desempenho melhor do que um grupo formado somente com os melhores
solucionadores de problemas (HOWE, 2009). Isso significa que quanto mais
diversificada for a comunidade de teste, melhor será a qualidade do software
testado. Contudo, Brabham (2008) destaca que pode ser mais difícil encontrar
diversidade entre uma multidão homogênea. Por isso, não basta somente utilizar
uma multidão para testar software, é necessário algum mecanismo que garanta a
diversidade de características, experiências e conhecimentos dos testadores. Assim,
aumentam-se as chances de diferentes defeitos serem encontrados no software e
não somente aqueles defeitos mais comuns, de baixa severidade.
A multidão de testadores deve ser diversificada e ter, pelo menos, algum tipo
de conhecimento sobre teste de software ou funcionamento da aplicação a ser
testada. Entretanto, os integrantes dessa multidão não precisam interagir entre si.
De acordo com Howe (2009, p.160): “A interação leva à deliberação que, por sua
vez, reduz a diversidade de ideias por meio da qual a inteligência coletiva frutifica”.
12
Por isso, devem ser preservadas as individualidades de cada testador, até mesmo
para não contaminar a comunidade. Por outro lado, Tapscott e Willians (2007)
defendem a integração entre as pessoas, porém as comunidades precisam de
sistemas que permitam a interação entre os colaboradores e de líderes para
gerenciar as interações. Percebe-se que gerenciar essas interações é um grande
desafio, pois, se não for na medida certa, pode haver uma redução na diversidade
de ideias do grupo e consequentemente uma diminuição da qualidade do teste.
Dentro da comunidade, as melhores ideias são valorizadas e resultam em
melhores status para o autor do trabalho. Naturamente, os demais integrantes do
grupo tentam buscar melhores resultados para as soluções que já foram
encontradas. Esse fato eleva a qualidade global do trabalho, bem como estimula o
aperfeiçoamento das habilidades individuais (HOWE, 2009). “As pessoas gostam de
aprender e de ensinar. A comunidade tem uma habilidade infalível de identificar seus
integrantes mais talentosos e destacar o trabalho destes” (HOWE, 2009, p. 160).
Deste modo, quando a empresa utilizar o crowd testing ela não terá o trabalho de
identificar testadores talentosos, pois a própria comunidade o faz quando dispõe de
inteligência coletiva.
2.4 O que motiva a multidão
Antes de o crowd testing ser conhecido, o custo dos testes impedia o acesso
ao controle da qualidade de software para muitas empresas (BANERJEE, 2012).
Hoje em dia, isso é possível porque o modelo de pagamento no crowd testing é
diferente do praticado no teste tradicional. No crowd testing o dinheiro não é a única
forma de recompensa, pois reputação também é um fator motivacional.
Recompensa social, contatos internacionais ou adquirir conhecimento são
importantes incentivos para participar do crowd testing. Quanto à recompensa
financeira, os modelos tradicionais para teste de software nem sempre são
aplicáveis, já que o pagamento por defeito encontrado tem funcionado bem e cupons
de desconto tem sido outra opção viável para pagamento no crowd testing
(ROODENRIJS; PRIS, 2009). A recompensa também pode ser uma combinação de
um prêmio e um preço variável por defeito encontrado ou até mesmo um preço fixo
para um número de horas ou projeto acordado (NARAYANAN, 2011 b).
13
Para os clientes do crowd testing, oferecer testes como um pacote de serviço
pode ser mais eficaz do que oferecer testes isolados. Deste modo, preço e formas
de compensação devem ser praticados de acordo com a estratégia de teste de cada
empresa (NARAYANAN, 2011 a, 2011 b). De acordo com Roodenrijs e Prins (2009),
a Figura 1 apresenta um resumo das formas de pagamento no crowd testing, tanto
financeiras ou não, quanto pessoais ou para o grupo.
Figura 1 - Formas de recompensa no crowd testing
Fonte: Roodenrijs e Prins (2009) modificado pelo autor
Em março de 2012 o Forte Consulting Group divulgou os resultados de uma
pesquisa realizada com profissionais de TI na área de testes, garantia da qualidade
e com gerentes e analistas. A pesquisa revelou que 47% dos participantes tinham
sólidos conhecimentos sobre o que é e como o crowd testing funciona. O estudo
contou com a participação de novatos na área de testes e garantia da qualidade até
os mais experientes: 30% possuíam de um até cinco anos de experiência, 45% de
seis até dez anos e 25% possuíam mais de dez anos de experiência (FORTE
CONSULTING GROUP, 2012). O estudo revelou importantes informações a respeito
do crowd testing e, de acordo com Forte Consulting Group (2012), o Quadro 2
apresenta algumas das conclusões obtidas através da pesquisa.
Não financeira
Grupo
Fazer parte de uma rede social
Interação com
diferentes culturas
Compartilhar conhecimento
Reputação on-line Ganhar uma taxa se
um produto é vendido
Pagamento para
a sua companhia
Competição amigável
para ser o melhor
Recompensa social
trabalhando para obras de
caridade
Testar o que gosta
Desconto do software
depois de lançado
Renda por teste
Cupons de desconto
Pessoal
Financeira
14
Quadro 2 - Pesquisa do Forte Consulting Group sobre crowd testing
Conclusão Observações
O crowd testing está
rapidamente se tornando
uma opção viável de teste
em ambientes corporativos
Mesmo com um ceticismo e carência de conhecimento em torno do
crowd testing, a sua adoção tem indicado um grande interesse sobre
o assunto. O seu uso pode resultar em web sites ou aplicações que
são rapidamente implantados em produção, com custos reduzidos e
capacitados para funcionar em diversos ambientes
O trabalho para mover as
atividades off-shore de QA
e testes continua sendo de
alta prioridade
A maioria dos participantes concordam que o modelo off-shore de
QA e testes (onde transfere-se a execução dessas atividades em
outro país) é sólido e rentável, independente da inclusão de uma
estratégia de crowd testing
Segurança, privacidade e
vantagem competitiva da
empresa vão proibir a
adoção do crowd testing
nas indústrias
Um grande percentual dos participantes identificou uma barreira para
a adoção generalizada do crowd testing por ele representar uma
mudança significativa no modo de comunicar-se e relacionar-se.
Diversos fatores suportam essa relutância tais como potenciais
riscos de segurança, o comprometimento da imagem corporativa e
controles de qualidade
Os principais benefícios do
crowd testing criam razões
imperiosas para explorar
essa estratégia
Os principais benefícios do crowd testing representam razões viáveis
para investir nele. Baixo custo, rápido retorno, teste sob demanda e
testes em condições do mundo real são alguns dos motivos que
contribuem para explorar a sua estratégia
O crowd testing ainda está
a ser adotado e acreditado
por tomadores de decisão
Nesse estudo, somente 16% dos participantes com cargo gerencial
concordam que o crowd testing veio para ficar. Essa informação é
crucial ao determinar os fatores da tomada de decisão para adotar
ou não o crowd testing na empresa
Fonte: Elaborado pelo autor
A pesquisa também constatou que, dentre os principais benefícios do crowd
testing, 61% dos participantes acreditam que a habilidade para testar em condições
do mundo real é a característica mais importante. Rápido retorno (44%), testes sob
demanda (39%) e baixo custo (39%) completam a lista dos principais benefícios.
Enquanto 56% dos entrevistados concordam que segurança, privacidade e
vantagem competitiva da empresa vão proibir a adoção do crowd testing nas
indústrias, somente 8% discordam e 36% não concordam nem discordam dessa
declaração. Outra grande diferença identificada foi que 39% concordam que o crowd
testing pode ser muito eficaz no ambiente corporativo, 14% discordam e a maioria,
47%, não possuem opinião definida. Por fim, 38% acreditam que o crowd testing é
principalmente um movimento para o B2C (Business to Consumer), software de
15
código aberto e aplicações comerciais, mas não para aplicações de negócio e
corporativa (FORTE CONSULTING GROUP, 2012).
Além dos benefícios do crowd testing apontados pela pesquisa do Forte
Consulting Group, Roodenrijs e Prins (2009) destacam outras características que
também beneficiam as empresas que adotam o crowd testing. São elas: (a) não há
necessidade de contratos de longo prazo com testadores, (b) testes em diversas
plataformas (incluindo dispositivos móveis), (c) possibilidade de adicionar ou
remover o número de testadores de acordo com as necessidades e (d) aproximar-se
dos usuários ou potenciais usuários do software.
2.5 Aderência ao teste de software tradicional
Para entender como uma multidão pode ser utilizada em prol da qualidade de
software é preciso conhecer algumas definições sobre testes de software. O termo
qualidade possui duas definições: a primeira, do ponto de vista do fabricante de
software, é atender os requisitos. Já a segunda, do ponto de vista do cliente, é
atender suas necessidades (QAI, 2006). A qualidade de software é dividida em duas
categorias: a garantia da qualidade e o controle da qualidade. De acordo com QAI
(2006), o Quadro 3 apresenta as diferenças entre esses dois métodos.
Quadro 3 - Diferenças entre garantia da qualidade e controle da qualidade
Garantia da qualidade Controle da qualidade
Método De prevenção De detecção
Preocupação Com o processo Com o produto ou serviço
Responsável Equipe da qualidade Time de testes
Propósito Estabelecer e avaliar o processo
que produz um produto ou serviço
Verificar se os atributos especificados estão
(ou não) presentes no produto ou serviço
Principal
objetivo
Identificar pontos fracos no
processo e melhorá-los
Detectar defeitos no produto ou serviço
Fonte: Elaborado pelo autor
Ainda assim, pode-se destacar mais uma diferença entre esses dois métodos:
enquanto a garantia da qualidade realiza atividades de verificação, o controle da
qualidade executa atividades de validação (embora a verificação seja utilizada em
16
revisões). De acordo com Pressman; QAI; Rios e Moreira (2006, 2006, 2006), o
Quadro 4 apresenta as definições de verificação e validação.
Quadro 4 - Definições de verificação e validação
Autor Verificação Validação
Pressman Garantir que o software implementa
corretamente uma função específica
Garantir que o software construído
corresponde aos requisitos do cliente
QAI Garantir que o sistema (software,
hardware, documentação e o funcionário)
cumpre as normas e processos da
organização, com base em métodos de
revisão ou que não execute o código
Assegurar fisicamente que o sistema opera
de acordo com o plano executando as
funções do sistema através de uma série
de testes que podem ser observados e
avaliados
Rios e
Moreira
Realizar inspeções/revisões sobre os
produtos gerados pelas diversas etapas
do processo de teste
Avaliar se o sistema atende aos requisitos
do projeto (usuário). Os testes unitários, de
integração e de aceitação podem ser
classificados como testes de validação
Fonte: Elaborado pelo autor
Quando se fala em verificação e validação, é fundamental diferenciar duas
técnicas de teste: estática e dinâmica. “Teste estático é realizado usando a
documentação do software. O código não é executado durante o teste estático.
Teste dinâmico requer que o código esteja em um estado executável para realizar os
testes” (QAI, 2006, p. 117). Enquanto revisão de viabilidade e revisão de requisitos
são exemplos de teste estático; teste unitário, teste de integração, teste de sistema e
teste de aceitação são exemplos de teste dinâmico (QAI, 2006).
Os exemplos de testes estáticos e dinâmicos ocorrem em uma determinada
sequência que é representada por diferentes níveis de testes. O teste estático deve
ser realizado antes do teste dinâmico (e pode se estender ao longo do processo de
teste) para, ainda nas fases iniciais do projeto, detectar erros nas documentações
antes de virarem defeitos no código (ISTQB, 2011). De acordo com QAI (2006), o
Quadro 5 apresenta os níveis de teste presentes no processo de teste de software.
17
Quadro 5 - Níveis de teste
Nível Objetivos
Teste de verificação Realizar testes estáticos nas documentações
Teste unitário Verificar se as funções do sistema funcionam adequadamente
Teste de integração Verificar se as funções do sistema que envolve mais de uma aplicação
ou banco de dados são executadas com precisão
Teste de sistema Simular a operação do sistema e verificar se ele funciona corretamente
Teste de aceitação
do usuário
Testar o sistema no mundo real. Isso significa que o usuário irá interagir
com o sistema e verificar se ele funciona corretamente
Fonte: Elaborado pelo autor
As técnicas de teste são agrupadas em duas categorias dependendo se elas
derivam da descrição de uma função do programa ou da descrição de uma estrutura
interna do programa. Conjuntos de teste baseados em análise estrutural tendem a
descobrir erros que ocorrem durante a codificação do programa, enquanto conjuntos
de teste baseados em análise funcional tendem a descobrir erros que ocorrem na
implementação de requisitos ou na modelagem (QAI, 2006). A técnica de teste
estrutural não determina o funcionamento correto da aplicação, e sim da estrutura.
Por outro lado, teste funcional é realizado para assegurar que as especificações e os
requisitos do software foram atendidos (BASTOS et al., 2007).
O teste estrutural pode ser chamado de teste de caixa-branca e o teste
funcional de teste de caixa-preta (ISTQB, 2011). O teste de caixa-branca assume
que a lógica interna do código é conhecida para a execução de testes. Já o teste de
caixa-preta foca em testar a função de um programa conforme suas especificações,
desconsiderando a estrutura interna do software (QAI, 2006).
De acordo com os principais conceitos de teste de software é possível
identificar como e de que forma o crowd testing contribui no processo de teste de
software. A seguir, o Quadro 6 apresenta a aderência do crowd testing no teste de
software, onde o texto em destaque (negrito) representa as áreas em que uma
multidão de testadores pode atuar.
18
Quadro 6 – Aderência do crowd testing no teste de software
Garantia da Qualidade Controle da Qualidade
Verificação Validação
Teste Estático Teste Dinâmico
Teste Estrutural Teste Funcional
Teste de Caixa-branca Teste de Caixa-preta
Níveis de Teste
Teste de Verificação Teste de Integração
Teste Unitário Teste de Sistema
Teste de Aceitação do Usuário
Fonte: Elaborado pelo autor
Considerando os principais conceitos de teste de software, observa-se que o
crowd testing atua no controle da qualidade, pois detectar defeitos no produto ou
serviço é o seu principal objetivo. Ele é capaz de validar o software porque assegura
fisicamente que o sistema está operando, mesmo que não haja nenhuma
documentação de requisitos do software (cenário mais comum no crowd testing). Por
outro lado, mesmo que a documentação seja disponibilizada, raramente a empresa
irá solicitar alguma revisão nos requisitos. Sendo assim, testes dinâmicos são mais
comuns do que os estáticos, já que nesse tipo de teste o código está em um estado
executável para a realização dos testes. Da mesma forma, pelo fato do código fonte
não estar disponível para a multidão, não há como realizar testes estruturais e de
caixa-branca. Nesse caso, somente o teste funcional e de caixa-preta são aplicáveis.
Quanto aos níveis de teste, o teste de verificação e o teste unitário não são
cobertos pelo crowd testing. Embora o teste de integração muitas vezes fique
limitado a testar somente a integração entre a aplicação e o banco de dados, ele é
um teste viável de ser executado. E, por fim, os principais níveis de testes cobertos
pelo crowd testing são: teste de sistema e teste de aceitação do usuário. Esse
último, pelo fato de uma multidão ser utilizada na execução dos testes em uma
situação do mundo real, é o nível melhor coberto pelo crowd testing.
2.6 Utilização no processo de teste de software
O crowd testing pode ser aproveitado independentemente da metodologia de
desenvolvimento, seja ela ágil ou cascata. De acordo com Narayanan (2011 a), a
19
Figura 2 apresenta a fase ou estágio em que o crowd testing é usado na
metodologia cascata (Waterfall Methodology) e ágil (Scrum, neste caso).
Figura 2 - Utilização do crowd testing em metodologias de desenvolvimento
Fonte: Narayanan (2011 a)
A força do crowd testing concentra-se na capacidade de aumentar as
metodologias tradicionais de teste nas principais situações estratégicas e não deve
ser considerada uma estratégia isolada de teste (FORTE CONSULTING GROUP,
2012). Embora seja importante, utilizar apenas o crowd testing como única atividade
de encontrar defeitos torna o processo de garantia da qualidade imprevisível. Além
disso, Narayanan (2011 a) destaca os seguintes riscos ao adotar somente o crowd
testing como única atividade do processo de teste: (a) testes ineficazes em
aplicações instáveis, (b) exposição de funcionalidades estratégicas ou competitivas
para o público, (c) falta de domínio e melhor conhecimento da aplicação por parte
dos testadores, (d) não cobre todos os tipos de testes e (e) dificuldade de detectar
defeitos não funcionais. Por isso, o ciclo de vida de testes deve existir a fim de
encontrar defeitos nas fases iniciais do projeto, caso contrário pode se criar um ciclo
vicioso de encontrar cada vez mais defeitos nas fases finais do processo de
desenvolvimento de software (NARAYANAN, 2011 b).
Para evitar encontrar defeitos somente no final do projeto, as organizações
precisam adotar uma estratégia que combine a abordagem do teste tradicional com
o crowd testing para obter o máximo retorno sobre o investimento (NARAYANAN,
2011 b). Atualmente, organizações maduras têm encontrado a correta combinação
do teste tradicional com o crowd testing: Elas usam o teste tradicional para garantir
20
que a aplicação está funcionalmente estável e de acordo com os requisitos e, em
seguida, utilizam a multidão para reduzir o tempo de colocação do produto no
mercado, custos e dar flexibilidade aos testes. Além disso, algumas empresas
também disponibilizam os seus scripts de automação e casos de teste para garantir
que o crowd testing tenha certo nível de maturidade de teste (BANERJEE, 2012).
Enquanto grandes companhias, tais como Microsoft e Google, possuem um
grande número de seguidores para usar os seus softwares e também executar
testes beta4
, o crowd testing pode auxiliar as empresas que não possuem esse tipo
de seguidores e oferecer uma multidão para testar os seus softwares
(ROODENRIJS; PRINS, 2009). Contudo, de acordo com Narayanan (2011 b), o
crowd testing pode ser mais poderoso e atuar como um elemento chave no ciclo de
vida de teste. De acordo com o autor, o Quadro 7 apresenta as quatro abordagens
que combinam o crowd testing com o teste tradicional.
Quadro 7 - Combinação do crowd testing com o teste tradicional
Abordagem Definição
Extensão dos testes O crowd testing pode ser usado como uma extensão complementar aos
testes antes de liberar a versão de produção. É eficaz na captura de qualquer
defeito de configuração ou na interface do usuário
Cenários de testes
especializados
Usuários finais podem ser utilizados para múltiplos e específicos testes, onde
um grupo efetua um tipo de teste ou testa um grupo de componentes
específicos e o outro grupo executa outros tipos de testes ou testa outros
componentes. Testes de desempenho também podem ser executados
Teste baseado em
risco e prioridade
Usar a multidão para testar aplicações de criticidade alta ou com alta taxa de
defeitos. Isso resulta em priorizar a utilização do orçamento para testes em
áreas onde ele irá ter maior impacto no negócio da empresa
Integrado a estratégia
de teste
Considerando o crowd testing como serviço, os testes podem ser combinados
com outras ferramentas com o objetivo de atender a estratégia global de
teste, focando em testes o mais cedo possível no ciclo de vida de teste
Fonte: Elaborado pelo autor
Conhecer como o crowd testing pode ser combinado com o teste tradicional
permite às empresas (que possuem um processo de teste definido) identificar quais
dos quatro tipos de abordagem podem adotar na sua estratégia de testes global.
4
É um teste operacional realizado por usuários/consumidores fora das dependências da empresa,
sem envolvimento dos desenvolvedores, a fim de determinar se o sistema satisfaz, ou não, as
necessidades de usuário (ISTQB, 2010).
21
Contudo, também é necessário saber em que etapa ou estágio do processo de teste
o crowd testing pode ser utilizado.
Quanto mais cedo forem encontrados defeitos, menor é o custo de correção
dos erros e maior é a probabilidade de corrigi-los corretamente (MYERS, 2004). Por
isso, de acordo com Bastos et al. (2007), o ciclo de vida de testes presume que
sejam realizados testes ao longo de todo o processo de desenvolvimento. Deste
modo, quanto mais cedo a multidão executar os testes, mais defeitos tendem a ser
encontrados ou, pelo menos, mais tempo ela terá para encontrar defeitos.
Atualmente, existem diversos modelos que descrevem como os testes
tradicionais são executados desde o início do desenvolvimento do software até a
entrega da aplicação. De acordo com Rios e Moreira (2006), a Figura 3 apresenta
um modelo do ciclo de vida do teste baseado na metodologia de Test Management
(TMap). O modelo, que foi elaborado pelos autores, é chamado de Modelo 3P x 3E.
Figura 3 - Modelo 3P x 3E do ciclo de vida do processo de teste
Fonte: Rios e Moreira (2006)
Baseando-se no Modelo 3P x 3E, é possível identificar em qual etapa o crowd
testing pode ser utilizado. A maioria das abordagens que combinam os testes da
multidão com o processo de teste tradicional (extensão dos testes, cenários de
testes especializados e teste baseado em risco e prioridade) está focada apenas em
uma única etapa do ciclo de vida do processo de teste: a de execução. Isso porque
a multidão não será envolvida no planejamento, na preparação e na especificação
dos testes e o único papel dela é o de testador, pois apenas executam testes. Por
22
outro lado, integrar o crowd testing com a estratégia de teste é a única abordagem
em que os testadores de uma comunidade de teste poderão participar mais
ativamente do ciclo de vida de teste. Nesse caso, outros papéis podem surgir.
Para demonstrar como o crowd testing também pode ser integrado no
processo de teste ágil Narayanan (2011 a) apresenta algumas das atividades de
teste utilizadas na metodologia ágil Scrum (Figura 4) e a Figura 5 apresenta o crowd
testing como sendo uma atividade de teste. Para Narayanan (2011 a), além do
crowd testing, os testes podem ser executados sob a forma de community testing
que representa o estado mais elevado de maturidade do crowd testing. Isso significa
uma combinação de testes conduzidos através de domínio especializado e
ferramentas desenvolvidas pelas próprias comunidades. Organizações que adotam
as melhores práticas esforçam-se por uma combinação ideal de community testing e
crowd testing. Entretanto, o grau de teste necessário pode variar de acordo com a
estratégia e maturidade dos testes da organização (NARAYANAN, 2011 a).
Figura 4 - Atividades de teste na metodologia Scrum
Fonte: Narayanan (2011 a)
23
Figura 5 - Crowd testing como uma atividade de teste
Fonte: Narayanan (2011 a) modificado pelo autor
Enxergar o crowd testing como uma atividade de teste é fundamental para
superar o desafio de integrá-lo no processo de teste da empresa. De acordo com
Narayanan (2011 a), a Figura 6 apresenta orientações iniciais de como introduzir o
crowd testing na empresa e o Quadro 8 detalha cada um dos quatro passos básicos.
Além de entender essa integração, a aplicação também deve ser claramente
definida e entendida por todos antes de implantar o crowd testing para garantir um
produto eficaz (FORTE CONSULTING GROUP, 2012).
Figura 6 - Como introduzir o crowd testing na organização
Fonte: Narayanan (2011 a) modificado pelo autor
Passo 1:
Avaliar
áreas de
alto impacto
e iniciar o
teste
Passo 2:
Fazer o
processo de
QA
compatível
com a
"multidão"
Passo 3:
Amadurecer
o community
testing e
integrar
mídias
sociais
Passo 4:
Revisar o
processo e o
progresso e
efetuar
ajustes
24
Quadro 8 - Quatro passos para implantar o crowd testing na organização
Passo Atividades
1 - Avaliar áreas de alto impacto
e iniciar o teste
• Identificar as áreas mais críticas e as prioridades
• Iniciar a execução do crowd testing para benefícios
imediatos e reduzir os esforços de outras atividades
• Certificar-se das questões de segurança
2 - Fazer o processo de QA
compatível com a multidão
• Identificar as opções de mudança de QA
• Automatizar testes de regressão
• Implantar a gestão do conhecimento para facilitar a
mudança para o community testing
3 - Amadurecer o community
testing e integrar mídias sociais
• Integrar-se com mídias sociais. Foque em grupos e
comunidades on-line
• Determinar a maturidade e disponibilidade interna e de
fornecedores de serviços de teste
• Influenciar as mídias sociais e os atuais times
promovendo a mudança de “crowd” para “community”
4 – Revisar continuamente o
processo e o progresso; e
efetuar os ajustes necessários
• Revisar as áreas que estão sendo testadas, processos
e integrações com mídias sociais
• Efetuar as devidas alterações no processo
• Garantir um processo de melhoria continua
Fonte: Narayanan (2011 a) modificado pelo autor
Além dos passos descritos por Narayanan (2011 a), algumas condições
devem ser satisfeitas antes de transferir a aplicação para a multidão. De acordo com
Roodenrijs e Prins (2009), antes de utilizar o crowd testing se deve (a) pensar sobre
os testes do sistema que precisam ser executados em uma fase anterior, (b) definir
os objetivos de testes e (c) verificar a disponibilidade do ambiente de teste. Por outro
lado, o tipo de aplicação também deve ser analisado e, segundo Banerjee (2012), a
aplicação ideal para o crowd testing é aquela em que (1) a internet é o mecanismo
de conexão, (2) o servidor está publicamente hospedado para aceitar requisições
globais e tem capacidade suficiente para suportar simultâneas cargas e (3) o cliente
tem requisitos mínimos e a aplicação suporta a maioria das configurações.
O uso do crowd testing é determinado por diversos fatores, tais como: o tipo
da multidão, as condições de teste e as atividades que a multidão irá executar.
Deste modo, quem utilizá-lo é responsável por decidir o uso da multidão de acordo
com as suas necessidades. O tipo de multidão e o controle sobre ela devem ser
25
determinados ao planejar um projeto de crowd testing, pois não se pode utilizar
qualquer pessoa da multidão e alguns sistemas exigem maior controle do que outros
(ROODENRIJS; PRINS, 2009).
Mesmo considerando esses fatores, os testes tradicionais não podem ser
substituídos pelo crowd testing (FORTE CONSULTING GROUP 2012; NARAYANAN
2011 b). De acordo com Banerjee (2012), o Quadro 9 apresenta as razões para não
substituir totalmente os testes tradicionais pelo crowd testing. Acrescentando mais
um motivo, Roodenrijs e Prins (2009) destacam que a diferença entre os dois está
no foco do teste. Enquanto o crowd testing foca na aceitação do software, o teste
tradicional está focado em confirmar se o software está pronto para ser usado.
Quadro 9 - Razões para não substituir totalmente os testes tradicionais
Razão Motivo
Cenários críticos talvez não sejam
testados
O crowd testing foca nos casos de uso que são fáceis de
identificar, baseado na disponibilidade de documentação
limitada. Cenários críticos ou funcionalmente relevantes
talvez não sejam devidamente cobertos
Cenários específicos não podem ser
testados
Durante os testes, muitas vezes cenários específicos são
replicados para criar um ambiente adverso no servidor web
ou aplicação. Isso não é possível por meio da multidão
Tornar os aplicativos disponíveis
para a multidão pode ser um grande
desafio
Em muitos casos os próprios aplicativos não são
compatíveis com o acesso compartilhado
Uma aplicação requer certo nível
básico de instabilidade antes de ser
disponibilizada para a multidão
Caso a aplicação não seja estável, constantes paradas e
ociosidade vão fazer com que a multidão perca o interesse
de testar
Porque a maioria dos defeitos vai
ser comum e reportado por diversas
pessoas
Conduzir a triagem dos defeitos reportados vai ser a maior
atividade, consumindo significante tempo e esforço
A maturidade da prática de teste
nunca vai evoluir com o tempo
Ninguém está realmente selecionando os membros da
multidão. Cada iteração pode incluir um conjunto totalmente
desarticulado de pessoas, e as variações vão existir nos
resultados e na qualidade dos testes.
Fonte: Elaborado pelo autor
Para empresas que não possuem um processo de teste de software
tradicional definido, o crowd testing pode atuar como um fator motivacional para a
26
implantação de um processo de teste, já que em um curto prazo e custo mais baixo
ele consegue mostrar os benefícios do teste no controle da qualidade do software.
2.7 A experiência do testador como técnica de teste
Encontrar defeitos é um talento que os testadores possuem mesmo não
utilizando nenhuma metodologia (MYERS, 2004). Entretanto, existem algumas
técnicas de teste que se baseiam em experiência para executar os testes.
Competência e intuição são utilizadas, juntamente com experiência em aplicações e
tecnologias, para encontrar defeitos no software. Embora sejam efetivos, os testes
baseados em experiência não oferecem níveis de cobertura como outras técnicas de
teste, uma vez que não têm critério de cobertura formal (ISTQB, 2007). As técnicas
baseadas em experiência podem ou não serem empregadas com o uso de
metodologia. De acordo com ISTQB (2007), o Quadro 10 apresenta detalhes sobre
as principais técnicas de teste baseadas na experiência.
Quadro 10 - Técnicas de teste baseadas na experiência
Técnica Descrição
Suposição de
erro
O testador utiliza a experiência para supor erros que podem ser injetados
no sistema e para estabelecer métodos que cubram os defeitos resultantes.
É capaz de identificar falhas em potencial durante a análise de risco.
Baseada em lista
de checagem
O testador experiente elabora uma lista de checagem com todos os pontos
em que o software deve ser verificado. Além da experiência, padrões pré-
estabelecidos são utilizados na elaboração da lista.
Exploratória O testador planeja, executa e reporta os testes simultaneamente. Os
objetivos de teste são ajustados dinamicamente durante a execução e não
são elaboradas documentações formais. A criatividade também é
explorada na preparação dos testes.
Ataque O testador tenta provocar a ocorrência de falhas no sistema. Interações do
software com seu ambiente operacional, principalmente onde há troca de
dados, é o principal foco do teste de ataque.
Fonte: Elaborado pelo autor
As técnicas de teste baseadas na experiência são as principais técnicas
utilizadas no crowd testing, já que o testador não possui nenhuma documentação
formal sobre o projeto e utiliza apenas a sua intuição e experiência para encontrar
defeitos no software. Dentre essas técnicas, destaca-se o teste exploratório.
27
O teste exploratório é um tipo de teste baseado na experiência e intuição do
testador. De acordo com Bach (2003), o teste exploratório é qualquer teste em que o
testador controla ativamente a modelagem dos testes, bem como sua execução, e
usa as informações obtidas durante o teste para projetar novos e melhores testes. A
intuição e conhecimento dos testadores são obtidos através da experiência em
aplicações e tecnologias e podem ser úteis para identificar testes específicos que
não são facilmente identificados pelas técnicas formais. Nesse caso, o teste
exploratório pode complementar os testes mais formais. Entretanto, como esta
técnica de teste depende da experiência do testador, a eficiência do teste pode
variar muito (ISTQB, 2011). Segundo Bastos et al. (2007, p. 257): “O teste
exploratório é indicado quando existe pouca documentação para orientar os testes
ou quando o prazo é tão curto que não é possível preparar um teste mais formal”.
Qualquer pessoa que testa executa teste exploratório, porém, alguns confiam
mais na exploração do que outros (TINKHAM; KANER, 2003). Essa técnica de teste
consiste na aprendizagem, modelagem e execução de testes simultaneamente. Ao
invés do testador se basear em especificações pré-estabelecidas que orientem os
seus testes, ele age de modo mais proativo e busca executar o melhor teste possível
no momento. Esse fato reforça a necessidade de garantir a inteligência coletiva
dentro da comunidade de teste, pois testadores com diferentes experiências tendem
a encontrar diferentes tipos de defeitos no software.
Tudo aquilo a partir da personalidade do testador até os seus modos de
aprendizagem e suas experiências passadas tem um impacto em como ele percebe
o risco, pensa que um aplicativo pode falhar, projeta testes para encontrar essas
falhas e em como ele pode cobrir os riscos identificados. A experiência do testador
faz com que ele adquira todas essas competências. Entretanto, todas as decisões
que um testador exploratório toma é feita sob condições incertas e insuficiente
conhecimento sobre a aplicação. Isso faz com que todas as decisões tomadas
tenham alguma probabilidade de estarem incorretas e também dificulta a escolha
das próximas atividades ou dos próximos testes a serem realizados. Ao considerar
que cada decisão tem um risco associado a ela, a heurística auxilia o testador
exploratório a tomar as suas decisões de modo mais assertivo (TINKHAM; KANER,
28
2003). Deste modo, é possível que o crowd testing produza resultados imprecisos e
com qualidade abaixo da desejada, mesmo dispondo de uma multidão diversificada.
2.8 Regras de utilização do crowdsourcing aplicadas no crowd testing
O fato de o crowd testing ter origem no crowdsourcing não significa que todos
os seus conceitos são aplicáveis ou são válidos no contexto de teste de software.
Entretanto, as regras de utilização do crowdsourcing podem contribuir no momento
de formar uma comunidade de teste ou simplesmente juntar uma multidão para
testar software.
A fim de garantir boas chances de sucesso, superar desafios, incertezas e
desconfianças, sete passos devem ser considerados ao utilizar o crowdsourcing: (1)
envolver as pessoas desde o início, (2) gerenciar as pessoas, (3) utilizar instruções
claras, (4) saber trabalhar em comunidade on-line, (5) comunicação constante, (6)
prover fóruns para discussões e (7) divisão correta do trabalho. Juntamente com
esses passos, algumas regras devem ser respeitadas para manter os princípios
básicos do crowdsourcing (HOWE, 2009). Seguir esses sete passos e considerar as
10 regras de crowdsourcing, também definidas por Howe (2009), reduzem os riscos
de insucesso ao utilizar uma multidão para executar tarefas.
Para que seja possível controlar a qualidade do software, o crowd testing
também deve considerar esses princípios. Contudo, é necessário adaptá-los para
que uma multidão possa testar software. Sendo assim, o Quadro 11 apresenta as 10
regras de crowd testing (baseadas nas 10 regras de crowdsourcing) que a empresa
deve observar antes de disponibilizar o seu software para a multidão.
Quadro 11 – As 10 regras de crowd testing
Regra Definição
1- Escolha o modelo
certo
Determine o seu objetivo e escolha a abordagem que melhor atende aos
seus interesses, seja utilizando somente o crowd testing ou combinado-o
com o processo de teste tradicional
2 - Escolha a multidão
certa
Com objetivos traçados, divulgue-os nos meios mais adequados e não se
esqueça de que a multidão precisa ser suficientemente grande para
garantir a diversidade no grupo de testadores
3 - Ofereça os Crie uma comunidade vibrante e comprometida. Para isso, identifique as
29
incentivos certos motivações de cada um e envolva as pessoas. Estabeleça uma forma de
compensação (não necessariamente financeira). Lembre-se de que o
reconhecimento do trabalho realizado é fundamental
4 - Deixe as cartas de
demissão na gaveta
Não utilize o crowd testing apenas como uma forma de reduzir custos na
contratação de mão de obra barata ou de reduzir as atuais equipes de
teste da empresa
5 - A burrice das
multidões ou o
princípio do ditador
benevolente
Apesar de serem auto-organizadas, a multidão necessita de direção e
alguém com quem possam se comunicar. Existe a necessidade de alguém
para guiá-las e corrigi-las, quando necessário. Por mais que a comunidade
seja auto-gerenciada, elas precisam de líderes
6 - Mantenha a
simplicidade e divida
as tarefas
Procure dividir as tarefas em pequenas partes que podem ser produzidas
de forma independente antes de serem integradas, pois tarefas muito
grandes podem ser de difícil execução. O fato de prezar-se pela
diversificação dentro de uma comunidade implica na necessidade de haver
clareza e simplicidade na divisão do trabalho. Aplicações muito complexas
podem dificultar a execução dos testes
7 - Lembre-se da Lei
de Sturgeon
5
Essa lei diz que 90% de tudo que for produzido é lixo, ou seja, não possui
utilidade alguma. Nem tudo o que for produzido pela multidão pode ser
aproveitado ou apresenta a qualidade desejada. Muitos defeitos acabam
sendo cadastrados em duplicidade e a falta de informação sobre a
aplicação pode reduzir a qualidade dos testes
8 - Lembre-se dos
10%, o antídoto contra
a Lei de Sturgeon
Para identificar os 10% que são úteis, utilize a própria multidão para triar e
selecionar os melhores trabalhos. As comunidades sabem muito bem
identificar os talentos que elas possuem. Isso pode ser constatado, por
exemplo, nos rankings que destacam os testadores que mais encontraram
defeitos no software
9 - A comunidade
sempre está certa
Por mais que haja a necessidade de ter um líder, alguém que oriente e
conduza os trabalhos, não tente controlar ou manipular a comunidade.
Lembre-se que a multidão pode ter a proporção de bilhões de pessoas.
Oriente o testador, mas evite dizer como ele deve executar o seu trabalho
10 - Não pergunte o
que a multidão pode
fazer por você, mas,
sim, o que você pode
fazer pela multidão
As pessoas colaboram por prazer e por saberem que o seu trabalho será
reconhecido e valorizado. Dentro do contexto de uma empresa tradicional,
os funcionários trabalham para satisfazer as necessidades da empresa.
Mude sua mentalidade e crie um ambiente agradável e participativo.
Quanto mais informação, mais eficazes serão os testes
Fonte: Elaborado pelo autor
5
Theodore Sturgeon foi um renomado autor e defensor da ficção científica. Muitas críticas foram
feitas utilizando o que havia de pior nas produções dessa área e levaram o autor a criar a Lei de
Sturgeon. Segundo essa lei, 90% de tudo o que é gerado não se pode aproveitar (HOWE, 2009).
30
Embora as 10 regras de crowdsourcing já tenham sido estudadas e na prática
tem dado certo, elas ainda não foram comprovadas quando aplicadas na área de
teste de software. As 10 regras de crowd testing necessitam de mais pesquisas para
que seja validada a sua aplicação, já que este é um tema recente e poucos estudos
foram realizados na área. Da mesma forma como aconteceu no crowdsourcing,
paradigmas devem ser quebrados na área de teste para que o crowd testing seja
reconhecido e aceito como uma nova forma de contribuição para a qualidade do
software. Howe (2009) acredita que em curto prazo os problemas gerados pelas
mudanças serão compensados pelos benefícios de longo prazo, com menos
estruturas organizacionais verticais e um ambiente mais colaborativo que reconheça
a qualidade do trabalho das pessoas. Ainda assim, de acordo com Brabham (2008,
p. 86): “Pesquisas são necessárias para entender como os membros de uma
multidão se sentem em relação ao seu papel como trabalhador para as empresas, e
não examinar somente os casos de sucessos”.
2.9 Tendências
O crowd testing está crescendo rapidamente como uma nova tendência na
indústria de desenvolvimento de software e logo será incorporado pela equipe de
desenvolvimento das organizações (FORTE CONSULTING GROUP, 2012).
Fornecedores de serviços estão lutando cada vez mais para expandir a oferta de
serviços de testes especializados e o crowd testing logo irá se tornar sinônimo de
community testing. Significativos investimentos, além de aprimorar o domínio do
conhecimento e aumentar os recursos de testes, serão capazes de preencher a
lacuna entre o crowd testing e o community testing (NARAYANAN, 2011 b).
Apesar de estar sendo visto como uma opção viável de teste, o crowd testing
é um serviço de teste complementar e as organizações devem utilizá-lo como parte
da estratégia de teste. Esse tipo de abordagem pode rapidamente e de forma
rentável eliminar defeitos, se devidamente integrado no ciclo de vida de
desenvolvimento de software. Sólidas diretrizes de teste e muitos e experientes
recursos de teste permitem ao crowd testing testar projetos com competência nos
padrões de qualidade e com conhecimento sobre as necessidades de negócio do
cliente (NARAYANAN, 2011 b). Para que seja considerado uma estratégia de teste,
31
o crowd testing requer um mix diversificado de usuários e arquitetura colaborativa.
Uma estratégia de teste combinado vai melhor atender a crescente necessidade
pela qualidade dos testes, enquanto permanecer dentro dos parâmetros de custo
(FORTE CONSULTING GROUP, 2012).
No crowdsourcing as mídias sociais já estão funcionando como propulsoras
dessa atividade e Narayanan (2011 b) prevê uma maior integração entre o crowd
testing e as mídias sociais. Grupos de interesses especiais, incluindo aqueles no
Facebook e Twitter, que são focados em negócios, vão ajudar a construir
conhecimento e entregar produtos mais eficazes. De acordo com Narayanan (2011
a), a integração com as mídias sociais faz dele um grande aliado do marketing, onde
grupos sociais enxergam o teste como uma oportunidade de divulgar seus produtos.
Apesar de todos os seus benefícios, Narayanan (2011 a) afirma que os testes
executados sob o conceito puro do crowd testing não irão durar muito tempo, pois
fornecedores de serviços de testes tendem a incorporar o crowd testing nos seus
atuais portfólios e o community testing tende a ser o seu substituto. Já para Forte
Consulting Group (2012), apesar de o crowd testing ser uma ideia atraente, com a
sua promessa de teste On-demand (sob demanda), baixo custo, e testes em
condições do mundo real; questões como (a) será que esse método vai substituir as
atuais estratégias de teste e QA (Quality Assurance) das organizações, (b) como ele
vai integrar eficazmente com as metodologias tradicionais e (c) será que o crowd
testing veio para ficar; são questões que estão em aberto e ainda a serem
estudadas. Para Roodenrijs e Prins (2009), apesar do crowd testing já ser uma
realidade, ele ainda é pequeno e não está disponível para todas as empresas. Ele
vai mudar na medida em que as pessoas trabalhem cada vez mais unidas e isso vai
adicionar outra visão para os testes de software.
3 PESQUISA SOBRE CROWD TESTING
Com o intuito de comprovar os principais conceitos abordados neste trabalho,
foi realizado um levantamento com testadores de crowd testing. De acordo com Gil
(2010, p. 50): “As pesquisas deste tipo caracterizam-se pela interrogação direta das
pessoas cujo comportamento se deseja conhecer”. O objetivo foi verificar
32
semelhanças e discrepâncias entre a percepção da crowd (a multidão que testa) e o
referencial teórico sobre essa nova forma de testar software.
A pesquisa foi realizada entre Setembro e Outubro de 2012, através de um
questionário disponibilizado na internet. O formulário foi divulgado apenas para o
público alvo e a identidade de cada participante foi preservada. Para garantir a
privacidade, o autor da pesquisa apenas teve contato com a empresa que oferece o
serviço de crowd testing e essa foi a responsável por divulgar o questionário, através
de e-mail, para os testadores.
As questões apresentadas aos participantes foram baseadas nos principais
conceitos de crowd testing e o seu conteúdo foi extraído das referências
bibliográficas presentes neste artigo. As perguntas foram validadas previamente pela
orientadora desta pesquisa e pela empresa que disponibilizou os seus testadores
para responderem o questionário.
Em pesquisas do tipo levantamento, as informações são obtidas através de
um grupo significativo de participantes e, mediante análise quantitativa, as
conclusões são obtidas com base nos dados coletados (GIL, 2010). Para tal, os
dados coletados foram armazenados diretamente em uma planilha on-line, onde
cada linha representou a participação de um testador. Após análise quantitativa,
gráficos foram gerados para melhor visualização dos resultados obtidos.
3.1 Sobre a empresa pesquisada
A Base2 Tecnologia, empresa especializada em qualidade e testes de
software, lançou o serviço do Crowdtest em 2010 como uma opção de baixo custo
para projetos de testes de software. O seu alvo principal são aplicações web, móveis
e desktop de orçamento enxuto e que precisam ser desenvolvidas e lançadas
rapidamente (CROWDTEST, 2012).
A empresa está situada na cidade de Belo Horizonte, Minas Gerais, e possui
20 funcionários. Ela está presente em praticamente todos os estados brasileiros,
com concentração em Minas Gerais, com 28,5% dos testadores, São Paulo com
25%, Rio Grande do Sul com 7,5%, Rio de Janeiro com 6,8%, Distrito Federal com
6,5% e Santa Catarina com 5,8% dos testadores.
de crowd testing já testados,
encontradas e o valor médio pago aos melhores testadores é de R$ 300,00
valor refere-se a uma média de quanto os melhores testadores ganharam ao longo
dos projetos que ocorreram desde o lançamento dessa plataforma, que aconteceu
em Fevereiro de 2012.
3.2 Sobre os participantes
Pesquisas do tipo levantamento, na maioria das vezes, não
integrantes da população estudada (GIL, 2010).
testadores do Crowdtest,
software (testador, analista de teste, lidere ou gerente de teste)
representam as seguintes profissões:
empresário, estudante, analista de implantação e assistente de suporte ao usuário.
A Figura 7 mostra o perfil do cargo dos participantes.
Fonte: Elaborado pelo autor
Além da diversidade de formação profissional, a
software também é variada
menos de um ano de experiência
participantes que não possuem o seu cargo atual na área de testes também
responderam ter alguma experiência na área
profissionais trabalharam como
mostra a experiência dos entrevistados na área de testes.
a Catarina com 5,8% dos testadores. Atualmente, ela
já testados, 3307 testadores participando,
encontradas e o valor médio pago aos melhores testadores é de R$ 300,00
se a uma média de quanto os melhores testadores ganharam ao longo
dos projetos que ocorreram desde o lançamento dessa plataforma, que aconteceu
Sobre os participantes
Pesquisas do tipo levantamento, na maioria das vezes, não
integrantes da população estudada (GIL, 2010). A pesquisa foi realizada com
est, sendo que 78% trabalham profissionalmente com testes de
(testador, analista de teste, lidere ou gerente de teste)
representam as seguintes profissões: analista de sistemas,
, estudante, analista de implantação e assistente de suporte ao usuário.
mostra o perfil do cargo dos participantes.
Figura 7 - Perfil do cargo dos participantes
Fonte: Elaborado pelo autor
Além da diversidade de formação profissional, a experiência com testes de
é variada. Um dado interessante é que a maioria (
menos de um ano de experiência com testes e um dado curioso é que mesmo
participantes que não possuem o seu cargo atual na área de testes também
eram ter alguma experiência na área. Uma provável hipótese é que esses
profissionais trabalharam como testadores antes de ocupar o cargo atual
periência dos entrevistados na área de testes.
Testador;
39%
Analista de
teste; 29%
Lider de
teste; 7%
Gerente de
teste; 3%
Outros; 22%
33
ela possui 78 projetos
testadores participando, 3090 ocorrências
encontradas e o valor médio pago aos melhores testadores é de R$ 300,00. Esse
se a uma média de quanto os melhores testadores ganharam ao longo
dos projetos que ocorreram desde o lançamento dessa plataforma, que aconteceu
Pesquisas do tipo levantamento, na maioria das vezes, não analisam todos os
A pesquisa foi realizada com 58
% trabalham profissionalmente com testes de
(testador, analista de teste, lidere ou gerente de teste) e os outros 22%
analista de sistemas, desenvolvedor,
, estudante, analista de implantação e assistente de suporte ao usuário.
rfil do cargo dos participantes
experiência com testes de
Um dado interessante é que a maioria (28%) possui
e um dado curioso é que mesmo
participantes que não possuem o seu cargo atual na área de testes também
. Uma provável hipótese é que esses
testadores antes de ocupar o cargo atual. A Figura 8
Figura
Fonte: Elaborado pelo autor
Quando questionados sobre os tipos de sistemas que já testaram
Crowdtest, 91% testaram aplicações
utilizando dispositivos móveis.
sistemas testados pelos parti
representa aplicações desktop
não foram questionados sobre os testes executados nesses sistemas, os métodos e
tipos de testes utilizados no
Figura
Fonte: Elaborado pelo autor
Segundo a pesquisa,
testadores em outras empresas de
Figura 10, onde as seguintes empresas f
formulário: 99tests, BugFinders
Menos de 1 ano
Entre 1 e 2 anos
Entre 3 e 4 anos
Mais de 5 anos
Nenhum
Aplicações Web
Dispositivos móveis
Aplicações comerciais
Figura 8 - Experiência dos entrevistados na área de testes
Fonte: Elaborado pelo autor
Quando questionados sobre os tipos de sistemas que já testaram
% testaram aplicações web e apenas 17% executaram testes
utilizando dispositivos móveis. A Figura 9 apresenta a distribuição dos
pelos participantes da pesquisa, sendo que o tipo “Outros”
desktop (conforme informado pelos participantes).
não foram questionados sobre os testes executados nesses sistemas, os métodos e
tipos de testes utilizados no crowd testing podem ser verificados no
Figura 9 - Tipo de sistema testado pelos participantes
Fonte: Elaborado pelo autor
Segundo a pesquisa, 24% dos testadores do Crowdtest também atuam como
testadores em outras empresas de crowd testing. Essa atuação é apresentada na
s seguintes empresas foram citadas no campo “Outros” do
99tests, BugFinders, CEVIU e Hoplon.
14%
21%
17%
21%
Menos de 1 ano
Entre 1 e 2 anos
Entre 3 e 4 anos
Mais de 5 anos
Nenhum
0% 5% 10% 15% 20% 25%
91%
17%
34%
31%
5%
Aplicações Web
Dispositivos móveis
Aplicações comerciais
Jogos
Outros
0% 20% 40% 60% 80%
34
xperiência dos entrevistados na área de testes
Quando questionados sobre os tipos de sistemas que já testaram no
% executaram testes
apresenta a distribuição dos tipos de
cipantes da pesquisa, sendo que o tipo “Outros”
(conforme informado pelos participantes). Embora
não foram questionados sobre os testes executados nesses sistemas, os métodos e
podem ser verificados no Quadro 6.
ipo de sistema testado pelos participantes
est também atuam como
. Essa atuação é apresentada na
no campo “Outros” do
28%
25% 30%
91%
80% 100%
Figura 10 -
Fonte: Elaborado pelo autor
3.3 Motivação dos testadores
Diferentemente do teste de software tradicional, onde as pessoas são
basicamente motivadas pela recompensa financeira, o
oferece diversos tipos de
a pesquisa revelou que 66
testes porque encontram
Muitas vezes os testadores ficam limitados
testing eles podem testar qualquer aplicação que
(incluindo jogos e dispositivos móveis).
64%, também é outra motivação não financeira
Figura 11 -
Fonte: Elaborado pelo autor
Testecide
Fazer parte de uma rede social
Compartilhar o conhecimento
- Atuação dos participantes em empresas de crowd testing
Fonte: Elaborado pelo autor
dos testadores no Crowdtest
Diferentemente do teste de software tradicional, onde as pessoas são
basicamente motivadas pela recompensa financeira, o crowd testing
oferece diversos tipos de recompensas não financeiras. De acordo com a
66% dos participantes sentem-se motivados
encontram no Crowdtest uma oportunidade de testar o que go
Muitas vezes os testadores ficam limitados a uma determinada tecnologia
eles podem testar qualquer aplicação que possa ser acessa
(incluindo jogos e dispositivos móveis). Poder compartilhar o conhecimento
mbém é outra motivação não financeira que teve destaque na pesquisa
- Motivações NÃO financeiras para participar d
Fonte: Elaborado pelo autor
uTest
40%
Test Ninjas
5%
Bug Pub
30%
Testecide
5%
Outros
20%
14%
17%
10%
Fazer parte de uma rede social
Compartilhar o conhecimento
Testar o que gosta
Reputação on-line
Nenhum
0% 10% 20% 30% 40% 50%
35
crowd testing
Diferentemente do teste de software tradicional, onde as pessoas são
crowd testing também
De acordo com a Figura 11,
se motivados a participar dos
testar o que gostam.
uma determinada tecnologia no crowd
acessada pela internet
oder compartilhar o conhecimento, com
que teve destaque na pesquisa.
Motivações NÃO financeiras para participar do Crowdtest
Test Ninjas
64%
66%
50% 60% 70%
Quanto aos fatores
premiação para os melhores colocados (
principais motivações financeiras.
recompensar financeiramente os testadores e a pesquisa comprovou esse fato
outro lado, apenas 7% dos participantes responderam que n
os motivam a participar dos testes, ou seja, pouc
sem receber pagamento pelo trabalho executado
obtidos das principais motivações financeiras do
Figura 12
Fonte: Elaborado pelo autor
A disponibilidade do ambiente de teste é um fator que deve ser considerado
antes de disponibilizar a aplicação para a multidão. Como o
característica de reunir centenas ou até mesmo milhares de testadores, servidor e
aplicação devem estar preparados para receber grande
acordo com a pesquisa,
ambiente pode desmotivá
determinado projeto. Deste modo, a empresa deve ga
estável para não perder testadores durante os testes.
3.4 Experiência como testador
Embora 72% dos tes
defeitos encontrados por
a maioria dos defeitos encontrados no software também fo
testador. Deste modo, a pesquisa revelou que
Ganhar uma taxa se o produto for
Desconto na compra do produto
Premiação para os melhores
aos fatores financeiros, pagamento por defeito encontrado
premiação para os melhores colocados (55%) foram selecionadas como as duas
financeiras. No crowd testing, essas são formas
mente os testadores e a pesquisa comprovou esse fato
% dos participantes responderam que nenhum fator financeiro
participar dos testes, ou seja, poucas pessoas testariam um sistema
pagamento pelo trabalho executado. A Figura 12
obtidos das principais motivações financeiras do Crowdtest.
12 - Motivações financeiras para participar do
Fonte: Elaborado pelo autor
A disponibilidade do ambiente de teste é um fator que deve ser considerado
antes de disponibilizar a aplicação para a multidão. Como o crowd testing
característica de reunir centenas ou até mesmo milhares de testadores, servidor e
ar preparados para receber grande volume
acordo com a pesquisa, 69% dos testadores afirmaram que a
ambiente pode desmotivá-los a continuar executando os seus testes em um
. Deste modo, a empresa deve garantir um ambiente de teste
estável para não perder testadores durante os testes.
Experiência como testador do Crowdtest
% dos testadores do Crowdtest afirmaram
defeitos encontrados por eles foram defeitos comuns, apenas 34
a maioria dos defeitos encontrados no software também foi encontrada
testador. Deste modo, a pesquisa revelou que encontrar uma grande quantidade de
33%
17%
83%
55%
7%
Ganhar uma taxa se o produto for
vendido
Desconto na compra do produto
Pagamento por defeito
encontrado
Premiação para os melhores
colocados
Nenhum
0% 20% 40% 60% 80%
36
s, pagamento por defeito encontrado (83%) e
selecionadas como as duas
ssas são formas comuns de
mente os testadores e a pesquisa comprovou esse fato. Por
enhum fator financeiro
testariam um sistema
12 mostra os valores
o Crowdtest
A disponibilidade do ambiente de teste é um fator que deve ser considerado
crowd testing tem a
característica de reunir centenas ou até mesmo milhares de testadores, servidor e
volume de acesso. De
indisponibilidade de
a continuar executando os seus testes em um
rantir um ambiente de teste
que a maioria dos
34% responderam que
i encontrada por outro
uma grande quantidade de
83%
80% 100%
37
defeitos comuns não significa que uma grande quantidade de defeitos duplicados
será cadastrada. Supondo que defeitos comuns sejam encontrados mais facilmente
e, consequentemente, sejam cadastrados em duplicidade, deve-se realizar novos
estudos a fim de compreender os motivos da identificação de um baixo número de
defeitos duplicados em um ambiente onde a maiorias desses defeitos foram
classificados como defeitos comuns, de baixa complexidade.
Utilizar uma multidão para testar software faz com que diversos cenários
sejam testados e em diferentes ambientes (incluindo dispositivos móveis). A
pesquisa mostrou que 83% dos participantes costumam realizar testes utilizando
diferentes combinações de sistema operacional e browsers. Contudo, apenas 36%
costumam realizar testes utilizando dispositivos móveis.
Uma das razões para não substituir totalmente os testes tradicionais pelo
crowd testing é que cenários críticos ou funcionalmente relevantes talvez não sejam
devidamente cobertos. Entretanto, 83% dos testadores afirmaram que cenários de
teste críticos ou específicos podem ser testados nos projetos do Crowdtest. Essa é
uma constatação interessante e, por divergir da teoria, deve melhor ser estudada.
Outro fato interessante é que a maioria dos participantes (60%) prefere testar
individualmente e não como integrante de uma comunidade de teste. Assim como no
crowdsourcing, o trabalho pode ser executado em grupo ou individualmente nos
projetos de crowd testing. Deste modo, a qualidade do software pode ser obtida
através de contribuições individuais ou coletivas.
3.5 Opinião dos testadores sobre o crowd testing
A indisponibilidade de documentação sobre os requisitos do projeto pode
reduzir a qualidade dos testes executados no crowd testing e esse fato foi
confirmado por 69% dos participantes. Contudo, 77% das pessoas que fizeram essa
afirmação também afirmaram que cenários de teste críticos e/ou específicos podem
ser testados. Deste modo, conclui-se que a falta de documentação pode reduzir a
qualidade dos testes, mas não impede que cenários críticos sejam testados.
Quando comparada com testes tradicionais, 69% acreditam que usar uma
multidão para testar software faz com que um maior número de testes seja coberto e
isso se deve pelo fato de
de cenários de teste em um curto prazo
Outra vantagem do
modo que pessoas de qualquer parte do mundo e com acesso a internet possam
testar softwares. Contudo, 34% dos pa
pouco aumentará a qualidade do software e 33% acham que ela é indiferente, ou
seja, que não interfere na qualidade. Apenas 31% responderam que e
testes geograficamente pode aumentar
Figura
Fonte: Elaborado pelo autor
O crowd testing
tradicional de quatro maneiras
Figura 14 - Integrand
Fonte: Elaborado pelo autor
Extensão dos testes
Teste de cenários específicos
Teste baseado em risco em
Atividade de teste dentro do
processo de teste
Não é possível a integração
se deve pelo fato de uma multidão ser capaz de executar centenas ou milhares
de cenários de teste em um curto prazo de tempo.
Outra vantagem do crowd testing é espalhar os testes geograficamente de
modo que pessoas de qualquer parte do mundo e com acesso a internet possam
testar softwares. Contudo, 34% dos participantes acreditam que essa característica
pouco aumentará a qualidade do software e 33% acham que ela é indiferente, ou
seja, que não interfere na qualidade. Apenas 31% responderam que e
testes geograficamente pode aumentar muito a qualidade do software (
Figura 13 - Contribuição da distribuição geográfica dos testes
Fonte: Elaborado pelo autor
pode ser integrado ao processo de teste de software
tradicional de quatro maneiras, conforme apresentado na Figura
ndo o crowd testing com o processo de teste de software tradicional
Fonte: Elaborado pelo autor
Muito pouco
2%
Pouco
34%
Indiferente
33%
Muito
31%
43%
24%
38%
5%
Extensão dos testes
Teste de cenários específicos
Teste baseado em risco em
prioridade
Atividade de teste dentro do
processo de teste
Não é possível a integração
0% 20% 40% 60%
38
r centenas ou milhares
é espalhar os testes geograficamente de
modo que pessoas de qualquer parte do mundo e com acesso a internet possam
rticipantes acreditam que essa característica
pouco aumentará a qualidade do software e 33% acham que ela é indiferente, ou
seja, que não interfere na qualidade. Apenas 31% responderam que espalhar os
do software (Figura 13).
Contribuição da distribuição geográfica dos testes
pode ser integrado ao processo de teste de software
Figura 14.
processo de teste de software tradicional
Muito pouco
76%
60% 80%
39
De acordo com a pesquisa, 76% afirmaram que o crowd testing pode ser
utilizado como extensão dos testes realizados internamente na empresa, ou seja,
embora ele agregue qualidade ao software, os testes tradicionais são fundamentais
no processo de desenvolvimento de software. Por outro lado, apenas 5% acreditam
que o crowd testing não pode ser integrado ao processo de teste de software
tradicional.
4 CONCLUSÃO
Testar software é um processo que envolve conhecimento técnico,
ferramentas para controle e execução de teste, experiência do testador e um
determinado conhecimento sobre o sistema a ser testado. Além disso, fatores
restritivos como esforço, tempo e dinheiro acabam interferindo diretamente na
qualidade do software, quando qualquer um desses for afetado, a qualidade do
produto também será afetada.
Atualmente, diferentes métodos e processos propõem novas formas de testar
software, porém muitas vezes se deparam diante dos mesmos fatores restritivos.
Crowd testing é uma nova forma de testar software que reduz o impacto referente ao
esforço, tempo e dinheiro e contribui para a qualidade de software.
Utilizar o tempo livre de uma multidão de testadores garante que, em um curto
prazo e com baixo investimento, seja possível controlar a qualidade de um software
(aplicações web, jogos ou dispositivos móveis). A participação dos amadores é
fundamental no crowd testing, pois mesmo que eles não sejam profissionais da área
de teste de software, a internet tem proporcionado um amplo espaço de
aprendizagem e compartilhamento de informações. Deste modo, conhecimento
técnico e ferramentas de teste podem ser facilmente obtidos através da internet.
Aproveitando-se do potencial da internet, as comunidades on-line começaram
a ganhar força e espaço dentro das organizações, seja ativamente executando
tarefas ou passivamente consumindo produtos. Visando a harmonia entre as
comunidades de teste e o meio corporativo, paradigmas devem ser revistos e a
mentalidade corporativa deve adaptar-se ao modo colaborativo de trabalhar.
Trabalhar colaborativamente não significa simplesmente compartilhar informações e
40
as tarefas a serem executadas. Envolve saber trabalhar com uma diversidade de
testadores, dar liberdade para a criação e execução dos testes e respeitar as
individualidades e diferenças culturais presentes entre a multidão. A inteligência
coletiva provou que é possível obter melhores resultados quando se tem um grupo
heterogêneo de testadores, pois contribui para que diversos e diferentes tipos de
defeitos sejam encontrados no software.
Encontrar defeitos no software é uma atividade de teste que pode ser
motivada de diferentes formas no crowd testing. As motivações podem ser
financeiras ou não. As pessoas sentem-se motivadas por colaborar
espontaneamente, doando o seu tempo livre e gostam de compartilhar
conhecimentos. Diferentemente do processo de teste de software tradicional, o
pagamento é feito basicamente por cada defeito encontrado, ou seja, o pagamento é
feito por produtividade.
O crowd testing não veio para extinguir o processo de teste tradicional, mas
sim para agregar ou complementar. Ele pode ser combinado de diferentes formas,
tais como extensão dos testes, cenários de testes específicos, testes baseados em
riscos e prioridades, e até mesmo integrado à estratégia de teste da empresa. Desta
forma, é possível observar que o crowd testing é aderente ao processo de teste de
software tradicional e que a combinação desses dois métodos de testes produz
ganhos superiores do que quando executados separadamente.
Sem a utilização de documentações referentes a um projeto, o crowd testing,
quando comparado ao processo de teste de software tradicional, pode produzir
resultados inferiores pelo fato dos testadores desconhecerem os requisitos do
software e, consequentemente, encontrarem muitos defeitos do tipo simples. Por
isso, o crowd testing demanda um esforço extra para controlar os defeitos que estão
sendo cadastrados a fim de evitar duplicidades e até mesmo avisar os testadores
sobre um determinado módulo ou funcionalidade que já teve os seus testes
esgotados e orientar que outros elementos do software sejam testados.
41
Dentre os principais benefícios da utilização do crowd testing, destacam-se:
• Baixo investimento;
• Marketing do produto;
• Diferentes formas de recompensar o trabalho;
• Obtenção de resultados de acordo com a vida real;
• Utilização de pessoas do mundo inteiro para testar;
• Feedbacks dos testadores para melhorar o software;
• Autonomia em relação à metodologia de desenvolvimento, e;
• Testes sob demanda e em diversas plataformas (ambientes).
Por outro lado, o crowd testing possui as seguintes desvantagens:
• Não cobre todos os tipos de testes;
• Dificuldade de detectar defeitos não funcionais;
• É um modo de testar software pouco conhecido;
• Segurança e privacidade podem impedir a sua utilização;
• Exposição de funcionalidades estratégicas ou competitivas, e;
• Falta de domínio ou de conhecimento da aplicação pelos testadores.
Embora a utilização do crowd testing não esteja limitada apenas aos seus
benefícios e as suas desvantagens, eles são fundamentais para compreender as
dimensões deste novo modo de testar software. Aliados as 10 regras de crowd
testing, facilitam a tomada de decisão em relação a utilizar ou não o crowd testing
em um determinado projeto.
O estudo realizado conseguiu aprofundar o conceito de crowd testing, aliando
conceitos de crowdsourcing e do processo de teste de software de modo que fosse
possível compreender como uma multidão de pessoas desconhecidas, profissionais
ou amadoras, com diferentes conhecimentos e experiências podem atuar em prol da
qualidade de software. O levantamento realizado com testadores de projetos de
crowd testing foi importante, pois conseguiu comprovar os principais conceitos desta
nova forma de testar software e, ao mesmo tempo, expôs questões que necessitam
de mais pesquisas e revelou a necessidade de estudos que identifiquem os motivos
42
das divergências encontradas entre a opinião dos testadores e os conceitos
apresentados.
Durante a elaboração desta pesquisa, as seguintes dificuldades e limitações
foram encontradas:
• Crowdsourcing não é um tema científico e exigiu uma leitura analítica
apurada para entender de que forma ele contribui para o crowd testing;
• A maior parte do conteúdo encontrado sobre crowd testing não estava
em formato científico dificultando, assim, conceituá-lo;
• As atuais referências bibliografias sobre teste de software tradicional
não abordam o crowd testing como uma possível atividade de teste, o
que contribui ainda mais para a lacuna existente entre eles, e;
• Tanto crowdsourcing quanto crowd testing são assuntos recentes e
provavelmente as atuais literaturas não os descrevam detalhadamente.
Oportunidades para trabalhos futuros também foram identificadas e, para dar
continuidade a esta pesquisa, sugere-se que os seguintes trabalhos sejam
realizados:
• Realizar o estudo de caso em uma empresa de crowd testing, visando
comparar a teoria com a prática, identificar as lacunas existentes entre
elas e propor soluções;
• Realizar o estudo de caso em uma empresa de software que utiliza
somente o crowd testing como atividade de teste, com o intuito de
mensurar e analisar a qualidade do software obtida, e;
• Escrever artigos e desenvolver treinamentos de curta duração para
compartilhar o conhecimento obtido e divulgar esta nova atividade de
teste, o crowd testing.
O crowd testing é uma realidade e tem contribuído para a qualidade de
software. Entretanto, por não ser muito conhecido a sua aplicação pode não durar
por muito tempo ou ele pode acabar sendo incorporado por fornecedores de
serviços de testes. Acredita-se que quanto mais a sociedade evoluir trabalhando
colaborativamente, mais espaço o crowd testing terá dentro das organizações.
43
REFERÊNCIAS
BACH, J. Exploratory Testing Explained. 2003. Disponível em
<http://www.satisfice.com/articles/et-article.pdf>. Acesso em: 10 set. 2012.
BANERJEE, K. Crowd Testing – Applicability and Benefits. 2012. Disponível em
<http://ers.hclblogs.com/2012/02/crowd-testing-%E2%80%93-applicability-and-
benefits/>. Acesso em: 25 set. 2012.
BASTOS, A. et al. Base de Conhecimento em Teste de Software. Rio de Janeiro:
Martins, 2007.
BRABHAM, D. Crowdsourcing as a Model for Problem Solving: An Introduction
and Cases. 2008. Disponível em
<http://www.clickadvisor.com/downloads/Brabham_Crowdsourcing_Problem_Solving
.pdf>. Acesso em 15 ago. 2012.
CROWDTEST web site. Disponível em <http://crowdtest.me/>. Acesso em: 03 nov.
2012.
GERBER, E. Para onde vai o crowdsourcing? 2011. Disponível em
<http://info.abril.com.br/noticias/mercado/para-onde-vai-o-crowdsourcing-31082011-
45.shl>. Acesso em: 01 ago. 2012.
GIL, Antônio Carlos. Como elaborar projetos de pesquisa. 5 ed. São Paulo: Atlas,
2010.
FORT CONSULTING GROUP. Efficacy and Applicability of Crowd Testing. 2012.
Disponível em <http://4tegroup.com/crowd-testing-white-paper>. Acesso em: 14 jul.
2012.
HOWE, J. Crowdsourcing: A Definition. 2006. Disponível em
<http://crowdsourcing.typepad.com/cs/2006/06/crowdsourcing_a.html> Acesso em
07 jun. 2012.
HOWE, J. O poder das multidões: por que a força da coletividade está
remodelando o futuro dos negócios. 2ª Ed. Rio de Janeiro: Elsevier, 2009.
ISTQB. Certified Tester Advanced Level Syllabus. 2007. Disponível em
<http://www.bstqb.org.br>. Acesso em: 05 jul. 2012
ISTQB. Certified Tester Foundation Level Syllabus. 2011. Disponível em
<http://www.bstqb.org.br>. Acesso em: 05 jul. 2012
ISTQB. Glossário Padrão de Termos Utilizados em Teste de Software. 2010.
Disponível em <http://www.bstqb.org.br>. Acesso em: 16 jul. 2012
LEADBEATER, C.; MILLER, P. The Pro-Am Revolution: How enthusiasts are
changing our economy and society. 2004. Disponível em
<http://www.demos.co.uk/publications/proameconomy>. Acesso em: 19 jun. 2012.
44
MYERS, G. J. The Art of Software Testing. 2ª ed. John Wiley, 2004.
NARAYANAN, M. Crowd sourced testing – An emerging business model. 2011
a. Disponível em <http://www.slideshare.net/manoj7698/star-west-2011-manoj-
narayanan-presentation-10>. Acesso em: 14 jul. 2012.
NARAYANAN, M. The Power of ‘Crowd’ Testing. 2011 b. Disponível em
<http://www.cognizant.com/InsightsWhitepapers/The-Power-of-Crowd-Testing.pdf >.
Acesso em: 05 jul. 2012.
PRESSMAN, R. S. Engenharia de software. 6ª ed. Rio de Janeiro: McGraw-Hill,
2006.
QAI. Guide to the CSTE Common Body Of Knowledge. 2006.
RIOS, E.; MOREIRA, T. R. Teste de Software. Rio de Janeiro: Alta Books, 2006.
ROODENRIJS, E.; PRINS, A. Join the crowd: Worldwide testing. Revista Test
Focus, África do Sul, v. 10, n. 4, p. 8-11, 2009. Disponível em
<http://www.tmap.net/en/news/publication-about-crowdtesting-test-focus-magazine>.
Acesso em: 19 jul. 2012.
SILVA, Edna Lúcia da. Metodologia da pesquisa e elaboração de dissertação. 3ª
ed. Florianópolis: Laboratório de Ensino a Distância da UFSC, 2001.
TAPSCOTT, D.; WILLIAMS, A. D. Wikinomics: como a colaboração em massa
pode mudar o seu negócio. Rio de Janeiro: Nova Fronteira, 2007.
TINKHAM, A.; KANER, C. Exploring Exploratory Testing. 2003. Disponível em
<http://www.testingeducation.org/a/explore.pdf>. Acesso em: 13 ago. 2012.

Mais conteúdo relacionado

Mais procurados

Como especificar requisitos em metodologias ágeis?
Como especificar requisitos em metodologias ágeis?Como especificar requisitos em metodologias ágeis?
Como especificar requisitos em metodologias ágeis?Priscilla Aguiar
 
Gerenciamento da Qualidade de Software 1.pptx
Gerenciamento da Qualidade de Software 1.pptxGerenciamento da Qualidade de Software 1.pptx
Gerenciamento da Qualidade de Software 1.pptxRoberto Nunes
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Testes remotos de usabilidade
Testes remotos de usabilidadeTestes remotos de usabilidade
Testes remotos de usabilidadeLuiz Agner
 
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDayQuando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDayBase2 Tecnologia
 
Cap. 13 variações no método básico
Cap. 13   variações no método básicoCap. 13   variações no método básico
Cap. 13 variações no método básicoLuiz Agner
 
Aula 1 Analise e Projeto
Aula 1   Analise e ProjetoAula 1   Analise e Projeto
Aula 1 Analise e ProjetoSergio Silva
 
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...Gilmar Pupo
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxRoberto Nunes
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em softwareVictor Hugo
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxRoberto Nunes
 
Adoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas BrasileirasAdoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas BrasileirasWildtech
 
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixApresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixCris Fidelix
 

Mais procurados (20)

Es06 teste de software
Es06   teste de softwareEs06   teste de software
Es06 teste de software
 
Como especificar requisitos em metodologias ágeis?
Como especificar requisitos em metodologias ágeis?Como especificar requisitos em metodologias ágeis?
Como especificar requisitos em metodologias ágeis?
 
Gerenciamento da Qualidade de Software 1.pptx
Gerenciamento da Qualidade de Software 1.pptxGerenciamento da Qualidade de Software 1.pptx
Gerenciamento da Qualidade de Software 1.pptx
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Testes remotos de usabilidade
Testes remotos de usabilidadeTestes remotos de usabilidade
Testes remotos de usabilidade
 
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDayQuando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
 
Cap. 13 variações no método básico
Cap. 13   variações no método básicoCap. 13   variações no método básico
Cap. 13 variações no método básico
 
Aula 1 Analise e Projeto
Aula 1   Analise e ProjetoAula 1   Analise e Projeto
Aula 1 Analise e Projeto
 
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptx
 
Desenvolvimento Ágil
Desenvolvimento ÁgilDesenvolvimento Ágil
Desenvolvimento Ágil
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em software
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptx
 
Adoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas BrasileirasAdoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
 
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixApresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
 
Es 09
Es 09Es 09
Es 09
 

Destaque

Crowdsourcing cenário, aplicação e seus desdobramentos
Crowdsourcing cenário, aplicação e seus desdobramentosCrowdsourcing cenário, aplicação e seus desdobramentos
Crowdsourcing cenário, aplicação e seus desdobramentosFernando Palma
 
Colaboracao em massa: crowdsourcing
Colaboracao em massa: crowdsourcingColaboracao em massa: crowdsourcing
Colaboracao em massa: crowdsourcingFernando Palma
 
O crowdsourcing a frente da mídia colaborativa e democrática uma perspectiva ...
O crowdsourcing a frente da mídia colaborativa e democrática uma perspectiva ...O crowdsourcing a frente da mídia colaborativa e democrática uma perspectiva ...
O crowdsourcing a frente da mídia colaborativa e democrática uma perspectiva ...Fernando Palma
 
Crowdsourcing na publicidade
Crowdsourcing na publicidadeCrowdsourcing na publicidade
Crowdsourcing na publicidadeFernando Palma
 
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...GUTS-RS
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJSRodrigo Branas
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end seleniumQualister
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareJeremias Araujo
 
Do we need testers on agile teams?
Do we need testers on agile teams?Do we need testers on agile teams?
Do we need testers on agile teams?TEST Huddle
 

Destaque (11)

Crowdsourcing cenário, aplicação e seus desdobramentos
Crowdsourcing cenário, aplicação e seus desdobramentosCrowdsourcing cenário, aplicação e seus desdobramentos
Crowdsourcing cenário, aplicação e seus desdobramentos
 
Colaboracao em massa: crowdsourcing
Colaboracao em massa: crowdsourcingColaboracao em massa: crowdsourcing
Colaboracao em massa: crowdsourcing
 
O crowdsourcing a frente da mídia colaborativa e democrática uma perspectiva ...
O crowdsourcing a frente da mídia colaborativa e democrática uma perspectiva ...O crowdsourcing a frente da mídia colaborativa e democrática uma perspectiva ...
O crowdsourcing a frente da mídia colaborativa e democrática uma perspectiva ...
 
Crowdsourcing na publicidade
Crowdsourcing na publicidadeCrowdsourcing na publicidade
Crowdsourcing na publicidade
 
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
 
Scope AngularJS
Scope AngularJSScope AngularJS
Scope AngularJS
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJS
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
 
Tutorial memcached
Tutorial memcachedTutorial memcached
Tutorial memcached
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de software
 
Do we need testers on agile teams?
Do we need testers on agile teams?Do we need testers on agile teams?
Do we need testers on agile teams?
 

Semelhante a CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE

Crowd Testing - Defesa do Trabalho de Conclusão de Curso
Crowd Testing - Defesa do Trabalho de Conclusão de CursoCrowd Testing - Defesa do Trabalho de Conclusão de Curso
Crowd Testing - Defesa do Trabalho de Conclusão de CursoMoisés Armani Ramírez
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processocrc1404
 
Aula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptxAula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptxAlexandreLisboadaSil
 
Aula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptxAula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptxALEXANDRELISBADASILV
 
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Laís Berlatto
 
Como o planejamento de software pode contribuir para qualidade de um software...
Como o planejamento de software pode contribuir para qualidade de um software...Como o planejamento de software pode contribuir para qualidade de um software...
Como o planejamento de software pode contribuir para qualidade de um software...Sandra Pavan
 
O uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareO uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareEverton vitor
 
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWAREANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWAREKéllyson Gonçalves da Silva
 
Ferramentas Case de Teste
Ferramentas Case de TesteFerramentas Case de Teste
Ferramentas Case de TesteBeatriz Marques
 
Desenvolvimento Ágil: um survey baseado em experiências profissionais @ CONIC...
Desenvolvimento Ágil: um survey baseado em experiências profissionais @ CONIC...Desenvolvimento Ágil: um survey baseado em experiências profissionais @ CONIC...
Desenvolvimento Ágil: um survey baseado em experiências profissionais @ CONIC...André Luis Celestino
 
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Luiz Ladeira
 
Indicadores de políticas públicas e métricas de software: uma visão em paralelo
Indicadores de políticas públicas e métricas de software: uma visão em paraleloIndicadores de políticas públicas e métricas de software: uma visão em paralelo
Indicadores de políticas públicas e métricas de software: uma visão em paraleloRoberto de Pinho
 
Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.Renato Breaking
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de softwareFelipe Bugov
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANFernando Palma
 
Palestra - Testes de Usabilidade
Palestra - Testes de UsabilidadePalestra - Testes de Usabilidade
Palestra - Testes de UsabilidadeLuiz Agner
 

Semelhante a CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE (20)

Crowd Testing - Defesa do Trabalho de Conclusão de Curso
Crowd Testing - Defesa do Trabalho de Conclusão de CursoCrowd Testing - Defesa do Trabalho de Conclusão de Curso
Crowd Testing - Defesa do Trabalho de Conclusão de Curso
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
 
Aula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptxAula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptx
 
Aula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptxAula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptx
 
Framework
FrameworkFramework
Framework
 
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
 
Como o planejamento de software pode contribuir para qualidade de um software...
Como o planejamento de software pode contribuir para qualidade de um software...Como o planejamento de software pode contribuir para qualidade de um software...
Como o planejamento de software pode contribuir para qualidade de um software...
 
O uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareO uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de software
 
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWAREANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
 
Ferramentas Case de Teste
Ferramentas Case de TesteFerramentas Case de Teste
Ferramentas Case de Teste
 
Desenvolvimento Ágil: um survey baseado em experiências profissionais @ CONIC...
Desenvolvimento Ágil: um survey baseado em experiências profissionais @ CONIC...Desenvolvimento Ágil: um survey baseado em experiências profissionais @ CONIC...
Desenvolvimento Ágil: um survey baseado em experiências profissionais @ CONIC...
 
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
 
Aula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptxAula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptx
 
Indicadores de políticas públicas e métricas de software: uma visão em paralelo
Indicadores de políticas públicas e métricas de software: uma visão em paraleloIndicadores de políticas públicas e métricas de software: uma visão em paralelo
Indicadores de políticas públicas e métricas de software: uma visão em paralelo
 
5 - A pesquisa.ppt
5 - A pesquisa.ppt5 - A pesquisa.ppt
5 - A pesquisa.ppt
 
Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de software
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
 
Palestra - Testes de Usabilidade
Palestra - Testes de UsabilidadePalestra - Testes de Usabilidade
Palestra - Testes de Usabilidade
 
Ensiso day talks
Ensiso day   talksEnsiso day   talks
Ensiso day talks
 

Mais de Moisés Armani Ramírez

Mais de Moisés Armani Ramírez (8)

Vertical User Stories
Vertical User StoriesVertical User Stories
Vertical User Stories
 
Throughput
ThroughputThroughput
Throughput
 
User Stories Fundamentals
User Stories FundamentalsUser Stories Fundamentals
User Stories Fundamentals
 
Kanban method introduction
Kanban method introductionKanban method introduction
Kanban method introduction
 
Scrum is not for everyone: How Scrum does not look like
Scrum is not for everyone: How Scrum does not look likeScrum is not for everyone: How Scrum does not look like
Scrum is not for everyone: How Scrum does not look like
 
Scrum master: Coaching and facilitating Agile teams
Scrum master: Coaching and facilitating Agile teamsScrum master: Coaching and facilitating Agile teams
Scrum master: Coaching and facilitating Agile teams
 
Scrum Guide In One Slide
Scrum Guide In One SlideScrum Guide In One Slide
Scrum Guide In One Slide
 
The Five Dysfunctions of a Team
The Five Dysfunctions of a TeamThe Five Dysfunctions of a Team
The Five Dysfunctions of a Team
 

CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE

  • 1. 1 CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE Moisés Armani Ramírez1 Margrit Reni Krug2 Resumo: Controlar a qualidade de um produto de software é uma atividade que exige tempo, esforço e conhecimento técnico sobre teste de software e sobre o sistema a ser testado. Não há garantia de que um software esteja livre de defeitos e quanto mais se tentar aproximar desse percentual, maiores serão os custos do projeto. Diversas metodologias tentam reduzir os custos em testes sem impactar na qualidade do sistema. Contudo, existe um antigo e profundo impasse: esforço necessário de teste versus tempo disponível para testes. Este trabalho aborda o conceito de crowd testing e apresenta como uma multidão pode contribuir na qualidade de software a fim de amenizar o impasse entre qualidade, esforço e tempo. Como não há trabalhos científicos que abordem o assunto, a proposta deste trabalho foi utilizar os conceitos de crowdsourcing e do processo de teste de software para, então, identificar como e onde o crowd testing pode ser utilizado no controle da qualidade de software. Trata-se de uma pesquisa exploratória baseada em bibliografias cientificas e documentais para a definição de crowd testing. Palavras-chave: Crowd testing. Crowdsourcing. Teste de software. Qualidade de software. CROWD TESTING: THE POWER OF THE CROWD IN SUPPORT OF SOFTWARE QUALITY Abstract: Controlling the software quality is an activity that requires time, effort and technical knowledge on software testing and on the system being tested. There is no guarantee that software is 100% defect-free and the more you try to approach this percentage, the higher the costs of the project. Several methods attempt to reduce testing costs without impacting the system quality. However, there is an ancient and profound dilemma: testing effort required versus time available for testing. This paper discusses the crowd testing concept and presents how a crowd can contribute to the software quality to ease the standoff between effort and time. Since there are no scientific studies that address the subject, the purpose of this study was to use the 1 Analista de testes de software, CTFL. E-mail: armaniramirez@gmail.com 2 Orientadora, Prof. Dra. E-mail: margritk@unisinos.br
  • 2. 2 crowdsourcing concepts and the software testing process, then identify how and where the crowd testing can be used in software quality control. This is an exploratory research based on scientific bibliographies and documentation for the crowd testing definition. Keywords: Crowd testing. Crowdsourcing. Software testing. Software quality. 1 INTRODUÇÃO Durante as décadas de 1970, 1980 e 1990, os testes eram efetuados pelos próprios desenvolvedores do software (BASTOS et al., 2007). Desde então, a busca pela melhoria do processo de teste de software, visando sua eficácia e eficiência, tem sido constante. Modelos de maturidade do desenvolvimento de software e melhoria do processo de software como o CMMI (Capability Maturity Model Integration) e o MPS.br (Melhoria do Processo de Software Brasileiro) trouxeram expressivos avanços para a área de qualidade de software. Atualmente, os métodos ágeis, como o Scrum, possuem uma proposta bastante diferente quanto ao processo de teste de software tradicional. Métodos ágeis eliminam uma série de documentações e processos burocráticos visando rapidez na execução de projetos, mas sem deixar de lado a sua qualidade. De acordo com QAI (2006), a qualidade do software é definida pelo atendimento dos requisitos especificados no projeto e pelo atendimento das necessidades do cliente que solicitou o software. A área de qualidade de software é dividida em dois processos: um que garante a qualidade do software, responsável pelo o processo que produz o software, e outro que controla a qualidade do produto, responsável por assegurar que o software funcione conforme as especificações (BASTOS et al., 2007). Controlar a qualidade de um software é um processo que, além de conhecimentos técnicos, exige também conhecimento sobre o sistema a ser testado. Deste modo, a equipe de teste deve compreender o negócio do cliente bem como as suas necessidades para que seja possível entregar um software com qualidade. Contudo, testar tudo é inviável e o teste exaustivo é praticamente impossível devido às restrições do projeto como tempo, esforço e orçamento (ISTQB, 2011). Por isso,
  • 3. 3 de acordo com Pressman (2006, p. 293), “você acaba de testar quando o tempo acaba ou o dinheiro acaba”. Todos os projetos têm as suas restrições e é responsabilidade dos gerentes e suas equipes identificá-las, analisá-las e elaborar estratégias que reduzam os riscos do projeto e não interfiram na qualidade do produto. O crowd testing é uma nova ferramenta que surgiu para contribuir com a qualidade do software, mais precisamente, no controle da qualidade. Ele tem a característica de utilizar mais testadores do que atualmente uma empresa dispõe para testar um software, obtendo níveis de qualidade satisfatórios e em um prazo mais curto. O crowd testing pode ser utilizado no processo de teste de software, mas, de acordo com Narayanan (2011 a), “não se pode ainda substituir os testes tradicionais com o crowd testing”. O tema central deste trabalho é o estudo do conceito do crowd testing e da sua aderência no processo de teste de software tradicional. O maior desafio foi utilizar um conceito totalmente novo para explicar como o poder da multidão pode ser utilizado em prol da qualidade de software. Já a principal motivação desta pesquisa surgiu da ausência de referências bibliográficas sobre o crowd testing, fato que estimulou ainda mais a investigação sobre o tema. Este estudo aprofunda os conceitos do crowd testing de modo que seja possível compreender como e onde esta atividade pode ser inserida dentro do processo de teste de software tradicional e também possa auxiliar os profissionais da área na utilização do crowd testing dentro dos atuais projetos de teste de software de suas empresas ou até mesmo em empresas onde não existe nenhum processo de teste. Ao mesmo, o estudo responde os seguintes questionamentos: (1) a qual categoria da qualidade de software o crowd testing pertence; (2) quais são os métodos e tipos de testes que ele utiliza; (3) qual é o nível de teste em que está presente; (4) quais são as técnicas de testes que podem ser utilizadas; e (5) quais são os papéis desempenhados no crowd testing. Como forma de comprovar os seus principais conceitos, é apresentada uma pesquisa que foi realizada com participantes de crowd testing.
  • 4. 4 1.1 Objetivos do trabalho 1.1.1 Objetivo geral O objetivo geral desta pesquisa é descrever, baseando-se em conceitos, como e onde o crowd testing pode ser inserido no processo de teste de software tradicional e como uma multidão pode contribuir para a qualidade de software. 1.1.2 Objetivos específicos Com a finalidade de atingir o objetivo geral, os seguintes objetivos específicos foram estabelecidos: • Analisar quais são os conceitos de crowdsourcing que podem ser aplicados no crowd testing; • Descobrir quais são os conceitos do processo de teste de software tradicional que o crowd testing utiliza; • Investigar e aprofundar os conceitos de crowd testing; • Combinar o crowdsourcing, o crowd testing e o processo de teste de software visando embasar a definição de crowd testing; • Identificar e analisar a forma com que uma multidão pode contribuir para a qualidade de software. 1.2 Metodologia Do ponto de vista da forma de abordagem do problema, esta é uma pesquisa qualitativa. Para Silva (2001, p. 20), este tipo de pesquisa “considera que há uma relação dinâmica entre o mundo real e o sujeito, isto é, um vínculo indissociável entre o mundo objetivo e a subjetividade do sujeito que não pode ser traduzido em números” e não é necessário utilizar técnicas estatísticas. Para tal, foi efetuada uma análise e interpretação de uma situação do mundo real, neste caso o crowd testing, para descrever o seu funcionamento dentro do processo de teste de software. Já do ponto de vista dos seus objetivos, esta é uma pesquisa exploratória. De acordo com Gil (2010, p. 41), pesquisas como essa “têm como objetivo proporcionar
  • 5. 5 maior familiaridade com o problema, com vistas a torná-lo mais explícito ou a constituir hipóteses”. Ela foi baseada em bibliografias para melhor compreender o crowd testing e identificar como a multidão pode contribuir para a qualidade de software. Para que a descrição deste novo conceito fosse mais assertiva, foi realizado um levantamento, através de uma pesquisa feita com testadores de projetos de crowd testing para conhecer as suas percepções sobre os principais conceitos desta nova forma de testar software. Por fim, do ponto de vista dos procedimentos técnicos, esta é uma pesquisa bibliográfica e documental. De acordo com Gil (2010, p. 45): A pesquisa documental assemelha-se muito à pesquisa bibliográfica. A diferença essencial entre ambas está na natureza das fontes: Enquanto a pesquisa bibliográfica se utiliza fundamentalmente das contribuições dos diversos autores sobre determinado assunto, a pesquisa documental vale- se de materiais que não recebem ainda um tratamento analítico, ou que ainda podem ser reelaborados de acordo com os objetos da pesquisa. Deste modo, foram utilizados materiais e artigos sobre crowd testing que não receberam tratamento analítico e, para embasar o seu conceito, materiais publicados, de domínio científico, sobre crowdsourcing e o processo de teste de software foram utilizados na elaboração deste trabalho. 2 CROWD TESTING Nos últimos anos, pessoas de todo o mundo começaram a se reunir para executar tarefas que antes eram restritas aos empregados de uma determinada empresa só que, agora, longe do contexto corporativo e de suas limitações. Esse novo tipo de comportamento social não exige remuneração e é executado na forma de colaboração (coletiva ou individual), podendo ser utilizado por organizações, das mais diversas áreas, na criação, no desenvolvimento e na manutenção de produtos ou serviços (HOWE, 2009). O movimento em prol dos softwares de código aberto (ou livre) provou que as pessoas, quando organizadas, podem produzir um produto ou serviço tão bom ou até mesmo melhor do que as organizações privadas. A prova disso foi a capacidade de uma multidão criar um sistema operacional (HOWE, 2009). Hoje em dia, uma
  • 6. 6 multidão também é capaz de se organizar para testar software e não mais apenas para desenvolvê-lo. Os testes baseiam-se em riscos, na cobertura de requisitos e/ou orçamento, entre outras várias técnicas e métodos. Atualmente, até mesmo atividades de teste podem ser transferidas para uma multidão (ROODENRIJS; PRINS, 2009). “Usar crowdsourcing para testar é o novo fenômeno que vai ser um substituto para uma parte de nossas atividades de teste” (ROODENRIJS; PRINS, 2009, p. 8). O crowdsourcing utiliza o potencial que a internet tem de interligar as pessoas para executar tarefas que antes eram executadas apenas por profissionais das empresas. Ele funciona como intermediário entre dois polos antes desconectados de pessoas, um que precisa de um trabalho concluído e outro que precisa trabalhar (GERBER, 2011). De acordo com Howe (2006, p. 1), crowdsourcing é definido da seguinte forma: Simplesmente definido, crowdsourcing representa o ato de uma companhia ou instituição tomar uma função, uma vez realizada por funcionários, e externá-la a uma rede indefinida (e, geralmente, grande) de pessoas sob a forma de uma chamada pública. Isso pode assumir a forma de peer- production 3 (quando o trabalho é realizado colaborativamente), mas também é frequentemente realizado por um único indivíduo. O pré-requisito crucial é o uso do formato da chamada pública e da grande rede de trabalhadores potenciais. O crowd testing tem sua origem no crowdsourcing e, segundo Roodenrijs e Prins (2009, p. 9), pode ser definido da seguinte forma: “É o uso de pessoas (des)conhecidas, a multidão, para testar software”. Com uma definição semelhante, Narayanan (2011 b) define o crowd testing como sendo um meio de assegurar a qualidade do software através de testes realizados por uma multidão. Já em uma visão menos simplista, de acordo com Forte Consulting Group (2012, p. 2): “Crowd testing é uma comunidade de testadores que usam a sua própria infraestrutura e recursos, proporcionando flexibilidade, economia de custos e tempo de resposta rápido”. O seu objetivo é focar na experiência do usuário para a execução de testes de software em situações do mundo real. 3 Novo modelo de inovação e criação de valor através de colaborações auto-organizadas que produzem novos bens e serviços dinâmicos que rivalizam com os das maiores e mais bem- financiadas empresas do mundo (TAPSCOTT; WILLIANS, 2007).
  • 7. 7 Utilizar a experiência dos usuários tem como objetivo fazer uso dos seus feedbacks no ciclo de desenvolvimento de software, visando reduzir os custos referentes aos problemas funcionais e de usabilidade (FORTE CONSULTING GROUP, 2012). Como as pessoas têm prazer em transmitir seus conhecimentos e em fazer o que de fato gostam, muitas vezes a recompensa de um feedback dado ou trabalho realizado acaba sendo apenas a própria ação de colaborar (HOWE, 2009). Deste modo, os testadores também são motivados a participar de um projeto de crowd testing pelo reconhecimento não financeiro, ou seja, o valor monetário nem sempre é o mais importante. Sendo assim, as empresas têm uma oportunidade de otimizar os seus investimentos em teste de software. A premissa básica do crowd testing é ter habilidade de usar um grande número de pessoas para que seja possível atingir os objetivos da estratégia de negócio em curto prazo. Isso é possível porque o crowd testing dá valor a opinião da multidão, produz resultados mais universais e de acordo com a vida real (FORTE CONSULTING GROUP, 2012). Essa multidão consiste de pessoas de todas as partes do mundo com diferentes backgrounds, culturas, conhecimentos e criatividade. Todos podem participar, desde os iniciantes até os mais experientes testadores, usuários ou pessoas simplesmente interessadas em testar um software. Mesmo assim, é necessário saber o que a multidão pode ou não fazer, o porquê eles querem testar, quais são as suas habilidades e conhecimentos (ROODENRIJS; PRINS, 2009). O intuito não é revelar a identidade de quem está testando, uma vez que o crowd testing preza pela confidencialidade, mas sim analisar o quanto as pessoas podem contribuir para a qualidade do software. O crowd testing oferece acesso a ambientes tecnicamente diversos e arquiteturalmente exclusivos, garantindo a validação de uma aplicação particular independente da sua infraestrutura. Contudo, para que a estratégia do crowd testing seja eficaz, é necessária uma análise detalhada dos cenários de teste para garantir que todos os cenários possíveis sejam cobertos (FORTE CONSULTING GROUP, 2012). Por outro lado, é possível utilizá-lo em diversas áreas ou tipos de software mesmo sem uma análise detalhada dos cenários de teste. De acordo com Narayanan (2011 a), o Quadro 1 apresenta as três principais áreas onde a multidão pode atuar nos testes.
  • 8. 8 Quadro 1 – Principais áreas de utilização do crowd testing Área Utilização Aplicações web • Testar a interface do usuário • Testar cenários específicos Dispositivos móveis • Espalhar geograficamente os testes dos usuários finais • Testar diferentes combinações de dispositivos disponíveis • Usar uma combinação de crowd testing, emuladores e reais dispositivos como parte da estratégia de teste Jogos • Garantir que todos os cenários possíveis sejam cobertos • Gerar interesse por um produto (jogo) através do marketing social Fonte: Elaborado pelo autor Apesar de apenas três áreas serem consideradas as principais, o crowd testing pode ser utilizado em qualquer aplicação que possa ser acessada através da internet e por um grande número de pessoas. Ele é um modelo democrático onde todos podem participar dos testes, inclusive os amadores. 2.1 Participação dos testadores amadores Em um ambiente colaborativo, as pessoas são motivadas a participar do processo de maneira espontânea, em atividades que lhes dão prazer. Durante a utilização do seu tempo livre, os amadores, com o seu comprometimento e determinação, tem muito a contribuir (HOWE, 2009). De acordo com Leadbeater e Miller (2004, p. 8), esses fatores contribuem para o surgimento uma nova designação para o termo amador: “os Pro-Am – amadores que trabalham seguindo os padrões profissionais”. Para os amadores, o lazer não é consumido passivamente, mas sim ativa e participativamente. O crowd testing consegue mobilizar tanto testadores profissionais quanto amadores para testar software, seja utilizando metodologias, técnicas, ferramentas ou simplesmente a vontade de encontrar defeitos. Por ser um modelo de teste prático, os amadores e profissionais tendem aprender mutuamente em um ambiente colaborativo. Da mesma forma, testadores profissionais com pouca ou muita experiência têm a oportunidade de interagir, comparar os seus resultados e adquirir novos conhecimentos.
  • 9. 9 A internet tem contribuído para o processo de aprendizagem dos amadores e atualmente qualquer pessoa interessada em aprender a testar software pode obter informações através de blogs especializados, fóruns, tutorias, listas de discussões, entre outros meios. De acordo com Howe (2009), ao executar uma determinada tarefa os amadores possuem a seguinte vantagem em relação aos profissionais: a solução encontrada pode ser mais eficiente e inovadora, uma vez que os amadores não atuam sob a influência das organizações. Nesse contexto, Leadbeater e Miller (2004, p. 22) traçam a seguinte diferença entre profissionais das empresas e os Pro- Ams: “os profissionais estão mais propensos a entender a teoria por trás das boas práticas, enquanto Pro-Ams talvez tenham mais técnica e conhecimentos práticos”. A criatividade das pessoas pode ser mais bem explorada quando elas não estão inseridas no contexto corporativo, já que não há restrições à liberdade intelectual ou políticas organizacionais que as impeçam de utilizar todo o seu potencial (HOWE, 2006). Por isso, acredita-se que os testadores amadores podem utilizar o seu poder criativo para testar diferentes cenários de teste. Apesar de o crowd testing não exigir o domínio de técnicas de teste, ele pode ser utilizado para aperfeiçoar as habilidades individuais e permite ter acesso a diferentes tipos de aplicações que talvez, estando dentro de um ambiente corporativo, o testador jamais conseguiria testá-las. 2.2 A comunidade de teste e o meio corporativo Antes do surgimento da internet, o acesso à informação era limitado e nada fácil. Através da sua evolução a informação passou a ser distribuída e de fácil acesso. De acordo com Tapscott e Willians (2007, p. 21): “O acesso crescente à tecnologia da informação coloca nas pontas dos dedos de todos as ferramentas necessárias para colaborar, criar valor e competir”. Contudo, a arquitetura da internet conspira contra sistemas fechados, pois permite que as pessoas aprendam, compartilhem e distribuam conhecimentos. Pessoas com interesses em comum passaram a se organizar em comunidades sob um modelo totalmente diferente dos encontrados atualmente em uma empresa (HOWE, 2009).
  • 10. 10 As comunidades on-line “potencializam as motivações humanas básicas para transformar o trabalho que antigamente teria sido considerado não-remunetarivo em substancial econômico” (TAPSCOTT; WILLIANS, 2007, p. 121). As comunidades (a) conseguem reunir e organizar pessoas diferentes de um modo eficiente, (b) motivam a troca de ideias e ajuda mutua, (c) utilizam ferramentas tão boas ou até mesmo melhores que as utilizadas nas empresas e (d) na maior parte dos casos, os colaboradores abrem mão do direito autoral sobre as suas criações (HOWE, 2009). Todo esse conjunto favorece aos indivíduos inovadores produzirem com mais liberdade. Tapscott e Willians (2007, p. 91) destacam outro diferencial das comunidades: Enquanto tiverem os mecanismos para eliminar contribuições fracas, as comunidades grandes e auto-seletivas de pessoas em constante comunicação terão maior probabilidade de atribuir as tarefas certas às melhores pessoas do que uma única empresa cujo conjunto de recursos é muito menor. O crowd testing não se caracteriza como terceirização de testes, mas, do mesmo modo, pode oferecer consideráveis vantagens às empresas para as quais as comunidades de teste colaboram. De acordo com Howe (2009), as comunidades on- line oferecem eficiência na organização e execução do trabalho superior a de uma empresa. Elas são autopoliciadas e não precisam de camadas gerenciais para controlar o desempenho e a produtividade dos colaboradores. Deste modo, uma multidão de testadores é capaz de executar um projeto de teste de software com a mesma qualidade oferecida por profissionais de uma organização. Mesmo assim, sem as mesmas informações e documentações do projeto a qualidade dos testes tende a ser inferior a das atuais equipes de teste das empresas. As organizações devem investir em tecnologia e na remodelação de sua estrutura com o objetivo de se tornarem mais abertas e integradas para, então, poder interagir com as comunidades on-line (TAPSCOTT; WILLIANS, 2007). A mudança da mentalidade corporativa permite a troca de experiência e conhecimento entre a empresa e a comunidade. Para Howe (2009), trabalhar com uma multidão requer que o trabalho seja divido em pequenas partes a serem distribuídas organizadamente entre os membros da comunidade, ou seja, o trabalhar de modo descentralizado. No contexto do crowd testing, dividir o trabalho significa ter módulos
  • 11. 11 ou funcionalidades que possam ser testados separadamente e distinguir os tipos de testes a serem executados (de sistema, segurança, performance, etc.). 2.3 A inteligência coletiva e a diversidade de testadores A inteligência coletiva é formada por um grupo de pessoas interligadas por interesses em comum. Porém, quanto maior forem as características comuns, menor será a inteligência coletiva. Por outro lado, a inteligência coletiva se destaca na medida em que a diversidade dentro do grupo aumenta e a capacidade das pessoas expressarem seus pontos de vista individuais seja respeitada. Ainda assim, outros fatores devem ser atendidos para que a diversidade supere a capacidade: (1) é necessário um problema real, (2) a multidão precisa ser qualificada para resolver o problema, (3) é necessário algum método que agregue e processe as contribuições individuais e (4) as pessoas escolhidas devem vir de um grupo suficientemente grande. Somente assim pode-se garantir uma variedade de abordagens e que a capacidade de expressar a individualidade seja garantida (HOWE, 2009). As chances de que alguém encontre a solução de um problema são maiores quando um grande número de pessoas aplicam métodos diversificados para tentar solucioná-lo. Da mesma forma, um grupo com pessoas escolhidas aleatoriamente tem um desempenho melhor do que um grupo formado somente com os melhores solucionadores de problemas (HOWE, 2009). Isso significa que quanto mais diversificada for a comunidade de teste, melhor será a qualidade do software testado. Contudo, Brabham (2008) destaca que pode ser mais difícil encontrar diversidade entre uma multidão homogênea. Por isso, não basta somente utilizar uma multidão para testar software, é necessário algum mecanismo que garanta a diversidade de características, experiências e conhecimentos dos testadores. Assim, aumentam-se as chances de diferentes defeitos serem encontrados no software e não somente aqueles defeitos mais comuns, de baixa severidade. A multidão de testadores deve ser diversificada e ter, pelo menos, algum tipo de conhecimento sobre teste de software ou funcionamento da aplicação a ser testada. Entretanto, os integrantes dessa multidão não precisam interagir entre si. De acordo com Howe (2009, p.160): “A interação leva à deliberação que, por sua vez, reduz a diversidade de ideias por meio da qual a inteligência coletiva frutifica”.
  • 12. 12 Por isso, devem ser preservadas as individualidades de cada testador, até mesmo para não contaminar a comunidade. Por outro lado, Tapscott e Willians (2007) defendem a integração entre as pessoas, porém as comunidades precisam de sistemas que permitam a interação entre os colaboradores e de líderes para gerenciar as interações. Percebe-se que gerenciar essas interações é um grande desafio, pois, se não for na medida certa, pode haver uma redução na diversidade de ideias do grupo e consequentemente uma diminuição da qualidade do teste. Dentro da comunidade, as melhores ideias são valorizadas e resultam em melhores status para o autor do trabalho. Naturamente, os demais integrantes do grupo tentam buscar melhores resultados para as soluções que já foram encontradas. Esse fato eleva a qualidade global do trabalho, bem como estimula o aperfeiçoamento das habilidades individuais (HOWE, 2009). “As pessoas gostam de aprender e de ensinar. A comunidade tem uma habilidade infalível de identificar seus integrantes mais talentosos e destacar o trabalho destes” (HOWE, 2009, p. 160). Deste modo, quando a empresa utilizar o crowd testing ela não terá o trabalho de identificar testadores talentosos, pois a própria comunidade o faz quando dispõe de inteligência coletiva. 2.4 O que motiva a multidão Antes de o crowd testing ser conhecido, o custo dos testes impedia o acesso ao controle da qualidade de software para muitas empresas (BANERJEE, 2012). Hoje em dia, isso é possível porque o modelo de pagamento no crowd testing é diferente do praticado no teste tradicional. No crowd testing o dinheiro não é a única forma de recompensa, pois reputação também é um fator motivacional. Recompensa social, contatos internacionais ou adquirir conhecimento são importantes incentivos para participar do crowd testing. Quanto à recompensa financeira, os modelos tradicionais para teste de software nem sempre são aplicáveis, já que o pagamento por defeito encontrado tem funcionado bem e cupons de desconto tem sido outra opção viável para pagamento no crowd testing (ROODENRIJS; PRIS, 2009). A recompensa também pode ser uma combinação de um prêmio e um preço variável por defeito encontrado ou até mesmo um preço fixo para um número de horas ou projeto acordado (NARAYANAN, 2011 b).
  • 13. 13 Para os clientes do crowd testing, oferecer testes como um pacote de serviço pode ser mais eficaz do que oferecer testes isolados. Deste modo, preço e formas de compensação devem ser praticados de acordo com a estratégia de teste de cada empresa (NARAYANAN, 2011 a, 2011 b). De acordo com Roodenrijs e Prins (2009), a Figura 1 apresenta um resumo das formas de pagamento no crowd testing, tanto financeiras ou não, quanto pessoais ou para o grupo. Figura 1 - Formas de recompensa no crowd testing Fonte: Roodenrijs e Prins (2009) modificado pelo autor Em março de 2012 o Forte Consulting Group divulgou os resultados de uma pesquisa realizada com profissionais de TI na área de testes, garantia da qualidade e com gerentes e analistas. A pesquisa revelou que 47% dos participantes tinham sólidos conhecimentos sobre o que é e como o crowd testing funciona. O estudo contou com a participação de novatos na área de testes e garantia da qualidade até os mais experientes: 30% possuíam de um até cinco anos de experiência, 45% de seis até dez anos e 25% possuíam mais de dez anos de experiência (FORTE CONSULTING GROUP, 2012). O estudo revelou importantes informações a respeito do crowd testing e, de acordo com Forte Consulting Group (2012), o Quadro 2 apresenta algumas das conclusões obtidas através da pesquisa. Não financeira Grupo Fazer parte de uma rede social Interação com diferentes culturas Compartilhar conhecimento Reputação on-line Ganhar uma taxa se um produto é vendido Pagamento para a sua companhia Competição amigável para ser o melhor Recompensa social trabalhando para obras de caridade Testar o que gosta Desconto do software depois de lançado Renda por teste Cupons de desconto Pessoal Financeira
  • 14. 14 Quadro 2 - Pesquisa do Forte Consulting Group sobre crowd testing Conclusão Observações O crowd testing está rapidamente se tornando uma opção viável de teste em ambientes corporativos Mesmo com um ceticismo e carência de conhecimento em torno do crowd testing, a sua adoção tem indicado um grande interesse sobre o assunto. O seu uso pode resultar em web sites ou aplicações que são rapidamente implantados em produção, com custos reduzidos e capacitados para funcionar em diversos ambientes O trabalho para mover as atividades off-shore de QA e testes continua sendo de alta prioridade A maioria dos participantes concordam que o modelo off-shore de QA e testes (onde transfere-se a execução dessas atividades em outro país) é sólido e rentável, independente da inclusão de uma estratégia de crowd testing Segurança, privacidade e vantagem competitiva da empresa vão proibir a adoção do crowd testing nas indústrias Um grande percentual dos participantes identificou uma barreira para a adoção generalizada do crowd testing por ele representar uma mudança significativa no modo de comunicar-se e relacionar-se. Diversos fatores suportam essa relutância tais como potenciais riscos de segurança, o comprometimento da imagem corporativa e controles de qualidade Os principais benefícios do crowd testing criam razões imperiosas para explorar essa estratégia Os principais benefícios do crowd testing representam razões viáveis para investir nele. Baixo custo, rápido retorno, teste sob demanda e testes em condições do mundo real são alguns dos motivos que contribuem para explorar a sua estratégia O crowd testing ainda está a ser adotado e acreditado por tomadores de decisão Nesse estudo, somente 16% dos participantes com cargo gerencial concordam que o crowd testing veio para ficar. Essa informação é crucial ao determinar os fatores da tomada de decisão para adotar ou não o crowd testing na empresa Fonte: Elaborado pelo autor A pesquisa também constatou que, dentre os principais benefícios do crowd testing, 61% dos participantes acreditam que a habilidade para testar em condições do mundo real é a característica mais importante. Rápido retorno (44%), testes sob demanda (39%) e baixo custo (39%) completam a lista dos principais benefícios. Enquanto 56% dos entrevistados concordam que segurança, privacidade e vantagem competitiva da empresa vão proibir a adoção do crowd testing nas indústrias, somente 8% discordam e 36% não concordam nem discordam dessa declaração. Outra grande diferença identificada foi que 39% concordam que o crowd testing pode ser muito eficaz no ambiente corporativo, 14% discordam e a maioria, 47%, não possuem opinião definida. Por fim, 38% acreditam que o crowd testing é principalmente um movimento para o B2C (Business to Consumer), software de
  • 15. 15 código aberto e aplicações comerciais, mas não para aplicações de negócio e corporativa (FORTE CONSULTING GROUP, 2012). Além dos benefícios do crowd testing apontados pela pesquisa do Forte Consulting Group, Roodenrijs e Prins (2009) destacam outras características que também beneficiam as empresas que adotam o crowd testing. São elas: (a) não há necessidade de contratos de longo prazo com testadores, (b) testes em diversas plataformas (incluindo dispositivos móveis), (c) possibilidade de adicionar ou remover o número de testadores de acordo com as necessidades e (d) aproximar-se dos usuários ou potenciais usuários do software. 2.5 Aderência ao teste de software tradicional Para entender como uma multidão pode ser utilizada em prol da qualidade de software é preciso conhecer algumas definições sobre testes de software. O termo qualidade possui duas definições: a primeira, do ponto de vista do fabricante de software, é atender os requisitos. Já a segunda, do ponto de vista do cliente, é atender suas necessidades (QAI, 2006). A qualidade de software é dividida em duas categorias: a garantia da qualidade e o controle da qualidade. De acordo com QAI (2006), o Quadro 3 apresenta as diferenças entre esses dois métodos. Quadro 3 - Diferenças entre garantia da qualidade e controle da qualidade Garantia da qualidade Controle da qualidade Método De prevenção De detecção Preocupação Com o processo Com o produto ou serviço Responsável Equipe da qualidade Time de testes Propósito Estabelecer e avaliar o processo que produz um produto ou serviço Verificar se os atributos especificados estão (ou não) presentes no produto ou serviço Principal objetivo Identificar pontos fracos no processo e melhorá-los Detectar defeitos no produto ou serviço Fonte: Elaborado pelo autor Ainda assim, pode-se destacar mais uma diferença entre esses dois métodos: enquanto a garantia da qualidade realiza atividades de verificação, o controle da qualidade executa atividades de validação (embora a verificação seja utilizada em
  • 16. 16 revisões). De acordo com Pressman; QAI; Rios e Moreira (2006, 2006, 2006), o Quadro 4 apresenta as definições de verificação e validação. Quadro 4 - Definições de verificação e validação Autor Verificação Validação Pressman Garantir que o software implementa corretamente uma função específica Garantir que o software construído corresponde aos requisitos do cliente QAI Garantir que o sistema (software, hardware, documentação e o funcionário) cumpre as normas e processos da organização, com base em métodos de revisão ou que não execute o código Assegurar fisicamente que o sistema opera de acordo com o plano executando as funções do sistema através de uma série de testes que podem ser observados e avaliados Rios e Moreira Realizar inspeções/revisões sobre os produtos gerados pelas diversas etapas do processo de teste Avaliar se o sistema atende aos requisitos do projeto (usuário). Os testes unitários, de integração e de aceitação podem ser classificados como testes de validação Fonte: Elaborado pelo autor Quando se fala em verificação e validação, é fundamental diferenciar duas técnicas de teste: estática e dinâmica. “Teste estático é realizado usando a documentação do software. O código não é executado durante o teste estático. Teste dinâmico requer que o código esteja em um estado executável para realizar os testes” (QAI, 2006, p. 117). Enquanto revisão de viabilidade e revisão de requisitos são exemplos de teste estático; teste unitário, teste de integração, teste de sistema e teste de aceitação são exemplos de teste dinâmico (QAI, 2006). Os exemplos de testes estáticos e dinâmicos ocorrem em uma determinada sequência que é representada por diferentes níveis de testes. O teste estático deve ser realizado antes do teste dinâmico (e pode se estender ao longo do processo de teste) para, ainda nas fases iniciais do projeto, detectar erros nas documentações antes de virarem defeitos no código (ISTQB, 2011). De acordo com QAI (2006), o Quadro 5 apresenta os níveis de teste presentes no processo de teste de software.
  • 17. 17 Quadro 5 - Níveis de teste Nível Objetivos Teste de verificação Realizar testes estáticos nas documentações Teste unitário Verificar se as funções do sistema funcionam adequadamente Teste de integração Verificar se as funções do sistema que envolve mais de uma aplicação ou banco de dados são executadas com precisão Teste de sistema Simular a operação do sistema e verificar se ele funciona corretamente Teste de aceitação do usuário Testar o sistema no mundo real. Isso significa que o usuário irá interagir com o sistema e verificar se ele funciona corretamente Fonte: Elaborado pelo autor As técnicas de teste são agrupadas em duas categorias dependendo se elas derivam da descrição de uma função do programa ou da descrição de uma estrutura interna do programa. Conjuntos de teste baseados em análise estrutural tendem a descobrir erros que ocorrem durante a codificação do programa, enquanto conjuntos de teste baseados em análise funcional tendem a descobrir erros que ocorrem na implementação de requisitos ou na modelagem (QAI, 2006). A técnica de teste estrutural não determina o funcionamento correto da aplicação, e sim da estrutura. Por outro lado, teste funcional é realizado para assegurar que as especificações e os requisitos do software foram atendidos (BASTOS et al., 2007). O teste estrutural pode ser chamado de teste de caixa-branca e o teste funcional de teste de caixa-preta (ISTQB, 2011). O teste de caixa-branca assume que a lógica interna do código é conhecida para a execução de testes. Já o teste de caixa-preta foca em testar a função de um programa conforme suas especificações, desconsiderando a estrutura interna do software (QAI, 2006). De acordo com os principais conceitos de teste de software é possível identificar como e de que forma o crowd testing contribui no processo de teste de software. A seguir, o Quadro 6 apresenta a aderência do crowd testing no teste de software, onde o texto em destaque (negrito) representa as áreas em que uma multidão de testadores pode atuar.
  • 18. 18 Quadro 6 – Aderência do crowd testing no teste de software Garantia da Qualidade Controle da Qualidade Verificação Validação Teste Estático Teste Dinâmico Teste Estrutural Teste Funcional Teste de Caixa-branca Teste de Caixa-preta Níveis de Teste Teste de Verificação Teste de Integração Teste Unitário Teste de Sistema Teste de Aceitação do Usuário Fonte: Elaborado pelo autor Considerando os principais conceitos de teste de software, observa-se que o crowd testing atua no controle da qualidade, pois detectar defeitos no produto ou serviço é o seu principal objetivo. Ele é capaz de validar o software porque assegura fisicamente que o sistema está operando, mesmo que não haja nenhuma documentação de requisitos do software (cenário mais comum no crowd testing). Por outro lado, mesmo que a documentação seja disponibilizada, raramente a empresa irá solicitar alguma revisão nos requisitos. Sendo assim, testes dinâmicos são mais comuns do que os estáticos, já que nesse tipo de teste o código está em um estado executável para a realização dos testes. Da mesma forma, pelo fato do código fonte não estar disponível para a multidão, não há como realizar testes estruturais e de caixa-branca. Nesse caso, somente o teste funcional e de caixa-preta são aplicáveis. Quanto aos níveis de teste, o teste de verificação e o teste unitário não são cobertos pelo crowd testing. Embora o teste de integração muitas vezes fique limitado a testar somente a integração entre a aplicação e o banco de dados, ele é um teste viável de ser executado. E, por fim, os principais níveis de testes cobertos pelo crowd testing são: teste de sistema e teste de aceitação do usuário. Esse último, pelo fato de uma multidão ser utilizada na execução dos testes em uma situação do mundo real, é o nível melhor coberto pelo crowd testing. 2.6 Utilização no processo de teste de software O crowd testing pode ser aproveitado independentemente da metodologia de desenvolvimento, seja ela ágil ou cascata. De acordo com Narayanan (2011 a), a
  • 19. 19 Figura 2 apresenta a fase ou estágio em que o crowd testing é usado na metodologia cascata (Waterfall Methodology) e ágil (Scrum, neste caso). Figura 2 - Utilização do crowd testing em metodologias de desenvolvimento Fonte: Narayanan (2011 a) A força do crowd testing concentra-se na capacidade de aumentar as metodologias tradicionais de teste nas principais situações estratégicas e não deve ser considerada uma estratégia isolada de teste (FORTE CONSULTING GROUP, 2012). Embora seja importante, utilizar apenas o crowd testing como única atividade de encontrar defeitos torna o processo de garantia da qualidade imprevisível. Além disso, Narayanan (2011 a) destaca os seguintes riscos ao adotar somente o crowd testing como única atividade do processo de teste: (a) testes ineficazes em aplicações instáveis, (b) exposição de funcionalidades estratégicas ou competitivas para o público, (c) falta de domínio e melhor conhecimento da aplicação por parte dos testadores, (d) não cobre todos os tipos de testes e (e) dificuldade de detectar defeitos não funcionais. Por isso, o ciclo de vida de testes deve existir a fim de encontrar defeitos nas fases iniciais do projeto, caso contrário pode se criar um ciclo vicioso de encontrar cada vez mais defeitos nas fases finais do processo de desenvolvimento de software (NARAYANAN, 2011 b). Para evitar encontrar defeitos somente no final do projeto, as organizações precisam adotar uma estratégia que combine a abordagem do teste tradicional com o crowd testing para obter o máximo retorno sobre o investimento (NARAYANAN, 2011 b). Atualmente, organizações maduras têm encontrado a correta combinação do teste tradicional com o crowd testing: Elas usam o teste tradicional para garantir
  • 20. 20 que a aplicação está funcionalmente estável e de acordo com os requisitos e, em seguida, utilizam a multidão para reduzir o tempo de colocação do produto no mercado, custos e dar flexibilidade aos testes. Além disso, algumas empresas também disponibilizam os seus scripts de automação e casos de teste para garantir que o crowd testing tenha certo nível de maturidade de teste (BANERJEE, 2012). Enquanto grandes companhias, tais como Microsoft e Google, possuem um grande número de seguidores para usar os seus softwares e também executar testes beta4 , o crowd testing pode auxiliar as empresas que não possuem esse tipo de seguidores e oferecer uma multidão para testar os seus softwares (ROODENRIJS; PRINS, 2009). Contudo, de acordo com Narayanan (2011 b), o crowd testing pode ser mais poderoso e atuar como um elemento chave no ciclo de vida de teste. De acordo com o autor, o Quadro 7 apresenta as quatro abordagens que combinam o crowd testing com o teste tradicional. Quadro 7 - Combinação do crowd testing com o teste tradicional Abordagem Definição Extensão dos testes O crowd testing pode ser usado como uma extensão complementar aos testes antes de liberar a versão de produção. É eficaz na captura de qualquer defeito de configuração ou na interface do usuário Cenários de testes especializados Usuários finais podem ser utilizados para múltiplos e específicos testes, onde um grupo efetua um tipo de teste ou testa um grupo de componentes específicos e o outro grupo executa outros tipos de testes ou testa outros componentes. Testes de desempenho também podem ser executados Teste baseado em risco e prioridade Usar a multidão para testar aplicações de criticidade alta ou com alta taxa de defeitos. Isso resulta em priorizar a utilização do orçamento para testes em áreas onde ele irá ter maior impacto no negócio da empresa Integrado a estratégia de teste Considerando o crowd testing como serviço, os testes podem ser combinados com outras ferramentas com o objetivo de atender a estratégia global de teste, focando em testes o mais cedo possível no ciclo de vida de teste Fonte: Elaborado pelo autor Conhecer como o crowd testing pode ser combinado com o teste tradicional permite às empresas (que possuem um processo de teste definido) identificar quais dos quatro tipos de abordagem podem adotar na sua estratégia de testes global. 4 É um teste operacional realizado por usuários/consumidores fora das dependências da empresa, sem envolvimento dos desenvolvedores, a fim de determinar se o sistema satisfaz, ou não, as necessidades de usuário (ISTQB, 2010).
  • 21. 21 Contudo, também é necessário saber em que etapa ou estágio do processo de teste o crowd testing pode ser utilizado. Quanto mais cedo forem encontrados defeitos, menor é o custo de correção dos erros e maior é a probabilidade de corrigi-los corretamente (MYERS, 2004). Por isso, de acordo com Bastos et al. (2007), o ciclo de vida de testes presume que sejam realizados testes ao longo de todo o processo de desenvolvimento. Deste modo, quanto mais cedo a multidão executar os testes, mais defeitos tendem a ser encontrados ou, pelo menos, mais tempo ela terá para encontrar defeitos. Atualmente, existem diversos modelos que descrevem como os testes tradicionais são executados desde o início do desenvolvimento do software até a entrega da aplicação. De acordo com Rios e Moreira (2006), a Figura 3 apresenta um modelo do ciclo de vida do teste baseado na metodologia de Test Management (TMap). O modelo, que foi elaborado pelos autores, é chamado de Modelo 3P x 3E. Figura 3 - Modelo 3P x 3E do ciclo de vida do processo de teste Fonte: Rios e Moreira (2006) Baseando-se no Modelo 3P x 3E, é possível identificar em qual etapa o crowd testing pode ser utilizado. A maioria das abordagens que combinam os testes da multidão com o processo de teste tradicional (extensão dos testes, cenários de testes especializados e teste baseado em risco e prioridade) está focada apenas em uma única etapa do ciclo de vida do processo de teste: a de execução. Isso porque a multidão não será envolvida no planejamento, na preparação e na especificação dos testes e o único papel dela é o de testador, pois apenas executam testes. Por
  • 22. 22 outro lado, integrar o crowd testing com a estratégia de teste é a única abordagem em que os testadores de uma comunidade de teste poderão participar mais ativamente do ciclo de vida de teste. Nesse caso, outros papéis podem surgir. Para demonstrar como o crowd testing também pode ser integrado no processo de teste ágil Narayanan (2011 a) apresenta algumas das atividades de teste utilizadas na metodologia ágil Scrum (Figura 4) e a Figura 5 apresenta o crowd testing como sendo uma atividade de teste. Para Narayanan (2011 a), além do crowd testing, os testes podem ser executados sob a forma de community testing que representa o estado mais elevado de maturidade do crowd testing. Isso significa uma combinação de testes conduzidos através de domínio especializado e ferramentas desenvolvidas pelas próprias comunidades. Organizações que adotam as melhores práticas esforçam-se por uma combinação ideal de community testing e crowd testing. Entretanto, o grau de teste necessário pode variar de acordo com a estratégia e maturidade dos testes da organização (NARAYANAN, 2011 a). Figura 4 - Atividades de teste na metodologia Scrum Fonte: Narayanan (2011 a)
  • 23. 23 Figura 5 - Crowd testing como uma atividade de teste Fonte: Narayanan (2011 a) modificado pelo autor Enxergar o crowd testing como uma atividade de teste é fundamental para superar o desafio de integrá-lo no processo de teste da empresa. De acordo com Narayanan (2011 a), a Figura 6 apresenta orientações iniciais de como introduzir o crowd testing na empresa e o Quadro 8 detalha cada um dos quatro passos básicos. Além de entender essa integração, a aplicação também deve ser claramente definida e entendida por todos antes de implantar o crowd testing para garantir um produto eficaz (FORTE CONSULTING GROUP, 2012). Figura 6 - Como introduzir o crowd testing na organização Fonte: Narayanan (2011 a) modificado pelo autor Passo 1: Avaliar áreas de alto impacto e iniciar o teste Passo 2: Fazer o processo de QA compatível com a "multidão" Passo 3: Amadurecer o community testing e integrar mídias sociais Passo 4: Revisar o processo e o progresso e efetuar ajustes
  • 24. 24 Quadro 8 - Quatro passos para implantar o crowd testing na organização Passo Atividades 1 - Avaliar áreas de alto impacto e iniciar o teste • Identificar as áreas mais críticas e as prioridades • Iniciar a execução do crowd testing para benefícios imediatos e reduzir os esforços de outras atividades • Certificar-se das questões de segurança 2 - Fazer o processo de QA compatível com a multidão • Identificar as opções de mudança de QA • Automatizar testes de regressão • Implantar a gestão do conhecimento para facilitar a mudança para o community testing 3 - Amadurecer o community testing e integrar mídias sociais • Integrar-se com mídias sociais. Foque em grupos e comunidades on-line • Determinar a maturidade e disponibilidade interna e de fornecedores de serviços de teste • Influenciar as mídias sociais e os atuais times promovendo a mudança de “crowd” para “community” 4 – Revisar continuamente o processo e o progresso; e efetuar os ajustes necessários • Revisar as áreas que estão sendo testadas, processos e integrações com mídias sociais • Efetuar as devidas alterações no processo • Garantir um processo de melhoria continua Fonte: Narayanan (2011 a) modificado pelo autor Além dos passos descritos por Narayanan (2011 a), algumas condições devem ser satisfeitas antes de transferir a aplicação para a multidão. De acordo com Roodenrijs e Prins (2009), antes de utilizar o crowd testing se deve (a) pensar sobre os testes do sistema que precisam ser executados em uma fase anterior, (b) definir os objetivos de testes e (c) verificar a disponibilidade do ambiente de teste. Por outro lado, o tipo de aplicação também deve ser analisado e, segundo Banerjee (2012), a aplicação ideal para o crowd testing é aquela em que (1) a internet é o mecanismo de conexão, (2) o servidor está publicamente hospedado para aceitar requisições globais e tem capacidade suficiente para suportar simultâneas cargas e (3) o cliente tem requisitos mínimos e a aplicação suporta a maioria das configurações. O uso do crowd testing é determinado por diversos fatores, tais como: o tipo da multidão, as condições de teste e as atividades que a multidão irá executar. Deste modo, quem utilizá-lo é responsável por decidir o uso da multidão de acordo com as suas necessidades. O tipo de multidão e o controle sobre ela devem ser
  • 25. 25 determinados ao planejar um projeto de crowd testing, pois não se pode utilizar qualquer pessoa da multidão e alguns sistemas exigem maior controle do que outros (ROODENRIJS; PRINS, 2009). Mesmo considerando esses fatores, os testes tradicionais não podem ser substituídos pelo crowd testing (FORTE CONSULTING GROUP 2012; NARAYANAN 2011 b). De acordo com Banerjee (2012), o Quadro 9 apresenta as razões para não substituir totalmente os testes tradicionais pelo crowd testing. Acrescentando mais um motivo, Roodenrijs e Prins (2009) destacam que a diferença entre os dois está no foco do teste. Enquanto o crowd testing foca na aceitação do software, o teste tradicional está focado em confirmar se o software está pronto para ser usado. Quadro 9 - Razões para não substituir totalmente os testes tradicionais Razão Motivo Cenários críticos talvez não sejam testados O crowd testing foca nos casos de uso que são fáceis de identificar, baseado na disponibilidade de documentação limitada. Cenários críticos ou funcionalmente relevantes talvez não sejam devidamente cobertos Cenários específicos não podem ser testados Durante os testes, muitas vezes cenários específicos são replicados para criar um ambiente adverso no servidor web ou aplicação. Isso não é possível por meio da multidão Tornar os aplicativos disponíveis para a multidão pode ser um grande desafio Em muitos casos os próprios aplicativos não são compatíveis com o acesso compartilhado Uma aplicação requer certo nível básico de instabilidade antes de ser disponibilizada para a multidão Caso a aplicação não seja estável, constantes paradas e ociosidade vão fazer com que a multidão perca o interesse de testar Porque a maioria dos defeitos vai ser comum e reportado por diversas pessoas Conduzir a triagem dos defeitos reportados vai ser a maior atividade, consumindo significante tempo e esforço A maturidade da prática de teste nunca vai evoluir com o tempo Ninguém está realmente selecionando os membros da multidão. Cada iteração pode incluir um conjunto totalmente desarticulado de pessoas, e as variações vão existir nos resultados e na qualidade dos testes. Fonte: Elaborado pelo autor Para empresas que não possuem um processo de teste de software tradicional definido, o crowd testing pode atuar como um fator motivacional para a
  • 26. 26 implantação de um processo de teste, já que em um curto prazo e custo mais baixo ele consegue mostrar os benefícios do teste no controle da qualidade do software. 2.7 A experiência do testador como técnica de teste Encontrar defeitos é um talento que os testadores possuem mesmo não utilizando nenhuma metodologia (MYERS, 2004). Entretanto, existem algumas técnicas de teste que se baseiam em experiência para executar os testes. Competência e intuição são utilizadas, juntamente com experiência em aplicações e tecnologias, para encontrar defeitos no software. Embora sejam efetivos, os testes baseados em experiência não oferecem níveis de cobertura como outras técnicas de teste, uma vez que não têm critério de cobertura formal (ISTQB, 2007). As técnicas baseadas em experiência podem ou não serem empregadas com o uso de metodologia. De acordo com ISTQB (2007), o Quadro 10 apresenta detalhes sobre as principais técnicas de teste baseadas na experiência. Quadro 10 - Técnicas de teste baseadas na experiência Técnica Descrição Suposição de erro O testador utiliza a experiência para supor erros que podem ser injetados no sistema e para estabelecer métodos que cubram os defeitos resultantes. É capaz de identificar falhas em potencial durante a análise de risco. Baseada em lista de checagem O testador experiente elabora uma lista de checagem com todos os pontos em que o software deve ser verificado. Além da experiência, padrões pré- estabelecidos são utilizados na elaboração da lista. Exploratória O testador planeja, executa e reporta os testes simultaneamente. Os objetivos de teste são ajustados dinamicamente durante a execução e não são elaboradas documentações formais. A criatividade também é explorada na preparação dos testes. Ataque O testador tenta provocar a ocorrência de falhas no sistema. Interações do software com seu ambiente operacional, principalmente onde há troca de dados, é o principal foco do teste de ataque. Fonte: Elaborado pelo autor As técnicas de teste baseadas na experiência são as principais técnicas utilizadas no crowd testing, já que o testador não possui nenhuma documentação formal sobre o projeto e utiliza apenas a sua intuição e experiência para encontrar defeitos no software. Dentre essas técnicas, destaca-se o teste exploratório.
  • 27. 27 O teste exploratório é um tipo de teste baseado na experiência e intuição do testador. De acordo com Bach (2003), o teste exploratório é qualquer teste em que o testador controla ativamente a modelagem dos testes, bem como sua execução, e usa as informações obtidas durante o teste para projetar novos e melhores testes. A intuição e conhecimento dos testadores são obtidos através da experiência em aplicações e tecnologias e podem ser úteis para identificar testes específicos que não são facilmente identificados pelas técnicas formais. Nesse caso, o teste exploratório pode complementar os testes mais formais. Entretanto, como esta técnica de teste depende da experiência do testador, a eficiência do teste pode variar muito (ISTQB, 2011). Segundo Bastos et al. (2007, p. 257): “O teste exploratório é indicado quando existe pouca documentação para orientar os testes ou quando o prazo é tão curto que não é possível preparar um teste mais formal”. Qualquer pessoa que testa executa teste exploratório, porém, alguns confiam mais na exploração do que outros (TINKHAM; KANER, 2003). Essa técnica de teste consiste na aprendizagem, modelagem e execução de testes simultaneamente. Ao invés do testador se basear em especificações pré-estabelecidas que orientem os seus testes, ele age de modo mais proativo e busca executar o melhor teste possível no momento. Esse fato reforça a necessidade de garantir a inteligência coletiva dentro da comunidade de teste, pois testadores com diferentes experiências tendem a encontrar diferentes tipos de defeitos no software. Tudo aquilo a partir da personalidade do testador até os seus modos de aprendizagem e suas experiências passadas tem um impacto em como ele percebe o risco, pensa que um aplicativo pode falhar, projeta testes para encontrar essas falhas e em como ele pode cobrir os riscos identificados. A experiência do testador faz com que ele adquira todas essas competências. Entretanto, todas as decisões que um testador exploratório toma é feita sob condições incertas e insuficiente conhecimento sobre a aplicação. Isso faz com que todas as decisões tomadas tenham alguma probabilidade de estarem incorretas e também dificulta a escolha das próximas atividades ou dos próximos testes a serem realizados. Ao considerar que cada decisão tem um risco associado a ela, a heurística auxilia o testador exploratório a tomar as suas decisões de modo mais assertivo (TINKHAM; KANER,
  • 28. 28 2003). Deste modo, é possível que o crowd testing produza resultados imprecisos e com qualidade abaixo da desejada, mesmo dispondo de uma multidão diversificada. 2.8 Regras de utilização do crowdsourcing aplicadas no crowd testing O fato de o crowd testing ter origem no crowdsourcing não significa que todos os seus conceitos são aplicáveis ou são válidos no contexto de teste de software. Entretanto, as regras de utilização do crowdsourcing podem contribuir no momento de formar uma comunidade de teste ou simplesmente juntar uma multidão para testar software. A fim de garantir boas chances de sucesso, superar desafios, incertezas e desconfianças, sete passos devem ser considerados ao utilizar o crowdsourcing: (1) envolver as pessoas desde o início, (2) gerenciar as pessoas, (3) utilizar instruções claras, (4) saber trabalhar em comunidade on-line, (5) comunicação constante, (6) prover fóruns para discussões e (7) divisão correta do trabalho. Juntamente com esses passos, algumas regras devem ser respeitadas para manter os princípios básicos do crowdsourcing (HOWE, 2009). Seguir esses sete passos e considerar as 10 regras de crowdsourcing, também definidas por Howe (2009), reduzem os riscos de insucesso ao utilizar uma multidão para executar tarefas. Para que seja possível controlar a qualidade do software, o crowd testing também deve considerar esses princípios. Contudo, é necessário adaptá-los para que uma multidão possa testar software. Sendo assim, o Quadro 11 apresenta as 10 regras de crowd testing (baseadas nas 10 regras de crowdsourcing) que a empresa deve observar antes de disponibilizar o seu software para a multidão. Quadro 11 – As 10 regras de crowd testing Regra Definição 1- Escolha o modelo certo Determine o seu objetivo e escolha a abordagem que melhor atende aos seus interesses, seja utilizando somente o crowd testing ou combinado-o com o processo de teste tradicional 2 - Escolha a multidão certa Com objetivos traçados, divulgue-os nos meios mais adequados e não se esqueça de que a multidão precisa ser suficientemente grande para garantir a diversidade no grupo de testadores 3 - Ofereça os Crie uma comunidade vibrante e comprometida. Para isso, identifique as
  • 29. 29 incentivos certos motivações de cada um e envolva as pessoas. Estabeleça uma forma de compensação (não necessariamente financeira). Lembre-se de que o reconhecimento do trabalho realizado é fundamental 4 - Deixe as cartas de demissão na gaveta Não utilize o crowd testing apenas como uma forma de reduzir custos na contratação de mão de obra barata ou de reduzir as atuais equipes de teste da empresa 5 - A burrice das multidões ou o princípio do ditador benevolente Apesar de serem auto-organizadas, a multidão necessita de direção e alguém com quem possam se comunicar. Existe a necessidade de alguém para guiá-las e corrigi-las, quando necessário. Por mais que a comunidade seja auto-gerenciada, elas precisam de líderes 6 - Mantenha a simplicidade e divida as tarefas Procure dividir as tarefas em pequenas partes que podem ser produzidas de forma independente antes de serem integradas, pois tarefas muito grandes podem ser de difícil execução. O fato de prezar-se pela diversificação dentro de uma comunidade implica na necessidade de haver clareza e simplicidade na divisão do trabalho. Aplicações muito complexas podem dificultar a execução dos testes 7 - Lembre-se da Lei de Sturgeon 5 Essa lei diz que 90% de tudo que for produzido é lixo, ou seja, não possui utilidade alguma. Nem tudo o que for produzido pela multidão pode ser aproveitado ou apresenta a qualidade desejada. Muitos defeitos acabam sendo cadastrados em duplicidade e a falta de informação sobre a aplicação pode reduzir a qualidade dos testes 8 - Lembre-se dos 10%, o antídoto contra a Lei de Sturgeon Para identificar os 10% que são úteis, utilize a própria multidão para triar e selecionar os melhores trabalhos. As comunidades sabem muito bem identificar os talentos que elas possuem. Isso pode ser constatado, por exemplo, nos rankings que destacam os testadores que mais encontraram defeitos no software 9 - A comunidade sempre está certa Por mais que haja a necessidade de ter um líder, alguém que oriente e conduza os trabalhos, não tente controlar ou manipular a comunidade. Lembre-se que a multidão pode ter a proporção de bilhões de pessoas. Oriente o testador, mas evite dizer como ele deve executar o seu trabalho 10 - Não pergunte o que a multidão pode fazer por você, mas, sim, o que você pode fazer pela multidão As pessoas colaboram por prazer e por saberem que o seu trabalho será reconhecido e valorizado. Dentro do contexto de uma empresa tradicional, os funcionários trabalham para satisfazer as necessidades da empresa. Mude sua mentalidade e crie um ambiente agradável e participativo. Quanto mais informação, mais eficazes serão os testes Fonte: Elaborado pelo autor 5 Theodore Sturgeon foi um renomado autor e defensor da ficção científica. Muitas críticas foram feitas utilizando o que havia de pior nas produções dessa área e levaram o autor a criar a Lei de Sturgeon. Segundo essa lei, 90% de tudo o que é gerado não se pode aproveitar (HOWE, 2009).
  • 30. 30 Embora as 10 regras de crowdsourcing já tenham sido estudadas e na prática tem dado certo, elas ainda não foram comprovadas quando aplicadas na área de teste de software. As 10 regras de crowd testing necessitam de mais pesquisas para que seja validada a sua aplicação, já que este é um tema recente e poucos estudos foram realizados na área. Da mesma forma como aconteceu no crowdsourcing, paradigmas devem ser quebrados na área de teste para que o crowd testing seja reconhecido e aceito como uma nova forma de contribuição para a qualidade do software. Howe (2009) acredita que em curto prazo os problemas gerados pelas mudanças serão compensados pelos benefícios de longo prazo, com menos estruturas organizacionais verticais e um ambiente mais colaborativo que reconheça a qualidade do trabalho das pessoas. Ainda assim, de acordo com Brabham (2008, p. 86): “Pesquisas são necessárias para entender como os membros de uma multidão se sentem em relação ao seu papel como trabalhador para as empresas, e não examinar somente os casos de sucessos”. 2.9 Tendências O crowd testing está crescendo rapidamente como uma nova tendência na indústria de desenvolvimento de software e logo será incorporado pela equipe de desenvolvimento das organizações (FORTE CONSULTING GROUP, 2012). Fornecedores de serviços estão lutando cada vez mais para expandir a oferta de serviços de testes especializados e o crowd testing logo irá se tornar sinônimo de community testing. Significativos investimentos, além de aprimorar o domínio do conhecimento e aumentar os recursos de testes, serão capazes de preencher a lacuna entre o crowd testing e o community testing (NARAYANAN, 2011 b). Apesar de estar sendo visto como uma opção viável de teste, o crowd testing é um serviço de teste complementar e as organizações devem utilizá-lo como parte da estratégia de teste. Esse tipo de abordagem pode rapidamente e de forma rentável eliminar defeitos, se devidamente integrado no ciclo de vida de desenvolvimento de software. Sólidas diretrizes de teste e muitos e experientes recursos de teste permitem ao crowd testing testar projetos com competência nos padrões de qualidade e com conhecimento sobre as necessidades de negócio do cliente (NARAYANAN, 2011 b). Para que seja considerado uma estratégia de teste,
  • 31. 31 o crowd testing requer um mix diversificado de usuários e arquitetura colaborativa. Uma estratégia de teste combinado vai melhor atender a crescente necessidade pela qualidade dos testes, enquanto permanecer dentro dos parâmetros de custo (FORTE CONSULTING GROUP, 2012). No crowdsourcing as mídias sociais já estão funcionando como propulsoras dessa atividade e Narayanan (2011 b) prevê uma maior integração entre o crowd testing e as mídias sociais. Grupos de interesses especiais, incluindo aqueles no Facebook e Twitter, que são focados em negócios, vão ajudar a construir conhecimento e entregar produtos mais eficazes. De acordo com Narayanan (2011 a), a integração com as mídias sociais faz dele um grande aliado do marketing, onde grupos sociais enxergam o teste como uma oportunidade de divulgar seus produtos. Apesar de todos os seus benefícios, Narayanan (2011 a) afirma que os testes executados sob o conceito puro do crowd testing não irão durar muito tempo, pois fornecedores de serviços de testes tendem a incorporar o crowd testing nos seus atuais portfólios e o community testing tende a ser o seu substituto. Já para Forte Consulting Group (2012), apesar de o crowd testing ser uma ideia atraente, com a sua promessa de teste On-demand (sob demanda), baixo custo, e testes em condições do mundo real; questões como (a) será que esse método vai substituir as atuais estratégias de teste e QA (Quality Assurance) das organizações, (b) como ele vai integrar eficazmente com as metodologias tradicionais e (c) será que o crowd testing veio para ficar; são questões que estão em aberto e ainda a serem estudadas. Para Roodenrijs e Prins (2009), apesar do crowd testing já ser uma realidade, ele ainda é pequeno e não está disponível para todas as empresas. Ele vai mudar na medida em que as pessoas trabalhem cada vez mais unidas e isso vai adicionar outra visão para os testes de software. 3 PESQUISA SOBRE CROWD TESTING Com o intuito de comprovar os principais conceitos abordados neste trabalho, foi realizado um levantamento com testadores de crowd testing. De acordo com Gil (2010, p. 50): “As pesquisas deste tipo caracterizam-se pela interrogação direta das pessoas cujo comportamento se deseja conhecer”. O objetivo foi verificar
  • 32. 32 semelhanças e discrepâncias entre a percepção da crowd (a multidão que testa) e o referencial teórico sobre essa nova forma de testar software. A pesquisa foi realizada entre Setembro e Outubro de 2012, através de um questionário disponibilizado na internet. O formulário foi divulgado apenas para o público alvo e a identidade de cada participante foi preservada. Para garantir a privacidade, o autor da pesquisa apenas teve contato com a empresa que oferece o serviço de crowd testing e essa foi a responsável por divulgar o questionário, através de e-mail, para os testadores. As questões apresentadas aos participantes foram baseadas nos principais conceitos de crowd testing e o seu conteúdo foi extraído das referências bibliográficas presentes neste artigo. As perguntas foram validadas previamente pela orientadora desta pesquisa e pela empresa que disponibilizou os seus testadores para responderem o questionário. Em pesquisas do tipo levantamento, as informações são obtidas através de um grupo significativo de participantes e, mediante análise quantitativa, as conclusões são obtidas com base nos dados coletados (GIL, 2010). Para tal, os dados coletados foram armazenados diretamente em uma planilha on-line, onde cada linha representou a participação de um testador. Após análise quantitativa, gráficos foram gerados para melhor visualização dos resultados obtidos. 3.1 Sobre a empresa pesquisada A Base2 Tecnologia, empresa especializada em qualidade e testes de software, lançou o serviço do Crowdtest em 2010 como uma opção de baixo custo para projetos de testes de software. O seu alvo principal são aplicações web, móveis e desktop de orçamento enxuto e que precisam ser desenvolvidas e lançadas rapidamente (CROWDTEST, 2012). A empresa está situada na cidade de Belo Horizonte, Minas Gerais, e possui 20 funcionários. Ela está presente em praticamente todos os estados brasileiros, com concentração em Minas Gerais, com 28,5% dos testadores, São Paulo com 25%, Rio Grande do Sul com 7,5%, Rio de Janeiro com 6,8%, Distrito Federal com
  • 33. 6,5% e Santa Catarina com 5,8% dos testadores. de crowd testing já testados, encontradas e o valor médio pago aos melhores testadores é de R$ 300,00 valor refere-se a uma média de quanto os melhores testadores ganharam ao longo dos projetos que ocorreram desde o lançamento dessa plataforma, que aconteceu em Fevereiro de 2012. 3.2 Sobre os participantes Pesquisas do tipo levantamento, na maioria das vezes, não integrantes da população estudada (GIL, 2010). testadores do Crowdtest, software (testador, analista de teste, lidere ou gerente de teste) representam as seguintes profissões: empresário, estudante, analista de implantação e assistente de suporte ao usuário. A Figura 7 mostra o perfil do cargo dos participantes. Fonte: Elaborado pelo autor Além da diversidade de formação profissional, a software também é variada menos de um ano de experiência participantes que não possuem o seu cargo atual na área de testes também responderam ter alguma experiência na área profissionais trabalharam como mostra a experiência dos entrevistados na área de testes. a Catarina com 5,8% dos testadores. Atualmente, ela já testados, 3307 testadores participando, encontradas e o valor médio pago aos melhores testadores é de R$ 300,00 se a uma média de quanto os melhores testadores ganharam ao longo dos projetos que ocorreram desde o lançamento dessa plataforma, que aconteceu Sobre os participantes Pesquisas do tipo levantamento, na maioria das vezes, não integrantes da população estudada (GIL, 2010). A pesquisa foi realizada com est, sendo que 78% trabalham profissionalmente com testes de (testador, analista de teste, lidere ou gerente de teste) representam as seguintes profissões: analista de sistemas, , estudante, analista de implantação e assistente de suporte ao usuário. mostra o perfil do cargo dos participantes. Figura 7 - Perfil do cargo dos participantes Fonte: Elaborado pelo autor Além da diversidade de formação profissional, a experiência com testes de é variada. Um dado interessante é que a maioria ( menos de um ano de experiência com testes e um dado curioso é que mesmo participantes que não possuem o seu cargo atual na área de testes também eram ter alguma experiência na área. Uma provável hipótese é que esses profissionais trabalharam como testadores antes de ocupar o cargo atual periência dos entrevistados na área de testes. Testador; 39% Analista de teste; 29% Lider de teste; 7% Gerente de teste; 3% Outros; 22% 33 ela possui 78 projetos testadores participando, 3090 ocorrências encontradas e o valor médio pago aos melhores testadores é de R$ 300,00. Esse se a uma média de quanto os melhores testadores ganharam ao longo dos projetos que ocorreram desde o lançamento dessa plataforma, que aconteceu Pesquisas do tipo levantamento, na maioria das vezes, não analisam todos os A pesquisa foi realizada com 58 % trabalham profissionalmente com testes de (testador, analista de teste, lidere ou gerente de teste) e os outros 22% analista de sistemas, desenvolvedor, , estudante, analista de implantação e assistente de suporte ao usuário. rfil do cargo dos participantes experiência com testes de Um dado interessante é que a maioria (28%) possui e um dado curioso é que mesmo participantes que não possuem o seu cargo atual na área de testes também . Uma provável hipótese é que esses testadores antes de ocupar o cargo atual. A Figura 8
  • 34. Figura Fonte: Elaborado pelo autor Quando questionados sobre os tipos de sistemas que já testaram Crowdtest, 91% testaram aplicações utilizando dispositivos móveis. sistemas testados pelos parti representa aplicações desktop não foram questionados sobre os testes executados nesses sistemas, os métodos e tipos de testes utilizados no Figura Fonte: Elaborado pelo autor Segundo a pesquisa, testadores em outras empresas de Figura 10, onde as seguintes empresas f formulário: 99tests, BugFinders Menos de 1 ano Entre 1 e 2 anos Entre 3 e 4 anos Mais de 5 anos Nenhum Aplicações Web Dispositivos móveis Aplicações comerciais Figura 8 - Experiência dos entrevistados na área de testes Fonte: Elaborado pelo autor Quando questionados sobre os tipos de sistemas que já testaram % testaram aplicações web e apenas 17% executaram testes utilizando dispositivos móveis. A Figura 9 apresenta a distribuição dos pelos participantes da pesquisa, sendo que o tipo “Outros” desktop (conforme informado pelos participantes). não foram questionados sobre os testes executados nesses sistemas, os métodos e tipos de testes utilizados no crowd testing podem ser verificados no Figura 9 - Tipo de sistema testado pelos participantes Fonte: Elaborado pelo autor Segundo a pesquisa, 24% dos testadores do Crowdtest também atuam como testadores em outras empresas de crowd testing. Essa atuação é apresentada na s seguintes empresas foram citadas no campo “Outros” do 99tests, BugFinders, CEVIU e Hoplon. 14% 21% 17% 21% Menos de 1 ano Entre 1 e 2 anos Entre 3 e 4 anos Mais de 5 anos Nenhum 0% 5% 10% 15% 20% 25% 91% 17% 34% 31% 5% Aplicações Web Dispositivos móveis Aplicações comerciais Jogos Outros 0% 20% 40% 60% 80% 34 xperiência dos entrevistados na área de testes Quando questionados sobre os tipos de sistemas que já testaram no % executaram testes apresenta a distribuição dos tipos de cipantes da pesquisa, sendo que o tipo “Outros” (conforme informado pelos participantes). Embora não foram questionados sobre os testes executados nesses sistemas, os métodos e podem ser verificados no Quadro 6. ipo de sistema testado pelos participantes est também atuam como . Essa atuação é apresentada na no campo “Outros” do 28% 25% 30% 91% 80% 100%
  • 35. Figura 10 - Fonte: Elaborado pelo autor 3.3 Motivação dos testadores Diferentemente do teste de software tradicional, onde as pessoas são basicamente motivadas pela recompensa financeira, o oferece diversos tipos de a pesquisa revelou que 66 testes porque encontram Muitas vezes os testadores ficam limitados testing eles podem testar qualquer aplicação que (incluindo jogos e dispositivos móveis). 64%, também é outra motivação não financeira Figura 11 - Fonte: Elaborado pelo autor Testecide Fazer parte de uma rede social Compartilhar o conhecimento - Atuação dos participantes em empresas de crowd testing Fonte: Elaborado pelo autor dos testadores no Crowdtest Diferentemente do teste de software tradicional, onde as pessoas são basicamente motivadas pela recompensa financeira, o crowd testing oferece diversos tipos de recompensas não financeiras. De acordo com a 66% dos participantes sentem-se motivados encontram no Crowdtest uma oportunidade de testar o que go Muitas vezes os testadores ficam limitados a uma determinada tecnologia eles podem testar qualquer aplicação que possa ser acessa (incluindo jogos e dispositivos móveis). Poder compartilhar o conhecimento mbém é outra motivação não financeira que teve destaque na pesquisa - Motivações NÃO financeiras para participar d Fonte: Elaborado pelo autor uTest 40% Test Ninjas 5% Bug Pub 30% Testecide 5% Outros 20% 14% 17% 10% Fazer parte de uma rede social Compartilhar o conhecimento Testar o que gosta Reputação on-line Nenhum 0% 10% 20% 30% 40% 50% 35 crowd testing Diferentemente do teste de software tradicional, onde as pessoas são crowd testing também De acordo com a Figura 11, se motivados a participar dos testar o que gostam. uma determinada tecnologia no crowd acessada pela internet oder compartilhar o conhecimento, com que teve destaque na pesquisa. Motivações NÃO financeiras para participar do Crowdtest Test Ninjas 64% 66% 50% 60% 70%
  • 36. Quanto aos fatores premiação para os melhores colocados ( principais motivações financeiras. recompensar financeiramente os testadores e a pesquisa comprovou esse fato outro lado, apenas 7% dos participantes responderam que n os motivam a participar dos testes, ou seja, pouc sem receber pagamento pelo trabalho executado obtidos das principais motivações financeiras do Figura 12 Fonte: Elaborado pelo autor A disponibilidade do ambiente de teste é um fator que deve ser considerado antes de disponibilizar a aplicação para a multidão. Como o característica de reunir centenas ou até mesmo milhares de testadores, servidor e aplicação devem estar preparados para receber grande acordo com a pesquisa, ambiente pode desmotivá determinado projeto. Deste modo, a empresa deve ga estável para não perder testadores durante os testes. 3.4 Experiência como testador Embora 72% dos tes defeitos encontrados por a maioria dos defeitos encontrados no software também fo testador. Deste modo, a pesquisa revelou que Ganhar uma taxa se o produto for Desconto na compra do produto Premiação para os melhores aos fatores financeiros, pagamento por defeito encontrado premiação para os melhores colocados (55%) foram selecionadas como as duas financeiras. No crowd testing, essas são formas mente os testadores e a pesquisa comprovou esse fato % dos participantes responderam que nenhum fator financeiro participar dos testes, ou seja, poucas pessoas testariam um sistema pagamento pelo trabalho executado. A Figura 12 obtidos das principais motivações financeiras do Crowdtest. 12 - Motivações financeiras para participar do Fonte: Elaborado pelo autor A disponibilidade do ambiente de teste é um fator que deve ser considerado antes de disponibilizar a aplicação para a multidão. Como o crowd testing característica de reunir centenas ou até mesmo milhares de testadores, servidor e ar preparados para receber grande volume acordo com a pesquisa, 69% dos testadores afirmaram que a ambiente pode desmotivá-los a continuar executando os seus testes em um . Deste modo, a empresa deve garantir um ambiente de teste estável para não perder testadores durante os testes. Experiência como testador do Crowdtest % dos testadores do Crowdtest afirmaram defeitos encontrados por eles foram defeitos comuns, apenas 34 a maioria dos defeitos encontrados no software também foi encontrada testador. Deste modo, a pesquisa revelou que encontrar uma grande quantidade de 33% 17% 83% 55% 7% Ganhar uma taxa se o produto for vendido Desconto na compra do produto Pagamento por defeito encontrado Premiação para os melhores colocados Nenhum 0% 20% 40% 60% 80% 36 s, pagamento por defeito encontrado (83%) e selecionadas como as duas ssas são formas comuns de mente os testadores e a pesquisa comprovou esse fato. Por enhum fator financeiro testariam um sistema 12 mostra os valores o Crowdtest A disponibilidade do ambiente de teste é um fator que deve ser considerado crowd testing tem a característica de reunir centenas ou até mesmo milhares de testadores, servidor e volume de acesso. De indisponibilidade de a continuar executando os seus testes em um rantir um ambiente de teste que a maioria dos 34% responderam que i encontrada por outro uma grande quantidade de 83% 80% 100%
  • 37. 37 defeitos comuns não significa que uma grande quantidade de defeitos duplicados será cadastrada. Supondo que defeitos comuns sejam encontrados mais facilmente e, consequentemente, sejam cadastrados em duplicidade, deve-se realizar novos estudos a fim de compreender os motivos da identificação de um baixo número de defeitos duplicados em um ambiente onde a maiorias desses defeitos foram classificados como defeitos comuns, de baixa complexidade. Utilizar uma multidão para testar software faz com que diversos cenários sejam testados e em diferentes ambientes (incluindo dispositivos móveis). A pesquisa mostrou que 83% dos participantes costumam realizar testes utilizando diferentes combinações de sistema operacional e browsers. Contudo, apenas 36% costumam realizar testes utilizando dispositivos móveis. Uma das razões para não substituir totalmente os testes tradicionais pelo crowd testing é que cenários críticos ou funcionalmente relevantes talvez não sejam devidamente cobertos. Entretanto, 83% dos testadores afirmaram que cenários de teste críticos ou específicos podem ser testados nos projetos do Crowdtest. Essa é uma constatação interessante e, por divergir da teoria, deve melhor ser estudada. Outro fato interessante é que a maioria dos participantes (60%) prefere testar individualmente e não como integrante de uma comunidade de teste. Assim como no crowdsourcing, o trabalho pode ser executado em grupo ou individualmente nos projetos de crowd testing. Deste modo, a qualidade do software pode ser obtida através de contribuições individuais ou coletivas. 3.5 Opinião dos testadores sobre o crowd testing A indisponibilidade de documentação sobre os requisitos do projeto pode reduzir a qualidade dos testes executados no crowd testing e esse fato foi confirmado por 69% dos participantes. Contudo, 77% das pessoas que fizeram essa afirmação também afirmaram que cenários de teste críticos e/ou específicos podem ser testados. Deste modo, conclui-se que a falta de documentação pode reduzir a qualidade dos testes, mas não impede que cenários críticos sejam testados. Quando comparada com testes tradicionais, 69% acreditam que usar uma multidão para testar software faz com que um maior número de testes seja coberto e
  • 38. isso se deve pelo fato de de cenários de teste em um curto prazo Outra vantagem do modo que pessoas de qualquer parte do mundo e com acesso a internet possam testar softwares. Contudo, 34% dos pa pouco aumentará a qualidade do software e 33% acham que ela é indiferente, ou seja, que não interfere na qualidade. Apenas 31% responderam que e testes geograficamente pode aumentar Figura Fonte: Elaborado pelo autor O crowd testing tradicional de quatro maneiras Figura 14 - Integrand Fonte: Elaborado pelo autor Extensão dos testes Teste de cenários específicos Teste baseado em risco em Atividade de teste dentro do processo de teste Não é possível a integração se deve pelo fato de uma multidão ser capaz de executar centenas ou milhares de cenários de teste em um curto prazo de tempo. Outra vantagem do crowd testing é espalhar os testes geograficamente de modo que pessoas de qualquer parte do mundo e com acesso a internet possam testar softwares. Contudo, 34% dos participantes acreditam que essa característica pouco aumentará a qualidade do software e 33% acham que ela é indiferente, ou seja, que não interfere na qualidade. Apenas 31% responderam que e testes geograficamente pode aumentar muito a qualidade do software ( Figura 13 - Contribuição da distribuição geográfica dos testes Fonte: Elaborado pelo autor pode ser integrado ao processo de teste de software tradicional de quatro maneiras, conforme apresentado na Figura ndo o crowd testing com o processo de teste de software tradicional Fonte: Elaborado pelo autor Muito pouco 2% Pouco 34% Indiferente 33% Muito 31% 43% 24% 38% 5% Extensão dos testes Teste de cenários específicos Teste baseado em risco em prioridade Atividade de teste dentro do processo de teste Não é possível a integração 0% 20% 40% 60% 38 r centenas ou milhares é espalhar os testes geograficamente de modo que pessoas de qualquer parte do mundo e com acesso a internet possam rticipantes acreditam que essa característica pouco aumentará a qualidade do software e 33% acham que ela é indiferente, ou seja, que não interfere na qualidade. Apenas 31% responderam que espalhar os do software (Figura 13). Contribuição da distribuição geográfica dos testes pode ser integrado ao processo de teste de software Figura 14. processo de teste de software tradicional Muito pouco 76% 60% 80%
  • 39. 39 De acordo com a pesquisa, 76% afirmaram que o crowd testing pode ser utilizado como extensão dos testes realizados internamente na empresa, ou seja, embora ele agregue qualidade ao software, os testes tradicionais são fundamentais no processo de desenvolvimento de software. Por outro lado, apenas 5% acreditam que o crowd testing não pode ser integrado ao processo de teste de software tradicional. 4 CONCLUSÃO Testar software é um processo que envolve conhecimento técnico, ferramentas para controle e execução de teste, experiência do testador e um determinado conhecimento sobre o sistema a ser testado. Além disso, fatores restritivos como esforço, tempo e dinheiro acabam interferindo diretamente na qualidade do software, quando qualquer um desses for afetado, a qualidade do produto também será afetada. Atualmente, diferentes métodos e processos propõem novas formas de testar software, porém muitas vezes se deparam diante dos mesmos fatores restritivos. Crowd testing é uma nova forma de testar software que reduz o impacto referente ao esforço, tempo e dinheiro e contribui para a qualidade de software. Utilizar o tempo livre de uma multidão de testadores garante que, em um curto prazo e com baixo investimento, seja possível controlar a qualidade de um software (aplicações web, jogos ou dispositivos móveis). A participação dos amadores é fundamental no crowd testing, pois mesmo que eles não sejam profissionais da área de teste de software, a internet tem proporcionado um amplo espaço de aprendizagem e compartilhamento de informações. Deste modo, conhecimento técnico e ferramentas de teste podem ser facilmente obtidos através da internet. Aproveitando-se do potencial da internet, as comunidades on-line começaram a ganhar força e espaço dentro das organizações, seja ativamente executando tarefas ou passivamente consumindo produtos. Visando a harmonia entre as comunidades de teste e o meio corporativo, paradigmas devem ser revistos e a mentalidade corporativa deve adaptar-se ao modo colaborativo de trabalhar. Trabalhar colaborativamente não significa simplesmente compartilhar informações e
  • 40. 40 as tarefas a serem executadas. Envolve saber trabalhar com uma diversidade de testadores, dar liberdade para a criação e execução dos testes e respeitar as individualidades e diferenças culturais presentes entre a multidão. A inteligência coletiva provou que é possível obter melhores resultados quando se tem um grupo heterogêneo de testadores, pois contribui para que diversos e diferentes tipos de defeitos sejam encontrados no software. Encontrar defeitos no software é uma atividade de teste que pode ser motivada de diferentes formas no crowd testing. As motivações podem ser financeiras ou não. As pessoas sentem-se motivadas por colaborar espontaneamente, doando o seu tempo livre e gostam de compartilhar conhecimentos. Diferentemente do processo de teste de software tradicional, o pagamento é feito basicamente por cada defeito encontrado, ou seja, o pagamento é feito por produtividade. O crowd testing não veio para extinguir o processo de teste tradicional, mas sim para agregar ou complementar. Ele pode ser combinado de diferentes formas, tais como extensão dos testes, cenários de testes específicos, testes baseados em riscos e prioridades, e até mesmo integrado à estratégia de teste da empresa. Desta forma, é possível observar que o crowd testing é aderente ao processo de teste de software tradicional e que a combinação desses dois métodos de testes produz ganhos superiores do que quando executados separadamente. Sem a utilização de documentações referentes a um projeto, o crowd testing, quando comparado ao processo de teste de software tradicional, pode produzir resultados inferiores pelo fato dos testadores desconhecerem os requisitos do software e, consequentemente, encontrarem muitos defeitos do tipo simples. Por isso, o crowd testing demanda um esforço extra para controlar os defeitos que estão sendo cadastrados a fim de evitar duplicidades e até mesmo avisar os testadores sobre um determinado módulo ou funcionalidade que já teve os seus testes esgotados e orientar que outros elementos do software sejam testados.
  • 41. 41 Dentre os principais benefícios da utilização do crowd testing, destacam-se: • Baixo investimento; • Marketing do produto; • Diferentes formas de recompensar o trabalho; • Obtenção de resultados de acordo com a vida real; • Utilização de pessoas do mundo inteiro para testar; • Feedbacks dos testadores para melhorar o software; • Autonomia em relação à metodologia de desenvolvimento, e; • Testes sob demanda e em diversas plataformas (ambientes). Por outro lado, o crowd testing possui as seguintes desvantagens: • Não cobre todos os tipos de testes; • Dificuldade de detectar defeitos não funcionais; • É um modo de testar software pouco conhecido; • Segurança e privacidade podem impedir a sua utilização; • Exposição de funcionalidades estratégicas ou competitivas, e; • Falta de domínio ou de conhecimento da aplicação pelos testadores. Embora a utilização do crowd testing não esteja limitada apenas aos seus benefícios e as suas desvantagens, eles são fundamentais para compreender as dimensões deste novo modo de testar software. Aliados as 10 regras de crowd testing, facilitam a tomada de decisão em relação a utilizar ou não o crowd testing em um determinado projeto. O estudo realizado conseguiu aprofundar o conceito de crowd testing, aliando conceitos de crowdsourcing e do processo de teste de software de modo que fosse possível compreender como uma multidão de pessoas desconhecidas, profissionais ou amadoras, com diferentes conhecimentos e experiências podem atuar em prol da qualidade de software. O levantamento realizado com testadores de projetos de crowd testing foi importante, pois conseguiu comprovar os principais conceitos desta nova forma de testar software e, ao mesmo tempo, expôs questões que necessitam de mais pesquisas e revelou a necessidade de estudos que identifiquem os motivos
  • 42. 42 das divergências encontradas entre a opinião dos testadores e os conceitos apresentados. Durante a elaboração desta pesquisa, as seguintes dificuldades e limitações foram encontradas: • Crowdsourcing não é um tema científico e exigiu uma leitura analítica apurada para entender de que forma ele contribui para o crowd testing; • A maior parte do conteúdo encontrado sobre crowd testing não estava em formato científico dificultando, assim, conceituá-lo; • As atuais referências bibliografias sobre teste de software tradicional não abordam o crowd testing como uma possível atividade de teste, o que contribui ainda mais para a lacuna existente entre eles, e; • Tanto crowdsourcing quanto crowd testing são assuntos recentes e provavelmente as atuais literaturas não os descrevam detalhadamente. Oportunidades para trabalhos futuros também foram identificadas e, para dar continuidade a esta pesquisa, sugere-se que os seguintes trabalhos sejam realizados: • Realizar o estudo de caso em uma empresa de crowd testing, visando comparar a teoria com a prática, identificar as lacunas existentes entre elas e propor soluções; • Realizar o estudo de caso em uma empresa de software que utiliza somente o crowd testing como atividade de teste, com o intuito de mensurar e analisar a qualidade do software obtida, e; • Escrever artigos e desenvolver treinamentos de curta duração para compartilhar o conhecimento obtido e divulgar esta nova atividade de teste, o crowd testing. O crowd testing é uma realidade e tem contribuído para a qualidade de software. Entretanto, por não ser muito conhecido a sua aplicação pode não durar por muito tempo ou ele pode acabar sendo incorporado por fornecedores de serviços de testes. Acredita-se que quanto mais a sociedade evoluir trabalhando colaborativamente, mais espaço o crowd testing terá dentro das organizações.
  • 43. 43 REFERÊNCIAS BACH, J. Exploratory Testing Explained. 2003. Disponível em <http://www.satisfice.com/articles/et-article.pdf>. Acesso em: 10 set. 2012. BANERJEE, K. Crowd Testing – Applicability and Benefits. 2012. Disponível em <http://ers.hclblogs.com/2012/02/crowd-testing-%E2%80%93-applicability-and- benefits/>. Acesso em: 25 set. 2012. BASTOS, A. et al. Base de Conhecimento em Teste de Software. Rio de Janeiro: Martins, 2007. BRABHAM, D. Crowdsourcing as a Model for Problem Solving: An Introduction and Cases. 2008. Disponível em <http://www.clickadvisor.com/downloads/Brabham_Crowdsourcing_Problem_Solving .pdf>. Acesso em 15 ago. 2012. CROWDTEST web site. Disponível em <http://crowdtest.me/>. Acesso em: 03 nov. 2012. GERBER, E. Para onde vai o crowdsourcing? 2011. Disponível em <http://info.abril.com.br/noticias/mercado/para-onde-vai-o-crowdsourcing-31082011- 45.shl>. Acesso em: 01 ago. 2012. GIL, Antônio Carlos. Como elaborar projetos de pesquisa. 5 ed. São Paulo: Atlas, 2010. FORT CONSULTING GROUP. Efficacy and Applicability of Crowd Testing. 2012. Disponível em <http://4tegroup.com/crowd-testing-white-paper>. Acesso em: 14 jul. 2012. HOWE, J. Crowdsourcing: A Definition. 2006. Disponível em <http://crowdsourcing.typepad.com/cs/2006/06/crowdsourcing_a.html> Acesso em 07 jun. 2012. HOWE, J. O poder das multidões: por que a força da coletividade está remodelando o futuro dos negócios. 2ª Ed. Rio de Janeiro: Elsevier, 2009. ISTQB. Certified Tester Advanced Level Syllabus. 2007. Disponível em <http://www.bstqb.org.br>. Acesso em: 05 jul. 2012 ISTQB. Certified Tester Foundation Level Syllabus. 2011. Disponível em <http://www.bstqb.org.br>. Acesso em: 05 jul. 2012 ISTQB. Glossário Padrão de Termos Utilizados em Teste de Software. 2010. Disponível em <http://www.bstqb.org.br>. Acesso em: 16 jul. 2012 LEADBEATER, C.; MILLER, P. The Pro-Am Revolution: How enthusiasts are changing our economy and society. 2004. Disponível em <http://www.demos.co.uk/publications/proameconomy>. Acesso em: 19 jun. 2012.
  • 44. 44 MYERS, G. J. The Art of Software Testing. 2ª ed. John Wiley, 2004. NARAYANAN, M. Crowd sourced testing – An emerging business model. 2011 a. Disponível em <http://www.slideshare.net/manoj7698/star-west-2011-manoj- narayanan-presentation-10>. Acesso em: 14 jul. 2012. NARAYANAN, M. The Power of ‘Crowd’ Testing. 2011 b. Disponível em <http://www.cognizant.com/InsightsWhitepapers/The-Power-of-Crowd-Testing.pdf >. Acesso em: 05 jul. 2012. PRESSMAN, R. S. Engenharia de software. 6ª ed. Rio de Janeiro: McGraw-Hill, 2006. QAI. Guide to the CSTE Common Body Of Knowledge. 2006. RIOS, E.; MOREIRA, T. R. Teste de Software. Rio de Janeiro: Alta Books, 2006. ROODENRIJS, E.; PRINS, A. Join the crowd: Worldwide testing. Revista Test Focus, África do Sul, v. 10, n. 4, p. 8-11, 2009. Disponível em <http://www.tmap.net/en/news/publication-about-crowdtesting-test-focus-magazine>. Acesso em: 19 jul. 2012. SILVA, Edna Lúcia da. Metodologia da pesquisa e elaboração de dissertação. 3ª ed. Florianópolis: Laboratório de Ensino a Distância da UFSC, 2001. TAPSCOTT, D.; WILLIAMS, A. D. Wikinomics: como a colaboração em massa pode mudar o seu negócio. Rio de Janeiro: Nova Fronteira, 2007. TINKHAM, A.; KANER, C. Exploring Exploratory Testing. 2003. Disponível em <http://www.testingeducation.org/a/explore.pdf>. Acesso em: 13 ago. 2012.