XII Workshop de Teses e Dissertações em Qualidade de Software Um Framework para as Micro e Pequenas Empresas de Desenvolvimento de Software Baseado no MPT. BR e na ISO/IEC/IEEE 29119-2 Dianne Dias Silva, Edmundo Sérgio Spoto, Leandro Luís Galdino de Oliveira Instituto de Informática – Universidade Federal do Goiás (UFG) Caixa Postal 131 – 74001-970 – Goiânia – GO – Brasil [email protected], [email protected], [email protected] Abstract. This paper proposes a framework based on the Model of Software Testing Process MPT.BR and Standard ISO/IEC/IEEE 29119-2 in order to build a proper process for micro and small enterprises software development and to bring improvements to Freetest Method. The article also presents a theoretical foundation on which this framework will be supported, as well as its methodology, the current state, the related work and the expected results of this work. Resumo. Esse artigo propõe um framework baseado no Modelo de Processo de Teste de Software MPT.BR e na Norma ISO/IEC/IEEE 29119-2, visando à construção de um processo adequado para as micro e pequenas empresas de desenvolvimento de software e, que traga melhorias para o Método Freetest. O artigo apresenta ainda, uma fundamentação teórica na qual esse framework se apoiará, assim como sua metodologia, o estado atual, os trabalhos relacionados e os resultados esperados desse trabalho. 1. Caracterização do Problema A crescente demanda e, consequentemente, a complexidade dos produtos de software ocorrida nas últimas décadas, exige cada vez mais que as equipes envolvidas nos projetos de desenvolvimento sejam maiores e especializadas, provocando um anseio por qualidade e produtividade, tanto do ponto de vista do processo de produção como do ponto de vista dos produtos gerados. Diante disso, as micro e pequenas empresas de desenvolvimento de software têm se preocupado e investido na Garantia da Qualidade, que está diretamente relacionada com a qualidade do Processo de Teste ao qual foi submetido [Staab 2003]. Ainda que haja inúmeras técnicas, políticas e metodologias na área de Teste de Software, existem deficiências evidentes em relação à integração entre o Processo de Teste e Ferramentas no âmbito desse tipo de organização. Considerando esse panorama, estabeleceu-se o Método Freetest através do programa PAPPE Integração apoiado pela FAPEG/FINEP (Fundação de Amparo à Pesquisa do Estado de Goiás/Financiadora de Estudos e Projetos) e pelos profissionais do INF (Instituto de Informática) da UFG (Universidade Federal de Goiás) em conjunto com grandes nomes da indústria de software do estado de Goiás. Entretanto, o Método Freetest requer aprimoramento principalmente no que tange à descrição e ao detalhamento do Processo de Teste estruturado, uma vez que, os Níveis de Maturidade, as Áreas do Processo e as Práticas Genéricas que o contemplam 13 WTDQS 2014 são expostos de maneira sintética. Logo, a implementação e a institucionalização do referido método tornam-se onerosas e complexas para as empresas de desenvolvimento de software. Portanto, esse trabalho objetiva: desenvolver um framework de Processo de Teste de Software embasado nos pontos fortes do MPT.BR (Melhoria do Processo de Teste Brasileiro) e da ISO/IEC/IEEE (International Organization for Standardization/International Electrotechnical Commission/Electrical and Electronic Engineers) 29119-2 que resultará na melhoria do Método Freetest; implementar o Método Freetest após sua respectiva reformulação nas organizações que fazem o uso desse processo; certificar a consistência do modelo em questão depois da coleta e apuração dos resultados obtidos com a implementação do método reformulado; contribuir com as micros e pequenas empresas de desenvolvimento de software na produção de produtos de baixo custo e com alta qualidade. Esse trabalho está dividido em 5 seções. Na Seção 2 são apresentados os principais conceitos e terminologias referentes à fundamentação teórica. Nas Seções 3 e 4 são demonstrados a metodologia e estado atual do trabalho, bem como os trabalhos relacionados. E, na Seção 5 são tratados os resultados esperados do trabalho em questão. 2. Fundamentação Teórica Atualmente, a gerência da Qualidade de Software não se restringe apenas a definir procedimentos, padrões e verificar se estes estão empregados no desenvolvimento de software. Essa atividade determina uma cultura de qualidade na organização, na qual todos os envolvidos no desenvolvimento do produto detêm um nível de qualidade (individual) a ser alcançado. A Garantia da Qualidade é composta por três atividades principais (Pilares da Qualidade de Software): Planejamento, Garantia e Controle da Qualidade [Bartié 2002]. O Teste de Software é considerado um elemento crítico da Garantia da Qualidade, cuja finalidade é detectar o maior número de defeitos no software, por meio de um conjunto de atividades planejadas antecipadamente e executadas de maneira sistemática antes da entrega final do produto. O seu principal foco é a redução da probabilidade de ocorrência de defeitos quando o sistema já estiver em produção, sendo esses erros, defeitos ou falhas diretamente ligados aos riscos que podem prejudicar o negócio. Em outros termos, quanto antes os testes forem iniciados, menos dispendiosas serão as correções dos erros e/ou falhas encontrados. [Bastos et al. 2012]. Para que isso seja possível, faz-se necessária a definição de um Processo de Teste com um ciclo de vida estabelecido (MPT.BR, ISO/IEC/IEEE 29119-2 e Método Freetest), em que suas respectivas atividades devem ser desenvolvidas ao longo do próprio Processo de Desenvolvimento de Software, que em geral, concretizam-se em quatro níveis: Unidade, Integração, Sistema e Aceitação [Pressman 2002]. Fundamentado nisso, os critérios de teste são estabelecidos a partir de três técnicas: Funcional (Particionamento em Classes de Equivalência e Análise do Valor Limite), Estrutural (Baseado em Fluxo de Controle e Baseado em Fluxo de Dados) e a Baseada 14 XII Workshop de Teses e Dissertações em Qualidade de Software em Erros (Semeadura de Erros e Análise de Mutantes) [Budd 1981] [Rapps e Weyuker 1985] [DeMillo et al. 1978]. Sendo assim, o MPT.BR trata da melhoria do Processo de Teste através de práticas que envolvem as atividades projetadas ao longo do ciclo de vida de teste do produto de software. Sua estrutura é dada por dois componentes: o Guia de Referência (apresenta a estrutura, as áreas de processo e as práticas do modelo) e o Guia de Avaliação (contém o processo de avaliação e instruções para a realização da mesma em uma organização baseada no MPT.BR). Esse modelo têm como principais objetivos: tornar-se um modelo de referência para definição, implantação e melhoria dos Processos de Teste; abordar a melhoria contínua nos Processos de Teste conforme os objetivos organizacionais e o nível de maturidade almejado; fornecer uma base para avaliação e consequente identificação do grau de maturidade presente nas organizações; e reunir as melhores práticas e estruturá-las segundo o grau de complexidade versus o nível de maturidade na qual as organizações estão relacionadas [Softex 2011]. Porém, a ISO/IEC/IEEE 29119 é um conjunto de padrões de Teste de Software acordados internacionalmente que podem ser usados em qualquer ciclo de vida de desenvolvimento de software ou organização, fornecendo aos mesmos uma abordagem de alta qualidade para essa atividade. Essa norma especifica os Processos de Teste que podem ser utilizados para controlar, gerenciar e implementar Teste de Software em qualquer atividade da organização, projeto ou teste. Ela é composta de quatro normas ISO/IEC/IEEE: 29119-1 (Conceitos e Definições), 29119-2 (Processos de Teste), 29119-3 (Documentação de Teste) e 29119-4 (Técnicas de Teste). A avaliação do processo estabelecido na ISO/IEC/IEEE 29119-2 ocorre de acordo com a ISO/IEC 33063 (Modelo de Avaliação de Processo de Teste de Software) e ainda, substituem uma série de padrões existentes: IEEE 829 (Documentação de Teste), IEEE 1008 (Testes Unitários), BS (British Standards) 7925-1 (Vocabulário de Termos em Teste de Software) e BS 7925-2 (Componente Padrão de Teste de Software) [ISO/IEC/IEEE 2013]. Em contrapartida, o Método Freetest consiste em um conjunto de processos e ferramentas para Teste de Software estruturado especificamente para as micro e pequenas empresas de desenvolvimento de software, cuja metodologia estabelece soluções de fácil aplicação juntamente com as ferramentas de desenvolvimento. Sua organização se dá através três componentes: o Manual de Instalação (detalha o processo de integração entre as ferramentas de teste Testlink e Mantis), o Manual de Utilização (expõe o uso da integração entre as ferramentas de teste Testlink e Mantis) e o Manual do Modelo (mostra a estrutura, as áreas de processo e as práticas do modelo). Esse modelo tem como propósito a realização de testes de forma sistemática por meio da instanciação de um Processo de Teste com suporte automatizado. São contemplados ainda, nesse método a integração de quatro ferramentas de teste: Bug Wizard Report (integração do Testlink ao Mantis), JinFeng (integração de diferentes plataformas de teste baseada em ferramentas de código aberto e escrito em Python/Jython), JMeter (Teste de Performance, Carga e Stress), Selenium (automação de Teste Funcional para 15 WTDQS 2014 interfaces Web) e Sikuli (automação e Teste de Interfaces Gráficas utilizando imagens) [INF/UFG, 2013]. 3. Metodologia e Estado Atual do Trabalho Inicialmente, tanto o Guia de Referência do MPT.BR quanto a ISO/IEC/IEEE 29119-2 assim como o Manual do Modelo do Método Freetest, serão estudados a fim de identificar e explorar os Níveis de Maturidade, as Áreas de Processo, as Práticas Genéricas, as Multicamadas do Processo e também, as Atividades e Tarefas que os compõem respectivamente. Isto é, cada um dos Modelos de Processo de Teste e da Norma citados anteriormente, terão a Visão Geral, o Propósito, os Produtos Típicos e Resultados além, das Vantagens e Desvantagens mapeados. Possibilitando assim, a detecção das potenciais melhorias a serem incorporadas no Método Freetest. Em seguida, a partir da seleção das Áreas de Processo e das Práticas Genéricas compreendidas nos Níveis de Maturidade do MPT.BR e, das Atividades e Tarefas delimitadas nas Multicamadas do Processo referentes à ISO/IEC/IEEE 29119-2 consideradas viáveis (baixo custo e fácil implementação) de acordo com o contexto das organizações, um framework será desenvolvido e agregado ao Método Freetest. Após a remodelagem desse método, as micro e pequenas empresas de desenvolvimento de software que o utilizam serão visitadas, com o intuito de verificar a aderência ou não do processo implantado previamente. Onde, essa verificação consistirá na análise dos seus devidos ambientes de teste por meio de brainstorming, entrevistas e reuniões com as equipes de teste envolvidas nos Projetos de Teste. Que por consequência, apoia a calibragem do referido Processo de Teste. Posteriormente à reformulação do Método Freetest, ocorrerá a sua reimplantação em cada uma dessas organizações, que serão monitoradas e controladas de maneira presencial. Visto que, o ciclo de vida definido para os Projetos de Teste destas, são comprovados através dos produtos de trabalho gerados, ou seja, dos artefatos. Contudo, os resultados obtidos com a execução desse Processo de Teste serão coletados segundo o sumário dos registros de teste presentes nos artefatos estipulados no método em questão e logo após, comparados com os resultados esperados pela Gerência de Projeto de Teste e de Desenvolvimento de Software. Por fim, os Projetos de Teste passarão por uma inspeção de software envolvendo as equipes de teste das micro e pequenas empresas de desenvolvimento de software objetivando a certificação da conformidade com o Método Freetest. Nesse momento, o framework baseado no MPT.BR (Níveis de Maturidade, Áreas de Processo e Práticas Genéricas) e na ISO/IEC/IEEE 29119-2 (Multicamadas do Processo, Atividades e Tarefas) que incorporará o Método Freetest está sendo construído e também, observados os pontos a serem aperfeiçoados nesse modelo. 4. Trabalhos Relacionados A metodologia de Crespo et al. (2004), está fundamentada na adoção de um Processo de Teste e nos artefatos sugeridos pelo padrão IEEE 829-1998, que descreve os documentos originados durante o seu ciclo de vida. Essa metodologia de teste foi 16 XII Workshop de Teses e Dissertações em Qualidade de Software projetada e desenvolvida de forma a possibilitar que as empresas instanciem o Processo de Teste de acordo com as suas necessidades e disponibilidade de recursos, podendo ainda ser aplicada a qualquer tipo de software, seja ele sistema de informações ou software científico. Em Sartori (2005), foi definido um Modelo de Melhoria de Processo de Teste para pequenas empresas tendo como base o TMM (Test Maturity Model), levando-se em consideração suas diretrizes essenciais. O modelo proposto conta com um mecanismo de avaliação que permite identificar o nível de maturidade em que a dada empresa desenvolvedora se encontra, fornecendo dessa forma, subsídios para auxiliar a implantação de melhorias na área de Teste. Silva (2011), também estruturou uma metodologia de teste viável para as micro e pequenas empresas baseado nos modelos de documentos disponibilizados pelo padrão IEEE 829-1998. A metodologia contou com o apoio de especialistas em teste e de profissionais que atuam em pequenas empresas para que sua estruturação fosse viabilizada, por meio da abordagem do multicritério de apoio à decisão. O objetivo é diminuir a quantidade de documentos, bem como o escopo desses documentos, gerados no decorrer do Processo de Teste, de forma a conter apenas os itens mais relevantes para a realidade das micro e pequenas empresas. O arcabouço estabelecido por Araújo (2013), avalia o nível de maturidade do Processo de Teste com base nas práticas do TMMI (Test Maturity Model Integration) que possibilite as micro e pequenas empresas realizarem a autoavaliação da maturidade do seu respectivo processo sem possuir um conhecimento avançado do modelo. Por fim, o trabalho em questão determina a construção de um framework cujo público alvo são as micro e pequenas empresas de desenvolvimento de software baseado no Modelo de Processo de Teste de Software MPT.BR e na Norma ISO/IEC/IEEE 29119-2 que possibilite a melhoria do Método Freetest. 5. Resultados Esperados O Teste de Software não é uma atividade trivial devido à flexibilidade para mudanças, complexidade e intangibilidade, ou seja, às próprias características do software. E para que essa atividade obtenha êxito, é imprescindível o conhecimento, planejamento, projeto, acompanhamento, recursos e também a interação com as equipes envolvidas na construção do produto de software [Crespo et al. 2004]. Dessa forma, os resultados esperados com esse trabalho são: a construção de um framework de Processo de Teste baseado nos pontos fortes do MPT.BR e da ISO/IEC/IEEE 29119-2 que contribua com a melhoria do Método Freetest e, a aplicação desse método após sua respectiva reformulação nas organizações que fazem o seu uso. Verificando assim, os benefícios e ganhos proporcionados desde o início até a conclusão do Processo de Desenvolvimento de Software juntamente com um Processo de Teste efetivo, estruturado especificamente para micro e pequenas empresas de desenvolvimento de software. 17 WTDQS 2014 Referências Araújo, A. F. (2013) “Um Arcabouço para Avaliação do Nível de Maturidade em Teste de Software para Micro e Pequenas Empresas”, http://www.inf.ufg.br/mestrado/sites/www.inf.ufg.br.mestrado/files/uploads/Dissert acoes/adailton_ferreira_de_araujo.pdf. Bartié, A. (2002), Garantia de Qualidade de Software, Campus. Bastos, A., Cristalli, R., Moreira, T. e Rios, E. (2012), Base de Conhecimento em Teste de Software, Martins, 3ª edição. Budd, T. A. (1981) “Mutation Analysis: Ideas, Example, Problems and Prospects”, Computer Program Testing: Proceedings of the Summer School on Computer Program Testing held at SOGESTA, Urbino, Italy, North-Holand Publishing Company, p. 129 – 148. Crespo, A. N., Silva, O. J., Borges, C. A., Salviano, C. F., Teive, M., Junior, A. e Jino, M. (2004) “Uma Metodologia para Teste de Software no Contexto da Melhoria de Processo”, http://www.lbd.dcc.ufmg.br/colecoes/sbqs/2004/024.pdf. DeMillo, R. A., Lipton, R. J. and Sayward, F. G. (1978) “Hints on Test Data Selection: Help for the Practicing Programmer”, https://www.st.cs.unisaarland.de/edu/recommendation-systems/papers/Hints_on_Test_Data_Selection1.pdf. INF/UFG, (2013) “Manual do Processo de Teste de Sofware para Micro e Pequena Empresas”, versão 2.0, Manual Técnico, http://www.freetest.net.br/ferramentas. ISO/IEC/IEEE (2013), ISO/IEC/IEEE 29119-2, Software and Systems Engineering – Software Testing – Part 2: Test Process. Pressman, R. S. (2002), Engenharia de Software, McGraw-Hill, 5 edição. Sartori, L. E. S. (2005) “Melhoria do Processo de Teste para Pequenas Empresas”, http://aberto.univem.edu.br/bitstream/handle/11077/335/Melhoria%20do%20Proce sso%20de%20Teste%20para%20Pequenas%20Empresas.pdf?sequence=1. Silva, A. R. (2011) “Uma Metodologia de Testes em Software para Micro e Pequenas Empresas Estruturada em Multicritério”, http://uol11.unifor.br/oul/conteudosite/F1066341385/Dissertacao.pdf. Softex (2011), MPT.BR – Melhoria de Processo de Teste Brasileiro: Guia de Referência. Staab, T. C. (2003) “Improving the Test Process – Looking at The Test Process – Getting Started”, The Journal of the Software Testing Professionals. Rapps, S. e Weyuker, E. J. (1985) “Selecting Software Test Data Using Data Flow Information”, IEEE Transactions on Software Engineering, p. 367–375. 18