Benefícios da Implantação de uma Equipe de Teste de Software em uma Empresa Desenvolvimento Benefits of Implantation a Software Test Team in a Business Development Beneficios de laImplementación de un equipo de prueba de softwareenunDesarrollo de Negocio Edivânia Melo de Moraes¹ Elisangela Pimenta da Silva² Fabrício Pires Vasconcellos³ Resumo: O processo de desenvolvimento de software tem se mostrado a cada dia mais dependente da equipe de teste. Na engenharia de software, bem como nas melhores práticas de mercado, um ponto fundamental para se alcançar a qualidade nos produtos dependede um bom processo de testes.Neste artigo pretende-se mostrar que uma empresa que tem uma equipe de teste de software pode agregar diversos benefícios e valores aos seus produto, bem como a garantia de uma melhor qualidadecom a diminuição do índice de falhas através de testes concisos e completos. Palavras-chave:Teste de Software, Engenharia de Software, Qualidade. Abstract:The process of software development has proven increasingly dependent on the test team. In the software engineering, as well in the best business practices, an important point to achieve the quality in the products depends on a good test process. In this article intend to show that a company than has a team of software test can add many benefits and values to their products as well as the guarantee of a better quality with decreasing failure rate through concise and thorough tests. Keywords:SoftwareTesting, SoftwareEngineering, Quality. Resumen:El proceso de desarrollo de software ha demostrado ser cada vez más dependientes del equipo de pruebas. En la ingeniería de software, así como en las mejores prácticas de negocios, un punto importante para lograr la calidad de los productos depende de un buen proceso de prueba. En este artículo tiene la intención de demostrar que una empresa que cuenta con un equipo de prueba de softwarepueden agregar muchas ventajas y valores para sus productos, así como la garantía de una mejor calidad al disminuir la tasa de fallos a través de pruebas concisas y minuciosas. Palavras clave:Pruebas de Software, Ingeniería de Software, de la Calidad. 1 - Introdução Atualmente as empresas de desenvolvimento de software estão mais preocupadas com a qualidade de seus produtos. São inúmeros softwares sendo desenvolvidos e, muitas vezes, são liberados para os clientes com falhas que podem afetar no desempenho, na qualidade e na segurança causando com isso, perda de clientes e prejuízo financeiro e, pior ainda a não aceitação da empresa no mercado. As empresas estão focando em atender de forma satisfatória as exigências dos clientes, devido ao prazo determinado e a alta demanda os desenvolvedores possuem pouco tempo para se dedicarem aos testes das aplicações, com isso entregam softwares com pouca qualidade e ainda com erros, o que causa a [Digite texto] Revista Pensar Tecnologia, v. 3, n. 2, jul. 2014 insatisfação e perda de clientes pelas empresas, apontando que os testes feitos pelos desenvolvedores não eram suficientes para detectar os defeitos e falhas destes softwares.Assim sendo, para que estes defeitos sejam reduzidos, detectouse a necessidade de formação de uma equipe dedicada somente para testes e validação das aplicações, com foco e habilidades para diminui-los ou erradicá-los. Com a busca de melhores práticas nos processos de desenvolvimento de software o mercado propõe dois principais modelos utilizados para melhoria de qualidade que são o Capability Maturity Model Integration (CMMI) e a Melhoria de processo do Software Brasileiro (mps.BR), que também podem ajudar na fase de solução dos testes. Segundo Bastos et al. (2012), testar aplicações não é uma tarefa simples e requer um profundo conhecimento de suas técnicas. Para o autor, nem sempre estas técnicas estão disponíveis para os desenvolvedores ou usuários. Com isso as organizações de desenvolvimento de software precisam de pessoas especializadas na função de Teste de Software. As empresas buscam esses profissionais qualificados, principalmente os que têm mais conhecimento, certificações e experiência em Teste de Software para seu quadro, na busca de maior qualidade em seus produtos.Para que os softwares sejam testados com mais exatidão e de acordo com os requisitos e documentação dos usuários, nesse artigo serão apresentados os principais tipos de testes que as empresas de desenvolvimento utilizam em seus processos. O presente trabalho busca responder quais são os benefícios de se implantar uma equipe Teste de Software em uma empresa de desenvolvimento. Conhecer estes benefícios é essencial porque permite uma visão clara dos mesmos e processos de teste de software e está informação poderá subsidiar decisões e caminhos para organizações que buscam a qualidade de seus produtos. Objetivo principal desse trabalho é descrever os benefícios de teste de software em uma organização. Em seguida irá verificar por meio de um estudo de caso se os benefícios apontados pela teoria podem ser aplicados em uma empresa de implantação com uma equipe de teste de software. 2 - Teste de Software Entre a década de 70 e 90 os testes de software eram efetuados pelos próprios desenvolvedores e quando disponibilizados em produção eram testados pelos próprios usuários. Devido essas dificuldades as aplicações não tinham qualidade, causando um enorme prejuízo para as empresas,não era possível detectar todos os defeitos e nem controlá-los. Com a falta de documentação e requisitos os softwares eram testados de uma forma aleatória, ou seja, nem todas as funcionalidades eram testadas corretamente (BASTOS et al. 2012). Com a mesma ideia de Rios e Moreira (2013),os autores Bastos et al.(2012), citam que foi preciso ter uma equipe destinado somente para testar softwares. Essa equipe é composta por profissionais que tem a função de testadores, analistas e arquitetos, para garantir a qualidade das aplicações de uma maneira planejada, controlada e organizada é determinar se, a aplicação alcançou os resultados esperados. Esses testes podem ser realizados a qualquer momento, ou seja, na fase em desenvolvimento ou já desenvolvido. Os softwares são testados constantemente com a finalidade de encontrar falhas e ter a melhor qualidade, para que os resultados sejam alcançados de acordo com os requisitos do cliente.Como afirma Rios e Moreira (2013), quando novas versões são disponibilizadas pelos desenvolvedores é importante que comuniquem a equipe de teste, para que o mesmo fique ciente das atualizações e que também realizem novamente os testes, esse é o principal objetivo dos testadores. É fundamental a qualidade do software quando este é disponibilizado em produção, por isso é preciso testar e avaliar todo o comportamento do software baseado nos requisitos e nas especificações. Existem técnicas que servem como verificação e validação, e que, baseadas nas especificações e reuniões, servem para identificar falhas na elaboração dos testes e também a coerência destes com o resultado que sequer obter a partir de funcionalidade executada. Antes da execução dos testes é importante ter elaborado casos de teste de acordo com os requisitos,seguindo essas técnicas juntamente com os desenvolvedores é possível, que a qualidade tenha sucesso e que os clientes fiquem satisfeitos com os resultados finais dos softwares(MOLINARI, 2008). Como podemos ver, as atividades de verificação e validação estão distribuídas nas diversas etapas do processo de testes e, de uma maneira genérica, a verificação é executada antes da validação. Ou seja, verificamos a construção e validamos o software. (BASTOS et al.,2012, p.31). Bastos et al.(2012), ressaltam que os usuários perceberam que seus sistemas não tinham qualidade porque não eram testados corretamente. As aplicações demoravam a chegar até o desenvolvimento final, visto que,os desenvolveres tinham retrabalho ao testar e, corrigir os defeitos. Com o surgimento de novas tecnologias os sistemas foram ficando cada vez mais difíceis de controlar, então era preciso ter um processo para que, a qualidade do software pudesse melhorar. Neste cenário foi preciso obter um processo onde teria pessoas especializadas e dedicada somente a testar software. Os testes começaram a ser realizados por uma nova equipe onde a mesma teria artefatos e dados o suficiente para realizar todos os testes e diminuir os prejuízos. Com processos e uma equipe de testes de software os desenvolvedores não se preocupavam em testar as suas aplicações. Com o tempo as empresas foram adotando esse processo de teste e cada uma foi realizando as atividades e atendendo o cliente conforme requisitos prédefinidos. Com o sucesso das aplicações que eram entregues com mais qualidade e segurança as empresas passaram adotar estes métodos e com isso obtiveram uma redução de custos na manutenção dos softwares(BASTOSet al. 2012). 3 - Processo de teste 3.1 O surgimento do processo de teste Com a necessidade de softwares cada vez mais complexos para atender, às demandas do mercado, os clientes passaram a exigir uma maior qualidade em seus produtos. A ocorrência de erros no produto final tornou-se inaceitável, com isso a existência de um processo de testes de softwares bem estruturado e organizado tornou-se requisito básico para se atingir estes objetivos de qualidade. O objetivo de um processo de teste, com metodologia própria, é minimizar os riscos causados por defeitos provenientes do processo de desenvolvimento. Nessa nova situação, os testes passar a ser executados por especialistas treinados para isso, e não mais por um analista de sistemas que seja obrigado, muitas vezes contra a sua vontade, a executar essa atividade.(BASTOS et al.,2012, p.17). A representação do processo de testes é de etapas, atividades, artefatos, papéis e responsabilidades, que é a padronização dos serviços, ampliados e controlados. O processo de teste existe para aumentar os conhecimentos dos profissionais e que eles tenham uma visibilidade e conhecimento maior dos projetos. Com ele os resultados serão mais eficazes e controlados dentro do processo de teste (BASTOS et al. 2012). O principal objetivo do processo de teste é reduzir ou erradicar os erros apresentados nos softwares.Para que, isso seja possível à documentação deve ser criada com as melhores técnicas e ser objetiva como descrevendo todas as funcionalidades e garantindo o atendimento conforme aos requisitos especificado pelos usuários. É fundamental ter uma equipe de pessoas treinadas e qualificadas para executar os testes e também apta para desempenhar seus papéis com qualidade(BASTOS et al. 2012). A equipe de testes faz os testes de softwares de acordo com o requisito identificado na documentação que foi previamente construído junto ao cliente, são testados níveis robustos da aplicação para atender o que foi solicitado pelo cliente. É extremamente importante que os testes sejam executados juntamente com o Processo de Desenvolvimento do Software, ou seja, desde o início do ciclo de vida do software. É preciso estabelecer um padrão e segui-lo para que, o sistema tenha qualidade e conformidade. Ter softwares com mais desempenho, é seguir requisitos funcionais e as documentações(BASTOS et al. 2012). Existem vários artefatos e tipos de testes que podem ser utilizados pela equipe de testes durante o processo, porém é essencial ter toda uma documentação com as especificações atualizadas. Para isto é primordial que se realizem reuniões juntamente com a participação de todos os interessados no projeto como: gerentes, desenvolvedores, clientes e usuários finais. Com todas essas atividades executadas o sistema desenvolvido terá mais robustez e melhor qualidade, agregando maiores valores ao negócio da instituição que utilizará aplicação em questão (BASTOS et al. 2012). Segundo Rios e Moreira (apud Jones, 1986e Boehm, 1987, p. 5), 44% do esforço de um projeto são dedicados ao retrabalho, o desafio é reduzi-lo, pois impacta diretamente no resultado dos clientes, tornando os custos bem maiores. Visto que, é importante identificar e corrigir os defeitos o mais cedo possível, para que esse retrabalho seja evitado ou na pior hipótese minimizado. Para que, se alcance sucesso é o resultado final do software seja satisfatório é necessário realizar testes dentro das melhores práticas, o que pode contribuir na melhoria da qualidade dos mesmos. Com a mesma ideia de Rios e Moreira (apud Jones, 1986 e Boehm, 1987, p. 5) os autores Rios (2013) e Filho (2013) citam que é importante diminuir o retrabalho, nos estágios posteriores de testes, durante a implantação e na manutenção, ou seja, tais ações são de melhoria de qualidade. 3.2 Ciclo de vida do processo de teste Segundo Bastos et al. (2012), os testes de software tem que ser realizados desde o início do desenvolvimento das aplicações, com isso as empresas de desenvolvimento terão mais lucros e qualidade em seus softwares. O ciclo de vida consiste em uma série de etapas dependentes, consideradas como o esqueleto do processo de teste, que visam estruturar as atividades definindo como os testes serão conduzidos no projeto. (ELIZA; LAGARES, 2012, p.70). O ciclo de vida tem uma série de etapas que consiste em quatro principais processos de teste: Planejar, Projetar, executar e entregar. Esses processos são aplicados de acordo com a metodologia utilizada conforme a figura 1. Figura 1. Ciclo de vida do Processo de Teste de Software Fonte: ELIZA; LAGARES, 2012 Para essasetapas devem-se ter profissionais qualificados atividades e documentos a criar. Para que, as empresas de desenvolvimento de software tenham uma estimativa correta e com mais qualidade em seus softwares e que os riscos sejam minimizados é recomendável que sigam essas etapas do ciclo de vida do processo de teste. As empresas ficam mais organizadas devido aos documentos básicos e as metodologias que são aplicadas (ELIZA; LAGARES, 2012). Em seguida descreve-se cada uma das etapas e seus respectivos artefatos do ciclo de vida do Processo de Teste de Software: a) Planejar: é a etapa inicial do processo de teste, ela consiste em criar os Planos de Teste, que é um artefato essencial para definir os objetivos. E também podem ser aplicados vários tipos de testes e elaborar Estratégia de Teste nessa etapa. O planejamento pode fornecer entradas para próxima etapa do projeto que está sendo testado (BASTOS et al. 2012). b) Projetar: após o planejamento a próxima etapa é colocar em prática tudo que foi especificado pelo cliente. O objetivo dessa etapa é elaborar Casos de Teste, Roteiros de Teste, Massa de Teste e execução dos testes de verificação da documentação do software. Devem ser criados ao decorrer dos projetos, ou seja, eles serão elaborados à medida que os desenvolvedores disponibilizarem versões ou partes dos sistemas para a realização dos testes (ELIZA; LAGARES, 2012). c) Executar: o principal objetivo dessa etapa é colocar em prática o que foi planejado e projetado, agora é o momento de executar os testes e registrar defeitos, ou seja, registrar os erros e falhas encontrados no sistema. É fundamental que tenha uma ferramenta apropriada para registrar esses defeitos, durante a execução dos testes. Com isso possibilitará o registro dos problemas encontrados, com as suas respectivas descrições e prioridades. Com os defeitos evidenciados é possível ter o controle total do que está acontecendo, e do que precisa ser melhorado no projeto.São também evidenciadas todas as mudanças que ocorrem no software ao longo do seu desenvolvimento. É fundamental que sejam registrados todos os resultados negativos e positivos que foram obtidos durante a fase de testes da aplicação. A execução dos testes deve acontecer toda vez que uma nova versão do aplicativo for disponibilizada, e cada modificação que ocorrer, no ambiente que o suportam. Para que, a execução do teste seja feita com sucesso é indispensável verificar se o ambiente está estável e apropriado(ELIZA, LAGARES; BASTOSet al. 2012). d) Entregar: após a equipe de testes executar todas as etapas descritas acima, os testes são finalizados e o projeto é entregue para o cliente no ambiente de produção. No processo da entrega dos testes é importante ter arquivado e documentado tudo o que foi feito durante os testes. É essencial ter todos os registro de defeitos encontrados e as melhorias aplicadas. Nessa etapa é fundamental ter um sumário de Teste, ou seja, será possível visualizar e apresentar todos os resultados dos testes para o cliente. Juntamente com melhorias do processo, revisão e avaliação do projeto. Dessa forma os testes dos projetos serão finalizados e entregues com sucesso (ELIZA; LAGARES, 2012). No teste de software a validação e a verificação, são dependentes e importantes. A verificação serve para certificar se o software que foi desenvolvido está de acordo com os requisitos funcionais e não funcionais especificados. Tem também como objetivo determinar se o que foi planejado está sendo realizado e se os requisitos, as funcionalidades e as documentações foram implementadas corretamente. No desenvolvimento do software as atividades devem ser implementadas conforme o cliente solicitou, de forma a ocorrerem falhas ou inconsistências nos projetos. A validação verifica se o sistema está de acordo com as expectativas e necessidades dos clientes, se a construção do software está correta. Tem como objetivo determinar se o que está sendo entregue, atende as expectativas do cliente(MOLINARI, 2008). “Como podemos ver, as atividades de verificação e validação estão distribuídas nas diversas etapas do processo de testes e, de uma maneira genérica, a verificação é executada antes da validação.” (BASTOS et al. 2012, p.31). É verificada a construção do software e validado após ser desenvolvido, para que, o mesmo seja disponibilizado em produção, é preciso ser finalizado com sucesso juntamente com a aprovação dos usuários ou clientes e de acordo com os requisitos(MOLINARI, 2008). 4 - Tipos de testes de software Existem vários tipos de testes que podem ser aplicados dependendo da situaçãodo software, que ajudam a encontrar falhas na realização dos testes. Novas técnicas de testes, ou melhor, tipos de testes vão surgir. Nada na vida é estático, porém sempre alguma técnica será mais útil do que outra na maioria dos ambientes, em especial no seu ambiente de teste. Vamos tratar aqui de uma seleção geral dos principais tipos de teste de software. É fatorchave de sucesso no processo de testes que se tenha conhecimento básico dos tipos de testes e como vamos aplicá-los. (Molinari, 2013, p.157) A seguir serão apresentados os principais tipos de testes e seus objetivos: Quadro 1 - Principais tipos de testes de software: Tipos de testes Teste de estresse segundo Bastos et al. (2012) Descrição Identifica se o software suporta grande números de usuários conectados simultaneamente. Verifica se o sistema vai ser capaz de suportar volumes de dados acima das médias esperadas, sem afetar no seu desempenho e tempo de resposta. Também é avaliado o comportamento do software ao estar on- (continua) Objetivo Testar aplicações em situações inesperadas, sem causar falhas. Quanto mais o sistema estiver sobrecarregado para realização do teste de estresse, mais rápido pode levá-lo a falhar.Para que o mesmo seja corrigido o mais rápido possível, antes que o software seja Teste de integração segundo Molinari (2008) Teste de recuperação (contingência) segundo Bastos et al. (2012) Teste funcional segundo Molinari (2008) Teste de regressão segundo Bastos et al. (2012) Teste de segurança segundo Bastos et al. (2012) Teste de desempenho segundo Rios; Moreira (2013) line e com volumes grandes de entradas de dados. disponibilizado em produção. Garante que as interfaces das aplicações distintas funcionam corretamente. É feita a verificação dos requisitos funcionais, do desempenho e da compatibilidade do software com a utilização de outros recursos. Verificar se a integração dos softwares de um ou mais componentes de dados estão em correto funcionamento, ou seja, aplicações diferentes sendo testadas em conjunto. Tem a finalidade de reiniciar operações após uma falha ou perda de integridade no sistema. O teste de recuperação garante que o sistema continue em funcionamento mesmo após a ocorrência de falhas. Manter e armazenar com segurança o backup dos dados em um local seguro, mesmo após um desastre. Documentar todos os procedimentos de recuperação. Tem a finalidade de testar se as funcionalidades que estão descritas na documentação estão funcionando corretamente. Garantir que as funcionalidades do software desenvolvido estejam de acordo com as funções implementadas incluindo as regras de negócio. Quando nova versão é disponibilizada é feito o teste de regressão. Para garantir o funcionamento correto do software todas as funcionalidades são testadas novamente. Conclui-se então que o teste de regressão é um dos mais importantes. É para garantir a segurança e a confiabilidade do software e garantir a proteção contra acessos indevidos. Faz com que não hajaacessosaos dados sem que seja autorizados. Mostrar que quando houver mudanças no software, é fundamentala realização de testes exploratórios. Testar todas as funcionalidades mesmo as que não sofreram alterações. Testa o desempenho, ou seja, verifica se o software atende os níveis de desempenho e tempo de resposta de acordo com o esperado. Atendendo o que foi definido nas especificações e requisitos dos clientes. Garantir tempo de resposta satisfatório de acordo com o que suporte ao volume de dados e acerto com o SLA() definido junto ao cliente. O teste de desempenho também pode ser chamado de teste de performance. Proteger informações sigilosas do software.Os riscos são minimizados e as empresas não correm perigo ao desenvolver softwares para seusclientes e sem comprometer a sua segurança. Quadro 1 - Principais tipos de testes de software: Teste de verificação de versão segundo Molinari (2008) Teste de carga segundo Rios Moreira (2013) Teste interconexão segundo Bastos et al. (2012) Teste de usabilidade segundo Bastos et al. (2012) (conclusão) Verifica se o software não tem ocorrências de falhas, toda vez que uma nova versão é disponibilizada pelo desenvolvedor. Valida se a versão liberada está de acordo com o esperado. Garantir a disponibilização de novas funcionalidades. O teste de verificação de versão pode ser feito ao decorrer do desenvolvimento do software ou após terminá-lo. Testa se aplicação suporta grande volume de usuários conectados simultaneamente. É para validar e avaliar qual o limite máximo de carga de usuários e de entrada de dados no software. Objetivo é garantir que o software não fique instável por causa do enorme fluxo de dados e consultas inseridas na aplicação. O teste de carga garante que não ocorram falhas e que tenha tempo de resposta seja satisfatório. Testa se os softwares e suas funcionalidades podem se conectar com outras aplicações, que envolve operação de vários sistemas internos em teste. Para que os softwares funcionem corretamente pode ser feita a interconexão através de dados recebidos e fornecidos pelos usuários. Objetivo é para garantir e verificar se a transferência de dados entre diversos softwares foram realizados com sucesso, ou seja, a interconexão dos sistemas do mesmo tipo devem ser integrados para que funcione corretamente. É para verificar se o software possui facilidade de entendimento e manuseio para o os usuários ou clientes, que os mesmos podem utilizá-los sem nenhuma dificuldade. Testa se a interface do aplicativo é amigável. Garantir suporte ao volume de dados e tempo de resposta satisfatório de acordo com o SLA(System Level Agreement) previamente definido junto ao cliente. Fonte: Elaborado pelo autor. Os tipos de testes aqui citados são primordiais para garantir a qualidade do software. Cada tipo de teste tem como objetivo identificar falhas nas diferentes etapas de desenvolvimento. A seguir será detalhado cada artefato e sua respectiva aplicação durante o ciclo de vida do processo de teste no desenvolvimento do software. 4.1 Artefatos de teste Os artefatos de teste são produzidos durante ciclo de vida do processo de teste e no desenvolvimento do software.São documentos que podem ser elaborados e seguidos,ajudam descrever a função dos testes como na execução e elaboração das especificações e dos requisitos de acordo solicitado pelo cliente.Estes artefatos podem ser manuais, arquivos executáveis e geração de relatórios que contém a realização das verificações dos resultados alcançados, para certificar que os mesmos estão de acordo com o que foi especificado. O quadro 2 irá descrever os tipos de artefatos com suas respectivas descrições: Quadro 2 – Artefatos de teste: Artefatos Plano de teste Massa de Teste Casos de testes Roteiro de Teste Registro de defeitos Resultado de Teste Sumário de Teste Descrição É um documento que contém definição de todo processo, ajuda a monitorar as atividades dos testes. Tem como finalidade documentar o processo da empresa e de fornecer uma visão geral e detalhada do projeto. Objetivo do plano de teste é garantir que todas as funcionalidades serão testadas e documentadas. O plano de teste representa o planejamento incluindo recursos, estratégias, cronogramas das atividades do processo de teste. Possibilitando a equipe de teste ter uma visão geral dos resultados alcançados para estabelecer e definir o projeto de acordo com as necessidades apontadas pelo cliente. É um conjunto de dados consolidados a partir da base de dados, através de consultas com a utilização de scripts. A equipe de teste utiliza esses dados na execução dos testes conforme descrito na especificação. É um documento onde será descrito o passo a passo da execução dos testes e para facilitar por onde a equipe iniciará os testes. Assim será possível a identificação de erros no software. Possibilitando todo o controle das funcionalidades que foram testadas contendo os resultados esperados. Se um caso de teste for executado, e no mesmo foi identificado falhas é possível vincular os erros depois de registrado em outra ferramenta, anexando aquele determinado caso de teste. A equipe de teste garante que os requisitos do software que foi implementado sejam atendidos conforme solicitado pelo usuário. Objetivo dos casos de teste é a base para que os testadores possam executar os testes e cobrir o máximo de situações inesperadas possíveis. A equipe de teste terá o controle e registros de tudo o que está acontecendo durante a execução dos testes. É um documento que contém passos necessários para execução de um ou mais casos de teste, ou seja, é um documento de nível mais alto que os casos de testes e que também pode ser elaborado através de especificação juntamente com o caso de uso. O roteiro de teste é essencial na execução dos testes, pois ajuda o testador realizar testes mais corretos do sistema. É fundamental elaborar um roteiro de teste para cada especificação, e cada caso de uso deve conter roteiro de teste com os seus resultados, para que os testadores fiquem cientes dos resultados obtidos. Registro de bugs é uma ferramenta que evidência os bugs, ou seja, ao encontrar erros nos softwares os mesmos são gravados em forma de vídeos ou prints de tela. Essa ferramenta é fundamental para ter o controle e detalhamento dos defeitos, erros ou falhas durante a execução dos testes no software. Ao registraros bugs na ferramenta o mesmo é encaminhado para o desenvolvimento ou para uma equipe responsável que ficará ciente dos erros no software desenvolvido, para que sejam corrigidos. Depois que a equipe responsável solucionar todos os erros a mesma deve evidenciá-los, e em seguida devolver o bug a equipe de testes, para que seja verificado se os erros foram corrigidos. Com o registro de bugs ocliente terá os resultados obtidos com mais transparência e de acordo com o que ele requisitou. Este artefato é a apresentação dos resultados obtidos durante a execução dos testes e cada evolução do ciclo de desenvolvimento do software. O sumário de teste organiza e apresenta uma análise resumida dos Resultados de testese as suas principais medidas para revisão e avaliação. Geralmente são executadas pelos principais envolvidos na questão de qualidade. O sumário de teste normalmente finaliza os testes. Fonte: Adaptado de ELIZA; LAGARES, 2012. Estes artefatos compõem o ciclo de vida do processo de teste, estes são adaptados por cada organização a fim de atender as suas necessidades e auxiliam no processo de desenvolvimento para se obter resultados positivos. 5- Estudo de caso O avanço tecnológico das últimas décadas levou a empresa (A) a ter necessidade de desenvolver um sistema de gestão hospitalar com a finalidade de gerenciar redes de hospitais a qual é administradora. Em princípio, o software era só um prontuário eletrônico para armazenar dados do paciente e histórico de atendimento. Esses dados ficam armazenados em um servidor onde outra unidade da rede hospitalar acessava via endereço de rede e os usuários conseguiram visualizar os dados e históricos do paciente, caso ele fosse encaminhado a outro hospital da mesma rede. Com a integração do sistema ocorreu grandes ganhos qualitativos nos programas que passaram a facilitar e agilizar todo atendimento do paciente desde sua entrada na unidade, como fazer a ficha, até ao acesso do prontuário eletrônico, e a visão do histórico do paciente. Com o tempo, os diretores de cada hospital perceberam a importância e a necessidade de todos os hospitais fazerem parte da mesma rede para oferecer um melhor atendimento e acompanhamento, mais concreto de seus pacientes. Mesmo tendo só a parte de prontuário eletrônico funcionando, os responsáveis de cada unidade da rede começaram a questionar porque não desenvolver um sistema integrado que atendesse todo processo de um hospital, desde uma simples abertura de chamado para manutenção até as tarefas mais complexas da medicina. Seria um sistema que controlaria toda rotina de um hospital. E que pudesse gerar relatórios gerenciais, fazer estatística, entre outras funções. Diante deste cenário a equipe de desenvolvimento passou a estudar todo o processo e a rotina de um hospital para desenvolver o sistema. O cenário se pôs complexo, pois deveria atender vários hospitais com características diferentes e necessidades particulares de cada um deles. Com isso, o sistema deixava de ser um simples prontuário eletrônico, e passava a ser um software complexo. Existiam também outras dificuldades para dar continuidade no desenvolvimento do software: falta de ambiente adequado e profissionais qualificados para testar o software. O próprio desenvolvedor era quem testava a aplicação que ele desenvolvia e, sem conhecimento profundo em testes de software, às aplicações eram liberadas para o uso com falhas e defeitos, o que gerava muitas reclamações dos hospitais. Daí a necessidade de se criar uma equipe de testes, que ficará responsável por organizar, gerenciar, executar e acompanhar todo o processo de testes. Para que isto fosse possível, a equipe de testes deveria participar desde os primeiros levantamentos dos requisitos para o sistema, seu desenvolvimento, homologação até a entrega final do sistema em produção. No início definiu-se a participação de um gerente de projeto com o objetivo de auxiliar nesse processo de adaptação, este gerente ficou responsável por montar a equipe de testes que começou a funcionar com poucos membros, conforme listado no quadro abaixo: Quadro 3 – Equipe de testes: Quantidade Cargo 1 Gerente de Teste 1 Líder de Teste 1 Analista de Teste 2 Testadores Função Responsável por atender as necessidades do projeto, das tarefas, do time e dos indivíduos, auxiliar na composição da equipe de testes. Responsável pela organização dos testes é ele quem estima os esforços, os recursos e o tempo de teste. É também quem cria e mantém o Plano de Teste e atribui as tarefas para os demais membros da equipe. Responsável por elaborar casos de teste que serão executados pelo testador. Responsáveis por homologar e testar as funcionalidades do aplicativo. É o profissional que tem a responsabilidade principal de executar os testes planejados pelo Analista de testes e também de registrar os erros encontrados. Fonte: Adaptado de ELIZA; LAGARES, 2012. Coma definição clara de papéis e a autonomia da equipe de testes,organização permitiu-se então que a equipe foque mais em suas tarefas e com isso não perca em nenhum âmbito qualitativo e quantitativo. Isso significa ter um produto de qualidade e com maior garantia de venda dentro do mercado. Para a empresa o processo de teste tornou-se de certa forma vital e indispensável, pois, não só serviu para definir metas a se cumprir, mas também melhorar a qualidade do software que estava sendo desenvolvido. A elaboração e revisão do plano de teste passaram a ser acompanhado pelo gerente de projeto que projetou um cronograma para estimar o esforço gasto para executar cada tarefa, desde o desenvolvimento até o processo de teste e a entrega do produto final. Documentar esse processo de teste de software tornou-se essencial para garantir que os novos sistemas criados estivessem de acordo com o que foi solicitado pelo cliente e garantisse de fato que o software atendesse todos os requisitos especificados pelas novas demandas que surgiam a todo o momento no mercado. A documentação desse processo de teste serviu com base de conhecimentos e organização permitiu a criar uma rotina que prioriza as tarefas em testes de mais urgência, registrando assim com maior velocidade exatidão falhas e defeitos encontrados, o que reduziu de forma significativa todo o processo de correção. Além da melhoria nas tarefas que cada profissional executava, a qualidade do software também melhorou substancialmente, pois o processo rigoroso de testes aumentou sua qualidade, diminuindo o índice de falhas, que eram as principais queixas dos clientes. Sem dúvidas um dos principais benefícios da implantação do processo de teste foi à redução de custos com o retrabalho, pois se torna mais caro corrigir as falhas durante o processo de operação que durante o seu desenvolvimento. O processo que passou a ser feito com um rigoroso acompanhamento levou à redução de falhas e defeitos que eram antes da implantação da equipe de testes detectados somente em produção pelo o usuário final. Os testes são uma das etapas mais importante durante o desenvolvimento do software, pois é nos testes que se encontram a maioria das falhas que determinam todo o processo de desempenho do software. Nesta fase é mais fácil corrigir esses bugs encontrados por testador que por cliente em produção, essas falhas que aparecem no sistema em produção podem causar prejuízo e danos irreparáveis para os clientes. As empresas vêm adotando cada vez mais o processo de teste, em seu ambiente de desenvolvimento, para garantir a qualidade do produto que está sendo entregue ao cliente. 6 - Considerações e discussões O principal objetivo da implantação da equipe de teste na empresa (A) é garantir a qualidade no desenvolvimento do software e reduzir custo com retrabalho de tornar a melhorar o nível de qualidade do produto entregue ao cliente. A empresa (A) percebeu a importância de secriar uma equipe de testes no seu ambiente de desenvolvimento devido à quantidade de reclamações que recebia dos clientes por causa de falhas e defeitos que eram encontrados pelos usuários no sistema em produção. Para a empresa (A), a equipe de testes tornou-se parte integrante do processo de desenvolvimento e hoje é primordial garantir softwares de alta performance, excelente qualidade, sem falhas e o mais importante que atendem as expectativas dos clientes. Pensando na redução de custo e melhorias no seu software a empresa (A) implantou o processo de teste no seu ambiente de desenvolvimento que pudesse testar seu software nos mínimos detalhes possíveis para evitar retrabalho e entregar o cliente um software com o menor índice de falhas possíveis. A ideia de definir funções na empresa a cada funcionário e suas responsabilidades permitiu que o funcionário focasse mais na tarefa que estava desenvolvendo, e assim possibilitando a entrega do software no prazo acordado com o cliente sem perder na qualidade do produto. A documentação do processo de testes se mostrou um dos pontos positivos adotados pela empresa durante o processo de testespois facilitou sobremaneira o desenvolvimento, as correções de erros e também as funcionalidades que deveriam ser testadas com mais urgência. Os benefícios alcançados com a implantação da equipe de teste foram muito produtivos para a empresa A. Reduziu os custos com retrabalho e melhorou a qualidade do software, atingindo um dos principais objetivos que a empresa buscava para seu ambiente de desenvolvimento. A empresa conseguiu diminuir as reclamações dos clientes, e a qualidade do produto melhorou consideravelmente de forma geral. Segundo (Bastos et al. 2012), para ter um sistema de qualidade é preciso que desenvolvedor e testador trabalhem juntos para conseguir o resultado esperado. Na empresa (A) essa prática adotada em seu processo de desenvolvimento facilitou a comunicação entre desenvolvedor e testador. Todos passaram a trabalhar em sintonia, e com um processo de comunicação formal e eficiente. Isso fez com que as falhas e defeitos fossem corrigidos durante o desenvolvimento, evitando que fossem liberadas para o cliente, causando insatisfação e descrédito em relação ao produto. Além de todos esses benefícios, que a empresa conquistou com a implantação do processo de testes, os desenvolvedores também obtiveram vantagens com os mesmos, pois passaram a fazer apenas suas tarefas de desenvolvimento e teste de unidade. A equipe de testes assumiu os testes funcionais de integração e de sistema, melhorando a produtividade de toda a equipe e profissionalizando o trabalho de desenvolvimento. 7 - Conclusão O presente trabalho apresentou os principais conceitos relacionados aos processos de testes de software, bem como os benefícios da implantação desta equipe apontada pelo teórico. Confrontando com a experiência da empresa (A), onde o principal objetivo era implantar uma equipe de teste no seu ambiente de desenvolvimento e garantir que o sistema tivesse um nível de qualidade e segurança, foi possível observar que os apontamentos teóricos são válidos. Foi possível trabalhar a pesquisa proposta, respondendo o questionamento proposto e atingindo os objetivos com a metodologia do estudo bibliográfico em conjunto com o estudo de caso. Assim entende-se que o artigo atingiu o que se propôs, podendo se pensar em trabalhos futuros, como a verificação de indicadores de qualidade implantados, a análise dos pontos gargalo existentes nos processos de desenvolvimento, bem como a proposta de um modelo de implantação de equipe de testes de software para empresas de pequeno porte. Os pontos lições aprendidas na elaboração da pesquisa podem se resumir á falta de estrutura do objeto pesquisado, no caso a empresa (A), que só conseguiu documentar o projeto de implantação da equipe de testes quando dos levantamentos e entrevistas realizados para a construção deste trabalho. Referências BASTOS, Anderson; RIOS, Emerson; CRISTALLI, Ricardo; MOREIRA, Trayahú. Base de conhecimento em teste de software. São Paulo. 1ª edição. Editora Martins fontes. 2012. ELISA, Renata; LAGARES Vivian. Processo de Teste de Software. Revista Java Magazine, Belo Horizonte, ano IX, edição 101, p. 70-74, 2012. MOLINARI, Leonardo. Teste de Software Produzindo Sistemas melhores e mais confiáveis. São Paulo. 4ª edição. 12 ª Reimpressão. Editora Érica. 2008. RIOS, Emerson; MOREIRA, Trayahú. Teste de Software. Rio de Janeiro. 3ª edição revisada e ampliada. Editora Alta Books. 2013. PMBOK Guide 5a edição – Seção 1.7 – O papel do Gerente de Projeto.